More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
MenloWalletTimelock
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-10-18 */ pragma solidity ^0.4.13; contract Ownable { address public owner; event OwnershipRenounced(address indexed previousOwner); event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to relinquish control of the contract. * @notice Renouncing to ownership will leave the contract without an owner. * It will not be possible to call the functions with the `onlyOwner` * modifier anymore. */ function renounceOwnership() public onlyOwner { emit OwnershipRenounced(owner); owner = address(0); } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function transferOwnership(address _newOwner) public onlyOwner { _transferOwnership(_newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function _transferOwnership(address _newOwner) internal { require(_newOwner != address(0)); emit OwnershipTransferred(owner, _newOwner); owner = _newOwner; } } contract ERC20Basic { function totalSupply() public view returns (uint256); function balanceOf(address _who) public view returns (uint256); function transfer(address _to, uint256 _value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } contract ERC20 is ERC20Basic { function allowance(address _owner, address _spender) public view returns (uint256); function transferFrom(address _from, address _to, uint256 _value) public returns (bool); function approve(address _spender, uint256 _value) public returns (bool); event Approval( address indexed owner, address indexed spender, uint256 value ); } library SafeERC20 { function safeTransfer( ERC20Basic _token, address _to, uint256 _value ) internal { require(_token.transfer(_to, _value)); } function safeTransferFrom( ERC20 _token, address _from, address _to, uint256 _value ) internal { require(_token.transferFrom(_from, _to, _value)); } function safeApprove( ERC20 _token, address _spender, uint256 _value ) internal { require(_token.approve(_spender, _value)); } } contract TokenTimelock { using SafeERC20 for ERC20Basic; // ERC20 basic token contract being held ERC20Basic public token; // beneficiary of tokens after they are released address public beneficiary; // timestamp when token release is enabled uint256 public releaseTime; constructor( ERC20Basic _token, address _beneficiary, uint256 _releaseTime ) public { // solium-disable-next-line security/no-block-members require(_releaseTime > block.timestamp); token = _token; beneficiary = _beneficiary; releaseTime = _releaseTime; } /** * @notice Transfers tokens held by timelock to beneficiary. */ function release() public { // solium-disable-next-line security/no-block-members require(block.timestamp >= releaseTime); uint256 amount = token.balanceOf(address(this)); require(amount > 0); token.safeTransfer(beneficiary, amount); } } contract MenloWalletTimelock is TokenTimelock, Ownable { constructor(address _beneficiary, uint256 _releaseTime) TokenTimelock(ERC20Basic(0), _beneficiary, _releaseTime) public {} function setToken(ERC20Basic _token) public onlyOwner { token = _token; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"setToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"beneficiary","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"release","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"releaseTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_beneficiary","type":"address"},{"name":"_releaseTime","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
608060405234801561001057600080fd5b5060405160408061054e8339810160405280516020909101516000828242811161003957600080fd5b60008054600160a060020a03948516600160a060020a031991821617825560018054949095169381169390931790935560025560038054909116331790556104c5925082915061008990396000f30060806040526004361061008d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663144fa6d7811461009257806338af3eed146100b5578063715018a6146100e657806386d1a69f146100fb5780638da5cb5b14610110578063b91d400114610125578063f2fde38b1461014c578063fc0c546a1461016d575b600080fd5b34801561009e57600080fd5b506100b3600160a060020a0360043516610182565b005b3480156100c157600080fd5b506100ca6101c8565b60408051600160a060020a039092168252519081900360200190f35b3480156100f257600080fd5b506100b36101d7565b34801561010757600080fd5b506100b3610245565b34801561011c57600080fd5b506100ca61031f565b34801561013157600080fd5b5061013a61032e565b60408051918252519081900360200190f35b34801561015857600080fd5b506100b3600160a060020a0360043516610334565b34801561017957600080fd5b506100ca610354565b600354600160a060020a0316331461019957600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154600160a060020a031681565b600354600160a060020a031633146101ee57600080fd5b600354604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26003805473ffffffffffffffffffffffffffffffffffffffff19169055565b60025460009042101561025757600080fd5b60008054604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216926370a08231926024808401936020939083900390910190829087803b1580156102be57600080fd5b505af11580156102d2573d6000803e3d6000fd5b505050506040513d60208110156102e857600080fd5b50519050600081116102f957600080fd5b60015460005461031c91600160a060020a0391821691168363ffffffff61036316565b50565b600354600160a060020a031681565b60025481565b600354600160a060020a0316331461034b57600080fd5b61031c8161041b565b600054600160a060020a031681565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156103df57600080fd5b505af11580156103f3573d6000803e3d6000fd5b505050506040513d602081101561040957600080fd5b5051151561041657600080fd5b505050565b600160a060020a038116151561043057600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a72305820373920c59fc96d44edf6590d04817a794625bc7d2389b6ce15d1754358f64a7a002900000000000000000000000003666ed7f918a34ea7415ac2785e1aa4a2bc26c0000000000000000000000000000000000000000000000000000000005c14d0a0
Deployed Bytecode
0x60806040526004361061008d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663144fa6d7811461009257806338af3eed146100b5578063715018a6146100e657806386d1a69f146100fb5780638da5cb5b14610110578063b91d400114610125578063f2fde38b1461014c578063fc0c546a1461016d575b600080fd5b34801561009e57600080fd5b506100b3600160a060020a0360043516610182565b005b3480156100c157600080fd5b506100ca6101c8565b60408051600160a060020a039092168252519081900360200190f35b3480156100f257600080fd5b506100b36101d7565b34801561010757600080fd5b506100b3610245565b34801561011c57600080fd5b506100ca61031f565b34801561013157600080fd5b5061013a61032e565b60408051918252519081900360200190f35b34801561015857600080fd5b506100b3600160a060020a0360043516610334565b34801561017957600080fd5b506100ca610354565b600354600160a060020a0316331461019957600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154600160a060020a031681565b600354600160a060020a031633146101ee57600080fd5b600354604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26003805473ffffffffffffffffffffffffffffffffffffffff19169055565b60025460009042101561025757600080fd5b60008054604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216926370a08231926024808401936020939083900390910190829087803b1580156102be57600080fd5b505af11580156102d2573d6000803e3d6000fd5b505050506040513d60208110156102e857600080fd5b50519050600081116102f957600080fd5b60015460005461031c91600160a060020a0391821691168363ffffffff61036316565b50565b600354600160a060020a031681565b60025481565b600354600160a060020a0316331461034b57600080fd5b61031c8161041b565b600054600160a060020a031681565b82600160a060020a031663a9059cbb83836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1580156103df57600080fd5b505af11580156103f3573d6000803e3d6000fd5b505050506040513d602081101561040957600080fd5b5051151561041657600080fd5b505050565b600160a060020a038116151561043057600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a72305820373920c59fc96d44edf6590d04817a794625bc7d2389b6ce15d1754358f64a7a0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000003666ed7f918a34ea7415ac2785e1aa4a2bc26c0000000000000000000000000000000000000000000000000000000005c14d0a0
-----Decoded View---------------
Arg [0] : _beneficiary (address): 0x03666eD7F918a34ea7415ac2785e1Aa4a2BC26c0
Arg [1] : _releaseTime (uint256): 1544868000
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000003666ed7f918a34ea7415ac2785e1aa4a2bc26c0
Arg [1] : 000000000000000000000000000000000000000000000000000000005c14d0a0
Swarm Source
bzzr://373920c59fc96d44edf6590d04817a794625bc7d2389b6ce15d1754358f64a7a
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.