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
0x6080806040523460135760cb908160188239f35b5f80fdfe6004361015600b575f80fd5b5f3560e01c6314bcf3dd14601d575f80fd5b34609157606036600319011260915760443567ffffffffffffffff81116091573660238201121560915780600401359067ffffffffffffffff821160915760248236920101116091576024351560825715607357005b632bb2a3d960e11b5f5260045ffd5b63fad7780d60e01b5f5260045ffd5b5f80fdfea26469706673582212206b0199c60615b8bc89b2fd0ac3d53d78d6882f59c3c9e1f0ebf1c6d8787fd9e064736f6c634300081e0033
Deployed ByteCode
0x6004361015600b575f80fd5b5f3560e01c6314bcf3dd14601d575f80fd5b34609157606036600319011260915760443567ffffffffffffffff81116091573660238201121560915780600401359067ffffffffffffffff821160915760248236920101116091576024351560825715607357005b632bb2a3d960e11b5f5260045ffd5b63fad7780d60e01b5f5260045ffd5b5f80fdfea26469706673582212206b0199c60615b8bc89b2fd0ac3d53d78d6882f59c3c9e1f0ebf1c6d8787fd9e064736f6c634300081e0033
External libraries
LibForcedInclusion : 0x8bBdF7B3D44c1CF6aA64Db449E93aD5C0d10E63c
LibInboxSetup : 0xb2c8E57eb1eb0b686B63f58E53f859bEA615677B