-
Notifications
You must be signed in to change notification settings - Fork 3.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Isthmus: Updates for L2 withdrawals root in header #12848
base: vd/isthmus-config
Are you sure you want to change the base?
Conversation
📚
|
* add withdrawalsRoot to ExecutionPayload. * add a `BlocksV4` topic to p2p gossip and check for non-empty withdrawalsRoot on v4 topic. * add checks for whether block is type v4 and apply relevant marshal/unmarshal for l2 withdrawals root.
* attributes check * outputV0AtBlock api update * minor type updates
and fixes for a few failures
when computing L2OutputRoot, no need to re-compute the storage root if Isthmus is active.
and fix lint errors
* `RPCResponseCheck` is an interface that currently has a function that validates withdrawals. * There's an implementation of this interface for L1 and L2 * L1's response checker validates that the withdrawals list matches the root in the header. * L2's response checker validates that the withdrawals list is empty when the withdrawalsRoot is not nil
will move to a separate PR
* test all combinations - with/without withdrawal transaction before, at and after isthmus
fc6b673
to
79609ed
Compare
bb28ebc
to
2449a55
Compare
@@ -250,7 +250,7 @@ require ( | |||
rsc.io/tmplfunc v0.0.3 // indirect | |||
) | |||
|
|||
replace github.com/ethereum/go-ethereum v1.14.11 => github.com/ethereum-optimism/op-geth v1.101411.1-rc.6 | |||
replace github.com/ethereum/go-ethereum v1.14.11 => ../op-geth |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TODO - will be changed to use a commit tag, once the op-geth PR is approved/merged
raise a separate PR for it.
Also fix a test in rollup, with the correct expectation for sepolia holocene time
@@ -386,6 +395,10 @@ func BuildBlocksValidator(log log.Logger, cfg *rollup.Config, runCfg GossipRunti | |||
return pubsub.ValidationReject | |||
} | |||
|
|||
if blockVersion.HasWithdrawalsRoot() && payload.WithdrawalsRoot == nil { | |||
log.Warn("payload is on v4 topic, but has nil withdrawals root", "bad_hash", payload.BlockHash.String()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
return error in addition to logging a warning here.
return nil | ||
// checkWithdrawals checks if the withdrawals list and withdrawalsRoot are as expected in the attributes and block, | ||
// based on the active hard fork. | ||
func checkWithdrawals(rollupCfg *rollup.Config, attrs *eth.PayloadAttributes, block *eth.ExecutionPayload) error { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we simplify the expression of these conditions?
2449a55
to
a011f49
Compare
Description
This PR proposes changes to add:
L2ToL1MessagePasser
contract to theExecutionPayload
.v4
) for Isthmus blocks.Tests
Are in a separate PR
Additional context
Addresses changes to Consensus Layer to support L2 withdrawals root in the block header, as outlined in #12044
Spec changes: ethereum-optimism/specs#394
EL changes:
Metadata
None.