Herodotus contracts for EVM chains.
- Git
- Node.js (^18.0)
- npm
- pnpm
- Foundry
- Solc
Create a .env
file based on .env.example
, and then run:
git clone [email protected]:HerodotusDev/herodotus-evm.git
cd herodotus-evm
# If you do not have pnpm, run `npm install -g pnpm`
# Install dependencies
pnpm install
# Install libraries
forge install
# Running tests requires .env to be configured
forge test
-
CommitmentsInbox: receives block commitments from the origin chain using either the native messaging system or an optimistic relayer.
-
HeadersProcessor: processes block headers from the origin chain and stores them in a Merkle Mountain Range tree where the accumulation happens on-chain.
-
FactsRegistry: stores facts (e.g., nonces, balances, code hashes, storage hashes, etc.) for each proven origin chain account.
Note: currently, the origin chain is Ethereum L1 (Goërli on testnet and Mainnet on mainnet). However, the contracts are designed to be chain-agnostic and can be used with any EVM-compatible chain.
pnpm run deploy
Here are some useful links for further reading:
Copyright 2023 - Herodotus Dev Ltd