Holesky Testnet

Contract

0x98d4FaD098526c4582063FA588C5e96229270366

Overview

ETH Balance

0 ETH

Multichain Info

N/A
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HeklaTierRouter

Compiler Version
v0.8.27+commit.40a35a09

Optimization Enabled:
Yes with 200 runs

Other Settings:
cancun EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 6 : HeklaTierRouter.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

import "../tiers/TierProviderBase.sol";
import "../tiers/ITierRouter.sol";

/// @title HeklaTierRouter
/// @dev Any changes to the configuration in this file must be announced and documented on our site.
/// Ensure all modifications are reviewed by the devrel team.
/// @custom:security-contact [email protected]
contract HeklaTierRouter is TierProviderBase, ITierRouter {
    address public immutable DAO_FALLBACK_PROPOSER;

    constructor(address _daoFallbackProposer) {
        // 0xD3f681bD6B49887A48cC9C9953720903967E9DC0
        DAO_FALLBACK_PROPOSER = _daoFallbackProposer;
    }

    /// @inheritdoc ITierRouter
    function getProvider(uint256) external view returns (address) {
        return address(this);
    }

    /// @inheritdoc ITierProvider
    function getTierIds() external pure returns (uint16[] memory tiers_) {
        tiers_ = new uint16[](6);
        tiers_[0] = LibTiers.TIER_OPTIMISTIC;
        tiers_[1] = LibTiers.TIER_SGX;
        tiers_[2] = LibTiers.TIER_ZKVM_RISC0;
        tiers_[3] = LibTiers.TIER_ZKVM_SP1;
        tiers_[4] = LibTiers.TIER_GUARDIAN_MINORITY;
        tiers_[5] = LibTiers.TIER_GUARDIAN;
    }

    /// @inheritdoc ITierProvider
    function getMinTier(address _proposer, uint256 _rand) public view override returns (uint16) {
        if (_proposer == DAO_FALLBACK_PROPOSER) {
            if (_rand % 100 == 0) return LibTiers.TIER_ZKVM_RISC0;
            else if (_rand % 1000 == 1) return LibTiers.TIER_ZKVM_SP1;
            else return LibTiers.TIER_SGX;
        }

        return _rand % 2 == 0 ? LibTiers.TIER_SGX : LibTiers.TIER_OPTIMISTIC;
    }
}

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

import "src/shared/common/LibStrings.sol";
import "./ITierProvider.sol";
import "./LibTiers.sol";

