This PR migrates zeth from directly using revm to using reth for building blocks. This allows zeth to support all forks supported by reth. The changes are an overhaul of many of zeth's internal components and project structure. Notably, because of Cargo's feature unification, and reth's dependence on feature flags for enabling/disabling OP functionality, two separate zeth binaries are now necessary.
The project has been restructured into the following crates:
zeth-core Library for defining and using the sparse MPT to statelessly build a block using reth.
zeth-core-ethereum Specialization of the core library for Ethereum blocks.
zeth-core-optimism Specialization of the core library for Optimism blocks.
zeth-preflight Library for populating the data required to statelessly build a block using zeth-core.
zeth-preflight-ethereum Specialization of the preflight library for Ethereum RPCs.
zeth-preflight-optimism Specialization of the preflight library for Optimism RPCs.
zeth-guests-reth-ethereum A binary for running the stateless block building process for Ethereum blocks.
zeth-guests-reth-optimism A binary for running the stateless block building process for Optimism blocks.
zeth-guests Library for exporting the compiled rv32im bytecode of zeth-guests-reth.
zeth A library for running a CLI to use the RISC Zero zkVM to generate/verify proofs for the stateless block building process.
zeth-ethereum A binary using the zeth crate for Ethereum blocks.
zeth-optimism A binary using the zeth crate for Optimism blocks.
zeth-benchmark A binary for benchmarking proving performance for randomly sampled blocks.
Functionality changes:
All ethereum types have been migrated to alloy types.
All Bonsai and profiling logic has been delegated to r0vm's environment variables.
Optimism consensus verification (block derivation) logic has been removed.
Ethereum foundation testing is unfinished.
Note: v1.81 of the toolchain is required:
rzup update
Note: Separate binaries must be built individually
This PR migrates
zeth
from directly usingrevm
to usingreth
for building blocks. This allows zeth to support all forks supported byreth
. The changes are an overhaul of many of zeth's internal components and project structure. Notably, because of Cargo's feature unification, and reth's dependence on feature flags for enabling/disabling OP functionality, two separate zeth binaries are now necessary.The project has been restructured into the following crates:
zeth-core
Library for defining and using the sparse MPT to statelessly build a block using reth.zeth-core-ethereum
Specialization of the core library for Ethereum blocks.zeth-core-optimism
Specialization of the core library for Optimism blocks.zeth-preflight
Library for populating the data required to statelessly build a block usingzeth-core
.zeth-preflight-ethereum
Specialization of the preflight library for Ethereum RPCs.zeth-preflight-optimism
Specialization of the preflight library for Optimism RPCs.zeth-guests-reth-ethereum
A binary for running the stateless block building process for Ethereum blocks.zeth-guests-reth-optimism
A binary for running the stateless block building process for Optimism blocks.zeth-guests
Library for exporting the compiled rv32im bytecode ofzeth-guests-reth
.zeth
A library for running a CLI to use the RISC Zero zkVM to generate/verify proofs for the stateless block building process.zeth-ethereum
A binary using thezeth
crate for Ethereum blocks.zeth-optimism
A binary using thezeth
crate for Optimism blocks.zeth-benchmark
A binary for benchmarking proving performance for randomly sampled blocks.Functionality changes:
Note: v1.81 of the toolchain is required:
Note: Separate binaries must be built individually
Issues affected: