Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
| Transaction Hash |
Method
|
Block
|
From
|
To
|
Amount
|
||||
|---|---|---|---|---|---|---|---|---|---|
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
TimelockV8
Compiler Version
v0.8.25+commit.b61c2a91
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BSD-3-Clause
pragma solidity 0.8.25;
import { ensureNonzeroAddress } from "@venusprotocol/solidity-utilities/contracts/validators.sol";
/**
* @title TimelockV8
* @author Venus
* @notice The Timelock contract using solidity V8.
* This contract also differs from the original timelock because it has a virtual function to get minimum delays
* and allow test deployments to override the value.
*/
contract TimelockV8 {
/// @notice Required period to execute a proposal transaction
uint256 private constant DEFAULT_GRACE_PERIOD = 14 days;
/// @notice Minimum amount of time a proposal transaction must be queued
uint256 private constant DEFAULT_MINIMUM_DELAY = 10 minutes;
/// @notice Maximum amount of time a proposal transaction must be queued
uint256 private constant DEFAULT_MAXIMUM_DELAY = 30 days;
/// @notice Timelock admin authorized to queue and execute transactions
address public admin;
/// @notice Account proposed as the next admin
address public pendingAdmin;
/// @notice Period for a proposal transaction to be queued
uint256 public delay;
/// @notice Mapping of queued transactions
mapping(bytes32 => bool) public queuedTransactions;
/// @notice Event emitted when a new admin is accepted
event NewAdmin(address indexed oldAdmin, address indexed newAdmin);
/// @notice Event emitted when a new admin is proposed
event NewPendingAdmin(address indexed newPendingAdmin);
/// @notice Event emitted when a new delay is proposed
event NewDelay(uint256 indexed oldDelay, uint256 indexed newDelay);
/// @notice Event emitted when a proposal transaction has been cancelled
event CancelTransaction(
bytes32 indexed txHash,
address indexed target,
uint256 value,
string signature,
bytes data,
uint256 eta
);
/// @notice Event emitted when a proposal transaction has been executed
event ExecuteTransaction(
bytes32 indexed txHash,
address indexed target,
uint256 value,
string signature,
bytes data,
uint256 eta
);
/// @notice Event emitted when a proposal transaction has been queued
event QueueTransaction(
bytes32 indexed txHash,
address indexed target,
uint256 value,
string signature,
bytes data,
uint256 eta
);
constructor(address admin_, uint256 delay_) {
require(delay_ >= MINIMUM_DELAY(), "Timelock::constructor: Delay must exceed minimum delay.");
require(delay_ <= MAXIMUM_DELAY(), "Timelock::setDelay: Delay must not exceed maximum delay.");
ensureNonzeroAddress(admin_);
admin = admin_;
delay = delay_;
}
fallback() external payable {}
/**
* @notice Setter for the transaction queue delay
* @param delay_ The new delay period for the transaction queue
* @custom:access Sender must be Timelock itself
* @custom:event Emit NewDelay with old and new delay
*/
function setDelay(uint256 delay_) public {
require(msg.sender == address(this), "Timelock::setDelay: Call must come from Timelock.");
require(delay_ >= MINIMUM_DELAY(), "Timelock::setDelay: Delay must exceed minimum delay.");
require(delay_ <= MAXIMUM_DELAY(), "Timelock::setDelay: Delay must not exceed maximum delay.");
emit NewDelay(delay, delay_);
delay = delay_;
}
/**
* @notice Return grace period
* @return The duration of the grace period, specified as a uint256 value.
*/
function GRACE_PERIOD() public view virtual returns (uint256) {
return DEFAULT_GRACE_PERIOD;
}
/**
* @notice Return required minimum delay
* @return Minimum delay
*/
function MINIMUM_DELAY() public view virtual returns (uint256) {
return DEFAULT_MINIMUM_DELAY;
}
/**
* @notice Return required maximum delay
* @return Maximum delay
*/
function MAXIMUM_DELAY() public view virtual returns (uint256) {
return DEFAULT_MAXIMUM_DELAY;
}
/**
* @notice Method for accepting a proposed admin
* @custom:access Sender must be pending admin
* @custom:event Emit NewAdmin with old and new admin
*/
function acceptAdmin() public {
require(msg.sender == pendingAdmin, "Timelock::acceptAdmin: Call must come from pendingAdmin.");
emit NewAdmin(admin, msg.sender);
admin = msg.sender;
pendingAdmin = address(0);
}
/**
* @notice Method to propose a new admin authorized to call timelock functions. This should be the Governor Contract
* @param pendingAdmin_ Address of the proposed admin
* @custom:access Sender must be Timelock contract itself or admin
* @custom:event Emit NewPendingAdmin with new pending admin
*/
function setPendingAdmin(address pendingAdmin_) public {
require(
msg.sender == address(this) || msg.sender == admin,
"Timelock::setPendingAdmin: Call must come from Timelock."
);
ensureNonzeroAddress(pendingAdmin_);
pendingAdmin = pendingAdmin_;
emit NewPendingAdmin(pendingAdmin);
}
/**
* @notice Called for each action when queuing a proposal
* @param target Address of the contract with the method to be called
* @param value Native token amount sent with the transaction
* @param signature Signature of the function to be called
* @param data Arguments to be passed to the function when called
* @param eta Timestamp after which the transaction can be executed
* @return Hash of the queued transaction
* @custom:access Sender must be admin
* @custom:event Emit QueueTransaction
*/
function queueTransaction(
address target,
uint256 value,
string calldata signature,
bytes calldata data,
uint256 eta
) public returns (bytes32) {
require(msg.sender == admin, "Timelock::queueTransaction: Call must come from admin.");
require(
eta >= getBlockTimestamp() + delay,
"Timelock::queueTransaction: Estimated execution block must satisfy delay."
);
bytes32 txHash = keccak256(abi.encode(target, value, signature, data, eta));
require(!queuedTransactions[txHash], "Timelock::queueTransaction: transaction already queued.");
queuedTransactions[txHash] = true;
emit QueueTransaction(txHash, target, value, signature, data, eta);
return txHash;
}
/**
* @notice Called to cancel a queued transaction
* @param target Address of the contract with the method to be called
* @param value Native token amount sent with the transaction
* @param signature Signature of the function to be called
* @param data Arguments to be passed to the function when called
* @param eta Timestamp after which the transaction can be executed
* @custom:access Sender must be admin
* @custom:event Emit CancelTransaction
*/
function cancelTransaction(
address target,
uint256 value,
string calldata signature,
bytes calldata data,
uint256 eta
) public {
require(msg.sender == admin, "Timelock::cancelTransaction: Call must come from admin.");
bytes32 txHash = keccak256(abi.encode(target, value, signature, data, eta));
require(queuedTransactions[txHash], "Timelock::cancelTransaction: transaction is not queued yet.");
delete (queuedTransactions[txHash]);
emit CancelTransaction(txHash, target, value, signature, data, eta);
}
/**
* @notice Called to execute a queued transaction
* @param target Address of the contract with the method to be called
* @param value Native token amount sent with the transaction
* @param signature Signature of the function to be called
* @param data Arguments to be passed to the function when called
* @param eta Timestamp after which the transaction can be executed
* @return Result of function call
* @custom:access Sender must be admin
* @custom:event Emit ExecuteTransaction
*/
function executeTransaction(
address target,
uint256 value,
string calldata signature,
bytes calldata data,
uint256 eta
) public returns (bytes memory) {
require(msg.sender == admin, "Timelock::executeTransaction: Call must come from admin.");
bytes32 txHash = keccak256(abi.encode(target, value, signature, data, eta));
require(queuedTransactions[txHash], "Timelock::executeTransaction: Transaction hasn't been queued.");
require(getBlockTimestamp() >= eta, "Timelock::executeTransaction: Transaction hasn't surpassed time lock.");
require(getBlockTimestamp() <= eta + GRACE_PERIOD(), "Timelock::executeTransaction: Transaction is stale.");
delete (queuedTransactions[txHash]);
bytes memory callData;
if (bytes(signature).length == 0) {
callData = data;
} else {
callData = abi.encodePacked(bytes4(keccak256(bytes(signature))), data);
}
// solium-disable-next-line security/no-call-value
(bool success, bytes memory returnData) = target.call{ value: value }(callData);
require(success, "Timelock::executeTransaction: Transaction execution reverted.");
emit ExecuteTransaction(txHash, target, value, signature, data, eta);
return returnData;
}
/**
* @notice Returns the current block timestamp
* @return The current block timestamp
*/
function getBlockTimestamp() internal view returns (uint256) {
// solium-disable-next-line security/no-block-members
return block.timestamp;
}
}// SPDX-License-Identifier: BSD-3-Clause
pragma solidity 0.8.25;
/// @notice Thrown if the supplied address is a zero address where it is not allowed
error ZeroAddressNotAllowed();
/// @notice Thrown if the supplied value is 0 where it is not allowed
error ZeroValueNotAllowed();
/// @notice Checks if the provided address is nonzero, reverts otherwise
/// @param address_ Address to check
/// @custom:error ZeroAddressNotAllowed is thrown if the provided address is a zero address
function ensureNonzeroAddress(address address_) pure {
if (address_ == address(0)) {
revert ZeroAddressNotAllowed();
}
}
/// @notice Checks if the provided value is nonzero, reverts otherwise
/// @param value_ Value to check
/// @custom:error ZeroValueNotAllowed is thrown if the provided value is 0
function ensureNonzeroValue(uint256 value_) pure {
if (value_ == 0) {
revert ZeroValueNotAllowed();
}
}{
"evmVersion": "paris",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs",
"useLiteralContent": true
},
"optimizer": {
"enabled": true,
"runs": 10000
},
"remappings": [],
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract ABI
API[{"inputs":[{"internalType":"address","name":"admin_","type":"address"},{"internalType":"uint256","name":"delay_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ZeroAddressNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"CancelTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ExecuteTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"oldDelay","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"NewDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"NewPendingAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"QueueTransaction","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"GRACE_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAXIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"cancelTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"delay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"executeTransaction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"eta","type":"uint256"}],"name":"queueTransaction","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"queuedTransactions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"delay_","type":"uint256"}],"name":"setDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pendingAdmin_","type":"address"}],"name":"setPendingAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b5060405161154338038061154383398101604081905261002f91610181565b6102588110156100ac5760405162461bcd60e51b815260206004820152603760248201527f54696d656c6f636b3a3a636f6e7374727563746f723a2044656c6179206d757360448201527f7420657863656564206d696e696d756d2064656c61792e00000000000000000060648201526084015b60405180910390fd5b62278d008111156101255760405162461bcd60e51b815260206004820152603860248201527f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e60448201527f6f7420657863656564206d6178696d756d2064656c61792e000000000000000060648201526084016100a3565b61012e82610157565b600080546001600160a01b0319166001600160a01b0393909316929092179091556002556101bb565b6001600160a01b03811661017e576040516342bcdf7f60e11b815260040160405180910390fd5b50565b6000806040838503121561019457600080fd5b82516001600160a01b03811681146101ab57600080fd5b6020939093015192949293505050565b611379806101ca6000396000f3fe6080604052600436106100c95760003560e01c80636a42b8f811610079578063c1a287e211610056578063c1a287e214610217578063e177246e1461022d578063f2b065371461024d578063f851a4401461028d57005b80636a42b8f8146101d65780637d645fab146101ec578063b1b43ae51461020257005b80633a66f901116100a75780633a66f901146101685780634dd18bf514610196578063591fcdfe146101b657005b80630825f38f146100cb5780630e18b681146101015780632678224714610116575b005b3480156100d757600080fd5b506100eb6100e6366004611070565b6102ba565b6040516100f89190611127565b60405180910390f35b34801561010d57600080fd5b506100c961074a565b34801561012257600080fd5b506001546101439073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f8565b34801561017457600080fd5b50610188610183366004611070565b610854565b6040519081526020016100f8565b3480156101a257600080fd5b506100c96101b1366004611178565b610b04565b3480156101c257600080fd5b506100c96101d1366004611070565b610c13565b3480156101e257600080fd5b5061018860025481565b3480156101f857600080fd5b5062278d00610188565b34801561020e57600080fd5b50610258610188565b34801561022357600080fd5b5062127500610188565b34801561023957600080fd5b506100c961024836600461119a565b610e14565b34801561025957600080fd5b5061027d61026836600461119a565b60036020526000908152604090205460ff1681565b60405190151581526020016100f8565b34801561029957600080fd5b506000546101439073ffffffffffffffffffffffffffffffffffffffff1681565b60005460609073ffffffffffffffffffffffffffffffffffffffff16331461034f5760405162461bcd60e51b815260206004820152603860248201527f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20436160448201527f6c6c206d75737420636f6d652066726f6d2061646d696e2e000000000000000060648201526084015b60405180910390fd5b60008888888888888860405160200161036e97969594939291906111fc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600390935291205490915060ff166104295760405162461bcd60e51b815260206004820152603d60248201527f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260448201527f616e73616374696f6e206861736e2774206265656e207175657565642e0000006064820152608401610346565b824210156104c55760405162461bcd60e51b815260206004820152604560248201527f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260448201527f616e73616374696f6e206861736e2774207375727061737365642074696d652060648201527f6c6f636b2e000000000000000000000000000000000000000000000000000000608482015260a401610346565b6104d2621275008461125a565b4211156105475760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260448201527f616e73616374696f6e206973207374616c652e000000000000000000000000006064820152608401610346565b600081815260036020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556060908790036105c45785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293506105ff92505050565b87876040516105d492919061129a565b6040519081900381206105ed91889088906020016112aa565b60405160208183030381529060405290505b6000808b73ffffffffffffffffffffffffffffffffffffffff168b8460405161062891906112e6565b60006040518083038185875af1925050503d8060008114610665576040519150601f19603f3d011682016040523d82523d6000602084013e61066a565b606091505b5091509150816106e25760405162461bcd60e51b815260206004820152603d60248201527f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260448201527f616e73616374696f6e20657865637574696f6e2072657665727465642e0000006064820152608401610346565b8b73ffffffffffffffffffffffffffffffffffffffff16847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78d8d8d8d8d8d60405161073396959493929190611302565b60405180910390a39b9a5050505050505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146107d75760405162461bcd60e51b815260206004820152603860248201527f54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737460448201527f20636f6d652066726f6d2070656e64696e6741646d696e2e00000000000000006064820152608401610346565b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc91a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600180549091169055565b6000805473ffffffffffffffffffffffffffffffffffffffff1633146108e25760405162461bcd60e51b815260206004820152603660248201527f54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c60448201527f206d75737420636f6d652066726f6d2061646d696e2e000000000000000000006064820152608401610346565b6002546108ef904261125a565b82101561098a5760405162461bcd60e51b815260206004820152604960248201527f54696d656c6f636b3a3a71756575655472616e73616374696f6e3a204573746960448201527f6d6174656420657865637574696f6e20626c6f636b206d75737420736174697360648201527f66792064656c61792e0000000000000000000000000000000000000000000000608482015260a401610346565b6000888888888888886040516020016109a997969594939291906111fc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600390935291205490915060ff1615610a655760405162461bcd60e51b815260206004820152603760248201527f54696d656c6f636b3a3a71756575655472616e73616374696f6e3a207472616e60448201527f73616374696f6e20616c7265616479207175657565642e0000000000000000006064820152608401610346565b6000818152600360205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555173ffffffffffffffffffffffffffffffffffffffff8a169082907f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f90610af0908c908c908c908c908c908c90611302565b60405180910390a398975050505050505050565b33301480610b29575060005473ffffffffffffffffffffffffffffffffffffffff1633145b610b9b5760405162461bcd60e51b815260206004820152603860248201527f54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c2060448201527f6d75737420636f6d652066726f6d2054696d656c6f636b2e00000000000000006064820152608401610346565b610ba481610fae565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ca05760405162461bcd60e51b815260206004820152603760248201527f54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c60448201527f6c206d75737420636f6d652066726f6d2061646d696e2e0000000000000000006064820152608401610346565b600087878787878787604051602001610cbf97969594939291906111fc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600390935291205490915060ff16610d7a5760405162461bcd60e51b815260206004820152603b60248201527f54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2074726160448201527f6e73616374696f6e206973206e6f7420717565756564207965742e00000000006064820152608401610346565b6000818152600360205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555173ffffffffffffffffffffffffffffffffffffffff89169082907f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8790610e02908b908b908b908b908b908b90611302565b60405180910390a35050505050505050565b333014610e895760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f60448201527f6d652066726f6d2054696d656c6f636b2e0000000000000000000000000000006064820152608401610346565b610258811015610f015760405162461bcd60e51b815260206004820152603460248201527f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206560448201527f7863656564206d696e696d756d2064656c61792e0000000000000000000000006064820152608401610346565b62278d00811115610f7a5760405162461bcd60e51b815260206004820152603860248201527f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e60448201527f6f7420657863656564206d6178696d756d2064656c61792e00000000000000006064820152608401610346565b6002546040518291907fed0229422af39d4d7d33f7a27d31d6f5cb20ec628293da58dd6e8a528ed466be90600090a3600255565b73ffffffffffffffffffffffffffffffffffffffff8116610ffb576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff8116811461102257600080fd5b919050565b60008083601f84011261103957600080fd5b50813567ffffffffffffffff81111561105157600080fd5b60208301915083602082850101111561106957600080fd5b9250929050565b600080600080600080600060a0888a03121561108b57600080fd5b61109488610ffe565b965060208801359550604088013567ffffffffffffffff808211156110b857600080fd5b6110c48b838c01611027565b909750955060608a01359150808211156110dd57600080fd5b506110ea8a828b01611027565b989b979a50959894979596608090950135949350505050565b60005b8381101561111e578181015183820152602001611106565b50506000910152565b6020815260008251806020840152611146816040850160208701611103565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60006020828403121561118a57600080fd5b61119382610ffe565b9392505050565b6000602082840312156111ac57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8816815286602082015260a06040820152600061123260a0830187896111b3565b82810360608401526112458186886111b3565b91505082608083015298975050505050505050565b80820180821115611294577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183823760009101908152919050565b7fffffffff0000000000000000000000000000000000000000000000000000000084168152818360048301376000910160040190815292915050565b600082516112f8818460208701611103565b9190910192915050565b86815260806020820152600061131c6080830187896111b3565b828103604084015261132f8186886111b3565b91505082606083015297965050505050505056fea264697066735822122080edc9ddc0202ff8cedbebd8e9513924d7c216fe9f767a722943b7c23653701664736f6c63430008190033000000000000000000000000dd59be81b3b5bfa391bda3a84c9f5233bfef52a40000000000000000000000000000000000000000000000000000000000000258
Deployed Bytecode
0x6080604052600436106100c95760003560e01c80636a42b8f811610079578063c1a287e211610056578063c1a287e214610217578063e177246e1461022d578063f2b065371461024d578063f851a4401461028d57005b80636a42b8f8146101d65780637d645fab146101ec578063b1b43ae51461020257005b80633a66f901116100a75780633a66f901146101685780634dd18bf514610196578063591fcdfe146101b657005b80630825f38f146100cb5780630e18b681146101015780632678224714610116575b005b3480156100d757600080fd5b506100eb6100e6366004611070565b6102ba565b6040516100f89190611127565b60405180910390f35b34801561010d57600080fd5b506100c961074a565b34801561012257600080fd5b506001546101439073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f8565b34801561017457600080fd5b50610188610183366004611070565b610854565b6040519081526020016100f8565b3480156101a257600080fd5b506100c96101b1366004611178565b610b04565b3480156101c257600080fd5b506100c96101d1366004611070565b610c13565b3480156101e257600080fd5b5061018860025481565b3480156101f857600080fd5b5062278d00610188565b34801561020e57600080fd5b50610258610188565b34801561022357600080fd5b5062127500610188565b34801561023957600080fd5b506100c961024836600461119a565b610e14565b34801561025957600080fd5b5061027d61026836600461119a565b60036020526000908152604090205460ff1681565b60405190151581526020016100f8565b34801561029957600080fd5b506000546101439073ffffffffffffffffffffffffffffffffffffffff1681565b60005460609073ffffffffffffffffffffffffffffffffffffffff16331461034f5760405162461bcd60e51b815260206004820152603860248201527f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20436160448201527f6c6c206d75737420636f6d652066726f6d2061646d696e2e000000000000000060648201526084015b60405180910390fd5b60008888888888888860405160200161036e97969594939291906111fc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600390935291205490915060ff166104295760405162461bcd60e51b815260206004820152603d60248201527f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260448201527f616e73616374696f6e206861736e2774206265656e207175657565642e0000006064820152608401610346565b824210156104c55760405162461bcd60e51b815260206004820152604560248201527f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260448201527f616e73616374696f6e206861736e2774207375727061737365642074696d652060648201527f6c6f636b2e000000000000000000000000000000000000000000000000000000608482015260a401610346565b6104d2621275008461125a565b4211156105475760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260448201527f616e73616374696f6e206973207374616c652e000000000000000000000000006064820152608401610346565b600081815260036020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556060908790036105c45785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293506105ff92505050565b87876040516105d492919061129a565b6040519081900381206105ed91889088906020016112aa565b60405160208183030381529060405290505b6000808b73ffffffffffffffffffffffffffffffffffffffff168b8460405161062891906112e6565b60006040518083038185875af1925050503d8060008114610665576040519150601f19603f3d011682016040523d82523d6000602084013e61066a565b606091505b5091509150816106e25760405162461bcd60e51b815260206004820152603d60248201527f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260448201527f616e73616374696f6e20657865637574696f6e2072657665727465642e0000006064820152608401610346565b8b73ffffffffffffffffffffffffffffffffffffffff16847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78d8d8d8d8d8d60405161073396959493929190611302565b60405180910390a39b9a5050505050505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146107d75760405162461bcd60e51b815260206004820152603860248201527f54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737460448201527f20636f6d652066726f6d2070656e64696e6741646d696e2e00000000000000006064820152608401610346565b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc91a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600180549091169055565b6000805473ffffffffffffffffffffffffffffffffffffffff1633146108e25760405162461bcd60e51b815260206004820152603660248201527f54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c60448201527f206d75737420636f6d652066726f6d2061646d696e2e000000000000000000006064820152608401610346565b6002546108ef904261125a565b82101561098a5760405162461bcd60e51b815260206004820152604960248201527f54696d656c6f636b3a3a71756575655472616e73616374696f6e3a204573746960448201527f6d6174656420657865637574696f6e20626c6f636b206d75737420736174697360648201527f66792064656c61792e0000000000000000000000000000000000000000000000608482015260a401610346565b6000888888888888886040516020016109a997969594939291906111fc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600390935291205490915060ff1615610a655760405162461bcd60e51b815260206004820152603760248201527f54696d656c6f636b3a3a71756575655472616e73616374696f6e3a207472616e60448201527f73616374696f6e20616c7265616479207175657565642e0000000000000000006064820152608401610346565b6000818152600360205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555173ffffffffffffffffffffffffffffffffffffffff8a169082907f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f90610af0908c908c908c908c908c908c90611302565b60405180910390a398975050505050505050565b33301480610b29575060005473ffffffffffffffffffffffffffffffffffffffff1633145b610b9b5760405162461bcd60e51b815260206004820152603860248201527f54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c2060448201527f6d75737420636f6d652066726f6d2054696d656c6f636b2e00000000000000006064820152608401610346565b610ba481610fae565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ca05760405162461bcd60e51b815260206004820152603760248201527f54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c60448201527f6c206d75737420636f6d652066726f6d2061646d696e2e0000000000000000006064820152608401610346565b600087878787878787604051602001610cbf97969594939291906111fc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600390935291205490915060ff16610d7a5760405162461bcd60e51b815260206004820152603b60248201527f54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2074726160448201527f6e73616374696f6e206973206e6f7420717565756564207965742e00000000006064820152608401610346565b6000818152600360205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555173ffffffffffffffffffffffffffffffffffffffff89169082907f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8790610e02908b908b908b908b908b908b90611302565b60405180910390a35050505050505050565b333014610e895760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f60448201527f6d652066726f6d2054696d656c6f636b2e0000000000000000000000000000006064820152608401610346565b610258811015610f015760405162461bcd60e51b815260206004820152603460248201527f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206560448201527f7863656564206d696e696d756d2064656c61792e0000000000000000000000006064820152608401610346565b62278d00811115610f7a5760405162461bcd60e51b815260206004820152603860248201527f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e60448201527f6f7420657863656564206d6178696d756d2064656c61792e00000000000000006064820152608401610346565b6002546040518291907fed0229422af39d4d7d33f7a27d31d6f5cb20ec628293da58dd6e8a528ed466be90600090a3600255565b73ffffffffffffffffffffffffffffffffffffffff8116610ffb576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff8116811461102257600080fd5b919050565b60008083601f84011261103957600080fd5b50813567ffffffffffffffff81111561105157600080fd5b60208301915083602082850101111561106957600080fd5b9250929050565b600080600080600080600060a0888a03121561108b57600080fd5b61109488610ffe565b965060208801359550604088013567ffffffffffffffff808211156110b857600080fd5b6110c48b838c01611027565b909750955060608a01359150808211156110dd57600080fd5b506110ea8a828b01611027565b989b979a50959894979596608090950135949350505050565b60005b8381101561111e578181015183820152602001611106565b50506000910152565b6020815260008251806020840152611146816040850160208701611103565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60006020828403121561118a57600080fd5b61119382610ffe565b9392505050565b6000602082840312156111ac57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8816815286602082015260a06040820152600061123260a0830187896111b3565b82810360608401526112458186886111b3565b91505082608083015298975050505050505050565b80820180821115611294577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183823760009101908152919050565b7fffffffff0000000000000000000000000000000000000000000000000000000084168152818360048301376000910160040190815292915050565b600082516112f8818460208701611103565b9190910192915050565b86815260806020820152600061131c6080830187896111b3565b828103604084015261132f8186886111b3565b91505082606083015297965050505050505056fea264697066735822122080edc9ddc0202ff8cedbebd8e9513924d7c216fe9f767a722943b7c23653701664736f6c63430008190033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000dd59be81b3b5bfa391bda3a84c9f5233bfef52a40000000000000000000000000000000000000000000000000000000000000258
-----Decoded View---------------
Arg [0] : admin_ (address): 0xDD59be81B3B5BFa391bDA3a84c9f5233BfEF52a4
Arg [1] : delay_ (uint256): 600
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000dd59be81b3b5bfa391bda3a84c9f5233bfef52a4
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000258
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.