Files
openzeppelin-contracts/contracts/token/ERC20/TokenTimelock.sol
2018-05-22 16:07:27 -03:00

53 lines
1.2 KiB
Solidity

pragma solidity ^0.4.21;
import "./SafeERC20.sol";
import "zos-lib/contracts/migrations/Migratable.sol";
/**
* @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 Migratable {
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;
function initialize(
address _sender,
ERC20Basic _token,
address _beneficiary,
uint256 _releaseTime
)
isInitializer("TokenTimelock", "1.9.0")
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(this);
require(amount > 0);
token.safeTransfer(beneficiary, amount);
}
}