purified-web3

Network config

Config Value
Meta https://ssz-devnet-0.ethpandaops.io
Faucet https://faucet.ssz-devnet-0.ethpandaops.io
CL RPC https://bn.bootnode-1.ssz-devnet-0.ethpandaops.io
EL RPC https://rpc.bootnode-1.ssz-devnet-0.ethpandaops.io
config.yaml https://config.ssz-devnet-0.ethpandaops.io/cl/config.yaml
genesis.ssz https://config.ssz-devnet-0.ethpandaops.io/cl/genesis.ssz
genesis.json https://config.ssz-devnet-0.ethpandaops.io/el/genesis.json

General

The purified web3 devnet builds on top of Prague/Electra. All features are enabled with ELECTRA_FORK_EPOCH / at the prague timestamp. This is the scope of initial devnet:

EIP-7495: SSZ StableContainer

This is a new SSZ type of which Merkleization must be supported to verify proofs on purified web3.

EIP-7688: Forward compatible consensus data structures

This adopts StableContainer for CL data structures and affects the proofs for light client data. Proofs are a bit longer, using a scheme similar to the one used for Electra, as generalized indices change.

EIP-6404: SSZ Transactions

Transactions now use SSZ as their on-chain representation. To verify them, initialize a Transaction SSZ StableContainer from the JSON-RPC, and then hash_tree_root it to obtain transactionRoot.

The following JSON-RPC API methods are extended with an inclusionProof object in their response:

inclusionProof contains:

https://eth-light.xyz offers a viewer to inspect the SSZ representation of any Ethereum mainnet transaction.

✅ Milestone reached: Verifiable transactions

EIP-6466: SSZ Receipts

A couple extras that are pending: https://github.com/ethereum/EIPs/pull/8939/files

Similar to the transactions, but for receipts.

Proofs are on eth_getTransactionReceipt JSON-RPC, follow the same inclusionProof format as for transactions, but use receiptRoot / receiptsRoot / merkleBranch.

Helios needs to construct the SSZ Receipt StableContainer from JSON data, hash_tree_root it then compare with receiptRoot. Check that receiptRoot is at transactionIndex within receiptsRoot. And that receiptsRoot matches the blockHash.

https://eth-light.xyz offers a viewer to inspect the SSZ representation of any Ethereum mainnet receipt.

✅ Milestone reached: Verifiable receipts

EIP-6465: SSZ Withdrawals Root

Withdrawals are changed to SSZ, this may affect block header validation if withdrawals are checked against withdrawals_root.

EIP-7668: Remove bloom filters

Bloom filters for logs are removed as they are not practically useable with their high false positivity rate.

SSZ Block Header

The block hash is now computed as SSZ hash_tree_root. Logs Bloom and PoW fields are gone. Fees are now tracked as a multidimensional fee vector. This affects block header validation.

✅ Milestone reached: Verifiable block headers (beyond what is implicitly trusted from LC protocol)

EIP-7708: ETH transfers emit a log

There are new logs for plain ETH transfers, fee burns, priority fee payments, block rewards, withdrawals and 0-ETH calls. For basic transfers, the new logs take a similar amount of disk space as the Bloom filter used to fill. Further improvements could consolidate the fee burn + priority fee payment to improve parallel transaction execution.

Logs IVC

This is a partial implementation of Vitalik’s idea. Instead of adding the external zk infrastructure, we put everything into EL state.

There is a system contract that stores all incremental log accumulator states in mappings. Mappings exist for lookups by address, by topic, and by address+topic. These are the same filters supported by eth_getLogs.

To verify, Helios needs to obtain the state of the accumulator state of the past, it can also cache this whenever it syncs logs. Or have the client application pass the old cached state, if historical state is difficult to query. This is done with eth_getProof and verified against a trusted old block’s parent state.

Then, run eth_getLogs and locally update the accumulators with the processed logs. If the result matches against the on-chain accumulator state (once more, eth_getProof), the logs can be trusted to be correct without extras or missing ones.

✅ Milestone reached: Verifiable logs