Skip to content

Latest commit

 

History

History
64 lines (43 loc) · 2.9 KB

README.md

File metadata and controls

64 lines (43 loc) · 2.9 KB

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/[email protected]

Verifier Interface

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

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.

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.

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.

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.