Ethereum execution client targeting the L1 Strawmap
eth2030.com
Warning: This is an experimental research project and reference implementation under active development. It is not production-ready and is intended primarily for study, research, and prototyping. Use at your own risk. APIs, data formats, and behavior may change without notice.
Quick Start · Devnet Testing · Roadmap · EIP Coverage · Architecture · Contributing
Built in Go, targeting the L1 Strawmap — the EF Architecture team's Ethereum protocol roadmap through the Giga-Gas era.
- Full EVM execution -- 164+ opcodes, 24 precompiles, EOF container support, go-ethereum v1.17.1 backend
- 100% EF conformance -- 36,126/36,126 Ethereum Foundation state tests passing via go-ethereum v1.17.1 backend
- 58+ EIPs supported -- Covering Frontier through Prague and beyond (native + go-ethereum backend)
- Parallel execution -- Block Access Lists (EIP-7928) for BAL-driven parallel transaction processing
- Post-quantum ready -- ML-DSA-65 (FIPS 204), Dilithium3, Falcon512, SPHINCS+ signers with hybrid mode
- Native rollups -- EIP-8079 EXECUTE precompile and anchor contract
- zkVM framework -- RISC-V RV32IM CPU emulator, STF executor, zkISA bridge (simulated proofs, production Groth16 integration pending)
- Full consensus -- 3-slot finality (3SF), quick slots (6s), 1-epoch finality, PQ attestations
- PeerDAS -- Data availability sampling, custody proofs, blob streaming, variable-size blobs
- ePBS + FOCIL -- Enshrined PBS with distributed builder and fork-choice enforced inclusion lists
- Complete networking -- devp2p, discovery V5, gossip (pub/sub), Portal network, snap sync
- Engine API V3-V7 -- Full payload lifecycle, forkchoice, ePBS builder API, 50+ JSON-RPC methods
# Clone
git clone https://github.com/jiayaoqijia/eth2030.git
cd eth2030/pkg
# Build all packages
go build ./...
# Build the geth-embedded node (syncs with mainnet/testnets)
go build -o eth2030-geth ./cmd/eth2030-geth/
# Sync with Sepolia testnet (requires a consensus client on port 8551)
./eth2030-geth -network sepolia -datadir ~/.eth2030-sepolia
# Sync with mainnet
./eth2030-geth -datadir ~/.eth2030-geth -authrpc.jwtsecret /path/to/jwt.hex
# Run all tests (48 packages, 18,400+ tests)
go test ./...
# Run EF state test validation (36,126 vectors, 100% pass rate)
go test ./core/eftest/ -run TestGethCategorySummary -timeout=10mNote: eth2030-geth uses Go's
flagpackage. Flags are shown with single-dash (-flag) to match--helpoutput, but double-dash (--flag) also works.
| Flag | Default | Description |
|---|---|---|
-datadir |
~/.eth2030-geth |
Data directory for chain data |
-network |
mainnet |
Network: mainnet, sepolia, holesky |
-syncmode |
snap |
Sync mode: snap, full |
-port |
30303 |
P2P listening port |
-http.port |
8545 |
HTTP-RPC server port |
-authrpc.port |
8551 |
Engine API port (for CL client) |
-authrpc.jwtsecret |
auto | Path to JWT secret for Engine API auth |
-maxpeers |
50 |
Maximum P2P peers |
-verbosity |
3 |
Log level (0=silent, 5=trace) |
-override.glamsterdam |
- | Test Glamsterdam fork at timestamp |
ETH2030 includes Kurtosis devnet integration for multi-client consensus testing using ethpandaops/ethereum-package with 10 testing tools (assertoor, spamoor, rakoon, dora, blobscan, forky, tracoor, forkmon, prometheus, grafana).
# Prerequisites: Docker + Kurtosis CLI
kurtosis engine start
cd pkg && docker build -t eth2030:local .
# Run all 40 feature devnet tests
cd pkg/devnet/kurtosis && ./scripts/run-feature-tests.sh
# Run specific features
cd pkg/devnet/kurtosis && ./scripts/run-feature-tests.sh epbs focil native-aa
# Launch a general devnet
cd pkg/devnet/kurtosis && ./scripts/run-devnet.sh full-feature40 Feature Tests — All passing consensus checks, covering all 65 roadmap items:
24 Roadmap Feature Tests:
| Feature | EIP(s) | Feature | EIP(s) |
|---|---|---|---|
| ePBS | EIP-7732 | PeerDAS | EIP-7594 |
| FOCIL | EIP-7805 | 3SF/Quick Slots | — |
| BALs | EIP-7928 | BAL Feasibility | EIP-7928 |
| BAL Retention | EIP-7928 | PQ Crypto | — |
| Native AA | EIP-7702 | Encrypted Mempool | — |
| Gas Repricing | 18 EIPs | Shielded Transfers | — |
| Blobs | EIP-4844/8070 | SSZ | EIP-6404/7807 |
| Multidim Gas | EIP-7706 | Multidim Fee Tx | EIP-7706 |
| Native Rollups | EIP-8079 | Frame Mempool | EIP-8141 |
| Gas Vectors 3D | EIP-7706 | IL Satisfaction | EIP-7805 |
| Local Tx | — | Mixnet | — |
| RISC-V Precompile | zkVM | STARK Frames | EIP-8141 |
16 Layer Group Tests (CL/DL/EL feature groups covering remaining roadmap items):
| Group | Items Covered | Group | Items Covered |
|---|---|---|---|
| cl-finality | fast confirm, 1-epoch, endgame | cl-validators | attester cap, 128K, APS, 1 ETH |
| cl-attestations | 1M attest, jeanVM, PQ attest | cl-security | 51% recovery, secret proposers |
| cl-infrastructure | beacon specs, tech debt, VDF | dl-blob-advanced | PQ blobs, variable-size, teragas |
| dl-reconstruction | local reconstruct, sample opt | dl-futures | blob futures, custody proofs |
| dl-broadcast | cell msgs, 7702 broadcast, streaming | el-gas-schedule | 3x/year limit, Hegotá repricing |
| el-payload | chunking, block-in-blobs, nonce | el-proofs | optional, mandatory 3-of-5, aggregation |
| el-zkvm | canonical guest/zkVM, STF, zkISA | el-state | binary tree, VOPS, endgame state |
| el-tx-advanced | AA, purges, assertions, NTT | el-gas-futures | gas futures, sharded mempool, gigagas |
6 General Configs — single-client, multi-client (cross-client consensus with upstream geth), stress-test, blob-test, eip7702-test, full-feature.
See pkg/devnet/kurtosis/README.md for full documentation (40 feature tests, 6 configs, 10 tools).
+------------------------------+
| Consensus Client (CL) |
+--------------+---------------+
| Engine API (JSON-RPC)
+--------------v---------------+
| Engine API Server |
| newPayloadV3-V7, fcuV3/V4 |
+--------------+---------------+
|
+---------------------+------------------+
| | |
+--------v------+ +----------v--------+ +-------v-------+
| Block Builder | | Block Validator | | Payload Store |
+--------+------+ +----------+--------+ +---------------+
| |
+--------v---------------------v------+
| State Processor |
| Sequential -> Parallel (EIP-7928) |
+--------+----------------------------+
|
+--------v--------------------------+ +--------------------+
| go-ethereum EVM (v1.17.0) | | Consensus Layer |
| + 13 ETH2030 custom precompiles | | 3SF, Attestations |
+--------+--------------------------+ +--------------------+
|
+--------v--------------------------+ +-------------------+
| StateDB |---->| Transaction Pool |
| Accounts, Storage, Code, Logs | | + Encrypted/Shared|
+--------+--------------------------+ +-------------------+
|
+--------v--------------------------+ +-------------------+
| Trie / Binary |---->| P2P / Sync |
| MPT + Binary (EIP-7864) | | Discovery, Portal |
+--------+--------------------------+ +-------------------+
|
+--------v--------------------------+ +-------------------+
| Key-Value Store (rawdb) | | DAS / PeerDAS |
+-----------------------------------+ | Blob Sampling |
+-------------------+
ETH2030 imports go-ethereum v1.17.1 as a library for EVM execution, achieving 100% EF state test conformance:
| Component | Description |
|---|---|
pkg/geth/processor.go |
Block processor using gethcore.ApplyMessage |
pkg/geth/extensions.go |
13 custom precompile injection via evm.SetPrecompiles() |
pkg/geth/statedb.go |
State creation using go-ethereum's real trie DB |
pkg/geth/config.go |
Chain config mapping (ETH2030 forks to go-ethereum params) |
Custom precompiles injected: 4 Glamsterdam repriced (0x06, 0x08, 0x09, 0x0a), 1 NTT (0x15), 4 NII (0x0201-0x0204), 4 field arithmetic (0x0205-0x0208).
The eth2030-geth binary has been verified syncing with live Ethereum networks:
| Network | CL Client | Sync Mode | Status | RPC APIs Verified |
|---|---|---|---|---|
| Sepolia | Lighthouse v8.1.0 | Snap | Headers downloading at ~9K/sec, chain ~33%, state ~4% | 20+ methods |
| Mainnet | - | Snap | Genesis initialized, Chain ID 1, peer discovery active | 20+ methods |
Verified RPC methods: eth_chainId, eth_blockNumber, eth_getBlockByNumber, eth_syncing, eth_feeHistory, eth_getBalance, eth_getCode, net_version, net_peerCount, web3_clientVersion, admin_nodeInfo, admin_peers, txpool_status, engine_exchangeCapabilities, and more.
ETH2030 combines native implementations with go-ethereum as a backend. This section clarifies what is built from scratch versus delegated:
go-ethereum delegated (~40 EIPs): Core EVM opcodes, gas accounting, state root computation, trie operations, and standard precompile execution are handled by the pkg/geth/ adapter importing go-ethereum v1.17.1 as a library. This includes all Frontier-through-Prague EVM semantics, EIP-158 empty account cleanup, and SSTORE gas metering (EIP-2200/2929/3529).
Native ETH2030 (~25 features): Consensus layer (3SF, quick slots, 1-epoch finality, PQ attestations, endgame finality), data availability (PeerDAS, blob streaming, custody proofs, variable-size blobs), proposer-builder separation (ePBS, FOCIL, distributed builder), encrypted mempool (commit-reveal, threshold decryption), BAL parallel execution (EIP-7928), native rollups (EIP-8079), SSZ encoding (EIP-6404/7807), 13 custom precompiles (NTT, NII, field arithmetic), and the Engine API V3-V7.
Prototype/Functional: The zkVM framework has a real RISC-V RV32IM CPU emulator with witness collection and cycle counting, but proofs are SHA-256 hash-based rather than Groth16 (production ZK backend integration pending).
| Package | Description | Status |
|---|---|---|
pkg/core |
Blockchain, state processor, block builder, validator, fee logic, gas futures | Complete |
pkg/core/types |
Header, Transaction (7 types), Receipt, Block, SSZ encoding | Complete |
pkg/core/state |
StateDB interface, in-memory, trie-backed, stateless, prefetcher | Complete |
pkg/core/vm |
EVM interpreter, 164+ opcodes, 24 precompiles, gas tables, EOF | Complete |
pkg/core/eftest |
EF state test runner: 36,126/36,126 (100%) via go-ethereum backend | Complete |
pkg/geth |
go-ethereum adapter: type conversion, block processor, precompile injection | Complete |
pkg/consensus |
3SF (3-slot finality), quick slots, 1-epoch finality, attestations, beacon state, BLS adapter | Complete |
pkg/crypto |
Keccak-256, secp256k1, BN254, BLS12-381, Banderwagon, IPA, VDF, shielded | Complete |
pkg/crypto/pqc |
ML-DSA-65, Dilithium3, Falcon512, SPHINCS+, hybrid signer, lattice blobs | Complete |
pkg/engine |
Engine API V3-V7, forkchoice, payload building, ePBS, distributed builder | Complete |
pkg/epbs |
Enshrined PBS (EIP-7732): builder bids, auctions, payload envelopes | Complete |
pkg/focil |
FOCIL (EIP-7805): inclusion list building, validation, compliance | Complete |
pkg/bal |
Block Access Lists (EIP-7928) for parallel execution | Complete |
pkg/das |
PeerDAS: sampling, custody, reconstruction, blob streaming, futures | Complete |
pkg/rollup |
Native rollups (EIP-8079): EXECUTE precompile, anchor contract | Complete |
pkg/zkvm |
zkVM: canonical guest (RISC-V), STF executor, zkISA bridge, proof backend | Complete |
pkg/proofs |
Proof aggregation: SNARK/STARK/IPA/KZG, mandatory 3-of-5 system | Complete |
pkg/txpool |
Transaction pool, RBF, sparse blobpool, encrypted mempool, sharded | Complete |
pkg/p2p |
TCP transport, devp2p, discovery V5, gossip, Portal network, snap sync | Complete |
pkg/trie |
MPT + Binary Merkle tree (EIP-7864), SHA-256, proofs, migration | Complete |
pkg/rpc |
JSON-RPC server, 50+ methods, filters, WebSocket, Beacon API | Complete |
pkg/sync |
Full sync + snap sync + beam sync pipeline | Complete |
pkg/rlp |
RLP encoding/decoding per Yellow Paper Appendix B | Complete |
pkg/ssz |
SSZ encoding/decoding, merkleization, EIP-7916 ProgressiveList | Complete |
All 48 packages (click to expand)
| Package | Description |
|---|---|
pkg/core/rawdb |
FileDB with WAL, chain DB, EIP-4444 history expiry |
pkg/core/state/snapshot |
Layered diff/disk snapshots, account/storage iterators |
pkg/core/state/pruner |
State pruner with bloom filter reachability |
pkg/core/vops |
Validity-Only Partial Statelessness: executor, validator, witness |
pkg/das/erasure |
Reed-Solomon erasure coding (Lagrange interpolation) |
pkg/witness |
Execution witness (EIP-8025), collector, verifier |
pkg/txpool/encrypted |
Encrypted mempool: commit-reveal, threshold decryption |
pkg/txpool/shared |
Sharded mempool with consistent hashing |
pkg/light |
Light client: header sync, proof cache, sync committee, CL proofs |
pkg/p2p/discover |
Peer discovery V4/V5, Kademlia DHT |
pkg/p2p/discv5 |
Discovery V5 protocol with WHOAREYOU/handshake |
pkg/p2p/dnsdisc |
DNS-based peer discovery |
pkg/p2p/enode |
Node identity and URL parsing |
pkg/p2p/enr |
Ethereum Node Records (extensible key-value) |
pkg/p2p/portal |
Portal network: content DHT, Kademlia routing |
pkg/p2p/snap |
Snap sync protocol messages |
pkg/trie/bintrie |
Binary Merkle trie: Get/Put/Delete/Hash/Commit, proofs |
pkg/eth |
ETH protocol handler, codec, EIP-8077 announce nonce (ETH/72) |
pkg/node |
Client node: config, lifecycle, subsystem wiring |
pkg/cmd/eth2030 |
CLI binary with flags, signal handling |
pkg/cmd/eth2030-geth |
Production node: go-ethereum embedded, mainnet/testnet sync |
pkg/log |
Structured logging (JSON/text) |
pkg/metrics |
Counters, gauges, histograms, Prometheus, EWMA, CPU tracker |
| EIP | Name | EIP | Name |
|---|---|---|---|
| 150 | Gas Cost Changes (63/64 rule) | 7002 | EL Withdrawals |
| 152 | BLAKE2 Precompile | 7069 | EXTCALL (EOF) |
| 196/197 | BN254 Pairing | 7251 | MAX_EFFECTIVE_BALANCE |
| 1153 | Transient Storage | 7480 | EOF Data |
| 1559 | Dynamic Fee Market | 7547 | FOCIL Inclusion Lists |
| 2200 | SSTORE Gas Metering | 7549 | Committee Attestations |
| 2537 | BLS12-381 Precompiles | 7594 | PeerDAS |
| 2718 | Typed Transactions | 7620 | EOFCREATE |
| 2929 | State Access Gas | 7685 | EL Requests |
| 2930 | Access List Transactions | 7691 | Blob Throughput |
| 2935 | Historical Block Hashes | 7698 | EOF Creation Tx |
| 3529 | Reduction in Refunds | 7701 | Native AA |
| 3540 | EOF Container | 7702 | Set Code for EOAs |
| 4444 | History Expiry | 7706 | Multidimensional Gas |
| 4762 | Statelessness Gas | 7742 | Uncoupled Blobs |
| 4788 | Beacon Block Root | 7745 | Log Index |
| 4844 | Blob Transactions + KZG | 7807 | SSZ Blocks |
| 4895 | Withdrawals | 7825 | Tx Gas Cap |
| 5656 | MCOPY Opcode | 7898 | Uncoupled Execution Payload |
| 6110 | Validator Deposits | 7904 | Gas Repricing |
| 6404 | SSZ Transactions | 7916 | SSZ ProgressiveList |
| 6780 | SELFDESTRUCT Restriction | 7918 | Blob Base Fee Bound |
| 7928 | Block Access Lists | 7939 | CLZ Opcode |
| 8024 | DUPN/SWAPN/EXCHANGE | 8070 | Sparse Blobpool |
| 8077 | Announce Nonce | 8079 | Native Rollups |
| 8141 | Frame Transactions |
Substantially implemented: EIP-7732 (ePBS), EIP-7805 (FOCIL), EIP-7864 (Binary Merkle Tree), EIP-8025 (Execution Proofs), PQC (Dilithium3/Falcon512/SPHINCS+)
See docs/EIP_SPEC_IMPL.md for full traceability: specs, implementations, and tests for each EIP.
| Metric | Value |
|---|---|
| Total tests | 36,126 |
| Passing | 36,126 (100%) |
| Failing | 0 |
| Categories | 57/57 at 100% |
| Backend | go-ethereum v1.17.1 |
| Runner | pkg/core/eftest/geth_runner.go |
ETH2030 tracks 8 upgrade phases from the L1 Strawmap covering consensus, data, and execution layers from 2026 through 2030+.
| Metric | Value |
|---|---|
| Upgrade phases | 8 |
| Roadmap items tracked | 65 |
| Complete | 65 (all items with real crypto, validation, and test coverage) |
| Functional | 0 |
| Partial | 0 |
All 65 strawmap items are COMPLETE with real cryptographic backends wired (BLS, Dilithium3, KZG, BN254 Pedersen). See docs/GAP_ANALYSIS.md for the full audit.
| Method | Fork | Status |
|---|---|---|
engine_newPayloadV3 |
Cancun | Implemented |
engine_newPayloadV4 |
Prague | Implemented |
engine_newPayloadV5 |
Amsterdam | Implemented |
engine_forkchoiceUpdatedV3 |
Cancun | Implemented |
engine_forkchoiceUpdatedV4 |
Amsterdam | Implemented |
engine_getPayloadV3/V4/V6/V7 |
Cancun-Amsterdam+ | Implemented |
engine_exchangeCapabilities |
All | Implemented |
engine_getClientVersionV1 |
All | Implemented |
50+ methods across eth_*, net_*, web3_*, debug_* namespaces including block/tx queries, eth_call, eth_estimateGas, fee history, log filters, WebSocket subscriptions (newHeads, logs, pendingTransactions), sync status, EVM tracing, and MPT proofs.
- docs/EIP_SPEC_IMPL.md -- EIP traceability: specs, implementations, tests (94+ EIPs)
- docs/strategies/lean-vm-riscv-implementation.md -- Lean 4 strategy for formal VM and RISC-V compiler-chain proof development
- docs/GAP_ANALYSIS.md -- Full audit of 65 roadmap items
- docs/plans/lean-vm-audit.md -- leanVM security audit: 18 findings across 4 leanEthereum repos
- docs/PROGRESS.md -- Progress report and completion tracking
- docs/DESIGN.md -- Architecture and implementation design
- docs/ROADMAP.md -- L1 Strawmap timeline overview
- docs/ROADMAP-DEEP-DIVE.md -- EIP research and analysis
- pkg/devnet/kurtosis/README.md -- Kurtosis devnet testing (40 features, 6 configs, 10 tools)
This project was built with Claude Code (Claude Opus 4/4.6) over ~8 days:
| Metric | Value |
|---|---|
| Total tokens (billed) | 3.42 billion |
| Total throughput | 7.50 billion |
| Unique API calls | 34,172 |
| Session files analyzed | 966 (9 main + 957 sub-agent) |
| Output tokens | 811,000 |
| Estimated API cost | ~$7,100 |
| Cost per 1K LOC | ~$10.19 |
See CONTRIBUTING.md for development setup, coding guidelines, and contribution categories.
See SECURITY.md for vulnerability reporting.
refs/ contains 37 git submodules for upstream specs and implementations:
Ethereum specs: EIPs, ERCs, consensus-specs, execution-specs, execution-apis, beacon-APIs, builder-specs, consensus-spec-tests, execution-spec-tests
Reference client: go-ethereum
Cryptography: blst (BLS12-381), circl (PQC: ML-DSA, ML-KEM, SLH-DSA), go-eth-kzg (KZG), gnark (ZK proofs), gnark-crypto, c-kzg-4844
PQ research: hash-sig (hash-based multi-sigs), ntt-eip (EIP-7885 NTT precompile), ethfalcon (FALCON on EVM)
Devops: ethereum-package, benchmarkoor, erigone, xatu, consensoor
Audited: leanMultisig, leanSig, leanSpec, fiat-shamir (leanEthereum — 18-finding security audit)
The ETH2030 library (i.e. all code outside of the cmd directory) is licensed under the
GNU Lesser General Public License v3.0,
also included in our repository in the COPYING.LESSER file.
The ETH2030 binaries (i.e. all code inside of the cmd directory) are licensed under the
GNU General Public License v3.0, also
included in our repository in the COPYING file.