/// @title TierProviderBase
/// @dev Any changes to the configuration in this file must be announced and documented on our site.
/// Ensure all modifications are reviewed by the devrel team.
/// @custom:security-contact [email protected]
abstract contract TierProviderBase is ITierProvider {
    /// @dev Grace period for block proving service.
    /// @notice This constant defines the time window (in minutes) during which the block proving
    /// service may be paused if gas prices are excessively high. Since block proving is
    /// asynchronous, this grace period allows provers to defer submissions until gas
    /// prices become more favorable, potentially reducing transaction costs.
    uint16 public constant GRACE_PERIOD = 240; // minutes
    uint96 public constant BOND_UNIT = 75 ether; // TAIKO tokens

    /// @inheritdoc ITierProvider
    /// @notice Each tier, except the top tier, has a validity bond that is 75 TAIKO higher than the
    /// previous tier. Additionally, each tier's contest bond is 6.5625 times its validity bond.
    function getTier(uint16 _tierId) public pure virtual returns (ITierProvider.Tier memory) {
        if (_tierId == LibTiers.TIER_OPTIMISTIC) {
            // cooldownWindow is 1440 minutes and provingWindow is 15 minutes
            return _buildTier("", BOND_UNIT, 1440, 15);
        }

        // TEE Tiers
        if (_tierId == LibTiers.TIER_SGX) return _buildTeeTier(LibStrings.B_TIER_SGX);
        if (_tierId == LibTiers.TIER_TDX) return _buildTeeTier(LibStrings.B_TIER_TDX);
        if (_tierId == LibTiers.TIER_TEE_ANY) return _buildTeeTier(LibStrings.B_TIER_TEE_ANY);

        // ZKVM Tiers
        if (_tierId == LibTiers.TIER_ZKVM_RISC0) return _buildZkTier(LibStrings.B_TIER_ZKVM_RISC0);
        if (_tierId == LibTiers.TIER_ZKVM_SP1) return _buildZkTier(LibStrings.B_TIER_ZKVM_SP1);
        if (_tierId == LibTiers.TIER_ZKVM_ANY) return _buildZkTier(LibStrings.B_TIER_ZKVM_ANY);
        if (_tierId == LibTiers.TIER_ZKVM_AND_TEE) {
            return _buildZkTier(LibStrings.B_TIER_ZKVM_AND_TEE);
        }

        // Guardian Minority Tiers
        if (_tierId == LibTiers.TIER_GUARDIAN_MINORITY) {
            // cooldownWindow is 240 minutes and provingWindow is 2880 minutes
            return _buildTier(LibStrings.B_TIER_GUARDIAN_MINORITY, BOND_UNIT * 3, 240, 0);
        }

        // Guardian Major Tiers
        if (_tierId == LibTiers.TIER_GUARDIAN) {
            // cooldownWindow is 1440 minutes and provingWindow is 2880 minutes
            return _buildTier(LibStrings.B_TIER_GUARDIAN, 0, 240, 0);
        }

        revert TIER_NOT_FOUND();
    }

    /// @dev Builds a TEE tier with a specific verifier name.
    /// @param _verifierName The name of the verifier.
    /// @return A Tier struct with predefined parameters for TEE.
    function _buildTeeTier(bytes32 _verifierName)
        private
        pure
        returns (ITierProvider.Tier memory)
    {
        // cooldownWindow is 1440 minutes and provingWindow is 60 minutes
        return _buildTier(_verifierName, BOND_UNIT * 2, 240, 60);
    }

    /// @dev Builds a ZK tier with a specific verifier name.
    /// @param _verifierName The name of the verifier.
    /// @return A Tier struct with predefined parameters for ZK.
    function _buildZkTier(bytes32 _verifierName) private pure returns (ITierProvider.Tier memory) {
        // cooldownWindow is 1440 minutes and provingWindow is 180 minutes
        return _buildTier(_verifierName, BOND_UNIT * 3, 240, 180);
    }

    /// @dev Builds a generic tier with specified parameters.
    /// @param _verifierName The name of the verifier.
    /// @param _validityBond The validity bond amount.
    /// @param _cooldownWindow The cooldown window duration in minutes.
    /// @param _provingWindow The proving window duration in minutes.
    /// @return A Tier struct with the provided parameters.
    function _buildTier(
        bytes32 _verifierName,
        uint96 _validityBond,
        uint16 _cooldownWindow,
        uint16 _provingWindow
    )
        private
        pure
        returns (ITierProvider.Tier memory)
    {
        return ITierProvider.Tier({
            verifierName: _verifierName,
            validityBond: _validityBond,
            contestBond: _validityBond / 10_000 * 65_625,
            cooldownWindow: _cooldownWindow,
            provingWindow: GRACE_PERIOD + _provingWindow,
            maxBlocksToVerifyPerProof: 0 // DEPRECATED
         });
    }
}

File 3 of 6 : ITierRouter.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

/// @title ITierRouter
/// @notice Defines interface to return an ITierProvider
/// @custom:security-contact [email protected]
interface ITierRouter {
    /// @dev Returns the address of the TierProvider for a given block.
    /// @param blockId ID of the block.
    /// @return The address of the corresponding TierProvider.
    function getProvider(uint256 blockId) external view returns (address);
}

File 4 of 6 : 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_PRECONF_TASK_MANAGER = bytes32("preconf_task_manager");
    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_SP1_REMOTE_VERIFIER = bytes32("sp1_remote_verifier");
    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_TDX = bytes32("tier_tdx");
    bytes32 internal constant B_TIER_TEE_ANY = bytes32("tier_tee_any");
    bytes32 internal constant B_TIER_ZKVM_RISC0 = bytes32("tier_zkvm_risc0");
    bytes32 internal constant B_TIER_ZKVM_SP1 = bytes32("tier_zkvm_sp1");
    bytes32 internal constant B_TIER_ZKVM_ANY = bytes32("tier_zkvm_any");
    bytes32 internal constant B_TIER_ZKVM_AND_TEE = bytes32("tier_zkvm_and_tee");
    bytes32 internal constant B_RISCZERO_GROTH16_VERIFIER = bytes32("risc0_groth16_verifier");
    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 5 of 6 : 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 proposer The address of the block proposer.
    /// @param rand A pseudo-random number.
    /// @return The tier id.
    function getMinTier(address proposer, uint256 rand) external view returns (uint16);
}

