Contract Addresses

When using SP1, we recommend using our deployed verifiers. Each contract is a SP1VerifierGateway which can automatically routes your SP1 proof to the correct verifier based on the prover version.

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

Currently officially supported version of SP1 is v1.1.0. If you'd like official support for a verifier on a different chain, please ask in the SP1 Telegram.

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;
}