Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xbeDb7F2d...f6BB5542E The constructor portion of the code might be different and could alter the actual behaviour of the contract
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 = 1 seconds;
/// @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
0x608060405234801561001057600080fd5b5060405161154038038061154083398101604081905261002f91610180565b60018110156100ab5760405162461bcd60e51b815260206004820152603760248201527f54696d656c6f636b3a3a636f6e7374727563746f723a2044656c6179206d757360448201527f7420657863656564206d696e696d756d2064656c61792e00000000000000000060648201526084015b60405180910390fd5b62278d008111156101245760405162461bcd60e51b815260206004820152603860248201527f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e60448201527f6f7420657863656564206d6178696d756d2064656c61792e000000000000000060648201526084016100a2565b61012d82610156565b600080546001600160a01b0319166001600160a01b0393909316929092179091556002556101ba565b6001600160a01b03811661017d576040516342bcdf7f60e11b815260040160405180910390fd5b50565b6000806040838503121561019357600080fd5b82516001600160a01b03811681146101aa57600080fd5b6020939093015192949293505050565b611377806101c96000396000f3fe6080604052600436106100c95760003560e01c80636a42b8f811610079578063c1a287e211610056578063c1a287e214610216578063e177246e1461022c578063f2b065371461024c578063f851a4401461028c57005b80636a42b8f8146101d65780637d645fab146101ec578063b1b43ae51461020257005b80633a66f901116100a75780633a66f901146101685780634dd18bf514610196578063591fcdfe146101b657005b80630825f38f146100cb5780630e18b681146101015780632678224714610116575b005b3480156100d757600080fd5b506100eb6100e636600461106e565b6102b9565b6040516100f89190611125565b60405180910390f35b34801561010d57600080fd5b506100c9610749565b34801561012257600080fd5b506001546101439073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f8565b34801561017457600080fd5b5061018861018336600461106e565b610853565b6040519081526020016100f8565b3480156101a257600080fd5b506100c96101b1366004611176565b610b03565b3480156101c257600080fd5b506100c96101d136600461106e565b610c12565b3480156101e257600080fd5b5061018860025481565b3480156101f857600080fd5b5062278d00610188565b34801561020e57600080fd5b506001610188565b34801561022257600080fd5b5062127500610188565b34801561023857600080fd5b506100c9610247366004611198565b610e13565b34801561025857600080fd5b5061027c610267366004611198565b60036020526000908152604090205460ff1681565b60405190151581526020016100f8565b34801561029857600080fd5b506000546101439073ffffffffffffffffffffffffffffffffffffffff1681565b60005460609073ffffffffffffffffffffffffffffffffffffffff16331461034e5760405162461bcd60e51b815260206004820152603860248201527f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20436160448201527f6c6c206d75737420636f6d652066726f6d2061646d696e2e000000000000000060648201526084015b60405180910390fd5b60008888888888888860405160200161036d97969594939291906111fa565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600390935291205490915060ff166104285760405162461bcd60e51b815260206004820152603d60248201527f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260448201527f616e73616374696f6e206861736e2774206265656e207175657565642e0000006064820152608401610345565b824210156104c45760405162461bcd60e51b815260206004820152604560248201527f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260448201527f616e73616374696f6e206861736e2774207375727061737365642074696d652060648201527f6c6f636b2e000000000000000000000000000000000000000000000000000000608482015260a401610345565b6104d16212750084611258565b4211156105465760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260448201527f616e73616374696f6e206973207374616c652e000000000000000000000000006064820152608401610345565b600081815260036020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556060908790036105c35785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293506105fe92505050565b87876040516105d3929190611298565b6040519081900381206105ec91889088906020016112a8565b60405160208183030381529060405290505b6000808b73ffffffffffffffffffffffffffffffffffffffff168b8460405161062791906112e4565b60006040518083038185875af1925050503d8060008114610664576040519150601f19603f3d011682016040523d82523d6000602084013e610669565b606091505b5091509150816106e15760405162461bcd60e51b815260206004820152603d60248201527f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260448201527f616e73616374696f6e20657865637574696f6e2072657665727465642e0000006064820152608401610345565b8b73ffffffffffffffffffffffffffffffffffffffff16847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78d8d8d8d8d8d60405161073296959493929190611300565b60405180910390a39b9a5050505050505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146107d65760405162461bcd60e51b815260206004820152603860248201527f54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737460448201527f20636f6d652066726f6d2070656e64696e6741646d696e2e00000000000000006064820152608401610345565b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc91a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600180549091169055565b6000805473ffffffffffffffffffffffffffffffffffffffff1633146108e15760405162461bcd60e51b815260206004820152603660248201527f54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c60448201527f206d75737420636f6d652066726f6d2061646d696e2e000000000000000000006064820152608401610345565b6002546108ee9042611258565b8210156109895760405162461bcd60e51b815260206004820152604960248201527f54696d656c6f636b3a3a71756575655472616e73616374696f6e3a204573746960448201527f6d6174656420657865637574696f6e20626c6f636b206d75737420736174697360648201527f66792064656c61792e0000000000000000000000000000000000000000000000608482015260a401610345565b6000888888888888886040516020016109a897969594939291906111fa565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600390935291205490915060ff1615610a645760405162461bcd60e51b815260206004820152603760248201527f54696d656c6f636b3a3a71756575655472616e73616374696f6e3a207472616e60448201527f73616374696f6e20616c7265616479207175657565642e0000000000000000006064820152608401610345565b6000818152600360205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555173ffffffffffffffffffffffffffffffffffffffff8a169082907f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f90610aef908c908c908c908c908c908c90611300565b60405180910390a398975050505050505050565b33301480610b28575060005473ffffffffffffffffffffffffffffffffffffffff1633145b610b9a5760405162461bcd60e51b815260206004820152603860248201527f54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c2060448201527f6d75737420636f6d652066726f6d2054696d656c6f636b2e00000000000000006064820152608401610345565b610ba381610fac565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c9f5760405162461bcd60e51b815260206004820152603760248201527f54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c60448201527f6c206d75737420636f6d652066726f6d2061646d696e2e0000000000000000006064820152608401610345565b600087878787878787604051602001610cbe97969594939291906111fa565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600390935291205490915060ff16610d795760405162461bcd60e51b815260206004820152603b60248201527f54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2074726160448201527f6e73616374696f6e206973206e6f7420717565756564207965742e00000000006064820152608401610345565b6000818152600360205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555173ffffffffffffffffffffffffffffffffffffffff89169082907f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8790610e01908b908b908b908b908b908b90611300565b60405180910390a35050505050505050565b333014610e885760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f60448201527f6d652066726f6d2054696d656c6f636b2e0000000000000000000000000000006064820152608401610345565b6001811015610eff5760405162461bcd60e51b815260206004820152603460248201527f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206560448201527f7863656564206d696e696d756d2064656c61792e0000000000000000000000006064820152608401610345565b62278d00811115610f785760405162461bcd60e51b815260206004820152603860248201527f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e60448201527f6f7420657863656564206d6178696d756d2064656c61792e00000000000000006064820152608401610345565b6002546040518291907fed0229422af39d4d7d33f7a27d31d6f5cb20ec628293da58dd6e8a528ed466be90600090a3600255565b73ffffffffffffffffffffffffffffffffffffffff8116610ff9576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff8116811461102057600080fd5b919050565b60008083601f84011261103757600080fd5b50813567ffffffffffffffff81111561104f57600080fd5b60208301915083602082850101111561106757600080fd5b9250929050565b600080600080600080600060a0888a03121561108957600080fd5b61109288610ffc565b965060208801359550604088013567ffffffffffffffff808211156110b657600080fd5b6110c28b838c01611025565b909750955060608a01359150808211156110db57600080fd5b506110e88a828b01611025565b989b979a50959894979596608090950135949350505050565b60005b8381101561111c578181015183820152602001611104565b50506000910152565b6020815260008251806020840152611144816040850160208701611101565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60006020828403121561118857600080fd5b61119182610ffc565b9392505050565b6000602082840312156111aa57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8816815286602082015260a06040820152600061123060a0830187896111b1565b82810360608401526112438186886111b1565b91505082608083015298975050505050505050565b80820180821115611292577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183823760009101908152919050565b7fffffffff0000000000000000000000000000000000000000000000000000000084168152818360048301376000910160040190815292915050565b600082516112f6818460208701611101565b9190910192915050565b86815260806020820152600061131a6080830187896111b1565b828103604084015261132d8186886111b1565b91505082606083015297965050505050505056fea2646970667358221220107bb03227edc1c6f85b8373dcceaab44e4dfeb00d413bf48275c2b4e4a1dd8a64736f6c63430008190033000000000000000000000000dd59be81b3b5bfa391bda3a84c9f5233bfef52a4000000000000000000000000000000000000000000000000000000000000012c
Deployed Bytecode
0x6080604052600436106100c95760003560e01c80636a42b8f811610079578063c1a287e211610056578063c1a287e214610216578063e177246e1461022c578063f2b065371461024c578063f851a4401461028c57005b80636a42b8f8146101d65780637d645fab146101ec578063b1b43ae51461020257005b80633a66f901116100a75780633a66f901146101685780634dd18bf514610196578063591fcdfe146101b657005b80630825f38f146100cb5780630e18b681146101015780632678224714610116575b005b3480156100d757600080fd5b506100eb6100e636600461106e565b6102b9565b6040516100f89190611125565b60405180910390f35b34801561010d57600080fd5b506100c9610749565b34801561012257600080fd5b506001546101439073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f8565b34801561017457600080fd5b5061018861018336600461106e565b610853565b6040519081526020016100f8565b3480156101a257600080fd5b506100c96101b1366004611176565b610b03565b3480156101c257600080fd5b506100c96101d136600461106e565b610c12565b3480156101e257600080fd5b5061018860025481565b3480156101f857600080fd5b5062278d00610188565b34801561020e57600080fd5b506001610188565b34801561022257600080fd5b5062127500610188565b34801561023857600080fd5b506100c9610247366004611198565b610e13565b34801561025857600080fd5b5061027c610267366004611198565b60036020526000908152604090205460ff1681565b60405190151581526020016100f8565b34801561029857600080fd5b506000546101439073ffffffffffffffffffffffffffffffffffffffff1681565b60005460609073ffffffffffffffffffffffffffffffffffffffff16331461034e5760405162461bcd60e51b815260206004820152603860248201527f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20436160448201527f6c6c206d75737420636f6d652066726f6d2061646d696e2e000000000000000060648201526084015b60405180910390fd5b60008888888888888860405160200161036d97969594939291906111fa565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600390935291205490915060ff166104285760405162461bcd60e51b815260206004820152603d60248201527f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260448201527f616e73616374696f6e206861736e2774206265656e207175657565642e0000006064820152608401610345565b824210156104c45760405162461bcd60e51b815260206004820152604560248201527f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260448201527f616e73616374696f6e206861736e2774207375727061737365642074696d652060648201527f6c6f636b2e000000000000000000000000000000000000000000000000000000608482015260a401610345565b6104d16212750084611258565b4211156105465760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260448201527f616e73616374696f6e206973207374616c652e000000000000000000000000006064820152608401610345565b600081815260036020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556060908790036105c35785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293506105fe92505050565b87876040516105d3929190611298565b6040519081900381206105ec91889088906020016112a8565b60405160208183030381529060405290505b6000808b73ffffffffffffffffffffffffffffffffffffffff168b8460405161062791906112e4565b60006040518083038185875af1925050503d8060008114610664576040519150601f19603f3d011682016040523d82523d6000602084013e610669565b606091505b5091509150816106e15760405162461bcd60e51b815260206004820152603d60248201527f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260448201527f616e73616374696f6e20657865637574696f6e2072657665727465642e0000006064820152608401610345565b8b73ffffffffffffffffffffffffffffffffffffffff16847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78d8d8d8d8d8d60405161073296959493929190611300565b60405180910390a39b9a5050505050505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146107d65760405162461bcd60e51b815260206004820152603860248201527f54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737460448201527f20636f6d652066726f6d2070656e64696e6741646d696e2e00000000000000006064820152608401610345565b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc91a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600180549091169055565b6000805473ffffffffffffffffffffffffffffffffffffffff1633146108e15760405162461bcd60e51b815260206004820152603660248201527f54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c60448201527f206d75737420636f6d652066726f6d2061646d696e2e000000000000000000006064820152608401610345565b6002546108ee9042611258565b8210156109895760405162461bcd60e51b815260206004820152604960248201527f54696d656c6f636b3a3a71756575655472616e73616374696f6e3a204573746960448201527f6d6174656420657865637574696f6e20626c6f636b206d75737420736174697360648201527f66792064656c61792e0000000000000000000000000000000000000000000000608482015260a401610345565b6000888888888888886040516020016109a897969594939291906111fa565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600390935291205490915060ff1615610a645760405162461bcd60e51b815260206004820152603760248201527f54696d656c6f636b3a3a71756575655472616e73616374696f6e3a207472616e60448201527f73616374696f6e20616c7265616479207175657565642e0000000000000000006064820152608401610345565b6000818152600360205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555173ffffffffffffffffffffffffffffffffffffffff8a169082907f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f90610aef908c908c908c908c908c908c90611300565b60405180910390a398975050505050505050565b33301480610b28575060005473ffffffffffffffffffffffffffffffffffffffff1633145b610b9a5760405162461bcd60e51b815260206004820152603860248201527f54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c2060448201527f6d75737420636f6d652066726f6d2054696d656c6f636b2e00000000000000006064820152608401610345565b610ba381610fac565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75690600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c9f5760405162461bcd60e51b815260206004820152603760248201527f54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c60448201527f6c206d75737420636f6d652066726f6d2061646d696e2e0000000000000000006064820152608401610345565b600087878787878787604051602001610cbe97969594939291906111fa565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600390935291205490915060ff16610d795760405162461bcd60e51b815260206004820152603b60248201527f54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2074726160448201527f6e73616374696f6e206973206e6f7420717565756564207965742e00000000006064820152608401610345565b6000818152600360205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555173ffffffffffffffffffffffffffffffffffffffff89169082907f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8790610e01908b908b908b908b908b908b90611300565b60405180910390a35050505050505050565b333014610e885760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f60448201527f6d652066726f6d2054696d656c6f636b2e0000000000000000000000000000006064820152608401610345565b6001811015610eff5760405162461bcd60e51b815260206004820152603460248201527f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206560448201527f7863656564206d696e696d756d2064656c61792e0000000000000000000000006064820152608401610345565b62278d00811115610f785760405162461bcd60e51b815260206004820152603860248201527f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e60448201527f6f7420657863656564206d6178696d756d2064656c61792e00000000000000006064820152608401610345565b6002546040518291907fed0229422af39d4d7d33f7a27d31d6f5cb20ec628293da58dd6e8a528ed466be90600090a3600255565b73ffffffffffffffffffffffffffffffffffffffff8116610ff9576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b803573ffffffffffffffffffffffffffffffffffffffff8116811461102057600080fd5b919050565b60008083601f84011261103757600080fd5b50813567ffffffffffffffff81111561104f57600080fd5b60208301915083602082850101111561106757600080fd5b9250929050565b600080600080600080600060a0888a03121561108957600080fd5b61109288610ffc565b965060208801359550604088013567ffffffffffffffff808211156110b657600080fd5b6110c28b838c01611025565b909750955060608a01359150808211156110db57600080fd5b506110e88a828b01611025565b989b979a50959894979596608090950135949350505050565b60005b8381101561111c578181015183820152602001611104565b50506000910152565b6020815260008251806020840152611144816040850160208701611101565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60006020828403121561118857600080fd5b61119182610ffc565b9392505050565b6000602082840312156111aa57600080fd5b5035919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8816815286602082015260a06040820152600061123060a0830187896111b1565b82810360608401526112438186886111b1565b91505082608083015298975050505050505050565b80820180821115611292577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b8183823760009101908152919050565b7fffffffff0000000000000000000000000000000000000000000000000000000084168152818360048301376000910160040190815292915050565b600082516112f6818460208701611101565b9190910192915050565b86815260806020820152600061131a6080830187896111b1565b828103604084015261132d8186886111b1565b91505082606083015297965050505050505056fea2646970667358221220107bb03227edc1c6f85b8373dcceaab44e4dfeb00d413bf48275c2b4e4a1dd8a64736f6c63430008190033
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.