Architecture Overview
A high-level technical view into Axiom
Axiom consists of two main technical pieces:
AxiomV1
-- a cache of Ethereum block hashes starting from genesisAxiomV1Query
-- a smart contract which fulfills queries againstAxiomV1
Caching block hashes in AxiomV1
The AxiomV1
smart contract caches Ethereum block hashes from genesis in two forms.
First, we cache the Keccak Merkle roots of groups of 1024 consecutive block hashes. These Merkle roots are kept updated by ZK proofs which verify that hashes of block headers form a commitment chain that ends in either one of the 256 most recent blocks directly accessible to the EVM or a blockhash already present in the
AxiomV1
cache.Second, we store a Merkle Mountain Range of these Merkle roots starting from the genesis block. This Merkle Mountain Range is constructed on-chain with updates to the Keccak Merkle roots in the first portion of the cache.
See the page below for more details on how this cache is maintained or accessed.
Caching Block HashesFulfilling queries in AxiomV1Query
The AxiomV1Query
smart contract fulfills batch queries for trustless access to arbitrary data from historic Ethereum block headers, accounts, and account storage. Queries can be made on-chain and are fulfilled on-chain with ZK proofs verified against the block hashes cached in AxiomV1
.
These ZK proofs check that the relevant on-chain data either lies directly in a block header or lies in the account or storage trie of a block by proving verification of Merkle-Patricia trie inclusion (or non-inclusion) proofs. Details about our query protocol are in the page below.
Axiom Query ProtocolLast updated