Source Code
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Cross-Chain Transactions
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
Contract ABI
API[{"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 | 34 Chains
Loading...
Loading
Loading...
Loading
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.