Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 22 from a total of 22 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim Vested Tok... | 14161228 | 1014 days ago | IN | 0 ETH | 0.02334854 | ||||
Claim Vested Tok... | 13624608 | 1097 days ago | IN | 0 ETH | 0.01316759 | ||||
Claim Vested Tok... | 13404054 | 1132 days ago | IN | 0 ETH | 0.0089055 | ||||
Claim Vested Tok... | 13363086 | 1138 days ago | IN | 0 ETH | 0.01026618 | ||||
Change Multi Sig | 12826736 | 1222 days ago | IN | 0 ETH | 0.00135531 | ||||
Claim Vested Tok... | 12453967 | 1280 days ago | IN | 0 ETH | 0.01187444 | ||||
Add Token Grant | 11323010 | 1454 days ago | IN | 0 ETH | 0.00990384 | ||||
Add Token Grant | 11323010 | 1454 days ago | IN | 0 ETH | 0.00990384 | ||||
Add Token Grant | 11323008 | 1454 days ago | IN | 0 ETH | 0.00990312 | ||||
Add Token Grant | 11323008 | 1454 days ago | IN | 0 ETH | 0.0099024 | ||||
Add Token Grant | 11323008 | 1454 days ago | IN | 0 ETH | 0.00990384 | ||||
Add Token Grant | 11323008 | 1454 days ago | IN | 0 ETH | 0.00990384 | ||||
Add Token Grant | 11323008 | 1454 days ago | IN | 0 ETH | 0.00990312 | ||||
Add Token Grant | 11323008 | 1454 days ago | IN | 0 ETH | 0.00990384 | ||||
Add Token Grant | 11323008 | 1454 days ago | IN | 0 ETH | 0.00990384 | ||||
Add Token Grant | 11323008 | 1454 days ago | IN | 0 ETH | 0.00990384 | ||||
Add Token Grant | 11323008 | 1454 days ago | IN | 0 ETH | 0.00990312 | ||||
Add Token Grant | 11323008 | 1454 days ago | IN | 0 ETH | 0.00990384 | ||||
Add Token Grant | 11323008 | 1454 days ago | IN | 0 ETH | 0.00990384 | ||||
Add Token Grant | 11323008 | 1454 days ago | IN | 0 ETH | 0.01055184 | ||||
Deposit | 11323000 | 1454 days ago | IN | 0 ETH | 0.00511872 | ||||
0x60806040 | 11322798 | 1454 days ago | IN | 0 ETH | 0.13867083 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
LORVestingVault
Compiler Version
v0.5.12+commit.7709ece9
Optimization Enabled:
Yes with 9999 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-11-24 */ pragma solidity >=0.5.12; /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. * * _Available since v2.4.0._ */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Converts an `address` into `address payable`. Note that this is * simply a type cast: the actual underlying value is not changed. * * _Available since v2.4.0._ */ function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. * * _Available since v2.4.0._ */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-call-value (bool success, ) = recipient.call.value(amount)(""); require(success, "Address: unable to send value, recipient may have reverted"); } } /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * 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 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero"); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. // A Solidity high level call has three parts: // 1. The target address is checked to verify it contains contract code // 2. The call itself is made, and success asserted // 3. The return value is decoded, which in turn checks the size of the returned data. // solhint-disable-next-line max-line-length require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } contract LORVestingVault { using SafeMath for uint256; using SafeMath for uint16; using SafeERC20 for IERC20; uint256 internal constant SECONDS_PER_DAY = 86400; struct Grant { uint256 startTime; uint256 amount; uint16 vestingDuration; uint16 vestingCliff; uint16 daysClaimed; uint256 totalClaimed; address recipient; } IERC20 public token; uint256 private _totalSupply; uint256 private _totalGranted; uint256 private _totalClaimed; address public denMultiSig; uint256 public totalVestingCount; mapping(uint256 => Grant) public tokenGrants; mapping(address => uint256[]) private activeGrants; event TokensAdded(uint256 amount); event GrantAdded(address indexed recipient, uint256 vestingId); event GrantTokensClaimed(address indexed recipient, uint256 amountClaimed); event GrantRemoved(address recipient, uint256 amountVested, uint256 amountNotVested); event ChangedMultisig(address multisig); constructor(IERC20 _token) public { require(address(_token) != address(0)); denMultiSig = msg.sender; token = _token; } modifier onlyDenMultiSig { require(msg.sender == denMultiSig, "not owner"); _; } modifier onlyGrantRecipient(uint256 _grantId) { Grant storage tokenGrant = tokenGrants[_grantId]; require(msg.sender == tokenGrant.recipient, "not grant recipient"); _; } modifier onlyValidAddress(address _recipient) { require( _recipient != address(0) && _recipient != address(this) && _recipient != address(token), "not valid recipient" ); _; } function totalSupply() public view returns (uint256) { return _totalSupply; } function totalGranted() public view returns (uint256) { return _totalGranted; } function totalClaimed() public view returns (uint256) { return _totalClaimed; } function deposit(uint256 amount) public onlyDenMultiSig { _totalSupply = _totalSupply.add(amount); token.safeTransferFrom(msg.sender, address(this), amount); emit TokensAdded(amount); } function addTokenGrant( address _recipient, uint256 _startTime, uint256 _amount, uint16 _vestingDurationInDays, uint16 _vestingCliffInDays ) external onlyDenMultiSig { require(_totalGranted.add(_amount) <= _totalSupply, "add more tokens"); require(_vestingCliffInDays >= 30, "less than 30 days"); require(_vestingCliffInDays <= 365, "more than 1 year"); require(_vestingDurationInDays <= 10 * 365, "more than 10 years"); require(_vestingDurationInDays >= _vestingCliffInDays, "Duration < Cliff"); uint256 amountVestedPerDay = _amount.div(_vestingDurationInDays); require(amountVestedPerDay > 0, "vested per day must be more than 0"); Grant memory grant = Grant({ startTime: _startTime == 0 ? currentTime() : _startTime, amount: _amount, vestingDuration: _vestingDurationInDays, vestingCliff: _vestingCliffInDays, daysClaimed: 0, totalClaimed: 0, recipient: _recipient }); // add the amount to total granted tokens _totalGranted = _totalGranted.add(_amount); tokenGrants[totalVestingCount] = grant; activeGrants[_recipient].push(totalVestingCount); emit GrantAdded(_recipient, totalVestingCount); totalVestingCount++; } function getActiveGrants(address _recipient) public view returns (uint256[] memory) { return activeGrants[_recipient]; } /// @notice Calculate the vested and unclaimed months and tokens available for `_grantId` to claim /// Due to rounding errors once grant duration is reached, returns the entire grant amount remaining /// Returns (0, 0) if cliff has not been reached function calculateGrantClaim(uint256 _grantId) public view returns (uint16, uint256) { Grant storage tokenGrant = tokenGrants[_grantId]; // For grants created with a future start date, that hasn't been reached, return 0, 0 if (currentTime() < tokenGrant.startTime) { return (0, 0); } // Check cliff was reached uint256 elapsedTime = currentTime().sub(tokenGrant.startTime); uint256 elapsedDays = elapsedTime.div(SECONDS_PER_DAY); if (elapsedDays < tokenGrant.vestingCliff) { return (uint16(elapsedDays), 0); } // If over vesting duration, all tokens vested if (elapsedDays >= tokenGrant.vestingDuration) { uint256 remainingGrant = tokenGrant.amount.sub(tokenGrant.totalClaimed); return (tokenGrant.vestingDuration, remainingGrant); } else { uint16 daysVested = uint16(elapsedDays.sub(tokenGrant.daysClaimed)); uint256 amountVestedPerDay = tokenGrant.amount.div(uint256(tokenGrant.vestingDuration)); uint256 amountVested = uint256(daysVested.mul(amountVestedPerDay)); return (daysVested, amountVested); } } /// @notice Allows a grant recipient to claim their vested tokens. Errors if no tokens have vested /// It is advised recipients check they are entitled to claim via `calculateGrantClaim` before calling this function claimVestedTokens(uint256 _grantId) external onlyGrantRecipient(_grantId) { uint16 daysVested; uint256 amountVested; (daysVested, amountVested) = calculateGrantClaim(_grantId); require(amountVested > 0, "vested amount is 0"); require(_totalSupply.sub(amountVested) >= 0, "not enough tokens"); Grant storage tokenGrant = tokenGrants[_grantId]; tokenGrant.daysClaimed = uint16(tokenGrant.daysClaimed.add(daysVested)); tokenGrant.totalClaimed = uint256(tokenGrant.totalClaimed.add(amountVested)); // add the amount to total claimed tokens _totalClaimed = _totalClaimed.add(amountVested); // remove the amount from the total supply _totalSupply = _totalSupply.sub(amountVested); token.safeTransfer(tokenGrant.recipient, amountVested); emit GrantTokensClaimed(tokenGrant.recipient, amountVested); } /// @notice Terminate token grant transferring all vested tokens to the `_grantId` /// and returning all non-vested tokens to the Den MultiSig /// Secured to the Den MultiSig only /// @param _grantId grantId of the token grant recipient function removeTokenGrant(uint256 _grantId) external onlyDenMultiSig { Grant storage tokenGrant = tokenGrants[_grantId]; address recipient = tokenGrant.recipient; uint16 daysVested; uint256 amountVested; (daysVested, amountVested) = calculateGrantClaim(_grantId); require(_totalSupply.sub(amountVested) >= 0, "not enough tokens"); uint256 amountNotVested = (tokenGrant.amount.sub(tokenGrant.totalClaimed)).sub(amountVested); tokenGrant.startTime = 0; tokenGrant.amount = 0; tokenGrant.vestingDuration = 0; tokenGrant.vestingCliff = 0; tokenGrant.daysClaimed = 0; tokenGrant.totalClaimed = 0; tokenGrant.recipient = address(0); // add the vested amount to total claimed tokens _totalClaimed = _totalClaimed.add(amountVested); // remove the vested amount from the total supply _totalSupply = _totalSupply.sub(amountVested); // remove the non-vested amount from the total granted _totalGranted = _totalGranted.sub(amountNotVested); token.safeTransfer(recipient, amountVested); emit GrantRemoved(recipient, amountVested, amountNotVested); } function currentTime() private view returns (uint256) { return block.timestamp; } function tokensVestedPerDay(uint256 _grantId) public view returns (uint256) { Grant storage tokenGrant = tokenGrants[_grantId]; return tokenGrant.amount.div(uint256(tokenGrant.vestingDuration)); } function changeMultiSig(address _denMultiSig) external onlyDenMultiSig onlyValidAddress(_denMultiSig) { denMultiSig = _denMultiSig; emit ChangedMultisig(_denMultiSig); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"multisig","type":"address"}],"name":"ChangedMultisig","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"vestingId","type":"uint256"}],"name":"GrantAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountVested","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountNotVested","type":"uint256"}],"name":"GrantRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountClaimed","type":"uint256"}],"name":"GrantTokensClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensAdded","type":"event"},{"constant":false,"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_startTime","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint16","name":"_vestingDurationInDays","type":"uint16"},{"internalType":"uint16","name":"_vestingCliffInDays","type":"uint16"}],"name":"addTokenGrant","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_grantId","type":"uint256"}],"name":"calculateGrantClaim","outputs":[{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_denMultiSig","type":"address"}],"name":"changeMultiSig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_grantId","type":"uint256"}],"name":"claimVestedTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"denMultiSig","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_recipient","type":"address"}],"name":"getActiveGrants","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_grantId","type":"uint256"}],"name":"removeTokenGrant","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenGrants","outputs":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint16","name":"vestingDuration","type":"uint16"},{"internalType":"uint16","name":"vestingCliff","type":"uint16"},{"internalType":"uint16","name":"daysClaimed","type":"uint16"},{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_grantId","type":"uint256"}],"name":"tokensVestedPerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalGranted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalVestingCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5060405161193f38038061193f8339818101604052602081101561003357600080fd5b50516001600160a01b03811661004857600080fd5b600480546001600160a01b03199081163317909155600080546001600160a01b0393909316929091169190911790556118b9806100866000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80637935510b11610097578063b6d6000911610066578063b6d6000914610332578063d54ad2a114610363578063f09dafb21461036b578063fc0c546a14610388576100f5565b80637935510b1461026d5780638bf1ad4c1461028a57806399d508c01461030d578063b6b55f2514610315576100f5565b80633b919ba8116100d35780633b919ba8146101845780635ca2fc531461018c5780636f1b526d146101dd5780636fc559bb146101fa576100f5565b806318160ddd146100fa5780632902a0ca1461011457806332b1c5b714610149575b600080fd5b610102610390565b60408051918252519081900360200190f35b6101476004803603602081101561012a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610396565b005b6101666004803603602081101561015f57600080fd5b5035610530565b6040805161ffff909316835260208301919091528051918290030190f35b61010261066e565b610147600480360360a08110156101a257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060408101359061ffff60608201358116916080013516610674565b610147600480360360208110156101f357600080fd5b5035610b1c565b6102176004803603602081101561021057600080fd5b5035610d83565b60408051978852602088019690965261ffff9485168787015292841660608701529216608085015260a084019190915273ffffffffffffffffffffffffffffffffffffffff1660c0830152519081900360e00190f35b6101476004803603602081101561028357600080fd5b5035610de1565b6102bd600480360360208110156102a057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611070565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102f95781810151838201526020016102e1565b505050509050019250505060405180910390f35b6101026110e9565b6101476004803603602081101561032b57600080fd5b50356110ef565b61033a6111d2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101026111ee565b6101026004803603602081101561038157600080fd5b50356111f4565b61033a611226565b60015490565b60045473ffffffffffffffffffffffffffffffffffffffff163314610402576040805162461bcd60e51b815260206004820152600960248201527f6e6f74206f776e65720000000000000000000000000000000000000000000000604482015290519081900360640190fd5b8073ffffffffffffffffffffffffffffffffffffffff81161580159061043e575073ffffffffffffffffffffffffffffffffffffffff81163014155b8015610465575060005473ffffffffffffffffffffffffffffffffffffffff828116911614155b6104b6576040805162461bcd60e51b815260206004820152601360248201527f6e6f742076616c696420726563697069656e7400000000000000000000000000604482015290519081900360640190fd5b6004805473ffffffffffffffffffffffffffffffffffffffff84167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517f1095c9869752f7f59b0736661c1ccc9e0314e35c10af8ee5482f57836852f2079181900360200190a15050565b6000818152600660205260408120805482919061054b611242565b101561055e575060009150819050610669565b600061057c8260000154610570611242565b9063ffffffff61124616565b90506000610593826201518063ffffffff61129116565b600284015490915062010000900461ffff168110156105ba57935060009250610669915050565b600283015461ffff1681106105fe5760006105e68460030154856001015461124690919063ffffffff16565b60029094015461ffff16955092935061066992505050565b600283015460009061061d908390640100000000900461ffff16611246565b600285015460018601549192506000916106409161ffff1663ffffffff61129116565b9050600061065861ffff84168363ffffffff6112d316565b929750919550610669945050505050565b915091565b60025490565b60045473ffffffffffffffffffffffffffffffffffffffff1633146106e0576040805162461bcd60e51b815260206004820152600960248201527f6e6f74206f776e65720000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001546002546106f6908563ffffffff61132c16565b1115610749576040805162461bcd60e51b815260206004820152600f60248201527f616464206d6f726520746f6b656e730000000000000000000000000000000000604482015290519081900360640190fd5b601e8161ffff1610156107a3576040805162461bcd60e51b815260206004820152601160248201527f6c657373207468616e2033302064617973000000000000000000000000000000604482015290519081900360640190fd5b61016d8161ffff1611156107fe576040805162461bcd60e51b815260206004820152601060248201527f6d6f7265207468616e2031207965617200000000000000000000000000000000604482015290519081900360640190fd5b610e428261ffff161115610859576040805162461bcd60e51b815260206004820152601260248201527f6d6f7265207468616e2031302079656172730000000000000000000000000000604482015290519081900360640190fd5b8061ffff168261ffff1610156108b6576040805162461bcd60e51b815260206004820152601060248201527f4475726174696f6e203c20436c69666600000000000000000000000000000000604482015290519081900360640190fd5b60006108cc8461ffff851663ffffffff61129116565b90506000811161090d5760405162461bcd60e51b81526004018080602001828103825260228152602001806118186022913960400191505060405180910390fd5b6109156117db565b6040518060e001604052808760001461092e5787610936565b610936611242565b81526020810187905261ffff80871660408301528516606082015260006080820181905260a082015273ffffffffffffffffffffffffffffffffffffffff891660c090910152600254909150610992908663ffffffff61132c16565b6002908155600580546000908152600660209081526040808320865181558683015160018083019190915587830151968201805460608a015160808b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000090921661ffff9a8b16177fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff1662010000918b1691909102177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff1664010000000099909116989098029790971790965560a0870151600382015560c0870151600490910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283161790558c168084526007835281842085548154978801825590855293839020909501929092559154815190815290517f9d2a1eab91557a277ec725fe26546609d5a33a550c3f3476982ee177252be8f4929181900390910190a250506005805460010190555050505050565b60045473ffffffffffffffffffffffffffffffffffffffff163314610b88576040805162461bcd60e51b815260206004820152600960248201527f6e6f74206f776e65720000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60008181526006602052604081206004810154909173ffffffffffffffffffffffffffffffffffffffff9091169080610bc085610530565b6001549193509150600090610bdb908363ffffffff61124616565b1015610c2e576040805162461bcd60e51b815260206004820152601160248201527f6e6f7420656e6f75676820746f6b656e73000000000000000000000000000000604482015290519081900360640190fd5b6000610c4f826105708760030154886001015461124690919063ffffffff16565b6000808755600187018190556002870180547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000001690556003808801919091556004870180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905554909150610ccc908363ffffffff61132c16565b600355600154610ce2908363ffffffff61124616565b600155600254610cf8908263ffffffff61124616565b600255600054610d259073ffffffffffffffffffffffffffffffffffffffff16858463ffffffff61138616565b6040805173ffffffffffffffffffffffffffffffffffffffff861681526020810184905280820183905290517f8f1462bc75233ee60d368eb1925fc2a7f205e6a8ef562c9bdf9c06db8b41aa769181900360600190a1505050505050565b600660205260009081526040902080546001820154600283015460038401546004909401549293919261ffff8083169362010000840482169364010000000090049091169173ffffffffffffffffffffffffffffffffffffffff1687565b6000818152600660205260409020600481015482919073ffffffffffffffffffffffffffffffffffffffff163314610e60576040805162461bcd60e51b815260206004820152601360248201527f6e6f74206772616e7420726563697069656e7400000000000000000000000000604482015290519081900360640190fd5b600080610e6c85610530565b909250905080610ec3576040805162461bcd60e51b815260206004820152601260248201527f76657374656420616d6f756e7420697320300000000000000000000000000000604482015290519081900360640190fd5b600154600090610ed9908363ffffffff61124616565b1015610f2c576040805162461bcd60e51b815260206004820152601160248201527f6e6f7420656e6f75676820746f6b656e73000000000000000000000000000000604482015290519081900360640190fd5b60008581526006602052604090206002810154610f5f90640100000000900461ffff90811690851663ffffffff61132c16565b60028201805461ffff92909216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff9092169190911790556003810154610fb2908363ffffffff61132c16565b60038083019190915554610fcc908363ffffffff61132c16565b600355600154610fe2908363ffffffff61124616565b60015560048101546000546110179173ffffffffffffffffffffffffffffffffffffffff91821691168463ffffffff61138616565b600481015460408051848152905173ffffffffffffffffffffffffffffffffffffffff909216917fc6cbb4aa8681b18644bf64921eea8f2b9f44cbd58d64fc07a110bfccc20382969181900360200190a2505050505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600760209081526040918290208054835181840281018401909452808452606093928301828280156110dd57602002820191906000526020600020905b8154815260200190600101908083116110c9575b50505050509050919050565b60055481565b60045473ffffffffffffffffffffffffffffffffffffffff16331461115b576040805162461bcd60e51b815260206004820152600960248201527f6e6f74206f776e65720000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60015461116e908263ffffffff61132c16565b60015560005461119c9073ffffffffffffffffffffffffffffffffffffffff1633308463ffffffff61141816565b6040805182815290517f7abd2da41655cd6672547886624ebbe41968185456fb8b5b82cf3dd1d8ff8f319181900360200190a150565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b60035490565b60008181526006602052604081206002810154600182015461121f9161ffff1663ffffffff61129116565b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b4290565b600061128883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114b3565b90505b92915050565b600061128883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061154a565b6000826112e25750600061128b565b828202828482816112ef57fe5b04146112885760405162461bcd60e51b815260040180806020018281038252602181526020018061183a6021913960400191505060405180910390fd5b600082820183811015611288576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526114139084906115af565b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526114ad9085906115af565b50505050565b600081848411156115425760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156115075781810151838201526020016114ef565b50505050905090810190601f1680156115345780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836115995760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156115075781810151838201526020016114ef565b5060008385816115a557fe5b0495945050505050565b6115ce8273ffffffffffffffffffffffffffffffffffffffff1661179f565b61161f576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061168857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161164b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146116ea576040519150601f19603f3d011682016040523d82523d6000602084013e6116ef565b606091505b509150915081611746576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156114ad5780806020019051602081101561176257600080fd5b50516114ad5760405162461bcd60e51b815260040180806020018281038252602a81526020018061185b602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906117d357508115155b949350505050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091529056fe7665737465642070657220646179206d757374206265206d6f7265207468616e2030536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8560a6a839d3642a51e74d9fdceee72794febda0d5ce06f7bebd902ca747a6a64736f6c634300050c0032000000000000000000000000c3f18a746b7ca4b22976a7aacd289e83ca2faf41
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80637935510b11610097578063b6d6000911610066578063b6d6000914610332578063d54ad2a114610363578063f09dafb21461036b578063fc0c546a14610388576100f5565b80637935510b1461026d5780638bf1ad4c1461028a57806399d508c01461030d578063b6b55f2514610315576100f5565b80633b919ba8116100d35780633b919ba8146101845780635ca2fc531461018c5780636f1b526d146101dd5780636fc559bb146101fa576100f5565b806318160ddd146100fa5780632902a0ca1461011457806332b1c5b714610149575b600080fd5b610102610390565b60408051918252519081900360200190f35b6101476004803603602081101561012a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610396565b005b6101666004803603602081101561015f57600080fd5b5035610530565b6040805161ffff909316835260208301919091528051918290030190f35b61010261066e565b610147600480360360a08110156101a257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060408101359061ffff60608201358116916080013516610674565b610147600480360360208110156101f357600080fd5b5035610b1c565b6102176004803603602081101561021057600080fd5b5035610d83565b60408051978852602088019690965261ffff9485168787015292841660608701529216608085015260a084019190915273ffffffffffffffffffffffffffffffffffffffff1660c0830152519081900360e00190f35b6101476004803603602081101561028357600080fd5b5035610de1565b6102bd600480360360208110156102a057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611070565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102f95781810151838201526020016102e1565b505050509050019250505060405180910390f35b6101026110e9565b6101476004803603602081101561032b57600080fd5b50356110ef565b61033a6111d2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101026111ee565b6101026004803603602081101561038157600080fd5b50356111f4565b61033a611226565b60015490565b60045473ffffffffffffffffffffffffffffffffffffffff163314610402576040805162461bcd60e51b815260206004820152600960248201527f6e6f74206f776e65720000000000000000000000000000000000000000000000604482015290519081900360640190fd5b8073ffffffffffffffffffffffffffffffffffffffff81161580159061043e575073ffffffffffffffffffffffffffffffffffffffff81163014155b8015610465575060005473ffffffffffffffffffffffffffffffffffffffff828116911614155b6104b6576040805162461bcd60e51b815260206004820152601360248201527f6e6f742076616c696420726563697069656e7400000000000000000000000000604482015290519081900360640190fd5b6004805473ffffffffffffffffffffffffffffffffffffffff84167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517f1095c9869752f7f59b0736661c1ccc9e0314e35c10af8ee5482f57836852f2079181900360200190a15050565b6000818152600660205260408120805482919061054b611242565b101561055e575060009150819050610669565b600061057c8260000154610570611242565b9063ffffffff61124616565b90506000610593826201518063ffffffff61129116565b600284015490915062010000900461ffff168110156105ba57935060009250610669915050565b600283015461ffff1681106105fe5760006105e68460030154856001015461124690919063ffffffff16565b60029094015461ffff16955092935061066992505050565b600283015460009061061d908390640100000000900461ffff16611246565b600285015460018601549192506000916106409161ffff1663ffffffff61129116565b9050600061065861ffff84168363ffffffff6112d316565b929750919550610669945050505050565b915091565b60025490565b60045473ffffffffffffffffffffffffffffffffffffffff1633146106e0576040805162461bcd60e51b815260206004820152600960248201527f6e6f74206f776e65720000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001546002546106f6908563ffffffff61132c16565b1115610749576040805162461bcd60e51b815260206004820152600f60248201527f616464206d6f726520746f6b656e730000000000000000000000000000000000604482015290519081900360640190fd5b601e8161ffff1610156107a3576040805162461bcd60e51b815260206004820152601160248201527f6c657373207468616e2033302064617973000000000000000000000000000000604482015290519081900360640190fd5b61016d8161ffff1611156107fe576040805162461bcd60e51b815260206004820152601060248201527f6d6f7265207468616e2031207965617200000000000000000000000000000000604482015290519081900360640190fd5b610e428261ffff161115610859576040805162461bcd60e51b815260206004820152601260248201527f6d6f7265207468616e2031302079656172730000000000000000000000000000604482015290519081900360640190fd5b8061ffff168261ffff1610156108b6576040805162461bcd60e51b815260206004820152601060248201527f4475726174696f6e203c20436c69666600000000000000000000000000000000604482015290519081900360640190fd5b60006108cc8461ffff851663ffffffff61129116565b90506000811161090d5760405162461bcd60e51b81526004018080602001828103825260228152602001806118186022913960400191505060405180910390fd5b6109156117db565b6040518060e001604052808760001461092e5787610936565b610936611242565b81526020810187905261ffff80871660408301528516606082015260006080820181905260a082015273ffffffffffffffffffffffffffffffffffffffff891660c090910152600254909150610992908663ffffffff61132c16565b6002908155600580546000908152600660209081526040808320865181558683015160018083019190915587830151968201805460608a015160808b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000090921661ffff9a8b16177fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff1662010000918b1691909102177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff1664010000000099909116989098029790971790965560a0870151600382015560c0870151600490910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283161790558c168084526007835281842085548154978801825590855293839020909501929092559154815190815290517f9d2a1eab91557a277ec725fe26546609d5a33a550c3f3476982ee177252be8f4929181900390910190a250506005805460010190555050505050565b60045473ffffffffffffffffffffffffffffffffffffffff163314610b88576040805162461bcd60e51b815260206004820152600960248201527f6e6f74206f776e65720000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60008181526006602052604081206004810154909173ffffffffffffffffffffffffffffffffffffffff9091169080610bc085610530565b6001549193509150600090610bdb908363ffffffff61124616565b1015610c2e576040805162461bcd60e51b815260206004820152601160248201527f6e6f7420656e6f75676820746f6b656e73000000000000000000000000000000604482015290519081900360640190fd5b6000610c4f826105708760030154886001015461124690919063ffffffff16565b6000808755600187018190556002870180547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000001690556003808801919091556004870180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905554909150610ccc908363ffffffff61132c16565b600355600154610ce2908363ffffffff61124616565b600155600254610cf8908263ffffffff61124616565b600255600054610d259073ffffffffffffffffffffffffffffffffffffffff16858463ffffffff61138616565b6040805173ffffffffffffffffffffffffffffffffffffffff861681526020810184905280820183905290517f8f1462bc75233ee60d368eb1925fc2a7f205e6a8ef562c9bdf9c06db8b41aa769181900360600190a1505050505050565b600660205260009081526040902080546001820154600283015460038401546004909401549293919261ffff8083169362010000840482169364010000000090049091169173ffffffffffffffffffffffffffffffffffffffff1687565b6000818152600660205260409020600481015482919073ffffffffffffffffffffffffffffffffffffffff163314610e60576040805162461bcd60e51b815260206004820152601360248201527f6e6f74206772616e7420726563697069656e7400000000000000000000000000604482015290519081900360640190fd5b600080610e6c85610530565b909250905080610ec3576040805162461bcd60e51b815260206004820152601260248201527f76657374656420616d6f756e7420697320300000000000000000000000000000604482015290519081900360640190fd5b600154600090610ed9908363ffffffff61124616565b1015610f2c576040805162461bcd60e51b815260206004820152601160248201527f6e6f7420656e6f75676820746f6b656e73000000000000000000000000000000604482015290519081900360640190fd5b60008581526006602052604090206002810154610f5f90640100000000900461ffff90811690851663ffffffff61132c16565b60028201805461ffff92909216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff9092169190911790556003810154610fb2908363ffffffff61132c16565b60038083019190915554610fcc908363ffffffff61132c16565b600355600154610fe2908363ffffffff61124616565b60015560048101546000546110179173ffffffffffffffffffffffffffffffffffffffff91821691168463ffffffff61138616565b600481015460408051848152905173ffffffffffffffffffffffffffffffffffffffff909216917fc6cbb4aa8681b18644bf64921eea8f2b9f44cbd58d64fc07a110bfccc20382969181900360200190a2505050505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600760209081526040918290208054835181840281018401909452808452606093928301828280156110dd57602002820191906000526020600020905b8154815260200190600101908083116110c9575b50505050509050919050565b60055481565b60045473ffffffffffffffffffffffffffffffffffffffff16331461115b576040805162461bcd60e51b815260206004820152600960248201527f6e6f74206f776e65720000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60015461116e908263ffffffff61132c16565b60015560005461119c9073ffffffffffffffffffffffffffffffffffffffff1633308463ffffffff61141816565b6040805182815290517f7abd2da41655cd6672547886624ebbe41968185456fb8b5b82cf3dd1d8ff8f319181900360200190a150565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b60035490565b60008181526006602052604081206002810154600182015461121f9161ffff1663ffffffff61129116565b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b4290565b600061128883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114b3565b90505b92915050565b600061128883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061154a565b6000826112e25750600061128b565b828202828482816112ef57fe5b04146112885760405162461bcd60e51b815260040180806020018281038252602181526020018061183a6021913960400191505060405180910390fd5b600082820183811015611288576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526114139084906115af565b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526114ad9085906115af565b50505050565b600081848411156115425760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156115075781810151838201526020016114ef565b50505050905090810190601f1680156115345780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836115995760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156115075781810151838201526020016114ef565b5060008385816115a557fe5b0495945050505050565b6115ce8273ffffffffffffffffffffffffffffffffffffffff1661179f565b61161f576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061168857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161164b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146116ea576040519150601f19603f3d011682016040523d82523d6000602084013e6116ef565b606091505b509150915081611746576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156114ad5780806020019051602081101561176257600080fd5b50516114ad5760405162461bcd60e51b815260040180806020018281038252602a81526020018061185b602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906117d357508115155b949350505050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091529056fe7665737465642070657220646179206d757374206265206d6f7265207468616e2030536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8560a6a839d3642a51e74d9fdceee72794febda0d5ce06f7bebd902ca747a6a64736f6c634300050c0032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c3f18a746b7ca4b22976a7aacd289e83ca2faf41
-----Decoded View---------------
Arg [0] : _token (address): 0xC3F18a746B7Ca4B22976A7aaCD289e83cA2faF41
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000c3f18a746b7ca4b22976a7aacd289e83ca2faf41
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.000203 | 248,015,342.5646 | $50,226.73 |
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.