Skip to content

A protocol adapter contract written in Solidity enabling Anoma Resource Machine transaction settlement on EVM-compatible chains.

License

Notifications You must be signed in to change notification settings

anoma/evm-protocol-adapter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CI

EVM Protocol Adapter

For more information on the EVM protocol adapter, find the related

Warning

This repo features a prototype and is work in progress. Do NOT use in production.

Project Structure

.
├── bindings
├── contracts
├── LICENSE
└── README.md

The contracts folder contains the contracts written in Solidity contracts as well as Foundry forge tests and deploy scripts.

The bindings folder contains bindings in Rust to convert Rust and RISC Zero types into EVM types using the alloy-rs library.

Prerequisites

  1. Get an up-to-date version of Rust with

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  2. Clone this repo

Solidity Contracts

Installation

Change the directory to the contracts folder with cd contracts and run

forge install

Usage

Tests

Run

forge test

Deployment

To simulate deployment on sepolia, run

forge script script/Deploy.s.sol:Deploy \
   --rpc-url sepolia

Append the

  • --broadcast flag to deploy on sepolia
  • --verify flag for subsequent contract verification on Etherscan
  • --account <ACCOUNT_NAME> flag to use a previously imported keystore (see cast wallet --help for more info)
Block Explorer Verification

For post-deployment verification on Etherscan run

forge verify-contract \
   <ADDRESS> \
   src/ProtocolAdapter.sol:ProtocolAdapter \
   --chain sepolia \
   --constructor-args-path script/constructor-args.txt

after replacing <ADDRESS> with the respective contract address.

Benchmarks

Parameters:

  • Commitment accumulator treeDepth = 32

Protocol adapter benchmark for a Merkle tree depth of 32.

Rust Bindings

Installation

Change the directory to the bindings folder with cd bindings and run

  1. Install rzup by running the following command:

    curl -L https://risczero.com/install | bash
  2. Run rzup to install RISC Zero:

    rzup install
  3. Go to the bindings directory with cd bindings and run

    cargo build

Usage

Print a test transaction with

cargo test -- conversion::tests::print_tx --exact --show-output --ignored

About

A protocol adapter contract written in Solidity enabling Anoma Resource Machine transaction settlement on EVM-compatible chains.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Contributors 2

  •  
  •