File 6 of 6 : LibTiers.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

/// @title LibTiers
/// @dev Tier ID cannot be zero and must be unique.
/// @custom:security-contact [email protected]
library LibTiers {
    /// @notice Optimistic tier ID.
    uint16 public constant TIER_OPTIMISTIC = 100;

    /// @notice TEE tiers
    /// Although these tiers have diffeerent IDs, at most one should be selected in a verifier.
    uint16 public constant TIER_SGX = 200;
    uint16 public constant TIER_TDX = 201;
    uint16 public constant TIER_TEE_ANY = 202;

    /// @notice ZK Tiers.
    /// Although these tiers have diffeerent IDs, at most one should be selected in a verifier.
    uint16 public constant TIER_ZKVM_RISC0 = 250;
    uint16 public constant TIER_ZKVM_SP1 = 251;
    uint16 public constant TIER_ZKVM_ANY = 252;

    /// @notice Any ZKVM+TEE proof
    uint16 public constant TIER_ZKVM_AND_TEE = 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/=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/",
    "@optimism/=node_modules/optimism/",
    "@sp1-contracts/=node_modules/sp1-contracts/contracts/",
    "forge-std/=node_modules/forge-std/",
    "ds-test/=node_modules/ds-test/src/",
    "@p256-verifier/contracts/=node_modules/p256-verifier/src/",
    "eigenlayer-middleware/=node_modules/eigenlayer-middleware/",
    "eigenlayer-contracts/=node_modules/eigenlayer-contracts/",
    "src/=contracts/",
    "test/=test/",
    "script/=script/",
    "@openzeppelin/=node_modules/@openzeppelin/",
    "optimism/=node_modules/optimism/",
    "p256-verifier/=node_modules/p256-verifier/",
    "risc0-ethereum/=node_modules/risc0-ethereum/",
    "solady/=node_modules/solady/",
    "sp1-contracts/=node_modules/sp1-contracts/"
  ],
  "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 ABI

