Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pragma solidity 0.6.12;
- import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v3.1.0/contracts/access/Ownable.sol";
- import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v3.1.0/contracts/math/SafeMath.sol";
- import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v3.1.0/contracts/token/ERC20/SafeERC20.sol";
- contract KudexLiquidityLock is Ownable {
- using SafeMath for uint256;
- using SafeERC20 for IERC20;
- // Variables
- address token;
- address creator;
- address admin;
- uint256 unlockTime;
- constructor(
- address _token,
- address _admin,
- address _creator,
- uint256 _unlockTime
- ) public {
- token = _token;
- admin = _admin;
- creator = _creator;
- unlockTime = _unlockTime;
- }
- function isUnlockable() public view returns (bool) {
- return block.timestamp >= unlockTime;
- }
- function getTimeLeft() public view returns (uint256) {
- if( isUnlockable() ) {
- return 0;
- } else {
- return (unlockTime - block.timestamp);
- }
- }
- function unlockTokens() public {
- require( address(msg.sender) == creator || address(msg.sender) == admin );
- require( isUnlockable(), "The lock time has not yet passed");
- // Transfer the token to the user's wallet
- IERC20 theToken = IERC20(token);
- theToken.safeTransfer(msg.sender, theToken.balanceOf(address(this)));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement