diff --git a/README.md b/README.md index 828f8c3d..1435c190 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,9 @@ This monorepo contains two sub-projects: -- **ethereum** - [Noir](https://noir-lang.org) library for proving and verifying historical data on the Ethereum blockchain and other EVM compatible blockchains. It supports proving accounts, storage, logs, receipts & transactions. Checkout it's **[docs](./ethereum/README.md)** for more details. -- **vlayer** - Contains real life examples of what can be built using **ethereum**. It's a work in progress and lacks documentation. +- **ethereum** - [Noir](https://noir-lang.org) library for proving and verifying historical data on the Ethereum blockchain and other EVM compatible blockchains. It supports proving accounts, storage, logs, receipts & transactions. **[Read more](./ethereum/README.md)**. + +- **vlayer** - Contains vlayer SDK along with real life examples. It's a work in progress and lacks documentation. Stay tuned for updates. ## Prerequisites diff --git a/ethereum/README.md b/ethereum/README.md index fb540fdc..31f56a00 100644 --- a/ethereum/README.md +++ b/ethereum/README.md @@ -14,6 +14,13 @@ This project contains a library that allows you to prove: - Log inclusion - Example: _Log number `0` within transaction number `115` in block `N` has `topic0 === 0x...`_ +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](./ethereum/contracts/src/EthereumHistoryVerifier.sol) that allow to verify inclusion of block in the chain for last 256 blocks. ## Repository structure diff --git a/ethereum/circuits/README.md b/ethereum/circuits/README.md index 1ec25c00..a5f5307a 100644 --- a/ethereum/circuits/README.md +++ b/ethereum/circuits/README.md @@ -2,7 +2,29 @@ Noir circuits for proving and verifying historical data on the Ethereum blockchain and other EVMs. -## Monorepo structure +## Main library content + +The main library is available in [lib/](./lib) directory and consists of: + +- Generation of proofs for: + - [block headers](./get_header/README.md) + - [ethereum accounts](./get_account/README.md) + - [smart contract storage variables](./get_storage/README.md) + - [transaction](./get_transaction/README.md) + - [receipts](./get_receipt/README.md) + - logs +- [rlp decoding](./lib/src/rlp/README.md) used by Ethereum to store data +- [merkle patricia proofs](./lib/src/merkle_patricia_proofs/README.md) - implementation for Ethereum Merkle Patricia tries +- [fragments](./lib/src/misc/fragment.nr) structure similar to Rust's slice, used for parsing data +- Basic Ethereum data types: + [U256](./lib/src/misc/uint256.nr), + [Address](./lib/src/misc/types.nr), + [Bytes32](./lib/src/misc/types.nr), + [Hash](./lib/src/misc/types.nr), along with util functions. + +Additionally, there are binary crates used for recursive proving. See detailed structure in the following section. + +## Circuit folder structure | Package | Description | Docs | | --------------------------------------------------- | ---------------------------------------------------- | ----------------------------------------- |