ETH Price: $3,625.61 (+9.11%)

Contract

0x3a1A900680BaADb889202faf12915F7E47B71ddd
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0x60806040202102082024-07-01 7:34:35149 days ago1719819275IN
 Create: TierProviderV2
0 ETH0.001375344.42996076

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TierProviderV2

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
cancun EvmVersion
File 1 of 4 : TierProviderV2.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

import "./TierProviderBase.sol";

/// @title TierProviderV2
/// @custom:security-contact [email protected]
contract TierProviderV2 is TierProviderBase {
    /// @inheritdoc ITierProvider
    function getTierIds() public pure override returns (uint16[] memory tiers_) {
        tiers_ = new uint16[](3);
        tiers_[0] = LibTiers.TIER_SGX;
        tiers_[1] = LibTiers.TIER_GUARDIAN_MINORITY;
        tiers_[2] = LibTiers.TIER_GUARDIAN;
    }

    /// @inheritdoc ITierProvider
    function getMinTier(uint256) public pure override returns (uint16) {
        return LibTiers.TIER_SGX;
    }
}

File 2 of 4 : TierProviderBase.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

import "../../common/LibStrings.sol";
import "./ITierProvider.sol";

/// @title TierProviderBase
/// @custom:security-contact [email protected]
abstract contract TierProviderBase is ITierProvider {
    /// @inheritdoc ITierProvider
    function getTier(uint16 _tierId)
        public
        pure
        virtual
        override
        returns (ITierProvider.Tier memory)
    {
        if (_tierId == LibTiers.TIER_OPTIMISTIC) {
            return ITierProvider.Tier({
                verifierName: "",
                validityBond: 125 ether, // TKO
                contestBond: 250 ether, // TKO
                cooldownWindow: 1440, //24 hours
                provingWindow: 15, // 15 minutes
                maxBlocksToVerifyPerProof: 0
            });
        }

        if (_tierId == LibTiers.TIER_SGX) {
            return ITierProvider.Tier({
                verifierName: LibStrings.B_TIER_SGX,
                validityBond: 125 ether, // TKO
                contestBond: 820 ether, // =250TKO * 6.5625
                cooldownWindow: 1440, //24 hours
                provingWindow: 60, // 1 hours
                maxBlocksToVerifyPerProof: 0
            });
        }

        if (_tierId == LibTiers.TIER_SGX_ZKVM) {
            return ITierProvider.Tier({
                verifierName: LibStrings.B_TIER_SGX_ZKVM,
                validityBond: 250 ether, // TKO
                contestBond: 1640 ether, // =500TKO * 6.5625
                cooldownWindow: 1440, //24 hours
                provingWindow: 240, // 4 hours
                maxBlocksToVerifyPerProof: 0
            });
        }

        if (_tierId == LibTiers.TIER_GUARDIAN_MINORITY) {
            return ITierProvider.Tier({
                verifierName: LibStrings.B_TIER_GUARDIAN_MINORITY,
                validityBond: 250 ether, // TKO
                contestBond: 1640 ether, // =500TKO * 6.5625
                cooldownWindow: 240, // 4 hours
                provingWindow: 2880, // 48 hours
                maxBlocksToVerifyPerProof: 0
            });
        }

        if (_tierId == LibTiers.TIER_GUARDIAN) {
            return ITierProvider.Tier({
                verifierName: LibStrings.B_TIER_GUARDIAN,
                validityBond: 0, // must be 0 for top tier
                contestBond: 0, // must be 0 for top tier
                cooldownWindow: 1440, // 24 hours
                provingWindow: 2880, // 48 hours
                maxBlocksToVerifyPerProof: 0
            });
        }

        revert TIER_NOT_FOUND();
    }
}

File 3 of 4 : LibStrings.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

/// @title LibStrings
/// @custom:security-contact [email protected]
library LibStrings {
    bytes32 internal constant B_AUTOMATA_DCAP_ATTESTATION = bytes32("automata_dcap_attestation");
    bytes32 internal constant B_BRIDGE = bytes32("bridge");
    bytes32 internal constant B_BRIDGE_WATCHDOG = bytes32("bridge_watchdog");
    bytes32 internal constant B_BRIDGED_ERC1155 = bytes32("bridged_erc1155");
    bytes32 internal constant B_BRIDGED_ERC20 = bytes32("bridged_erc20");
    bytes32 internal constant B_BRIDGED_ERC721 = bytes32("bridged_erc721");
    bytes32 internal constant B_CHAIN_WATCHDOG = bytes32("chain_watchdog");
    bytes32 internal constant B_ERC1155_VAULT = bytes32("erc1155_vault");
    bytes32 internal constant B_ERC20_VAULT = bytes32("erc20_vault");
    bytes32 internal constant B_ERC721_VAULT = bytes32("erc721_vault");
    bytes32 internal constant B_PROVER_ASSIGNMENT = bytes32("PROVER_ASSIGNMENT");
    bytes32 internal constant B_PROVER_SET = bytes32("prover_set");
    bytes32 internal constant B_QUOTA_MANAGER = bytes32("quota_manager");
    bytes32 internal constant B_SGX_WATCHDOG = bytes32("sgx_watchdog");
    bytes32 internal constant B_SIGNAL_SERVICE = bytes32("signal_service");
    bytes32 internal constant B_TAIKO = bytes32("taiko");
    bytes32 internal constant B_TAIKO_TOKEN = bytes32("taiko_token");
    bytes32 internal constant B_TIER_GUARDIAN = bytes32("tier_guardian");
    bytes32 internal constant B_TIER_GUARDIAN_MINORITY = bytes32("tier_guardian_minority");
    bytes32 internal constant B_TIER_ROUTER = bytes32("tier_router");
    bytes32 internal constant B_TIER_SGX = bytes32("tier_sgx");
    bytes32 internal constant B_TIER_SGX_ZKVM = bytes32("tier_sgx_zkvm");
    bytes32 internal constant B_WITHDRAWER = bytes32("withdrawer");
    bytes32 internal constant H_RETURN_LIVENESS_BOND = keccak256("RETURN_LIVENESS_BOND");
    bytes32 internal constant H_SIGNAL_ROOT = keccak256("SIGNAL_ROOT");
    bytes32 internal constant H_STATE_ROOT = keccak256("STATE_ROOT");
}

File 4 of 4 : ITierProvider.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

/// @title ITierProvider
/// @notice Defines interface to return tier configuration.
/// @custom:security-contact [email protected]
interface ITierProvider {
    struct Tier {
        bytes32 verifierName;
        uint96 validityBond;
        uint96 contestBond;
        uint24 cooldownWindow; // in minutes
        uint16 provingWindow; // in minutes
        uint8 maxBlocksToVerifyPerProof; // DEPRECATED
    }

    error TIER_NOT_FOUND();

    /// @dev Retrieves the configuration for a specified tier.
    /// @param tierId ID of the tier.
    /// @return Tier struct containing the tier's parameters.
    function getTier(uint16 tierId) external view returns (Tier memory);

    /// @dev Retrieves the IDs of all supported tiers.
    /// Note that the core protocol requires the number of tiers to be smaller
    /// than 256. In reality, this number should be much smaller.
    /// @return The ids of the tiers.
    function getTierIds() external view returns (uint16[] memory);

    /// @dev Determines the minimal tier for a block based on a random input.
    /// @param rand A pseudo-random number.
    /// @return The tier id.
    function getMinTier(uint256 rand) external view returns (uint16);
}

/// @dev Tier ID cannot be zero!
library LibTiers {
    /// @notice Optimistic tier ID.
    uint16 public constant TIER_OPTIMISTIC = 100;

    /// @notice SGX tier ID.
    uint16 public constant TIER_SGX = 200;

    /// @notice SGX + ZKVM tier ID.
    uint16 public constant TIER_SGX_ZKVM = 300;

    /// @notice Guardian tier ID with minority approval.
    uint16 public constant TIER_GUARDIAN_MINORITY = 900;

    /// @notice Guardian tier ID with majority approval.
    uint16 public constant TIER_GUARDIAN = 1000;
}

