Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
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)
// 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; } }
// 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 }); } }
// 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); }
// 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"); }
// 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); }
// 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; }
{ "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": {} }
[{"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"}]
Contract Creation Code
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
Loading...
Loading
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.