AxiomV1 -- a cache of Ethereum block hashes starting from genesis
AxiomV1Query -- a smart contract which fulfills queries against AxiomV1
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.
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.