fix(batcher): altda parallel submitted blobs respect strict holocene order #21
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.
See upstreamed PR for more details. OP doesn't have time to review and upstream our PRs atm so we have to maintain this fork instead.
The recent holocene strict ordering rules broke the altda concurrent blob submission flow because concurrent requests to the da-server could be received out of order, and hence would be dropped by the op-node's derivation pipeline with strict ordering rules.
Solution TLDR: cache the altda commitments inside their respective channel, and add logic to pull them back in order.
This PR looks big but most of it is tests. The main Solution logic is quite small, and contained in this one commit: 3cbe31f
It also contains a fix for the recently introduced sync_actions data race (0a8bbe4), but I think this will be subsumed by ethereum-optimism#13330
Otherwise the added tests are:
this one is more contentious as it requires some source code manipulation (b/c golang doesnt have macros) codegen. Updated the tooling (mise, just dependencies) to make it reproducible, and also using a separate GOCACHE for it, so should be very self-contained. But still left it as a separate commit so that we can easily remove it if you guys don't want it (even though I think you should, and should probably use it to test channelTimeouts for non-altda codepaths!)