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-06-23T13:31:37.398276Z
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":false,"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":{},"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
0x6080604052348015600e575f5ffd5b506101288061001c5f395ff3fe6080604052348015600e575f5ffd5b50600436106026575f3560e01c806314bcf3dd14602a575b5f5ffd5b60396035366004607b565b603b565b005b8260585760405163fad7780d60e01b815260040160405180910390fd5b80607557604051632bb2a3d960e11b815260040160405180910390fd5b50505050565b5f5f5f5f60608587031215608d575f5ffd5b8435935060208501359250604085013567ffffffffffffffff81111560b0575f5ffd5b8501601f8101871360bf575f5ffd5b803567ffffffffffffffff81111560d4575f5ffd5b87602082840101111560e4575f5ffd5b94979396506020019450505056fea26469706673582212204c03ae012eb28de636b9db7e0874b2c00326c3ce7cf76aef42744e62069d1b5964736f6c634300081e0033
Deployed ByteCode
0x6080604052348015600e575f5ffd5b50600436106026575f3560e01c806314bcf3dd14602a575b5f5ffd5b60396035366004607b565b603b565b005b8260585760405163fad7780d60e01b815260040160405180910390fd5b80607557604051632bb2a3d960e11b815260040160405180910390fd5b50505050565b5f5f5f5f60608587031215608d575f5ffd5b8435935060208501359250604085013567ffffffffffffffff81111560b0575f5ffd5b8501601f8101871360bf575f5ffd5b803567ffffffffffffffff81111560d4575f5ffd5b87602082840101111560e4575f5ffd5b94979396506020019450505056fea26469706673582212204c03ae012eb28de636b9db7e0874b2c00326c3ce7cf76aef42744e62069d1b5964736f6c634300081e0033