ethereum-optimism / ethereum-optimism/optimism
kona pure derivation — Phase 4: migrate kona-node to NodeDeriver
- Dominant language
- Go
- Stars
- 6.5k
- Forks
- 4k
- Avg merge
- 2d 15h
- Merged PRs (30d)
- 145
Description
Replace `OnlinePipeline` + `DerivationActor`'s pipeline use with `NodeDeriver`: an async wrapper around `pure::Deriver` that owns the L1 prefetcher, L2 lookup, reorg/finalization handling, and trace-to-tracing translation.
## Touches
- `crates/node/service/src/service/node.rs` — `create_pipeline` replaced with `NodeDeriver::new`.
- `crates/node/service/src/actors/derivation/actor.rs` — step loop + the `Signal::Activation` site.
- `crates/node/service/src/actors/derivation/{state_machine.rs, delegated/actor.rs}` — the `Signal`-driven state machine collapses; the driver replaces it.
- `crates/providers/providers-alloy/src/pipeline.rs` — `OnlinePipeline` deprecated; deletion pinned to Phase 6b.
- `bin/node/src/flags/p2p.rs` — non-pipeline `ChainProvider` use migrates alongside.
## Deliverables
- `NodeDeriver` owns `pure::Deriver`, an L1 prefetcher (uses `AlloyChainProvider` + `OnlineBlobProvider`), and an L2 lookup (`AlloyL2ChainProvider`). Async `step` matches on `Derivation`, dispatches fetches, feeds back to the deriver.
- Trace-to-tracing translation in the driver.
- Reset/init via existing `system_config_by_number` for sysconfig bootstrap.
- Node-side integration tests pass — specifically `rust/kona/tests/node/{long-running, reorgs, restart}` and `rust/kona/tests/supervisor/{l2reorg, l2reorgAfterL1reorg}`.
- New actor-level test exercising a span-batch-overlap path end-to-end.
- At least one test asserts `tracing` output for a representative `TraceEntry` (verifies translation layer).
Builds on Phase 3.
Part of #20695.
🤖 *Generated by Claude Code*
Contributor guide
Research direction
Start with Phase 3 and read crates/node/service/src/service/node.rs and crates/node/service/src/actors/derivation/actor.rs, then inspect the state-machine files and providers-alloy/src/pipeline.rs. Trace how NodeDeriver should own fetching, reorg handling, and trace translation. Done means the node and supervisor integration tests pass, the actor-level overlap test exists, and a test verifies tracing output for a TraceEntry.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- backend, distributed-systems, testing-qa
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 28/100