Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x4bEd650590B56E9385469699f855AcCdfA0DCAe4
Balance 0 ETH
Nonce 1
Code Size 6600 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

6600 bytes
0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806379ba50971161007157806379ba50971461018d5780637e851e13146101975780638195ed24146101b557806386cb9498146101ea5780638da5cb5b1461021a578063e545f94114610238576100b4565b80631eda4cf4146100b95780632a2eddde146100d75780633cfb4dcf14610107578063710bf32214610137578063715018a61461015357806374a8f1031461015d575b600080fd5b6100c1610254565b6040516100ce919061156f565b60405180910390f35b6100f160048036038101906100ec919061120a565b610278565b6040516100fe91906115ea565b60405180910390f35b610121600480360381019061011c91906111e1565b6103e8565b60405161012e9190611705565b60405180910390f35b610151600480360381019061014c91906111e1565b61044e565b005b61015b61057e565b005b610177600480360381019061017291906111e1565b610606565b60405161018491906115ea565b60405180910390f35b610195610848565b005b61019f610a68565b6040516101ac91906115ea565b60405180910390f35b6101cf60048036038101906101ca91906111e1565b610a7a565b6040516101e196959493929190611720565b60405180910390f35b61020460048036038101906101ff91906111e1565b610ac3565b6040516102119190611705565b60405180910390f35b610222610ad5565b60405161022f919061156f565b60405180910390f35b610252600480360381019061024d91906111e1565b610afe565b005b7f0000000000000000000000008eedefe828a0f16c8fc80e46a87bc0f1de2d960c81565b600080600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600101541115610316578060050160009054906101000a900460ff166102e457600080fd5b600061030582600301546102f78a610cb5565b610df090919063ffffffff16565b90506000811461031457600080fd5b505b7f0000000000000000000000008eedefe828a0f16c8fc80e46a87bc0f1de2d960c73ffffffffffffffffffffffffffffffffffffffff166323b872dd61035a610e4f565b30896040518463ffffffff1660e01b815260040161037a9392919061158a565b602060405180830381600087803b15801561039457600080fd5b505af11580156103a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103cc9190611281565b506103da8787878787610e57565b600191505095945050505050565b6000610447600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003015461043984610cb5565b610df090919063ffffffff16565b9050919050565b610456610e4f565b73ffffffffffffffffffffffffffffffffffffffff16610474610ad5565b73ffffffffffffffffffffffffffffffffffffffff16146104ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c1906116c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561053a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053190611605565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610586610e4f565b73ffffffffffffffffffffffffffffffffffffffff166105a4610ad5565b73ffffffffffffffffffffffffffffffffffffffff16146105fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f1906116c5565b60405180910390fd5b6106046000610f41565b565b6000610610610e4f565b73ffffffffffffffffffffffffffffffffffffffff1661062e610ad5565b73ffffffffffffffffffffffffffffffffffffffff1614610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067b906116c5565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060050160009054906101000a900460ff16156106e357600080fd5b60008160040154905060006106f785610cb5565b9050600061070e8284610df090919063ffffffff16565b90506000811161071d57600080fd5b60018460050160006101000a81548160ff0219169083151502179055508184600401819055507f0000000000000000000000008eedefe828a0f16c8fc80e46a87bc0f1de2d960c73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610787610ad5565b836040518363ffffffff1660e01b81526004016107a59291906115c1565b602060405180830381600087803b1580156107bf57600080fd5b505af11580156107d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f79190611281565b508573ffffffffffffffffffffffffffffffffffffffff167f68d870ac0aff3819234e8a1fc8f357b40d75212f2dc8594b97690fa205b3bab260405160405180910390a26001945050505050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cf906116e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095f90611685565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610a7333610afe565b6001905090565b60026020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050160009054906101000a900460ff16905086565b6000610ace82610cb5565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b3857600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000610b8683611005565b905060008111610b9557600080fd5b610bac81836003015461106b90919063ffffffff16565b82600301819055507f0000000000000000000000008eedefe828a0f16c8fc80e46a87bc0f1de2d960c73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401610c0f9291906115c1565b602060405180830381600087803b158015610c2957600080fd5b505af1158015610c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c619190611281565b508273ffffffffffffffffffffffffffffffffffffffff167f9cf9e3ab58b33f06d81842ea0ad850b6640c6430d6396973312e1715792e7a9182604051610ca89190611705565b60405180910390a2505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600401549050610d1d8260000154836001015461106b90919063ffffffff16565b421015610d2f57600092505050610deb565b610d4a8260020154836001015461106b90919063ffffffff16565b42101580610d6657508160050160009054906101000a900460ff165b15610d75578092505050610deb565b6000610da48360000154610d96856001015442610df090919063ffffffff16565b6110c990919063ffffffff16565b9050610de58360020154610dd7610dc886600001548561112790919063ffffffff16565b8561112790919063ffffffff16565b6110c990919063ffffffff16565b93505050505b919050565b600082821115610e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2c90611645565b60405180910390fd5b60008284610e439190611873565b90508091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610e9157600080fd5b42811015610e9e57600080fd5b81831115610eab57600080fd5b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508381600001819055508181600101819055508281600201819055508481600401819055506000816003018190555060008160050160006101000a81548160ff021916908315150217905550505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000611064600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003015461105684610cb5565b610df090919063ffffffff16565b9050919050565b600080828461107a9190611792565b9050838110156110bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b690611625565b60405180910390fd5b8091505092915050565b600080821161110d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110490611665565b60405180910390fd5b6000828461111b91906117e8565b90508091505092915050565b60008083141561113a576000905061119c565b600082846111489190611819565b905082848261115791906117e8565b14611197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118e906116a5565b60405180910390fd5b809150505b92915050565b6000813590506111b18161194d565b92915050565b6000815190506111c681611964565b92915050565b6000813590506111db8161197b565b92915050565b6000602082840312156111f357600080fd5b6000611201848285016111a2565b91505092915050565b600080600080600060a0868803121561122257600080fd5b6000611230888289016111a2565b9550506020611241888289016111cc565b9450506040611252888289016111cc565b9350506060611263888289016111cc565b9250506080611274888289016111cc565b9150509295509295909350565b60006020828403121561129357600080fd5b60006112a1848285016111b7565b91505092915050565b6112b3816118a7565b82525050565b6112c2816118b9565b82525050565b60006112d5602683611781565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061133b601b83611781565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b600061137b601e83611781565b91507f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006000830152602082019050919050565b60006113bb601a83611781565b91507f536166654d6174683a206469766973696f6e206279207a65726f0000000000006000830152602082019050919050565b60006113fb602883611781565b91507f4f776e61626c653a206f776e6572736869702069732072656e6f756e6368656460008301527f20616c72656164790000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611461602183611781565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006114c7602083611781565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000611507602483611781565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206e6577206f60008301527f776e6572000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b611569816118e5565b82525050565b600060208201905061158460008301846112aa565b92915050565b600060608201905061159f60008301866112aa565b6115ac60208301856112aa565b6115b96040830184611560565b949350505050565b60006040820190506115d660008301856112aa565b6115e36020830184611560565b9392505050565b60006020820190506115ff60008301846112b9565b92915050565b6000602082019050818103600083015261161e816112c8565b9050919050565b6000602082019050818103600083015261163e8161132e565b9050919050565b6000602082019050818103600083015261165e8161136e565b9050919050565b6000602082019050818103600083015261167e816113ae565b9050919050565b6000602082019050818103600083015261169e816113ee565b9050919050565b600060208201905081810360008301526116be81611454565b9050919050565b600060208201905081810360008301526116de816114ba565b9050919050565b600060208201905081810360008301526116fe816114fa565b9050919050565b600060208201905061171a6000830184611560565b92915050565b600060c0820190506117356000830189611560565b6117426020830188611560565b61174f6040830187611560565b61175c6060830186611560565b6117696080830185611560565b61177660a08301846112b9565b979650505050505050565b600082825260208201905092915050565b600061179d826118e5565b91506117a8836118e5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156117dd576117dc6118ef565b5b828201905092915050565b60006117f3826118e5565b91506117fe836118e5565b92508261180e5761180d61191e565b5b828204905092915050565b6000611824826118e5565b915061182f836118e5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611868576118676118ef565b5b828202905092915050565b600061187e826118e5565b9150611889836118e5565b92508282101561189c5761189b6118ef565b5b828203905092915050565b60006118b2826118c5565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b611956816118a7565b811461196157600080fd5b50565b61196d816118b9565b811461197857600080fd5b50565b611984816118e5565b811461198f57600080fd5b5056fea264697066735822122096976b2502c7f6ea733649514130d7a245589ab7fba8107dbb80029b76917e2964736f6c63430008000033

