Skip to content

feat: Tsuki hardfork — migrate to DogeOS reth/revm forks#5

Draft
dghelm wants to merge 2 commits into
mainfrom
feat/tsuki-hardfork-2
Draft

feat: Tsuki hardfork — migrate to DogeOS reth/revm forks#5
dghelm wants to merge 2 commits into
mainfrom
feat/tsuki-hardfork-2

Conversation

@dghelm

@dghelm dghelm commented Jul 3, 2026

Copy link
Copy Markdown

Summary

Migrates the rollup node onto the Tsuki hardfork toolchain: DogeOS forks of reth and revm, plus the source/test changes reth 1.11.1 requires.

Depends on DogeOS69/dogeos-reth#5 (feat/tsuki-hardfork) — this branch pins its head commit 65bae46.

Changes

feat: migrate to DogeOS reth/revm forks for Tsuki hardfork

  • Point all reth-*, reth-scroll-*, scroll-alloy-* crates at DogeOS69/dogeos-reth rev 65bae46 (reth 1.11.1 base).
  • Patch revm/op-revm to scroll-tech/revm branch feat/v103 (the revm version dogeos-reth builds against); revm-scroll resolves to DogeOS69/dogeos-revm tag tsuki-v0.4 transitively.
  • Bump alloy to 1.6.3 / alloy-primitives 1.5.6.
  • Switch the anvil test dep to scroll-tech/foundry (feat/bump-dependencies) and add the solar crates.io patches it needs; both pinned to full revs.
  • Bump rust-version and both Dockerfiles to 1.91; adopt resolver 3 so dependency selection stays MSRV-aware (avoids inturn/vergen versions requiring Rust 1.95).
  • Add reth-tasks/test-utils to the node, chain-orchestrator, and watcher test-utils features; exclude Cargo.toml from dprint.

feat: adapt source and tests to reth 1.11.1 API changes

  • Migrate off the removed spawn/spawn_critical helpers. pprof stays critical (spawn_critical_task); db_maintenance and scroll_network_manager use spawn_task to preserve their original non-critical behavior — a blanket rename to spawn_critical_task would tear the node down if e.g. the network manager returns benignly.
  • Implement RpcHandleProvider::rpc_handle_mut.
  • TaskManagerTaskExecutor in the test harness, built with TaskExecutor::test() (lightweight 2-thread pools) rather than ::default(), which would allocate full CPU-sized pools per node and blow up thread counts on high-core CI under --all-features.
  • transfer_tx_nonce_bytestransfer_tx_bytes_with_nonce; sequencer setup() 2-tuple return.
  • Regenerate anvil_state.json for the newer anvil serialization (adds gas_refund_counter).
  • Test stabilizers: txpool max_account_slots: 16_384 (lets a single wallet queue many txs), duplicate-tx tolerance, deterministic block_sequenced wait replacing a flaky sleep, integration timeouts raised 60s→120s, and nextest run with --test-threads 4. The timeout/thread changes accommodate the heavier stack — they are not masking a regression.

Notes

  • revm source: revm/op-revm stay on the scroll-tech/revm feat/v103 branch (not a pinned rev) because dogeos-reth references revm via the same branch spec internally and cargo only unifies exactly-matching git sources — a rev= would split revm into two copies. dogeos-revm tsuki-v0.4 only provides the revm-scroll crate, so "no Scroll revm at all" would need upstream work.
  • Lock pins: fresh resolution overshoots and breaks the foundry/tempo/solar test deps, so the lock pins the known-good set (big-alloy 1.7.3, alloy-primitives/sol/syn-solidity 1.5.7, alloy-chains 0.2.30) — matching chore: update reth to v1.11.1 + switch foundry to scroll fork scroll-tech/rollup-node#500, which this port mirrors.

Validation

  • cargo check --locked --bin rollup-node
  • cargo check --all-features --workspace --locked --tests
  • cargo nextest run --all-features --workspace --locked -E 'kind(test) and not test(docker)' --test-threads 4 -- --skip test_should_consolidate_to_block_15k61 passed, 5 skipped
  • docker buildx build --platform linux/amd64 --load . ✅ builds; docker run … --help

Related

🤖 Generated with Claude Code

Update the workspace dependencies to build against the Tsuki hardfork
toolchain:

- Point all reth-*, reth-scroll-*, and scroll-alloy-* crates at
  DogeOS69/dogeos-reth rev 65bae46 (reth 1.11.1 base, Tsuki hardfork).
- Patch revm/op-revm to scroll-tech/revm branch feat/v103 to match the
  revm version used by dogeos-reth; revm-scroll resolves to
  DogeOS69/dogeos-revm tag tsuki-v0.4 transitively. This stays a branch
  ref (not a pinned rev) so it unifies with dogeos-reth's own internal
  revm reference; Cargo.lock still pins the exact commit.
- Pin the anvil (scroll-tech/foundry) and solar patches to full-length
  revs for supply-chain hygiene.
- Bump alloy to 1.6.3 / alloy-primitives 1.5.6 to match reth 1.11.1.
- Switch anvil test dep to scroll-tech/foundry feat/bump-dependencies
  and add the solar crates.io patches it requires.
- Bump rust-version and Docker images to 1.91; adopt resolver 3 so
  dependency selection stays MSRV-aware and avoids crates that require
  newer toolchains than the 1.91 build target.
- Add reth-tasks/test-utils to node, chain-orchestrator and watcher
  test-utils features.
- Exclude Cargo.toml from dprint formatting.

Cargo.lock alloy versions are pinned to the set that dogeos-reth 1.11.1
and the foundry/tempo/solar test dependencies compile against
(big-alloy 1.7.3, alloy-primitives/sol 1.5.7, alloy-chains 0.2.30).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@dghelm dghelm force-pushed the feat/tsuki-hardfork-2 branch from 9d2c4b9 to 65825bb Compare July 3, 2026 21:56
Port the source and test-utils changes required by the reth 1.11.1 /
Tsuki upgrade (mirrors scroll-tech/rollup-node scroll-tech#500):

- Migrate off the removed spawn / spawn_critical task helpers. pprof
  stays critical via spawn_critical_task; db_maintenance and
  scroll_network_manager use spawn_task to preserve their original
  non-critical behavior (a plain rename to spawn_critical_task would
  silently tear down the node if the network manager returns).
- Implement RpcHandleProvider::rpc_handle_mut on ScrollAddOnsHandle.
- Replace TaskManager with TaskExecutor in the node test harness, and
  build it with TaskExecutor::test() (lightweight 2-thread pools) rather
  than ::default(), which would allocate full CPU-sized pools per node
  and blow up thread counts on high-core CI under --all-features. Move
  the graceful-shutdown closure accordingly.
- Rename TransactionTestContext::transfer_tx_nonce_bytes to
  transfer_tx_bytes_with_nonce.
- Update the sequencer setup() call sites to the new 2-tuple return.
- Regenerate anvil_state.json for the newer anvil serialization
  (adds gas_refund_counter).
- Test stabilizers: bump txpool max_account_slots (with rationale),
  tolerate already-known transactions, wait on block_sequenced instead
  of a fixed sleep, raise integration timeouts to 120s, and run nextest
  with --test-threads 4.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@dghelm dghelm force-pushed the feat/tsuki-hardfork-2 branch from 65825bb to fea90ef Compare July 3, 2026 23:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant