ETH Price: $2,738.38 (+2.60%)

Contract

0x9f04518E27687196e36bE771641CACCfAdE85625
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim67088402018-11-15 11:50:082283 days ago1542282608IN
0x9f04518E...fAdE85625
0 ETH0.000109034

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TokenTimelock

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2017-11-10
*/

pragma solidity ^0.4.17;

contract Ownable {
  address public owner;
  
  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


  function Ownable() internal {
    owner = msg.sender;
  }

  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  function transferOwnership(address newOwner) onlyOwner public {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }
}

contract ERC20Basic {
  function balanceOf(address who) public constant returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
}

library SafeERC20 {
  function safeTransfer(ERC20Basic token, address to, uint256 value) internal {
    assert(token.transfer(to, 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 is Ownable{
  using SafeERC20 for ERC20Basic;
  ERC20Basic public token;   // ERC20 basic token contract being held
  uint64 public releaseTime; // timestamp when token claim is enabled

  function TokenTimelock(ERC20Basic _token, uint64 _releaseTime) public {
    require(_releaseTime > now);
    token = _token;
    owner = msg.sender;
    releaseTime = _releaseTime;
  }

  /**
   * @notice Transfers tokens held by timelock to owner.
   */
  function claim() public onlyOwner {
    require(now >= releaseTime);

    uint256 amount = token.balanceOf(this);
    require(amount > 0);

    token.safeTransfer(owner, amount);
  }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[],"name":"claim","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":"uint64"}],"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":"_token","type":"address"},{"name":"_releaseTime","type":"uint64"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

6060604052341561000f57600080fd5b604051604080610458833981016040528080519190602001805160008054600160a060020a03191633600160a060020a0316179055915050426001604060020a0382161161005c57600080fd5b600180546000805433600160a060020a03908116600160a060020a0319928316179092556001604060020a03909416740100000000000000000000000000000000000000000260a060020a60e060020a031991909516939091169290921791909116919091179055610385806100d36000396000f3006060604052600436106100535763ffffffff60e060020a6000350416634e71d92d81146100585780638da5cb5b1461006d578063b91d40011461009c578063f2fde38b146100cc578063fc0c546a146100eb575b600080fd5b341561006357600080fd5b61006b6100fe565b005b341561007857600080fd5b6100806101f3565b604051600160a060020a03909116815260200160405180910390f35b34156100a757600080fd5b6100af610202565b60405167ffffffffffffffff909116815260200160405180910390f35b34156100d757600080fd5b61006b600160a060020a036004351661022a565b34156100f657600080fd5b6100806102c5565b6000805433600160a060020a0390811691161461011a57600080fd5b60015474010000000000000000000000000000000000000000900467ffffffffffffffff1642101561014b57600080fd5b600154600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156101a457600080fd5b6102c65a03f115156101b557600080fd5b5050506040518051915050600081116101cd57600080fd5b6000546001546101f091600160a060020a0391821691168363ffffffff6102d416565b50565b600054600160a060020a031681565b60015474010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60005433600160a060020a0390811691161461024557600080fd5b600160a060020a038116151561025a57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154600160a060020a031681565b82600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561033157600080fd5b6102c65a03f1151561034257600080fd5b50505060405180519050151561035457fe5b5050505600a165627a7a72305820c8f2e1b8aacbf5929c8543dd01fd81c44f3d7eae45fa6578474c79bae78b54d800290000000000000000000000004d829f8c92a6691c56300d020c9e0db984cfe2ba000000000000000000000000000000000000000000000000000000005bed51b0

Deployed Bytecode

0x6060604052600436106100535763ffffffff60e060020a6000350416634e71d92d81146100585780638da5cb5b1461006d578063b91d40011461009c578063f2fde38b146100cc578063fc0c546a146100eb575b600080fd5b341561006357600080fd5b61006b6100fe565b005b341561007857600080fd5b6100806101f3565b604051600160a060020a03909116815260200160405180910390f35b34156100a757600080fd5b6100af610202565b60405167ffffffffffffffff909116815260200160405180910390f35b34156100d757600080fd5b61006b600160a060020a036004351661022a565b34156100f657600080fd5b6100806102c5565b6000805433600160a060020a0390811691161461011a57600080fd5b60015474010000000000000000000000000000000000000000900467ffffffffffffffff1642101561014b57600080fd5b600154600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156101a457600080fd5b6102c65a03f115156101b557600080fd5b5050506040518051915050600081116101cd57600080fd5b6000546001546101f091600160a060020a0391821691168363ffffffff6102d416565b50565b600054600160a060020a031681565b60015474010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60005433600160a060020a0390811691161461024557600080fd5b600160a060020a038116151561025a57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154600160a060020a031681565b82600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561033157600080fd5b6102c65a03f1151561034257600080fd5b50505060405180519050151561035457fe5b5050505600a165627a7a72305820c8f2e1b8aacbf5929c8543dd01fd81c44f3d7eae45fa6578474c79bae78b54d80029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000004d829f8c92a6691c56300d020c9e0db984cfe2ba000000000000000000000000000000000000000000000000000000005bed51b0

-----Decoded View---------------
Arg [0] : _token (address): 0x4d829f8C92a6691c56300D020c9e0dB984Cfe2BA
Arg [1] : _releaseTime (uint64): 1542279600

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000004d829f8c92a6691c56300d020c9e0db984cfe2ba
Arg [1] : 000000000000000000000000000000000000000000000000000000005bed51b0


Swarm Source

bzzr://c8f2e1b8aacbf5929c8543dd01fd81c44f3d7eae45fa6578474c79bae78b54d8

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.