Verified Source Code Partial Match

Compiler: v0.8.0+commit.c7dfd78e EVM: istanbul Optimization: No
DGMVTokenVesting.sol 323 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.0;


/**
 * @title SafeMath
 * @dev Unsigned math operations with safety checks that revert on error
 */
library SafeMath {
    /**
     * @dev Multiplies two unsigned integers, reverts on overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b,  "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
       
        require(b > 0, "SafeMath: division by zero");
        uint256 c = a / b;
       
        return c;
    }

    /**
     * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Adds two unsigned integers, reverts on overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),
     * reverts when dividing by zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0,  "SafeMath: modulo by zero");
        return a % b;
    }
}
/**
* @title interface of ERC 20 token
* 
*/

interface IERC20 {
    function transfer(address to, uint256 value) external returns (bool);

    function approve(address spender, uint256 value) external returns (bool);

    function transferFrom(address from, address to, uint256 value) external returns (bool);

    function totalSupply() external view returns (uint256);

    function balanceOf(address who) external view returns (uint256);

    function allowance(address owner, address spender) external view returns (uint256);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}
 
/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
abstract contract Ownable is Context {
    address private _owner;
    address private _newOwner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Propose the new Owner of the smart contract 
     */
    function proposeOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _newOwner = newOwner;
    }

    /**
     * @dev Accept the ownership of the smart contract as a new Owner
     */
    function acceptOwnership() public {
        require(msg.sender == _newOwner, "Ownable: caller is not the new owner");
        require(_owner != address(0), "Ownable: ownership is renounched already");
        emit OwnershipTransferred(_owner, _newOwner);
        _owner = _newOwner;
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


contract DGMVTokenVesting is Ownable{
    
    using SafeMath for uint256; 
    
    address public immutable DGMV_TOKEN; // Contract Address of DGMV Token
    
    struct VestedToken{
        uint256 cliff;
        uint256 start;
        uint256 duration;
        uint256 releasedToken;
        uint256 totalToken;
        bool revoked;
    }
    
    mapping (address => VestedToken) public vestedUser; 
    event TokenReleased(address indexed account, uint256 amount);
    event VestingRevoked(address indexed account);
    
    constructor (address dgmv_token){
        require(dgmv_token != address(0));
        DGMV_TOKEN = dgmv_token;
    }
  
     /**
     * @dev this will set the beneficiary with vesting 
     * parameters provided
     * @param account address of the beneficiary for vesting
     * @param amount  totalToken to be vested
     * @param cliff In seconds of one period in vesting
     * @param duration In seconds of total vesting 
     * @param startAt UNIX timestamp in seconds from where vesting will start
     */
     function setVesting(address account, uint256 amount, uint256 cliff, uint256 duration, uint256 startAt ) external returns(bool){
         VestedToken storage vested = vestedUser[account];
         if(vested.start > 0){
             require(vested.revoked);
             uint unclaimedTokens = _vestedAmount(account).sub(vested.releasedToken);
             require(unclaimedTokens == 0);
         }
         IERC20(DGMV_TOKEN).transferFrom(_msgSender(), address(this) ,amount);
         _setVesting(account, amount, cliff, duration, startAt);
         return true;
     }
     
     /**
     * @dev Calculates the amount that has already vested.
     * @param account address of the user
     */
     function vestedToken(address account) external view returns (uint256) {
       return _vestedAmount(account);
    }
    
    /**
     * @dev Calculates the amount that has already vested but hasn't been released yet.
     * @param account address of user
     */
     function releasableToken(address account) external view returns (uint256) {
       return _vestedAmount(account).sub(vestedUser[account].releasedToken);
    }
     
     /**
      * @dev Internal function to set default vesting parameters
      * @param account address of the beneficiary for vesting
      * @param amount  totalToken to be vested
      * @param cliff In seconds of one period in vestin
      * @param duration In seconds of total vesting duration
      * @param startAt UNIX timestamp in seconds from where vesting will start
      *
      */
     function _setVesting(address account, uint256 amount, uint256 cliff, uint256 duration, uint256 startAt) internal {
         require(account!=address(0));
         require(startAt >= block.timestamp);
         require(cliff<=duration);
         VestedToken storage vested = vestedUser[account];
         vested.cliff = cliff;
         vested.start = startAt;
         vested.duration = duration;
         vested.totalToken = amount;
         vested.releasedToken = 0;
         vested.revoked = false;
     }

    /**
     * @notice Transfers vested tokens to beneficiary.
     * anyone can release their token 
     */
    function releaseMyToken() external returns(bool) {
        releaseToken(msg.sender);
        return true;
    }
    
     /**
     * @notice Transfers vested tokens to the given account.
     * @param account address of the vested user
     */
    function releaseToken(address account) public {
       require(account != address(0));
       VestedToken storage vested = vestedUser[account];
       uint256 unreleasedToken = _releasableAmount(account);  // total releasable token currently
       require(unreleasedToken>0);
       vested.releasedToken = vested.releasedToken.add(unreleasedToken);
       IERC20(DGMV_TOKEN).transfer(account,unreleasedToken);
       emit TokenReleased(account, unreleasedToken);
    }
    
    /**
     * @dev Calculates the amount that has already vested but hasn't been released yet.
     * @param account address of user
     */
    function _releasableAmount(address account) internal view returns (uint256) {
        return _vestedAmount(account).sub(vestedUser[account].releasedToken);
    }

  
    /**
     * @dev Calculates the amount that has already vested.
     * @param account address of the user
     */
    function _vestedAmount(address account) internal view returns (uint256) {
        VestedToken storage vested = vestedUser[account];
        uint256 totalToken = vested.totalToken;
        if(block.timestamp <  vested.start.add(vested.cliff)){
            return 0;
        }else if(block.timestamp >= vested.start.add(vested.duration) || vested.revoked){
            return totalToken;
        }else{
            uint256 numberOfPeriods = (block.timestamp.sub(vested.start)).div(vested.cliff);
            return totalToken.mul(numberOfPeriods.mul(vested.cliff)).div(vested.duration);
        }
    }
    
    /**
     * @notice Allows the owner to revoke the vesting. Tokens already vested
     * remain in the contract, the rest are returned to the owner.
     * @param account address in which the vesting is revoked
     */
    function revoke(address account) external onlyOwner returns(bool) {
        VestedToken storage vested = vestedUser[account];
        require(!vested.revoked);
        uint256 balance = vested.totalToken;
        uint256 vestedAmount = _vestedAmount(account);
        uint256 refund = balance.sub(vestedAmount);
        require(refund > 0);
        vested.revoked = true;
        vested.totalToken = vestedAmount;
        IERC20(DGMV_TOKEN).transfer(owner(), refund);
        emit VestingRevoked(account);
        return true;
    }
}

Read Contract

DGMV_TOKEN 0x1eda4cf4 → address
owner 0x8da5cb5b → address
releasableToken 0x3cfb4dcf → uint256
vestedToken 0x86cb9498 → uint256
vestedUser 0x8195ed24 → uint256, uint256, uint256, uint256, uint256, bool

Write Contract 7 functions

These functions modify contract state and require a wallet transaction to execute.

acceptOwnership 0x79ba5097
No parameters
proposeOwnership 0x710bf322
address newOwner
releaseMyToken 0x7e851e13
No parameters
returns: bool
releaseToken 0xe545f941
address account
renounceOwnership 0x715018a6
No parameters
revoke 0x74a8f103
address account
returns: bool
setVesting 0x2a2eddde
address account
uint256 amount
uint256 cliff
uint256 duration
uint256 startAt
returns: bool

Recent Transactions

No transactions found for this address