Contract Addresses

To verify SP1 proofs on-chain, we recommend using our deployed verifier gateways. For the chains listed below, an SP1VerifierGateway can automatically route your SP1 proof to the correct verifier based on the SP1 version.

Chain IDChainGateway
1Mainnet0x3B6041173B80E77f038f3F2C0f9744f04837185e
11155111Sepolia0x3B6041173B80E77f038f3F2C0f9744f04837185e
17000Holesky0x3B6041173B80E77f038f3F2C0f9744f04837185e
42161Arbitrum One0x3B6041173B80E77f038f3F2C0f9744f04837185e
421614Arbitrum Sepolia0x3B6041173B80E77f038f3F2C0f9744f04837185e
8453Base0x3B6041173B80E77f038f3F2C0f9744f04837185e
84532Base Sepolia0x3B6041173B80E77f038f3F2C0f9744f04837185e
10Optimism0x3B6041173B80E77f038f3F2C0f9744f04837185e
11155420Optimism Sepolia0x3B6041173B80E77f038f3F2C0f9744f04837185e
534351Scroll Sepolia0x3B6041173B80E77f038f3F2C0f9744f04837185e
534352Scroll0x3B6041173B80E77f038f3F2C0f9744f04837185e

A complete reference for all of the SP1Verifier contract addresses can be also be found in the SP1 Contracts Repo.

Whenever a verifier for a new SP1 version is deployed, the gateway contract will be updated to support it with addRoute(). If a verifier for an SP1 version has an issue, the route will be frozen with freezeRoute().

ISP1Verifier Interface

All verifiers implement the ISP1Verifier interface.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

/// @title SP1 Verifier Interface
/// @author Succinct Labs
/// @notice This contract is the interface for the SP1 Verifier.
interface ISP1Verifier {
    /// @notice Verifies a proof with given public values and vkey.
    /// @dev It is expected that the first 4 bytes of proofBytes must match the first 4 bytes of
    /// target verifier's VERIFIER_HASH.
    /// @param programVKey The verification key for the RISC-V program.
    /// @param publicValues The public values encoded as bytes.
    /// @param proofBytes The proof of the program execution the SP1 zkVM encoded as bytes.
    function verifyProof(
        bytes32 programVKey,
        bytes calldata publicValues,
        bytes calldata proofBytes
    ) external view;
}