More Info
Private Name Tags
ContractCreator
Latest 5 from a total of 5 transactions
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
TokenTimelock
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-05-27 */ pragma solidity ^0.4.23; /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/179 */ 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); } /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ 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 ); } /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ 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)); } } /** * @title TokenTimelock * @dev TokenTimelock is a token holder contract that will allow a * beneficiary to extract the tokens after a given release time */ 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 = 0x2F1C2Fb4cf9b46172D59d8878Fc795277b8a2c9a; // timestamp when token release is enabled uint256 public firstTime = 1529942400; //2018-06-26 uint256 public secondTime = 1532534400; //2018-07-26 uint256 public thirdTime = 1535212800; //2018-08-26 uint256 public firstPay = 900000000000000000000000000; //900 million FTI uint256 public secondPay = 900000000000000000000000000; //900 million FTI uint256 public thirdPay = 600000000000000000000000000; //900 million FTI constructor( ERC20Basic _token ) public { token = _token; } /** * @notice Transfers tokens held by timelock to beneficiary. */ function release() public { uint256 tmpPay = 0; if(block.timestamp >= firstTime && firstPay > 0){ tmpPay = firstPay; firstPay = 0; }else if(block.timestamp >= secondTime && secondPay > 0 ){ tmpPay = secondPay; secondPay = 0; }else if (block.timestamp >= thirdTime && thirdPay > 0) { tmpPay = token.balanceOf(this); thirdPay = 0; } require(tmpPay > 0); uint256 amount = token.balanceOf(this); require(amount >= tmpPay); token.safeTransfer(beneficiary, tmpPay); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"firstPay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"beneficiary","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"firstTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"secondTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"thirdPay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"release","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"secondPay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"thirdTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_token","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]
Contract Creation Code
6080604052732f1c2fb4cf9b46172d59d8878fc795277b8a2c9a600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550635b311180600255635b589e80600355635b817d006004556b02e87669c308736a040000006005556b02e87669c308736a040000006006556b01f04ef12cb04cf1580000006007553480156100ad57600080fd5b5060405160208061081183398101806040528101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506106f1806101206000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632ca781f11461009e57806338af3eed146100c957806341d76a9c14610120578063499caf091461014b5780637dcbd0781461017657806386d1a69f146101a15780639448807a146101b8578063e00ac9a3146101e3578063fc0c546a1461020e575b600080fd5b3480156100aa57600080fd5b506100b3610265565b6040518082815260200191505060405180910390f35b3480156100d557600080fd5b506100de61026b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561012c57600080fd5b50610135610291565b6040518082815260200191505060405180910390f35b34801561015757600080fd5b50610160610297565b6040518082815260200191505060405180910390f35b34801561018257600080fd5b5061018b61029d565b6040518082815260200191505060405180910390f35b3480156101ad57600080fd5b506101b66102a3565b005b3480156101c457600080fd5b506101cd6105a6565b6040518082815260200191505060405180910390f35b3480156101ef57600080fd5b506101f86105ac565b6040518082815260200191505060405180910390f35b34801561021a57600080fd5b506102236105b2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60055481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b60035481565b60075481565b6000806000915060025442101580156102be57506000600554115b156102d5576005549150600060058190555061041d565b60035442101580156102e957506000600654115b15610300576006549150600060068190555061041c565b600454421015801561031457506000600754115b1561041b576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156103d557600080fd5b505af11580156103e9573d6000803e3d6000fd5b505050506040513d60208110156103ff57600080fd5b8101908080519060200190929190505050915060006007819055505b5b5b60008211151561042c57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156104e857600080fd5b505af11580156104fc573d6000803e3d6000fd5b505050506040513d602081101561051257600080fd5b8101908080519060200190929190505050905081811015151561053457600080fd5b6105a2600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105d79092919063ffffffff16565b5050565b60065481565b60045481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561067a57600080fd5b505af115801561068e573d6000803e3d6000fd5b505050506040513d60208110156106a457600080fd5b810190808051906020019092919050505015156106c057600080fd5b5050505600a165627a7a72305820ba6c864e04c96db63fe0f79593668780eac75352222786f1e2309d29d4130c060029000000000000000000000000943ed852dadb5c3938ecdc6883718df8142de4c8
Deployed Bytecode
0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632ca781f11461009e57806338af3eed146100c957806341d76a9c14610120578063499caf091461014b5780637dcbd0781461017657806386d1a69f146101a15780639448807a146101b8578063e00ac9a3146101e3578063fc0c546a1461020e575b600080fd5b3480156100aa57600080fd5b506100b3610265565b6040518082815260200191505060405180910390f35b3480156100d557600080fd5b506100de61026b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561012c57600080fd5b50610135610291565b6040518082815260200191505060405180910390f35b34801561015757600080fd5b50610160610297565b6040518082815260200191505060405180910390f35b34801561018257600080fd5b5061018b61029d565b6040518082815260200191505060405180910390f35b3480156101ad57600080fd5b506101b66102a3565b005b3480156101c457600080fd5b506101cd6105a6565b6040518082815260200191505060405180910390f35b3480156101ef57600080fd5b506101f86105ac565b6040518082815260200191505060405180910390f35b34801561021a57600080fd5b506102236105b2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60055481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b60035481565b60075481565b6000806000915060025442101580156102be57506000600554115b156102d5576005549150600060058190555061041d565b60035442101580156102e957506000600654115b15610300576006549150600060068190555061041c565b600454421015801561031457506000600754115b1561041b576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156103d557600080fd5b505af11580156103e9573d6000803e3d6000fd5b505050506040513d60208110156103ff57600080fd5b8101908080519060200190929190505050915060006007819055505b5b5b60008211151561042c57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156104e857600080fd5b505af11580156104fc573d6000803e3d6000fd5b505050506040513d602081101561051257600080fd5b8101908080519060200190929190505050905081811015151561053457600080fd5b6105a2600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105d79092919063ffffffff16565b5050565b60065481565b60045481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561067a57600080fd5b505af115801561068e573d6000803e3d6000fd5b505050506040513d60208110156106a457600080fd5b810190808051906020019092919050505015156106c057600080fd5b5050505600a165627a7a72305820ba6c864e04c96db63fe0f79593668780eac75352222786f1e2309d29d4130c060029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000943ed852dadb5c3938ecdc6883718df8142de4c8
-----Decoded View---------------
Arg [0] : _token (address): 0x943ED852DadB5C3938ECdC6883718df8142DE4C8
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000943ed852dadb5c3938ecdc6883718df8142de4c8
Swarm Source
bzzr://ba6c864e04c96db63fe0f79593668780eac75352222786f1e2309d29d4130c06
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
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.