Settings
{
  "remappings": [
    "@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/",
    "@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/",
    "solady/=node_modules/solady/",
    "forge-std/=node_modules/forge-std/",
    "ds-test/=node_modules/ds-test/src/",
    "p256-verifier/=node_modules/p256-verifier/",
    "forge-safe/=node_modules/forge-safe/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "cancun",
  "viaIR": false,
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"name":"TIER_NOT_FOUND","type":"error"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getMinTier","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint16","name":"_tierId","type":"uint16"}],"name":"getTier","outputs":[{"components":[{"internalType":"bytes32","name":"verifierName","type":"bytes32"},{"internalType":"uint96","name":"validityBond","type":"uint96"},{"internalType":"uint96","name":"contestBond","type":"uint96"},{"internalType":"uint24","name":"cooldownWindow","type":"uint24"},{"internalType":"uint16","name":"provingWindow","type":"uint16"},{"internalType":"uint8","name":"maxBlocksToVerifyPerProof","type":"uint8"}],"internalType":"struct ITierProvider.Tier","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getTierIds","outputs":[{"internalType":"uint16[]","name":"tiers_","type":"uint16[]"}],"stateMutability":"pure","type":"function"}]

608060405234801561000f575f80fd5b506104a68061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c8063576c3de71461004357806359ab4e23146100ca578063d8cde1c6146100f1575b5f80fd5b6100566100513660046103d6565b610106565b6040516100c191905f60c0820190508251825260208301516bffffffffffffffffffffffff8082166020850152806040860151166040850152505062ffffff606084015116606083015261ffff608084015116608083015260ff60a08401511660a083015292915050565b60405180910390f35b6100de6100d83660046103fe565b5060c890565b60405161ffff90911681526020016100c1565b6100f961032f565b6040516100c19190610415565b6040805160c0810182525f80825260208201819052918101829052606081018290526080810182905260a081019190915260631961ffff83160161018e5750506040805160c0810182525f8082526806c6b935b8bbd400006020830152680d8d726b7177a80000928201929092526105a06060820152600f608082015260a081019190915290565b60c71961ffff8316016101ed5750506040805160c081018252670e8d2cae4bee6cef60c31b81526806c6b935b8bbd400006020820152682c73c937742c500000918101919091526105a06060820152603c60808201525f60a082015290565b61012b1961ffff8316016102525750506040805160c0810182526c746965725f7367785f7a6b766d60981b8152680d8d726b7177a8000060208201526858e7926ee858a00000918101919091526105a0606082015260f060808201525f60a082015290565b6103831961ffff8316016102c05750506040805160c08101825275746965725f677561726469616e5f6d696e6f7269747960501b8152680d8d726b7177a8000060208201526858e7926ee858a000009181019190915260f06060820152610b4060808201525f60a082015290565b6103e71961ffff8316016103165750506040805160c0810182526c3a34b2b92fb3bab0b93234b0b760991b81525f602082018190529181018290526105a06060820152610b40608082015260a081019190915290565b6040516334130f6160e21b815260040160405180910390fd5b6040805160038082526080820190925260609160208201838036833701905050905060c8815f815181106103655761036561045c565b602002602001019061ffff16908161ffff1681525050610384816001815181106103915761039161045c565b602002602001019061ffff16908161ffff16815250506103e8816002815181106103bd576103bd61045c565b602002602001019061ffff16908161ffff168152505090565b5f602082840312156103e6575f80fd5b813561ffff811681146103f7575f80fd5b9392505050565b5f6020828403121561040e575f80fd5b5035919050565b602080825282518282018190525f9190848201906040850190845b8181101561045057835161ffff1683529284019291840191600101610430565b50909695505050505050565b634e487b7160e01b5f52603260045260245ffdfea2646970667358221220ddc73189ede9a20c5757def1db7aac683725c5cc3132116f05b0196c3a59aa2864736f6c63430008180033

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061003f575f3560e01c8063576c3de71461004357806359ab4e23146100ca578063d8cde1c6146100f1575b5f80fd5b6100566100513660046103d6565b610106565b6040516100c191905f60c0820190508251825260208301516bffffffffffffffffffffffff8082166020850152806040860151166040850152505062ffffff606084015116606083015261ffff608084015116608083015260ff60a08401511660a083015292915050565b60405180910390f35b6100de6100d83660046103fe565b5060c890565b60405161ffff90911681526020016100c1565b6100f961032f565b6040516100c19190610415565b6040805160c0810182525f80825260208201819052918101829052606081018290526080810182905260a081019190915260631961ffff83160161018e5750506040805160c0810182525f8082526806c6b935b8bbd400006020830152680d8d726b7177a80000928201929092526105a06060820152600f608082015260a081019190915290565b60c71961ffff8316016101ed5750506040805160c081018252670e8d2cae4bee6cef60c31b81526806c6b935b8bbd400006020820152682c73c937742c500000918101919091526105a06060820152603c60808201525f60a082015290565b61012b1961ffff8316016102525750506040805160c0810182526c746965725f7367785f7a6b766d60981b8152680d8d726b7177a8000060208201526858e7926ee858a00000918101919091526105a0606082015260f060808201525f60a082015290565b6103831961ffff8316016102c05750506040805160c08101825275746965725f677561726469616e5f6d696e6f7269747960501b8152680d8d726b7177a8000060208201526858e7926ee858a000009181019190915260f06060820152610b4060808201525f60a082015290565b6103e71961ffff8316016103165750506040805160c0810182526c3a34b2b92fb3bab0b93234b0b760991b81525f602082018190529181018290526105a06060820152610b40608082015260a081019190915290565b6040516334130f6160e21b815260040160405180910390fd5b6040805160038082526080820190925260609160208201838036833701905050905060c8815f815181106103655761036561045c565b602002602001019061ffff16908161ffff1681525050610384816001815181106103915761039161045c565b602002602001019061ffff16908161ffff16815250506103e8816002815181106103bd576103bd61045c565b602002602001019061ffff16908161ffff168152505090565b5f602082840312156103e6575f80fd5b813561ffff811681146103f7575f80fd5b9392505050565b5f6020828403121561040e575f80fd5b5035919050565b602080825282518282018190525f9190848201906040850190845b8181101561045057835161ffff1683529284019291840191600101610430565b50909695505050505050565b634e487b7160e01b5f52603260045260245ffdfea2646970667358221220ddc73189ede9a20c5757def1db7aac683725c5cc3132116f05b0196c3a59aa2864736f6c63430008180033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.