-
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-program: refactor driver to use events derivers #10971
Conversation
Semgrep found 1 Malformed revert statement style. Ignore this finding from sol-style-malformed-revert. |
Hmm, the op-program compat test fails, but it does log:
Which is the correct block at the target block number. |
I think it has something to do with final forkchoice updates not being applied, and the validate-claim uses the safe-block from the chain, not the unapplied engine-controller forkchoice. So the exit-trigger happens before the state is there that will be validated. |
Turns out I stopped execution on unsafe==target, but it needed to be stopped only after safe==target (because span batch backup mechanism) |
2e73934
to
17a54ef
Compare
Code looks good to me, but the failing op-e2e-HTTP-tests-l2oo are interesting:
I don't think I've seen tests fail like that before. |
Ah, we're emitting an
optimism/op-node/rollup/clsync/clsync.go Line 84 in ea4d1fd
|
@ajsutton thanks for the pointers. I changed it so the engine now differentiates between invalid payload and invalid payload attributes. The invalid-attributes case shouldn't trigger an invalid event (nil payload) that gets picked up by the CL sync. |
…#10971) * op-program: refactor to use events derivers * op-node: differentiate between invalid payload and invalid payload attributes
Description
This refactors the op-program driver to run through the state-transition via a synchronous events loop, rather than the old steps loop. This allows it to use the new deriver interface, which then unblocks us from dropping the legacy driver approach.
The op-program starts with an engine-reset, and then events turn into more events until the forkchoice-updated (i.e. event when forkchoice has been applied to engine) to the target block number has been reached.
The op-program is split into two parts:
Extracted from PR #10947
This temporarily duplicates some of the attributes-handling code, as that is essential to go from derived attributes to engine API interactions.
Tests
Additional context
Add any other context about the problem you're solving.
Metadata
Fix #10969