You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Shapella (Shanghai + Capella) L1 network upgrade introduced a breaking change in the L1 block header format the op-node input-validation was not accounting for yet.
This updates the L1 RPC decoding to pull the withdrawals-root from the json, pass it to the geth header type, and verify the block-hash in a Shanghai-compatible way.
Without this fix, the --l1.trustrpc flag is required, or the L1 RPC responses will not be accepted due to the unrecognized input data.
Implementers note: the inclusion of the withdrawals-root is not verified against the L1 time, as that would require L1 chain configuration. Instead it includes it if the data is there, and not if it is not there. It affects the block-hash, so verification is still safe even with a bad L1 RPC, as it can be distinguished from the canonical L1 chain.
Tests
Minor test framework change: Update the action-test L1-miner actor to include Shapella data into test L1 blocks.
Tests:
run through a L1 chain that forks into Shanghai, with a verifier and sequencer. The actors use the standard client bindings and derivation code. Both pre and post Shanghai L1 headers will be traversed through by the verifier, and the L2 chain has L1 origins pointing to pre and post Shanghai L1 blocks.
unit tests for pre and post-shanghai block hash verification of JSON data
Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.
This PR includes no changesets
When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types
The reason will be displayed to describe this comment to others. Learn more.
rpcHeader fix lgtm, but instead of making an action test can we make unit tests which de-serializes the json of a pre & post shapella block & then verifies the block hash?
This is a very simple deterministic calculation that is well suited to unit testing.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
The Shapella (Shanghai + Capella) L1 network upgrade introduced a breaking change in the L1 block header format the op-node input-validation was not accounting for yet.
This updates the L1 RPC decoding to pull the withdrawals-root from the json, pass it to the geth header type, and verify the block-hash in a Shanghai-compatible way.
Without this fix, the
--l1.trustrpcflag is required, or the L1 RPC responses will not be accepted due to the unrecognized input data.Implementers note: the inclusion of the withdrawals-root is not verified against the L1 time, as that would require L1 chain configuration. Instead it includes it if the data is there, and not if it is not there. It affects the block-hash, so verification is still safe even with a bad L1 RPC, as it can be distinguished from the canonical L1 chain.
Tests
Minor test framework change: Update the action-test L1-miner actor to include Shapella data into test L1 blocks.
Tests:
Invariants
Accept post-Shanghai L1 block headers as input.
Metadata
Fix CLI-3628