[{"inputs":[{"internalType":"address","name":"_daoFallbackProposer","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"TIER_NOT_FOUND","type":"error"},{"inputs":[],"name":"BOND_UNIT","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DAO_FALLBACK_PROPOSER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GRACE_PERIOD","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_proposer","type":"address"},{"internalType":"uint256","name":"_rand","type":"uint256"}],"name":"getMinTier","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getProvider","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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"}]

60a0604052348015600e575f5ffd5b5060405161086f38038061086f833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b6080516107ea6100855f395f818161017d01526101bf01526107ea5ff3fe608060405234801561000f575f5ffd5b506004361061007a575f3560e01c80638165fd26116100585780638165fd2614610150578063bf62514d14610178578063c1a287e21461019f578063d8cde1c6146101a7575f5ffd5b806352c5c56b1461007e578063576c3de7146100a95780635c42d07914610125575b5f5ffd5b61009161008c36600461063b565b6101bc565b60405161ffff90911681526020015b60405180910390f35b6100bc6100b7366004610670565b610255565b6040516100a091905f60c082019050825182526001600160601b0360208401511660208301526001600160601b03604084015116604083015262ffffff606084015116606083015261ffff608084015116608083015260ff60a08401511660a083015292915050565b610138610133366004610698565b503090565b6040516001600160a01b0390911681526020016100a0565b610160680410d586a20a4c000081565b6040516001600160601b0390911681526020016100a0565b6101387f000000000000000000000000000000000000000000000000000000000000000081565b61009160f081565b6101af610413565b6040516100a091906106af565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03160361023257610201606483610709565b5f0361020f575060fa61024f565b61021b6103e883610709565b60010361022a575060fb61024f565b5060c861024f565b61023d600283610709565b1561024957606461024c565b60c85b90505b92915050565b61025d610607565b60631961ffff8316016102825761024f5f680410d586a20a4c00006105a0600f61053c565b60c71961ffff8316016102a35761024f670e8d2cae4bee6cef60c31b6105b5565b60c81961ffff8316016102c45761024f670e8d2cae4bee8c8f60c31b6105b5565b60c91961ffff8316016102e95761024f6b746965725f7465655f616e7960a01b6105b5565b60f91961ffff8316016103115761024f6e0746965725f7a6b766d5f726973633608c1b6105de565b60fa1961ffff8316016103375761024f6c746965725f7a6b766d5f73703160981b6105de565b60fb1961ffff83160161035d5761024f6c746965725f7a6b766d5f616e7960981b6105de565b61012b1961ffff8316016103885761024f70746965725f7a6b766d5f616e645f74656560781b6105de565b6103831961ffff8316016103cf5761024f75746965725f677561726469616e5f6d696e6f7269747960501b6103c7680410d586a20a4c00006003610730565b60f05f61053c565b6103e71961ffff8316016103fa5761024f6c3a34b2b92fb3bab0b93234b0b760991b5f60f05f61053c565b6040516334130f6160e21b815260040160405180910390fd5b60408051600680825260e082019092526060916020820160c0803683370190505090506064815f8151811061044a5761044a610759565b602002602001019061ffff16908161ffff168152505060c88160018151811061047557610475610759565b602002602001019061ffff16908161ffff168152505060fa816002815181106104a0576104a0610759565b602002602001019061ffff16908161ffff168152505060fb816003815181106104cb576104cb610759565b602002602001019061ffff16908161ffff1681525050610384816004815181106104f7576104f7610759565b602002602001019061ffff16908161ffff16815250506103e88160058151811061052357610523610759565b602002602001019061ffff16908161ffff168152505090565b610544610607565b6040805160c0810182528681526001600160601b038616602082015290810161056f6127108761076d565b61057c9062010059610730565b6001600160601b0316815261ffff8516602082015260400161059f8460f061079a565b61ffff1681525f60209091015295945050505050565b6105bd610607565b61024f826105d5680410d586a20a4c00006002610730565b60f0603c61053c565b6105e6610607565b61024f826105fe680410d586a20a4c00006003610730565b60f060b461053c565b6040805160c0810182525f80825260208201819052918101829052606081018290526080810182905260a081019190915290565b5f5f6040838503121561064c575f5ffd5b82356001600160a01b0381168114610662575f5ffd5b946020939093013593505050565b5f60208284031215610680575f5ffd5b813561ffff81168114610691575f5ffd5b9392505050565b5f602082840312156106a8575f5ffd5b5035919050565b602080825282518282018190525f918401906040840190835b818110156106ea57835161ffff168352602093840193909201916001016106c8565b509095945050505050565b634e487b7160e01b5f52601260045260245ffd5b5f82610717576107176106f5565b500690565b634e487b7160e01b5f52601160045260245ffd5b6001600160601b0381811683821602908116908181146107525761075261071c565b5092915050565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160601b03831680610785576107856106f5565b806001600160601b0384160491505092915050565b61ffff818116838216019081111561024f5761024f61071c56fea264697066735822122057a03666eb6010556de5fcf38ec5d7fc9357b0bfc353ed5db7554410e9c1c29064736f6c634300081b0033000000000000000000000000d3f681bd6b49887a48cc9c9953720903967e9dc0

Deployed Bytecode

0x608060405234801561000f575f5ffd5b506004361061007a575f3560e01c80638165fd26116100585780638165fd2614610150578063bf62514d14610178578063c1a287e21461019f578063d8cde1c6146101a7575f5ffd5b806352c5c56b1461007e578063576c3de7146100a95780635c42d07914610125575b5f5ffd5b61009161008c36600461063b565b6101bc565b60405161ffff90911681526020015b60405180910390f35b6100bc6100b7366004610670565b610255565b6040516100a091905f60c082019050825182526001600160601b0360208401511660208301526001600160601b03604084015116604083015262ffffff606084015116606083015261ffff608084015116608083015260ff60a08401511660a083015292915050565b610138610133366004610698565b503090565b6040516001600160a01b0390911681526020016100a0565b610160680410d586a20a4c000081565b6040516001600160601b0390911681526020016100a0565b6101387f000000000000000000000000d3f681bd6b49887a48cc9c9953720903967e9dc081565b61009160f081565b6101af610413565b6040516100a091906106af565b5f7f000000000000000000000000d3f681bd6b49887a48cc9c9953720903967e9dc06001600160a01b0316836001600160a01b03160361023257610201606483610709565b5f0361020f575060fa61024f565b61021b6103e883610709565b60010361022a575060fb61024f565b5060c861024f565b61023d600283610709565b1561024957606461024c565b60c85b90505b92915050565b61025d610607565b60631961ffff8316016102825761024f5f680410d586a20a4c00006105a0600f61053c565b60c71961ffff8316016102a35761024f670e8d2cae4bee6cef60c31b6105b5565b60c81961ffff8316016102c45761024f670e8d2cae4bee8c8f60c31b6105b5565b60c91961ffff8316016102e95761024f6b746965725f7465655f616e7960a01b6105b5565b60f91961ffff8316016103115761024f6e0746965725f7a6b766d5f726973633608c1b6105de565b60fa1961ffff8316016103375761024f6c746965725f7a6b766d5f73703160981b6105de565b60fb1961ffff83160161035d5761024f6c746965725f7a6b766d5f616e7960981b6105de565b61012b1961ffff8316016103885761024f70746965725f7a6b766d5f616e645f74656560781b6105de565b6103831961ffff8316016103cf5761024f75746965725f677561726469616e5f6d696e6f7269747960501b6103c7680410d586a20a4c00006003610730565b60f05f61053c565b6103e71961ffff8316016103fa5761024f6c3a34b2b92fb3bab0b93234b0b760991b5f60f05f61053c565b6040516334130f6160e21b815260040160405180910390fd5b60408051600680825260e082019092526060916020820160c0803683370190505090506064815f8151811061044a5761044a610759565b602002602001019061ffff16908161ffff168152505060c88160018151811061047557610475610759565b602002602001019061ffff16908161ffff168152505060fa816002815181106104a0576104a0610759565b602002602001019061ffff16908161ffff168152505060fb816003815181106104cb576104cb610759565b602002602001019061ffff16908161ffff1681525050610384816004815181106104f7576104f7610759565b602002602001019061ffff16908161ffff16815250506103e88160058151811061052357610523610759565b602002602001019061ffff16908161ffff168152505090565b610544610607565b6040805160c0810182528681526001600160601b038616602082015290810161056f6127108761076d565b61057c9062010059610730565b6001600160601b0316815261ffff8516602082015260400161059f8460f061079a565b61ffff1681525f60209091015295945050505050565b6105bd610607565b61024f826105d5680410d586a20a4c00006002610730565b60f0603c61053c565b6105e6610607565b61024f826105fe680410d586a20a4c00006003610730565b60f060b461053c565b6040805160c0810182525f80825260208201819052918101829052606081018290526080810182905260a081019190915290565b5f5f6040838503121561064c575f5ffd5b82356001600160a01b0381168114610662575f5ffd5b946020939093013593505050565b5f60208284031215610680575f5ffd5b813561ffff81168114610691575f5ffd5b9392505050565b5f602082840312156106a8575f5ffd5b5035919050565b602080825282518282018190525f918401906040840190835b818110156106ea57835161ffff168352602093840193909201916001016106c8565b509095945050505050565b634e487b7160e01b5f52601260045260245ffd5b5f82610717576107176106f5565b500690565b634e487b7160e01b5f52601160045260245ffd5b6001600160601b0381811683821602908116908181146107525761075261071c565b5092915050565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160601b03831680610785576107856106f5565b806001600160601b0384160491505092915050565b61ffff818116838216019081111561024f5761024f61071c56fea264697066735822122057a03666eb6010556de5fcf38ec5d7fc9357b0bfc353ed5db7554410e9c1c29064736f6c634300081b0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000d3f681bd6b49887a48cc9c9953720903967e9dc0

-----Decoded View---------------
Arg [0] : _daoFallbackProposer (address): 0xD3f681bD6B49887A48cC9C9953720903967E9DC0

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d3f681bd6b49887a48cc9c9953720903967e9dc0


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits

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.