false
false
0
The new Blockscout UI is now open source! Learn how to deploy it here

Contract Address Details

0xC3d1Cbcef6a71f188e1Bacaf0Ff29abBE2B4767b

Contract Name
OpVerifier
Creator
0x4779d1–4df7b8 at 0xeab7e2–1ef562
Balance
0 ETH
Tokens
Fetching tokens...
Transactions
Fetching transactions...
Transfers
Fetching transfers...
Gas Used
Fetching gas used...
Last Balance Update
1763
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
OpVerifier




Optimization enabled
true
Compiler version
v0.8.30+commit.73712a01




Optimization runs
200
EVM Version
prague




Verified at
2026-01-13T06:38:23.343172Z

contracts/layer1/devnet/OpVerifier.sol

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

import "src/layer1/verifiers/IProofVerifier.sol";

/// @title OpVerifier
/// @notice This contract is a dummy verifier that accepts all proofs without verification.
/// @dev ONLY FOR TESTING - DO NOT USE IN PRODUCTION
/// @custom:security-contact security@taiko.xyz
contract OpVerifier is IProofVerifier {
    error OP_INVALID_TRANSITIONS_HASH();
    error OP_INVALID_PROOF();

    /// @inheritdoc IProofVerifier
    /// @dev This is a dummy implementation that always succeeds
    function verifyProof(
        uint256, /* _proposalAge */
        bytes32 _commitmentHash,
        bytes calldata _proof
    )
        external
        pure
    {
        // Dummy verifier - no actual verification
        // Just check that we received some data to avoid misuse
        require(_commitmentHash != bytes32(0), OP_INVALID_TRANSITIONS_HASH());
        require(_proof.length > 0, OP_INVALID_PROOF());
    }
}
        

contracts/layer1/verifiers/IProofVerifier.sol

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

/// @title IProofVerifier
/// @notice Interface for verifying validity proofs for state transitions
/// @custom:security-contact security@taiko.xyz
interface IProofVerifier {
    /// @notice Verifies a validity proof for a state transition
    /// @dev This function must revert if the proof is invalid
    /// @param _proposalAge The age in seconds of the proposal being proven. Only set for
    ///        single-proposal proofs (calculated as block.timestamp - proposal.timestamp).
    ///        For multi-proposal batches, this is always 0, meaning "not applicable".
    ///        Verifiers should interpret _proposalAge == 0 as "not applicable" rather than
    ///        "instant proof". This parameter enables age-based verification logic, such as
    ///        detecting and handling prover-killer proposals differently.
    /// @param _commitmentHash Hash of the last proposal hash and commitment data
    /// @param _proof The proof data
    function verifyProof(
        uint256 _proposalAge,
        bytes32 _commitmentHash,
        bytes calldata _proof
    )
        external
        view;
}
          

Compiler Settings

{"viaIR":true,"remappings":["openzeppelin/=node_modules/@openzeppelin/","@openzeppelin/=node_modules/@openzeppelin/","@openzeppelin-upgrades/contracts/=node_modules/@openzeppelin/contracts-upgradeable/","@risc0/contracts/=node_modules/risc0-ethereum/contracts/src/","@solady/=node_modules/solady/","solady/src/=node_modules/solady/src/","solady/utils/=node_modules/solady/src/utils/","@optimism/=node_modules/optimism/","@sp1-contracts/=node_modules/sp1-contracts/contracts/","forge-std/=node_modules/forge-std/","@p256-verifier/contracts/=node_modules/p256-verifier/src/","@eth-fabric/urc/=node_modules/urc/src/","ds-test/=node_modules/ds-test/","src/=contracts/","test/=test/","script/=script/","optimism/=node_modules/optimism/","p256-verifier/=node_modules/p256-verifier/","risc0-ethereum/=node_modules/risc0-ethereum/","sp1-contracts/=node_modules/sp1-contracts/","urc/=node_modules/urc/"],"outputSelection":{"*":{"*":["*"],"":["*"]}},"optimizer":{"runs":200,"enabled":true},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"libraries":{"contracts/layer1/core/libs/LibInboxSetup.sol":{"LibInboxSetup":"0xb2c8E57eb1eb0b686B63f58E53f859bEA615677B"},"contracts/layer1/core/libs/LibForcedInclusion.sol":{"LibForcedInclusion":"0x8bBdF7B3D44c1CF6aA64Db449E93aD5C0d10E63c"}},"evmVersion":"prague"}
              

Contract ABI

[{"type":"error","name":"OP_INVALID_PROOF","inputs":[]},{"type":"error","name":"OP_INVALID_TRANSITIONS_HASH","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[],"name":"verifyProof","inputs":[{"type":"uint256","name":"","internalType":"uint256"},{"type":"bytes32","name":"_commitmentHash","internalType":"bytes32"},{"type":"bytes","name":"_proof","internalType":"bytes"}]}]
              

Contract Creation Code

Verify & Publish
0x6080806040523460135760cb908160188239f35b5f80fdfe6004361015600b575f80fd5b5f3560e01c6314bcf3dd14601d575f80fd5b34609157606036600319011260915760443567ffffffffffffffff81116091573660238201121560915780600401359067ffffffffffffffff821160915760248236920101116091576024351560825715607357005b632bb2a3d960e11b5f5260045ffd5b63fad7780d60e01b5f5260045ffd5b5f80fdfea26469706673582212206b0199c60615b8bc89b2fd0ac3d53d78d6882f59c3c9e1f0ebf1c6d8787fd9e064736f6c634300081e0033

Deployed ByteCode

0x6004361015600b575f80fd5b5f3560e01c6314bcf3dd14601d575f80fd5b34609157606036600319011260915760443567ffffffffffffffff81116091573660238201121560915780600401359067ffffffffffffffff821160915760248236920101116091576024351560825715607357005b632bb2a3d960e11b5f5260045ffd5b63fad7780d60e01b5f5260045ffd5b5f80fdfea26469706673582212206b0199c60615b8bc89b2fd0ac3d53d78d6882f59c3c9e1f0ebf1c6d8787fd9e064736f6c634300081e0033

External libraries