-
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
op-node/rollup: Implement Holocene invalid payload attributes handling #12621
Conversation
Semgrep found 3
Malformed revert statement style. Ignore this finding from sol-style-malformed-revert.Semgrep found 9
"Hash not approved" Malformed require statement style. Ignore this finding from sol-style-malformed-require. |
8e58966
to
bceb80d
Compare
Semgrep found 1 require() must include a reason string Ignore this finding from sol-style-require-reason.Semgrep found 6
Inputs to functions must be prepended with an underscore ( Semgrep found 1 No |
bceb80d
to
daed31a
Compare
7f8b473
to
52e741a
Compare
daed31a
to
7e112f9
Compare
7e112f9
to
e986259
Compare
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.
LGTM. Just a few minor things to resolve
e986259
to
35056d2
Compare
#12621) * op-node/rollup: Implement Holocene invalid payload handling * op-node: update comment about block-processing errors --------- Co-authored-by: protolambda <proto@protolambda.com>
#12621) * op-node/rollup: Implement Holocene invalid payload handling * op-node: update comment about block-processing errors --------- Co-authored-by: protolambda <proto@protolambda.com>
ethereum-optimism#12621) * op-node/rollup: Implement Holocene invalid payload handling * op-node: update comment about block-processing errors --------- Co-authored-by: protolambda <proto@protolambda.com>
Description
Implements the remaining Holocene derivation feature: invalid payload attribute replacement with a deposits-only (DO) version.
The current approach is to request a DO version of the invalid payload attributes from the engine deriver, by having the
BuildInvalidEvent
handler emit a newDepositsOnlyPayloadAttributesRequestEvent
that is directly processed by the pipeline deriver. It doesn't reset the pending safe, as before, but gives this DO version a second chance. The DO request event is handled by the pipeline as following:DerivedAttributesEvent
with the DO-version of the attributes, which is then processed by theAttributesHandler
, as before, and so enters the regular attributes derivation flow.PendingSafeRequestEvent
->PendingSafeUpdateEvent
->BuildStartEvent
flow.DepositsOnlyPayloadAttributesRequestEvent
is directly processed by the pipeline deriver, theProgramDeriver
of the op-program just works™️.This approach breaks with the current invariant to not have the pipeline and engine derivers talk to each other directly, only via the attributes deriver, or the program deriver in the case of the fault proof program. The reason this approach was taken is that this makes it work automatically with the op-program's program deriver. The program deriver otherwise has to reimplement the attributes handler deriver logic, which felt like a less scalable and brittle approach. Since the DO-attributes request is also directly addressed to the pipeline, this seems clean.
Changes to pending safe/safe promotion are done in follow-up work.
Tests
Added an action test
TestHoloceneInvalidPayload
that shows the correct derivation behavior upon finding an invalid payload.Additional context
I started a flow diagram on how the different derivers interact with each other here.
Metadata
Fixes #11316