This project contains a library that allows you to prove:
- Account state
balance
,nonce
,codeHash
,storageRoot
- Example:
Vitalik's
balance was5 ETH
at blockN
- Storage values by key
- Example:
Uniswap
contract had value5
at storage slot0
at blockN
- Example:
- Transaction inclusion
- Example: Transaction number
115
in blockN
was sending3 ETH
to addressto
- Example: Transaction number
- Receipt inclusion
- Example: Transaction number
115
in blockN
succeeded (status == 1
) and used100k
gas
- Example: Transaction number
- Log inclusion
- Example: Log number
0
within transaction number115
in blockN
hastopic0 === 0x...
- Example: Log number
Codebase also includes support for base Ethereum structures in Noir:
- Decoding RLP format
- Ethereum Merkle Patricia Tries proofs
- Mappings of Basic Ethereum data types: uint256, address, bytes32, hash
- Fragment data structure, similar to Rust's slice, used for parsing data
Additionally, we provide smart contracts that allow to verify inclusion of block in the chain for last 256 blocks.
This monorepo consists of the following sub-projects:
Package | Description | Docs |
---|---|---|
Circuits |
Noir circuits to generate account and storage proofs for historical blocks data | Docs |
Contracts |
Related Solidity contracts with tests | Docs |
Oracles |
TypeScript oracle server that provides data for circuits | Docs |
Tests |
E2E tests in TypeScript | Docs |
Compilation and testing instructions for individual projects: