risc0-ethereum-contracts

Crates.iorisc0-ethereum-contracts
lib.rsrisc0-ethereum-contracts
version1.1.4
sourcesrc
created_at2024-09-10 22:53:33.163703
updated_at2024-10-07 16:16:05.037568
descriptionEthereum contracts for RISC Zero applications
homepagehttps://risczero.com/
repositoryhttps://github.com/risc0/risc0-ethereum/
max_upload_size
id1371273
size165,477
maintainers (github:risc0:maintainers)

documentation

README

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.

Commit count: 143

cargo fmt