EVM Node: Verify sequencer blueprint signatures in the node
Part of L2-151
What
This change introduces a signature verification step for sequencer blueprints within the EVM node. It also modifies the mechanism for passing blueprints to the PVM, shifting from direct kernel inputs to durable storage.
Why
This is first and foremost a preparatory step to allow skipping the signature verification of the blueprint for the sequencer mode.
How
Before applying a new blueprint, the Evm_context now retrieves the
sequencer's public key from storage. It then uses the new
Sequencer_blueprint.check_signature function to verify each chunk of the
incoming blueprint.
The Evm_state.apply_blueprint function has been refactored. It no longer
passes the blueprint payload as a kernel input. Instead, it writes the
verified, unsigned blueprint chunks to the dedicated paths in durable storage.
The PVM is then executed with an empty input list, signaling to the kernel that
it must read the current blueprint from durable storage itself. This
essentially allows to skip the stage one of the EVM node. The replay logic has
been adapted to this new flow, skipping the signature check for trusted,
previously-validated blueprints.
Manually testing the MR
Checklist
-
Document the interface of any function added or modified (see the coding guidelines) -
Document any change to the user interface, including configuration parameters (see node configuration) -
Provide automatic testing (see the testing guide). -
For new features and bug fixes, add an item in the appropriate changelog ( docs/protocols/alpha.rstfor the protocol and the environment,CHANGES.rstat the root of the repository for everything else). -
Select suitable reviewers using the Reviewersfield below. -
Select as Assigneethe next person who should take action on that MR