#risc0 #risc #zero #ethereum #contracts #applications #verifier

risc0-ethereum-contracts

Ethereum contracts for RISC Zero applications

3 stable releases

1.1.4 Oct 7, 2024
1.1.1 Sep 25, 2024
1.1.0 Sep 10, 2024

#19 in #risc

Download history 129/week @ 2024-09-07 33/week @ 2024-09-14 252/week @ 2024-09-21 175/week @ 2024-09-28 378/week @ 2024-10-05 597/week @ 2024-10-12 423/week @ 2024-10-19 500/week @ 2024-10-26 837/week @ 2024-11-02 825/week @ 2024-11-09

2,678 downloads per month

Apache-2.0

130KB
1.5K SLoC

Solidity 1.5K SLoC // 0.4% comments Rust 76 SLoC // 0.3% comments Python 58 SLoC // 0.3% comments

RISC Zero Ethereum Contracts

RISC Zero provides smart contracts to verify RISC Zero receipts of execution on Ethereum, and you can find these contracts here.

Getting Started

If you are looking to get started using RISC Zero in an application on Ethereum, the best place to look is the Foundry template.

Using the Contracts with Foundry

You can use these contracts in Foundry using the forge install command to add this repository as a dependency.

# Use @ref to install from any git ref, such as main or a different release.
forge install risc0/risc0-ethereum@v1.0.0

Verifier Interface

IRiscZeroVerifier

This is the interface you will use to interact with the RISC Zero verifier. Verifier contracts will implement this interface. Behind this interface may be the Groth16 verifier, a mock implementation, and any other verifier we provide in the future.

Verifier Implementations

RiscZeroGroth16Verifier

This is the verifier contract for RISC Zero's Groth16 proof system. It is the first verifier implementation we have implemented for on-chain verification, and this is the contract you will use in your deployed application.

RiscZeroMockVerifier

This is a verifier contract you can use in tests. It allows you to produce mock proofs that will pass verification, allowing you to test logic controlled by the zkVM without needing to produce proofs.

Version management

The RiscZeroVerifierEmergencyStop and RiscZeroVerifierRouter contracts are used to implement a version management system, with appropriate safeguards in place. You can read more about the version management design in the version management design.

RiscZeroVerifierEmergencyStop

This contract acts as a proxy for an IRiscZeroVerifier contract, with the addition of an emergency stop function. When the emergency stop is activated, this proxy will be permanently disabled, and revert on all verify calls.

RiscZeroVerifierRouter

Allows for multiple verifier implementations to live behind a single address implementing the IRiscZeroVerifier interface. Using the verifier selector included in the seal, it will route each verify call to the appropriate implementation.

Dependencies

~50MB
~871K SLoC