Skip to content

Update Reth stateless to v2#42

Merged
jsign merged 13 commits intomainfrom
jsign-update-reth-3
Apr 24, 2026
Merged

Update Reth stateless to v2#42
jsign merged 13 commits intomainfrom
jsign-update-reth-3

Conversation

@jsign
Copy link
Copy Markdown
Collaborator

@jsign jsign commented Apr 23, 2026

Update to the latest paradigmxyz/stateless Reth v2 with many implications:

  • Update the Zisk custom crypto implementation for the new revm Crypto trait API, including PrecompileHalt and borrowed BLAKE2 inputs.
  • As above, also related to OpenVM and SP1.
  • Remove the block-encoding-length benchmark crate and guest binaries from the workspace, docs, CI, and integration tests.
  • Pin the OpenVM Rust toolchain in compile/integration CI with OPENVM_RUST_TOOLCHAIN=nightly-2025-10-30.
  • Had to regenerate a new blocks.tar.gz since Reth v2 changed the types for Block and Transactions (e.g. uses different encoding for values, for example, hex vs decimal), plus removed Compat support, thus the field in block changed from snake case to camel case). Empty block and invalid block are the same; the 10 mainnet blocks were changed to ones I pulled just now from mainnet using tentative Remove using Reth stateless fork & other misc improvements zkevm-benchmark-workload#279)

jsign added 7 commits April 23, 2026 19:52
- Updated `Cargo.toml` to remove unnecessary features from `reth-ethereum-primitives`.
- Replaced `BincodeBlock` with `RethBlock` in `guest.rs` to support RLP encoding for block serialization.
- Modified serialization and deserialization implementations for `RethBlock` to handle RLP bytes.
- Updated tests in `block_ssz.rs` to use `RethBlock` instead of `BincodeBlock`.
- Adjusted `BlockEncodingLengthInput` in `host.rs` to use `RethBlock`.
- Simplified return value in `get_requests` function in `stateless-validator-reth/src/host.rs`.
fail-fast: false
matrix:
guest:
- block-encoding-length
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reth v2 removed the bincode-compat from their Block type (and other ones).
For stateless-validator-reth we are okay since EIP-8025 we pass our own NewPayloadRequest and not Block anymore.

But block-encoding-length was relying on it -- instead of working around this, I prefered to remove this guest program since this was originally done in early days of experimenting using SSZ as encoding, which ended up being our conclusion today anyway.

@jsign
Copy link
Copy Markdown
Collaborator Author

jsign commented Apr 24, 2026

@han0110, before (or after?) merging might worth doing a temp check in zkboost maybe with this new ere-guest branch and the workload one. This Reth V2 stuff came with a lot of surprises. Can wait for your green signal before we hit merge even if reviewed.

Edit: Also did a stateless-validation-debug run with a re-generated EEST with 8k benchmarks with the new workload PR, and all expected_success matched -- just to be more sure about things. Although I trust more the 10 mainnet blocks doing better coverage since those have more complexity than benchmark blocks reg execution witness, but all helps.

@han0110
Copy link
Copy Markdown
Collaborator

han0110 commented Apr 24, 2026

Make sense, will create a zkboost PR on this branch and see if there is anything unexpected.

Opened eth-act/zkboost#60, also tested locally and it looks fine.

Copy link
Copy Markdown
Collaborator

@han0110 han0110 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@jsign jsign merged commit a58aa0d into main Apr 24, 2026
41 checks passed
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.

2 participants