Skip to content

noble-assets/ism-evm

Repository files navigation

Noble ISM

Requirements

Compilation

Programs will be deterministically compiled and placed in the /elf directory in each of the programs subfolder. This is done in the build.rs inside scripts

Programs

Helios

Generates ZK proofs for Ethereum beacon chain light client updates using the Helios consensus library.

  1. Verifies sync committee updates - Processes any pending sync committee rotation updates, ensuring valid BLS signature verification and proper committee transitions across sync periods.

  2. Applies finality updates - Verifies and applies finality proofs to advance the light client's finalized head, confirming the beacon chain has reached consensus on new blocks.

  3. Extracts execution layer state - Retrieves the execution state root and block number from the finalized beacon block's execution payload.

EVM Hyperlane Merkle

Generates ZK proofs for the Hyperlane merkle tree root value of a merkle hook contract.

  1. Validates EVM state - Initializes a client executor with the provided state sketch, verifying all storage proofs against the anchor block's state root.

  2. Reads merkle hook contract - Executes a root() call against the Hyperlane MerkleTreeHook contract (Mainnet or Sepolia) to retrieve the current merkle tree root.

  3. Extracts anchoring data - Returns the merkle root, state root, and block number as ABI-encoded output, anchoring the proof to a specific Ethereum state.

Proving scripts

To run the proving scripts make sure to add the ETH_BEACON_RPC, ETH_EXECUTION_RPC and NETWORK_PRIVATE_KEY to an .env file in the project root like the .env.example provided. The NETWORK_PRIVATE_KEY needs to be funded with enough PROVE tokens on Ethereum Mainnet to pay for the Succint Prover Network proofs.

Ethereum prover

Generates a ZK proof of Ethereum consensus from a starting slot to the current finalized slot. The starting slot must be a checkpoint (multiple of 32). Defaults to the previous checkpoint slot.

cargo run --release --bin ethereum-prover
cargo run --release --bin ethereum-prover -- --from-slot <SLOT>

To get the current finalized slot:

curl -s "<ETH_BEACON_RPC>/eth/v1/beacon/headers/head" | jq -r '.data.header.message.slot'

EVM Hyperlane merkle root prover

Generate a proof for a Hyperlane Merkle tree root. The specified hook contract must match one supported by the circuit. Defaults to Ethereum Mainnet hook at the latest block.

cargo run --release --bin evm-hyperlane-prover
cargo run --release --bin evm-hyperlane-prover -- --block <BLOCK_NUMBER> --contract <HOOK_CONTRACT_ADDRESS>

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages