Overview
ETH Balance
0 ETH
Eth Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 9,131 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 21452807 | 2 days ago | IN | 0 ETH | 0.0011094 | ||||
Transfer | 21408077 | 8 days ago | IN | 0 ETH | 0.00055309 | ||||
Transfer | 21407989 | 8 days ago | IN | 0 ETH | 0.00064662 | ||||
Transfer | 21378655 | 12 days ago | IN | 0 ETH | 0.00134611 | ||||
Transfer | 21364299 | 14 days ago | IN | 0 ETH | 0.00138815 | ||||
Transfer | 21357172 | 15 days ago | IN | 0 ETH | 0.00060727 | ||||
Transfer | 21357057 | 15 days ago | IN | 0 ETH | 0.00072457 | ||||
Transfer | 21356935 | 15 days ago | IN | 0 ETH | 0.00080867 | ||||
Transfer | 21354641 | 16 days ago | IN | 0 ETH | 0.000952 | ||||
Transfer | 21352615 | 16 days ago | IN | 0 ETH | 0.00125184 | ||||
Transfer | 21352609 | 16 days ago | IN | 0 ETH | 0.00171425 | ||||
Transfer | 21351394 | 16 days ago | IN | 0 ETH | 0.00149163 | ||||
Transfer | 21339180 | 18 days ago | IN | 0 ETH | 0.00166305 | ||||
Transfer | 21338313 | 18 days ago | IN | 0 ETH | 0.00333923 | ||||
Transfer | 21336546 | 18 days ago | IN | 0 ETH | 0.00250616 | ||||
Transfer | 21336515 | 18 days ago | IN | 0 ETH | 0.00296104 | ||||
Transfer | 21334486 | 18 days ago | IN | 0 ETH | 0.00180408 | ||||
Transfer | 21334396 | 18 days ago | IN | 0 ETH | 0.00205983 | ||||
Transfer | 21327017 | 19 days ago | IN | 0 ETH | 0.00156612 | ||||
Transfer | 21321898 | 20 days ago | IN | 0 ETH | 0.00206228 | ||||
Transfer | 21308390 | 22 days ago | IN | 0 ETH | 0.0016817 | ||||
Transfer | 21307529 | 22 days ago | IN | 0 ETH | 0.00073262 | ||||
Transfer | 21307519 | 22 days ago | IN | 0 ETH | 0.0009247 | ||||
Transfer | 21307027 | 22 days ago | IN | 0 ETH | 0.00092163 | ||||
Transfer | 21306484 | 22 days ago | IN | 0 ETH | 0.00096601 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
TokenLockup
Compiler Version
v0.8.3+commit.8d00100c
Optimization Enabled:
Yes with 1000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.3; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "./ScheduleCalc.sol"; // interface with ERC20 and the burn function interface from the associated Token contract interface IERC20Burnable is IERC20 { function burn(uint256 amount) external; function decimals() external view returns (uint8); } contract TokenLockup { IERC20Burnable public token; string private _name; string private _symbol; ReleaseSchedule[] public releaseSchedules; uint public minReleaseScheduleAmount; uint public maxReleaseDelay; mapping(address => Timelock[]) public timelocks; mapping(address => uint) internal _totalTokensUnlocked; mapping(address => mapping(address => uint)) internal _allowances; event Approval(address indexed from, address indexed spender, uint amount); event TimelockBurned(address indexed from, uint timelockId); event ScheduleCreated(address indexed from, uint scheduleId); event ScheduleFunded(address indexed from, address indexed to, uint indexed scheduleId, uint amount, uint commencementTimestamp, uint timelockId); /* The constructor that specifies the token, name and symbol The name should specify that it is an unlock contract The symbol should end with " Unlock" & be less than 11 characters for MetaMask "custom token" compatibility */ constructor ( address _token, string memory name_, string memory symbol_, uint _minReleaseScheduleAmount, uint _maxReleaseDelay ) { _name = name_; _symbol = symbol_; token = IERC20Burnable(_token); require(_minReleaseScheduleAmount > 0, "Min schedule amount > 0"); minReleaseScheduleAmount = _minReleaseScheduleAmount; maxReleaseDelay = _maxReleaseDelay; } function createReleaseSchedule( uint releaseCount, // total number of releases including any initial "cliff' uint delayUntilFirstReleaseInSeconds, // "cliff" or 0 for immediate relase uint initialReleasePortionInBips, // in 100ths of 1% uint periodBetweenReleasesInSeconds ) external returns ( uint unlockScheduleId ) { require(delayUntilFirstReleaseInSeconds <= maxReleaseDelay, "first release > max"); require(releaseCount >= 1, "< 1 release"); require(initialReleasePortionInBips <= ScheduleCalc.BIPS_PRECISION, "release > 100%"); if (releaseCount > 1) { require(periodBetweenReleasesInSeconds > 0, "period = 0"); } if (releaseCount == 1) { require(initialReleasePortionInBips == ScheduleCalc.BIPS_PRECISION, "released < 100%"); } releaseSchedules.push(ReleaseSchedule( releaseCount, delayUntilFirstReleaseInSeconds, initialReleasePortionInBips, periodBetweenReleasesInSeconds )); emit ScheduleCreated(msg.sender, unlockScheduleId); // returning the index of the newly added schedule return releaseSchedules.length - 1; } function fundReleaseSchedule( address to, uint amount, uint commencementTimestamp, // unix timestamp uint scheduleId ) public returns(bool) { require(amount >= minReleaseScheduleAmount, "amount < min funding"); require(to != address(0), "to 0 address"); require(scheduleId < releaseSchedules.length, "bad scheduleId"); require(amount >= releaseSchedules[scheduleId].releaseCount, "< 1 token per release"); // It will revert via ERC20 implementation if there's no allowance require(token.transferFrom(msg.sender, address(this), amount)); require( commencementTimestamp <= block.timestamp + maxReleaseDelay , "commencement time out of range"); require( commencementTimestamp + releaseSchedules[scheduleId].delayUntilFirstReleaseInSeconds <= block.timestamp + maxReleaseDelay , "initial release out of range"); Timelock memory timelock; timelock.scheduleId = scheduleId; timelock.commencementTimestamp = commencementTimestamp; timelock.totalAmount = amount; timelocks[to].push(timelock); emit ScheduleFunded(msg.sender, to, scheduleId, amount, commencementTimestamp, timelocks[to].length - 1); return true; } function batchFundReleaseSchedule( address[] memory recipients, uint[] memory amounts, uint[] memory commencementTimestamps, // unix timestamp uint[] memory scheduleIds ) external returns (bool) { require(amounts.length == recipients.length, "mismatched array length"); for (uint i; i < recipients.length; i++) { require(fundReleaseSchedule(recipients[i], amounts[i], commencementTimestamps[i], scheduleIds[i])); } return true; } function lockedBalanceOf(address who) public view returns (uint amount) { for (uint i = 0; i < timelocks[who].length; i++) { amount += lockedBalanceOfTimelock(who, i); } return amount; } function unlockedBalanceOf(address who) public view returns (uint amount) { for (uint i = 0; i < timelocks[who].length; i++) { amount += unlockedBalanceOfTimelock(who, i); } return amount; } function lockedBalanceOfTimelock(address who, uint timelockIndex) public view returns (uint locked) { return timelocks[who][timelockIndex].totalAmount - totalUnlockedToDateOfTimelock(who, timelockIndex); } function unlockedBalanceOfTimelock(address who, uint timelockIndex) public view returns (uint unlocked) { return totalUnlockedToDateOfTimelock(who, timelockIndex) - timelocks[who][timelockIndex].tokensTransferred; } function totalUnlockedToDateOfTimelock(address who, uint timelockIndex) public view returns (uint unlocked) { return calculateUnlocked( timelocks[who][timelockIndex].commencementTimestamp, block.timestamp, timelocks[who][timelockIndex].totalAmount, timelocks[who][timelockIndex].scheduleId ); } function viewTimelock(address who, uint256 index) public view returns (Timelock memory timelock) { return timelocks[who][index]; } function balanceOf(address who) external view returns (uint) { return unlockedBalanceOf(who) + lockedBalanceOf(who); } function transfer(address to, uint value) external returns (bool) { return _transfer(msg.sender, to, value); } function transferFrom(address from, address to, uint value) external returns (bool) { require(_allowances[from][msg.sender] >= value, "value > allowance"); _allowances[from][msg.sender] -= value; return _transfer(from, to, value); } // Code from OpenZeppelin's contract/token/ERC20/ERC20.sol, modified function approve(address spender, uint amount) external returns (bool) { _approve(msg.sender, spender, amount); return true; } // Code from OpenZeppelin's contract/token/ERC20/ERC20.sol, modified function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } // Code from OpenZeppelin's contract/token/ERC20/ERC20.sol, modified function increaseAllowance(address spender, uint addedValue) external returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue); return true; } // Code from OpenZeppelin's contract/token/ERC20/ERC20.sol, modified function decreaseAllowance(address spender, uint subtractedValue) external returns (bool) { uint currentAllowance = _allowances[msg.sender][spender]; require(currentAllowance >= subtractedValue, "decrease > allowance"); _approve(msg.sender, spender, _allowances[msg.sender][spender] - subtractedValue); return true; } function decimals() public view returns (uint8) { return token.decimals(); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function totalSupply() external view returns (uint) { return token.balanceOf(address(this)); } function burn(uint timelockIndex, uint confirmationIdPlusOne) external returns(bool) { require(timelockIndex < timelocks[msg.sender].length, "No schedule"); // this also protects from overflow below require(confirmationIdPlusOne == timelockIndex + 1, "Burn not confirmed"); // actually burning the remaining tokens from the unlock token.burn(lockedBalanceOfTimelock(msg.sender, timelockIndex) + unlockedBalanceOfTimelock(msg.sender, timelockIndex)); // overwrite the timelock to delete with the timelock on the end which will be discarded // if the timelock to delete is on the end, it will just be deleted in the step after the if statement if (timelocks[msg.sender].length - 1 != timelockIndex) { timelocks[msg.sender][timelockIndex] = timelocks[msg.sender][timelocks[msg.sender].length - 1]; } // delete the timelock on the end timelocks[msg.sender].pop(); emit TimelockBurned(msg.sender, timelockIndex); return true; } function _transfer(address from, address to, uint value) internal returns (bool) { require(unlockedBalanceOf(from) >= value, "amount > unlocked"); uint remainingTransfer = value; // transfer from unlocked tokens for (uint i = 0; i < timelocks[from].length; i++) { // if the timelock has no value left if (timelocks[from][i].tokensTransferred == timelocks[from][i].totalAmount) { continue; } else if (remainingTransfer > unlockedBalanceOfTimelock(from, i)) { // if the remainingTransfer is more than the unlocked balance use it all remainingTransfer -= unlockedBalanceOfTimelock(from, i); timelocks[from][i].tokensTransferred += unlockedBalanceOfTimelock(from, i); } else { // if the remainingTransfer is less than or equal to the unlocked balance // use part or all and exit the loop timelocks[from][i].tokensTransferred += remainingTransfer; remainingTransfer = 0; break; } } // should never have a remainingTransfer amount at this point require(remainingTransfer == 0, "bad transfer"); require(token.transfer(to, value)); return true; } function transferTimelock(address to, uint value, uint timelockId) external returns (bool) { require(unlockedBalanceOfTimelock(msg.sender, timelockId) >= value, "amount > unlocked"); timelocks[msg.sender][timelockId].tokensTransferred += value; require(token.transfer(to, value)); return true; } function calculateUnlocked(uint commencedTimestamp, uint currentTimestamp, uint amount, uint scheduleId) public view returns (uint unlocked) { return ScheduleCalc.calculateUnlocked(commencedTimestamp, currentTimestamp, amount, releaseSchedules[scheduleId]); } // Code from OpenZeppelin's contract/token/ERC20/ERC20.sol, modified function _approve(address owner, address spender, uint amount) internal { require(owner != address(0)); require(spender != address(0), "spender is 0 address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function scheduleCount() external view returns (uint count) { return releaseSchedules.length; } function timelockOf(address who, uint index) external view returns (Timelock memory timelock) { return timelocks[who][index]; } function timelockCountOf(address who) external view returns (uint) { return timelocks[who].length; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ 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); }
// SPDX-License-Identifier: MIT pragma solidity 0.8.3; struct ReleaseSchedule { uint releaseCount; uint delayUntilFirstReleaseInSeconds; uint initialReleasePortionInBips; uint periodBetweenReleasesInSeconds; } struct Timelock { uint scheduleId; uint commencementTimestamp; uint tokensTransferred; uint totalAmount; } library ScheduleCalc { uint constant BIPS_PRECISION = 10000; function calculateUnlocked(uint commencedTimestamp, uint currentTimestamp, uint amount, ReleaseSchedule memory releaseSchedule) external pure returns (uint unlocked) { if(commencedTimestamp > currentTimestamp) { return 0; } uint secondsElapsed = currentTimestamp - commencedTimestamp; // return the full amount if the total lockup period has expired // unlocked amounts in each period are truncated and round down remainders smaller than the smallest unit // unlocking the full amount unlocks any remainder amounts in the final unlock period // this is done first to reduce computation if (secondsElapsed >= releaseSchedule.delayUntilFirstReleaseInSeconds + (releaseSchedule.periodBetweenReleasesInSeconds * (releaseSchedule.releaseCount - 1))) { return amount; } // unlock the initial release if the delay has elapsed if (secondsElapsed >= releaseSchedule.delayUntilFirstReleaseInSeconds) { unlocked = (amount * releaseSchedule.initialReleasePortionInBips) / BIPS_PRECISION; // if at least one period after the delay has passed if (secondsElapsed - releaseSchedule.delayUntilFirstReleaseInSeconds >= releaseSchedule.periodBetweenReleasesInSeconds) { // calculate the number of additional periods that have passed (not including the initial release) // this discards any remainders (ie it truncates / rounds down) uint additionalUnlockedPeriods = (secondsElapsed - releaseSchedule.delayUntilFirstReleaseInSeconds) / releaseSchedule.periodBetweenReleasesInSeconds; // calculate the amount of unlocked tokens for the additionalUnlockedPeriods // multiplication is applied before division to delay truncating to the smallest unit // this distributes unlocked tokens more evenly across unlock periods // than truncated division followed by multiplication unlocked += ((amount - unlocked) * additionalUnlockedPeriods) / (releaseSchedule.releaseCount - 1); } } return unlocked; } }
{ "optimizer": { "enabled": true, "runs": 1000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": { "contracts/ScheduleCalc.sol": { "ScheduleCalc": "0x80a61e417c51c49fb02c8f77cd62cdcd4fb8332d" } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"_minReleaseScheduleAmount","type":"uint256"},{"internalType":"uint256","name":"_maxReleaseDelay","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"scheduleId","type":"uint256"}],"name":"ScheduleCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"scheduleId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"commencementTimestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timelockId","type":"uint256"}],"name":"ScheduleFunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"timelockId","type":"uint256"}],"name":"TimelockBurned","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"commencementTimestamps","type":"uint256[]"},{"internalType":"uint256[]","name":"scheduleIds","type":"uint256[]"}],"name":"batchFundReleaseSchedule","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"timelockIndex","type":"uint256"},{"internalType":"uint256","name":"confirmationIdPlusOne","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"commencedTimestamp","type":"uint256"},{"internalType":"uint256","name":"currentTimestamp","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"scheduleId","type":"uint256"}],"name":"calculateUnlocked","outputs":[{"internalType":"uint256","name":"unlocked","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"releaseCount","type":"uint256"},{"internalType":"uint256","name":"delayUntilFirstReleaseInSeconds","type":"uint256"},{"internalType":"uint256","name":"initialReleasePortionInBips","type":"uint256"},{"internalType":"uint256","name":"periodBetweenReleasesInSeconds","type":"uint256"}],"name":"createReleaseSchedule","outputs":[{"internalType":"uint256","name":"unlockScheduleId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"commencementTimestamp","type":"uint256"},{"internalType":"uint256","name":"scheduleId","type":"uint256"}],"name":"fundReleaseSchedule","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"lockedBalanceOf","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"uint256","name":"timelockIndex","type":"uint256"}],"name":"lockedBalanceOfTimelock","outputs":[{"internalType":"uint256","name":"locked","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxReleaseDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minReleaseScheduleAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"releaseSchedules","outputs":[{"internalType":"uint256","name":"releaseCount","type":"uint256"},{"internalType":"uint256","name":"delayUntilFirstReleaseInSeconds","type":"uint256"},{"internalType":"uint256","name":"initialReleasePortionInBips","type":"uint256"},{"internalType":"uint256","name":"periodBetweenReleasesInSeconds","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"scheduleCount","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"timelockCountOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"timelockOf","outputs":[{"components":[{"internalType":"uint256","name":"scheduleId","type":"uint256"},{"internalType":"uint256","name":"commencementTimestamp","type":"uint256"},{"internalType":"uint256","name":"tokensTransferred","type":"uint256"},{"internalType":"uint256","name":"totalAmount","type":"uint256"}],"internalType":"struct Timelock","name":"timelock","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"timelocks","outputs":[{"internalType":"uint256","name":"scheduleId","type":"uint256"},{"internalType":"uint256","name":"commencementTimestamp","type":"uint256"},{"internalType":"uint256","name":"tokensTransferred","type":"uint256"},{"internalType":"uint256","name":"totalAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20Burnable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"uint256","name":"timelockIndex","type":"uint256"}],"name":"totalUnlockedToDateOfTimelock","outputs":[{"internalType":"uint256","name":"unlocked","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"timelockId","type":"uint256"}],"name":"transferTimelock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"unlockedBalanceOf","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"uint256","name":"timelockIndex","type":"uint256"}],"name":"unlockedBalanceOfTimelock","outputs":[{"internalType":"uint256","name":"unlocked","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"viewTimelock","outputs":[{"components":[{"internalType":"uint256","name":"scheduleId","type":"uint256"},{"internalType":"uint256","name":"commencementTimestamp","type":"uint256"},{"internalType":"uint256","name":"tokensTransferred","type":"uint256"},{"internalType":"uint256","name":"totalAmount","type":"uint256"}],"internalType":"struct Timelock","name":"timelock","type":"tuple"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200251538038062002515833981016040819052620000349162000239565b835162000049906001906020870190620000e0565b5082516200005f906002906020860190620000e0565b50600080546001600160a01b0319166001600160a01b03871617905581620000cd5760405162461bcd60e51b815260206004820152601760248201527f4d696e207363686564756c6520616d6f756e74203e2030000000000000000000604482015260640160405180910390fd5b6004919091556005555062000325915050565b828054620000ee90620002d2565b90600052602060002090601f0160209004810192826200011257600085556200015d565b82601f106200012d57805160ff19168380011785556200015d565b828001600101855582156200015d579182015b828111156200015d57825182559160200191906001019062000140565b506200016b9291506200016f565b5090565b5b808211156200016b576000815560010162000170565b600082601f83011262000197578081fd5b81516001600160401b0380821115620001b457620001b46200030f565b604051601f8301601f19908116603f01168101908282118183101715620001df57620001df6200030f565b81604052838152602092508683858801011115620001fb578485fd5b8491505b838210156200021e5785820183015181830184015290820190620001ff565b838211156200022f57848385830101525b9695505050505050565b600080600080600060a0868803121562000251578081fd5b85516001600160a01b038116811462000268578182fd5b60208701519095506001600160401b038082111562000285578283fd5b6200029389838a0162000186565b95506040880151915080821115620002a9578283fd5b50620002b88882890162000186565b606088015160809098015196999598509695949350505050565b600181811c90821680620002e757607f821691505b602082108114156200030957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6121e080620003356000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806384955c881161010f578063b7ef81e1116100a2578063ea612ae811610071578063ea612ae814610475578063f0be71261461032f578063f7308d2c14610488578063fc0c546a1461049b576101e5565b8063b7ef81e114610418578063bf5a1e9e14610420578063dd62ed3e14610433578063e06b2b871461046c576101e5565b8063a9059cbb116100de578063a9059cbb146103b6578063a9b1f051146103c9578063b30bfa3d146103dc578063b390c0ab14610405576101e5565b806384955c881461037557806395d89b411461038857806396305c8914610390578063a457c2d7146103a3576101e5565b806323b872dd11610187578063593557361161015657806359355736146102d65780636aea0d2e146102e957806370a082311461031c57806382074ac21461032f576101e5565b806323b872dd14610283578063313ce5671461029657806336ffaee6146102b057806339509351146102c3576101e5565b806314cf86eb116101c357806314cf86eb1461024c57806318160ddd1461025557806321bb56d71461025d57806321fac8f114610270576101e5565b806306fdde03146101ea578063095ea7b3146102085780630c8151031461022b575b600080fd5b6101f26104c6565b6040516101ff9190612057565b60405180910390f35b61021b610216366004611df9565b610558565b60405190151581526020016101ff565b61023e610239366004611df9565b61056e565b6040519081526020016101ff565b61023e60055481565b61023e610676565b61023e61026b366004612005565b610710565b61023e61027e366004611df9565b6109e1565b61021b610291366004611dbe565b610a3f565b61029e610afe565b60405160ff90911681526020016101ff565b61021b6102be366004611e8c565b610b85565b61021b6102d1366004611df9565b610cb3565b61023e6102e4366004611d72565b610cef565b6102fc6102f7366004611fb4565b610d42565b6040805194855260208501939093529183015260608201526080016101ff565b61023e61032a366004611d72565b610d7c565b61034261033d366004611df9565b610da0565b6040516101ff91908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b61023e610383366004611d72565b610e4c565b6101f2610e98565b61023e61039e366004612005565b610ea7565b61021b6103b1366004611df9565b610f99565b61021b6103c4366004611df9565b61104d565b61021b6103d7366004611e22565b61105a565b61023e6103ea366004611d72565b6001600160a01b031660009081526006602052604090205490565b61021b610413366004611fe4565b61119b565b60035461023e565b61021b61042e366004611e54565b611451565b61023e610441366004611d8c565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b61023e60045481565b6102fc610483366004611df9565b61185a565b61023e610496366004611df9565b6118a0565b6000546104ae906001600160a01b031681565b6040516001600160a01b0390911681526020016101ff565b6060600180546104d59061212e565b80601f01602080910402602001604051908101604052809291908181526020018280546105019061212e565b801561054e5780601f106105235761010080835404028352916020019161054e565b820191906000526020600020905b81548152906001019060200180831161053157829003601f168201915b5050505050905090565b6000610565338484611900565b50600192915050565b6001600160a01b0382166000908152600660205260408120805461066f9190849081106105ab57634e487b7160e01b600052603260045260246000fd5b9060005260206000209060040201600101544260066000876001600160a01b03166001600160a01b03168152602001908152602001600020858154811061060257634e487b7160e01b600052603260045260246000fd5b90600052602060002090600402016003015460066000886001600160a01b03166001600160a01b03168152602001908152602001600020868154811061065857634e487b7160e01b600052603260045260246000fd5b906000526020600020906004020160000154610ea7565b9392505050565b600080546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b1580156106d357600080fd5b505afa1580156106e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070b9190611fcc565b905090565b60006005548411156107695760405162461bcd60e51b815260206004820152601360248201527f66697273742072656c65617365203e206d61780000000000000000000000000060448201526064015b60405180910390fd5b60018510156107ba5760405162461bcd60e51b815260206004820152600b60248201527f3c20312072656c656173650000000000000000000000000000000000000000006044820152606401610760565b61271083111561080c5760405162461bcd60e51b815260206004820152600e60248201527f72656c65617365203e20313030250000000000000000000000000000000000006044820152606401610760565b600185111561086557600082116108655760405162461bcd60e51b815260206004820152600a60248201527f706572696f64203d2030000000000000000000000000000000000000000000006044820152606401610760565b84600114156108bf5761271083146108bf5760405162461bcd60e51b815260206004820152600f60248201527f72656c6561736564203c203130302500000000000000000000000000000000006044820152606401610760565b60408051608081018252868152602081018681528183018681526060830186815260038054600181018255600091909152935160049094027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b81019490945591517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c840155517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85d830155517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85e909101555133907f9c52cb9bbb9b7fa6ddb26d1e82afc4e62c9ec50c0f3488c10bb8ad22d4edc4c3906109c19084815260200190565b60405180910390a26003546109d890600190612117565b95945050505050565b6001600160a01b0382166000908152600660205260408120805483908110610a1957634e487b7160e01b600052603260045260246000fd5b906000526020600020906004020160020154610a35848461056e565b61066f9190612117565b6001600160a01b0383166000908152600860209081526040808320338452909152812054821115610ab25760405162461bcd60e51b815260206004820152601160248201527f76616c7565203e20616c6c6f77616e63650000000000000000000000000000006044820152606401610760565b6001600160a01b038416600090815260086020908152604080832033845290915281208054849290610ae5908490612117565b90915550610af690508484846119ca565b949350505050565b60008060009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610b4d57600080fd5b505afa158015610b61573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070b9190612036565b60008451845114610bd85760405162461bcd60e51b815260206004820152601760248201527f6d69736d617463686564206172726179206c656e6774680000000000000000006044820152606401610760565b60005b8551811015610ca757610c8c868281518110610c0757634e487b7160e01b600052603260045260246000fd5b6020026020010151868381518110610c2f57634e487b7160e01b600052603260045260246000fd5b6020026020010151868481518110610c5757634e487b7160e01b600052603260045260246000fd5b6020026020010151868581518110610c7f57634e487b7160e01b600052603260045260246000fd5b6020026020010151611451565b610c9557600080fd5b80610c9f81612163565b915050610bdb565b50600195945050505050565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091610565918590610cea9086906120ff565b611900565b6000805b6001600160a01b038316600090815260066020526040902054811015610d3b57610d1d83826118a0565b610d2790836120ff565b915080610d3381612163565b915050610cf3565b505b919050565b60038181548110610d5257600080fd5b60009182526020909120600490910201805460018201546002830154600390930154919350919084565b6000610d8782610cef565b610d9083610e4c565b610d9a91906120ff565b92915050565b610dcb6040518060800160405280600081526020016000815260200160008152602001600081525090565b6001600160a01b0383166000908152600660205260409020805483908110610e0357634e487b7160e01b600052603260045260246000fd5b9060005260206000209060040201604051806080016040529081600082015481526020016001820154815260200160028201548152602001600382015481525050905092915050565b6000805b6001600160a01b038316600090815260066020526040902054811015610d3b57610e7a83826109e1565b610e8490836120ff565b915080610e9081612163565b915050610e50565b6060600280546104d59061212e565b60007380a61e417c51c49fb02c8f77cd62cdcd4fb8332d63c9b8f6f986868660038781548110610ee757634e487b7160e01b600052603260045260246000fd5b90600052602060002090600402016040518563ffffffff1660e01b8152600401610f499493929190938452602084019290925260408301528054606083015260018101546080830152600281015460a08301526003015460c082015260e00190565b60206040518083038186803b158015610f6157600080fd5b505af4158015610f75573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d89190611fcc565b3360009081526008602090815260408083206001600160a01b03861684529091528120548281101561100d5760405162461bcd60e51b815260206004820152601460248201527f6465637265617365203e20616c6c6f77616e63650000000000000000000000006044820152606401610760565b3360008181526008602090815260408083206001600160a01b038916845290915290205461104391908690610cea908790612117565b5060019392505050565b600061066f3384846119ca565b60008261106733846109e1565b10156110b55760405162461bcd60e51b815260206004820152601160248201527f616d6f756e74203e20756e6c6f636b65640000000000000000000000000000006044820152606401610760565b3360009081526006602052604090208054849190849081106110e757634e487b7160e01b600052603260045260246000fd5b9060005260206000209060040201600201600082825461110791906120ff565b909155505060005460405163a9059cbb60e01b81526001600160a01b038681166004830152602482018690529091169063a9059cbb90604401602060405180830381600087803b15801561115a57600080fd5b505af115801561116e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111929190611f94565b61104357600080fd5b3360009081526006602052604081205483106111f95760405162461bcd60e51b815260206004820152600b60248201527f4e6f207363686564756c650000000000000000000000000000000000000000006044820152606401610760565b6112048360016120ff565b82146112525760405162461bcd60e51b815260206004820152601260248201527f4275726e206e6f7420636f6e6669726d656400000000000000000000000000006044820152606401610760565b6000546001600160a01b03166342966c6861126d33866109e1565b61127733876118a0565b61128191906120ff565b6040518263ffffffff1660e01b815260040161129f91815260200190565b600060405180830381600087803b1580156112b957600080fd5b505af11580156112cd573d6000803e3d6000fd5b5050336000908152600660205260409020548592506112ef9150600190612117565b146113b457336000908152600660205260409020805461131190600190612117565b8154811061132f57634e487b7160e01b600052603260045260246000fd5b906000526020600020906004020160066000336001600160a01b03166001600160a01b03168152602001908152602001600020848154811061138157634e487b7160e01b600052603260045260246000fd5b60009182526020909120825460049092020190815560018083015490820155600280830154908201556003918201549101555b3360009081526006602052604090208054806113e057634e487b7160e01b600052603160045260246000fd5b600082815260208120600460001990930192830201818155600181018290556002810182905560030155905560405133907f5fb1e58c7b4fd20adc78ed98f6f661b729dc1b671bc0debda7cde94d9a453ad2906114409086815260200190565b60405180910390a250600192915050565b60006004548410156114a55760405162461bcd60e51b815260206004820152601460248201527f616d6f756e74203c206d696e2066756e64696e670000000000000000000000006044820152606401610760565b6001600160a01b0385166114fb5760405162461bcd60e51b815260206004820152600c60248201527f746f2030206164647265737300000000000000000000000000000000000000006044820152606401610760565b600354821061154c5760405162461bcd60e51b815260206004820152600e60248201527f626164207363686564756c6549640000000000000000000000000000000000006044820152606401610760565b6003828154811061156d57634e487b7160e01b600052603260045260246000fd5b9060005260206000209060040201600001548410156115ce5760405162461bcd60e51b815260206004820152601560248201527f3c203120746f6b656e207065722072656c6561736500000000000000000000006044820152606401610760565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b03909116906323b872dd90606401602060405180830381600087803b15801561163957600080fd5b505af115801561164d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116719190611f94565b61167a57600080fd5b60055461168790426120ff565b8311156116d65760405162461bcd60e51b815260206004820152601e60248201527f636f6d6d656e63656d656e742074696d65206f7574206f662072616e676500006044820152606401610760565b6005546116e390426120ff565b6003838154811061170457634e487b7160e01b600052603260045260246000fd5b9060005260206000209060040201600101548461172191906120ff565b111561176f5760405162461bcd60e51b815260206004820152601c60248201527f696e697469616c2072656c65617365206f7574206f662072616e6765000000006044820152606401610760565b61179a6040518060800160405280600081526020016000815260200160008152602001600081525090565b8281526020808201858152606083018781526001600160a01b0389166000818152600685526040808220805460018181018355828552978420895160049092020190815595518688015590870151600286015592516003909401939093559182905254859233917fe9158f275e82f1fedd60c9bdf20c162df4758d3cea617d7cf1335a1fa782bbf8918a918a9161183091612117565b6040805193845260208401929092529082015260600160405180910390a450600195945050505050565b6006602052816000526040600020818154811061187657600080fd5b60009182526020909120600490910201805460018201546002830154600390930154919450925084565b60006118ac838361056e565b6001600160a01b03841660009081526006602052604090208054849081106118e457634e487b7160e01b600052603260045260246000fd5b90600052602060002090600402016003015461066f9190612117565b6001600160a01b03831661191357600080fd5b6001600160a01b0382166119695760405162461bcd60e51b815260206004820152601460248201527f7370656e646572206973203020616464726573730000000000000000000000006044820152606401610760565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000816119d685610e4c565b1015611a245760405162461bcd60e51b815260206004820152601160248201527f616d6f756e74203e20756e6c6f636b65640000000000000000000000000000006044820152606401610760565b8160005b6001600160a01b038616600090815260066020526040902054811015611c03576001600160a01b0386166000908152600660205260409020805482908110611a8057634e487b7160e01b600052603260045260246000fd5b90600052602060002090600402016003015460066000886001600160a01b03166001600160a01b031681526020019081526020016000208281548110611ad657634e487b7160e01b600052603260045260246000fd5b9060005260206000209060040201600201541415611af357611bf1565b611afd86826109e1565b821115611b8757611b0e86826109e1565b611b189083612117565b9150611b2486826109e1565b6001600160a01b0387166000908152600660205260409020805483908110611b5c57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600402016002016000828254611b7c91906120ff565b90915550611bf19050565b6001600160a01b0386166000908152600660205260409020805483919083908110611bc257634e487b7160e01b600052603260045260246000fd5b90600052602060002090600402016002016000828254611be291906120ff565b9091555060009250611c039050565b80611bfb81612163565b915050611a28565b508015611c525760405162461bcd60e51b815260206004820152600c60248201527f626164207472616e7366657200000000000000000000000000000000000000006044820152606401610760565b60005460405163a9059cbb60e01b81526001600160a01b038681166004830152602482018690529091169063a9059cbb90604401602060405180830381600087803b158015611ca057600080fd5b505af1158015611cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd89190611f94565b611ce157600080fd5b506001949350505050565b80356001600160a01b0381168114610d3d57600080fd5b600082601f830112611d13578081fd5b81356020611d28611d23836120db565b6120aa565b80838252828201915082860187848660051b8901011115611d47578586fd5b855b85811015611d6557813584529284019290840190600101611d49565b5090979650505050505050565b600060208284031215611d83578081fd5b61066f82611cec565b60008060408385031215611d9e578081fd5b611da783611cec565b9150611db560208401611cec565b90509250929050565b600080600060608486031215611dd2578081fd5b611ddb84611cec565b9250611de960208501611cec565b9150604084013590509250925092565b60008060408385031215611e0b578182fd5b611e1483611cec565b946020939093013593505050565b600080600060608486031215611e36578283fd5b611e3f84611cec565b95602085013595506040909401359392505050565b60008060008060808587031215611e69578081fd5b611e7285611cec565b966020860135965060408601359560600135945092505050565b60008060008060808587031215611ea1578384fd5b843567ffffffffffffffff80821115611eb8578586fd5b818701915087601f830112611ecb578586fd5b81356020611edb611d23836120db565b8083825282820191508286018c848660051b8901011115611efa578a8bfd5b8a96505b84871015611f2357611f0f81611cec565b835260019690960195918301918301611efe565b5098505088013592505080821115611f39578485fd5b611f4588838901611d03565b94506040870135915080821115611f5a578384fd5b611f6688838901611d03565b93506060870135915080821115611f7b578283fd5b50611f8887828801611d03565b91505092959194509250565b600060208284031215611fa5578081fd5b8151801515811461066f578182fd5b600060208284031215611fc5578081fd5b5035919050565b600060208284031215611fdd578081fd5b5051919050565b60008060408385031215611ff6578182fd5b50508035926020909101359150565b6000806000806080858703121561201a578081fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215612047578081fd5b815160ff8116811461066f578182fd5b6000602080835283518082850152825b8181101561208357858101830151858201604001528201612067565b818111156120945783604083870101525b50601f01601f1916929092016040019392505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156120d3576120d3612194565b604052919050565b600067ffffffffffffffff8211156120f5576120f5612194565b5060051b60200190565b600082198211156121125761211261217e565b500190565b6000828210156121295761212961217e565b500390565b600181811c9082168061214257607f821691505b60208210811415610d3b57634e487b7160e01b600052602260045260246000fd5b60006000198214156121775761217761217e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea264697066735822122039aa59c8fc42d78b5502510ef1e9387b463adb9a594cf14ec67de671e4833e9364736f6c634300080300330000000000000000000000002da719db753dfa10a62e140f436e1d67f2ddb0d600000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000e8d4a51000000000000000000000000000000000000000000000000000000000000b473500000000000000000000000000000000000000000000000000000000000000001343455245204e6574776f726b204c6f636b757000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b43455245204c6f636b7570000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101e55760003560e01c806384955c881161010f578063b7ef81e1116100a2578063ea612ae811610071578063ea612ae814610475578063f0be71261461032f578063f7308d2c14610488578063fc0c546a1461049b576101e5565b8063b7ef81e114610418578063bf5a1e9e14610420578063dd62ed3e14610433578063e06b2b871461046c576101e5565b8063a9059cbb116100de578063a9059cbb146103b6578063a9b1f051146103c9578063b30bfa3d146103dc578063b390c0ab14610405576101e5565b806384955c881461037557806395d89b411461038857806396305c8914610390578063a457c2d7146103a3576101e5565b806323b872dd11610187578063593557361161015657806359355736146102d65780636aea0d2e146102e957806370a082311461031c57806382074ac21461032f576101e5565b806323b872dd14610283578063313ce5671461029657806336ffaee6146102b057806339509351146102c3576101e5565b806314cf86eb116101c357806314cf86eb1461024c57806318160ddd1461025557806321bb56d71461025d57806321fac8f114610270576101e5565b806306fdde03146101ea578063095ea7b3146102085780630c8151031461022b575b600080fd5b6101f26104c6565b6040516101ff9190612057565b60405180910390f35b61021b610216366004611df9565b610558565b60405190151581526020016101ff565b61023e610239366004611df9565b61056e565b6040519081526020016101ff565b61023e60055481565b61023e610676565b61023e61026b366004612005565b610710565b61023e61027e366004611df9565b6109e1565b61021b610291366004611dbe565b610a3f565b61029e610afe565b60405160ff90911681526020016101ff565b61021b6102be366004611e8c565b610b85565b61021b6102d1366004611df9565b610cb3565b61023e6102e4366004611d72565b610cef565b6102fc6102f7366004611fb4565b610d42565b6040805194855260208501939093529183015260608201526080016101ff565b61023e61032a366004611d72565b610d7c565b61034261033d366004611df9565b610da0565b6040516101ff91908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b61023e610383366004611d72565b610e4c565b6101f2610e98565b61023e61039e366004612005565b610ea7565b61021b6103b1366004611df9565b610f99565b61021b6103c4366004611df9565b61104d565b61021b6103d7366004611e22565b61105a565b61023e6103ea366004611d72565b6001600160a01b031660009081526006602052604090205490565b61021b610413366004611fe4565b61119b565b60035461023e565b61021b61042e366004611e54565b611451565b61023e610441366004611d8c565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b61023e60045481565b6102fc610483366004611df9565b61185a565b61023e610496366004611df9565b6118a0565b6000546104ae906001600160a01b031681565b6040516001600160a01b0390911681526020016101ff565b6060600180546104d59061212e565b80601f01602080910402602001604051908101604052809291908181526020018280546105019061212e565b801561054e5780601f106105235761010080835404028352916020019161054e565b820191906000526020600020905b81548152906001019060200180831161053157829003601f168201915b5050505050905090565b6000610565338484611900565b50600192915050565b6001600160a01b0382166000908152600660205260408120805461066f9190849081106105ab57634e487b7160e01b600052603260045260246000fd5b9060005260206000209060040201600101544260066000876001600160a01b03166001600160a01b03168152602001908152602001600020858154811061060257634e487b7160e01b600052603260045260246000fd5b90600052602060002090600402016003015460066000886001600160a01b03166001600160a01b03168152602001908152602001600020868154811061065857634e487b7160e01b600052603260045260246000fd5b906000526020600020906004020160000154610ea7565b9392505050565b600080546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b1580156106d357600080fd5b505afa1580156106e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070b9190611fcc565b905090565b60006005548411156107695760405162461bcd60e51b815260206004820152601360248201527f66697273742072656c65617365203e206d61780000000000000000000000000060448201526064015b60405180910390fd5b60018510156107ba5760405162461bcd60e51b815260206004820152600b60248201527f3c20312072656c656173650000000000000000000000000000000000000000006044820152606401610760565b61271083111561080c5760405162461bcd60e51b815260206004820152600e60248201527f72656c65617365203e20313030250000000000000000000000000000000000006044820152606401610760565b600185111561086557600082116108655760405162461bcd60e51b815260206004820152600a60248201527f706572696f64203d2030000000000000000000000000000000000000000000006044820152606401610760565b84600114156108bf5761271083146108bf5760405162461bcd60e51b815260206004820152600f60248201527f72656c6561736564203c203130302500000000000000000000000000000000006044820152606401610760565b60408051608081018252868152602081018681528183018681526060830186815260038054600181018255600091909152935160049094027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b81019490945591517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c840155517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85d830155517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85e909101555133907f9c52cb9bbb9b7fa6ddb26d1e82afc4e62c9ec50c0f3488c10bb8ad22d4edc4c3906109c19084815260200190565b60405180910390a26003546109d890600190612117565b95945050505050565b6001600160a01b0382166000908152600660205260408120805483908110610a1957634e487b7160e01b600052603260045260246000fd5b906000526020600020906004020160020154610a35848461056e565b61066f9190612117565b6001600160a01b0383166000908152600860209081526040808320338452909152812054821115610ab25760405162461bcd60e51b815260206004820152601160248201527f76616c7565203e20616c6c6f77616e63650000000000000000000000000000006044820152606401610760565b6001600160a01b038416600090815260086020908152604080832033845290915281208054849290610ae5908490612117565b90915550610af690508484846119ca565b949350505050565b60008060009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610b4d57600080fd5b505afa158015610b61573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070b9190612036565b60008451845114610bd85760405162461bcd60e51b815260206004820152601760248201527f6d69736d617463686564206172726179206c656e6774680000000000000000006044820152606401610760565b60005b8551811015610ca757610c8c868281518110610c0757634e487b7160e01b600052603260045260246000fd5b6020026020010151868381518110610c2f57634e487b7160e01b600052603260045260246000fd5b6020026020010151868481518110610c5757634e487b7160e01b600052603260045260246000fd5b6020026020010151868581518110610c7f57634e487b7160e01b600052603260045260246000fd5b6020026020010151611451565b610c9557600080fd5b80610c9f81612163565b915050610bdb565b50600195945050505050565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091610565918590610cea9086906120ff565b611900565b6000805b6001600160a01b038316600090815260066020526040902054811015610d3b57610d1d83826118a0565b610d2790836120ff565b915080610d3381612163565b915050610cf3565b505b919050565b60038181548110610d5257600080fd5b60009182526020909120600490910201805460018201546002830154600390930154919350919084565b6000610d8782610cef565b610d9083610e4c565b610d9a91906120ff565b92915050565b610dcb6040518060800160405280600081526020016000815260200160008152602001600081525090565b6001600160a01b0383166000908152600660205260409020805483908110610e0357634e487b7160e01b600052603260045260246000fd5b9060005260206000209060040201604051806080016040529081600082015481526020016001820154815260200160028201548152602001600382015481525050905092915050565b6000805b6001600160a01b038316600090815260066020526040902054811015610d3b57610e7a83826109e1565b610e8490836120ff565b915080610e9081612163565b915050610e50565b6060600280546104d59061212e565b60007380a61e417c51c49fb02c8f77cd62cdcd4fb8332d63c9b8f6f986868660038781548110610ee757634e487b7160e01b600052603260045260246000fd5b90600052602060002090600402016040518563ffffffff1660e01b8152600401610f499493929190938452602084019290925260408301528054606083015260018101546080830152600281015460a08301526003015460c082015260e00190565b60206040518083038186803b158015610f6157600080fd5b505af4158015610f75573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d89190611fcc565b3360009081526008602090815260408083206001600160a01b03861684529091528120548281101561100d5760405162461bcd60e51b815260206004820152601460248201527f6465637265617365203e20616c6c6f77616e63650000000000000000000000006044820152606401610760565b3360008181526008602090815260408083206001600160a01b038916845290915290205461104391908690610cea908790612117565b5060019392505050565b600061066f3384846119ca565b60008261106733846109e1565b10156110b55760405162461bcd60e51b815260206004820152601160248201527f616d6f756e74203e20756e6c6f636b65640000000000000000000000000000006044820152606401610760565b3360009081526006602052604090208054849190849081106110e757634e487b7160e01b600052603260045260246000fd5b9060005260206000209060040201600201600082825461110791906120ff565b909155505060005460405163a9059cbb60e01b81526001600160a01b038681166004830152602482018690529091169063a9059cbb90604401602060405180830381600087803b15801561115a57600080fd5b505af115801561116e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111929190611f94565b61104357600080fd5b3360009081526006602052604081205483106111f95760405162461bcd60e51b815260206004820152600b60248201527f4e6f207363686564756c650000000000000000000000000000000000000000006044820152606401610760565b6112048360016120ff565b82146112525760405162461bcd60e51b815260206004820152601260248201527f4275726e206e6f7420636f6e6669726d656400000000000000000000000000006044820152606401610760565b6000546001600160a01b03166342966c6861126d33866109e1565b61127733876118a0565b61128191906120ff565b6040518263ffffffff1660e01b815260040161129f91815260200190565b600060405180830381600087803b1580156112b957600080fd5b505af11580156112cd573d6000803e3d6000fd5b5050336000908152600660205260409020548592506112ef9150600190612117565b146113b457336000908152600660205260409020805461131190600190612117565b8154811061132f57634e487b7160e01b600052603260045260246000fd5b906000526020600020906004020160066000336001600160a01b03166001600160a01b03168152602001908152602001600020848154811061138157634e487b7160e01b600052603260045260246000fd5b60009182526020909120825460049092020190815560018083015490820155600280830154908201556003918201549101555b3360009081526006602052604090208054806113e057634e487b7160e01b600052603160045260246000fd5b600082815260208120600460001990930192830201818155600181018290556002810182905560030155905560405133907f5fb1e58c7b4fd20adc78ed98f6f661b729dc1b671bc0debda7cde94d9a453ad2906114409086815260200190565b60405180910390a250600192915050565b60006004548410156114a55760405162461bcd60e51b815260206004820152601460248201527f616d6f756e74203c206d696e2066756e64696e670000000000000000000000006044820152606401610760565b6001600160a01b0385166114fb5760405162461bcd60e51b815260206004820152600c60248201527f746f2030206164647265737300000000000000000000000000000000000000006044820152606401610760565b600354821061154c5760405162461bcd60e51b815260206004820152600e60248201527f626164207363686564756c6549640000000000000000000000000000000000006044820152606401610760565b6003828154811061156d57634e487b7160e01b600052603260045260246000fd5b9060005260206000209060040201600001548410156115ce5760405162461bcd60e51b815260206004820152601560248201527f3c203120746f6b656e207065722072656c6561736500000000000000000000006044820152606401610760565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526001600160a01b03909116906323b872dd90606401602060405180830381600087803b15801561163957600080fd5b505af115801561164d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116719190611f94565b61167a57600080fd5b60055461168790426120ff565b8311156116d65760405162461bcd60e51b815260206004820152601e60248201527f636f6d6d656e63656d656e742074696d65206f7574206f662072616e676500006044820152606401610760565b6005546116e390426120ff565b6003838154811061170457634e487b7160e01b600052603260045260246000fd5b9060005260206000209060040201600101548461172191906120ff565b111561176f5760405162461bcd60e51b815260206004820152601c60248201527f696e697469616c2072656c65617365206f7574206f662072616e6765000000006044820152606401610760565b61179a6040518060800160405280600081526020016000815260200160008152602001600081525090565b8281526020808201858152606083018781526001600160a01b0389166000818152600685526040808220805460018181018355828552978420895160049092020190815595518688015590870151600286015592516003909401939093559182905254859233917fe9158f275e82f1fedd60c9bdf20c162df4758d3cea617d7cf1335a1fa782bbf8918a918a9161183091612117565b6040805193845260208401929092529082015260600160405180910390a450600195945050505050565b6006602052816000526040600020818154811061187657600080fd5b60009182526020909120600490910201805460018201546002830154600390930154919450925084565b60006118ac838361056e565b6001600160a01b03841660009081526006602052604090208054849081106118e457634e487b7160e01b600052603260045260246000fd5b90600052602060002090600402016003015461066f9190612117565b6001600160a01b03831661191357600080fd5b6001600160a01b0382166119695760405162461bcd60e51b815260206004820152601460248201527f7370656e646572206973203020616464726573730000000000000000000000006044820152606401610760565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000816119d685610e4c565b1015611a245760405162461bcd60e51b815260206004820152601160248201527f616d6f756e74203e20756e6c6f636b65640000000000000000000000000000006044820152606401610760565b8160005b6001600160a01b038616600090815260066020526040902054811015611c03576001600160a01b0386166000908152600660205260409020805482908110611a8057634e487b7160e01b600052603260045260246000fd5b90600052602060002090600402016003015460066000886001600160a01b03166001600160a01b031681526020019081526020016000208281548110611ad657634e487b7160e01b600052603260045260246000fd5b9060005260206000209060040201600201541415611af357611bf1565b611afd86826109e1565b821115611b8757611b0e86826109e1565b611b189083612117565b9150611b2486826109e1565b6001600160a01b0387166000908152600660205260409020805483908110611b5c57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600402016002016000828254611b7c91906120ff565b90915550611bf19050565b6001600160a01b0386166000908152600660205260409020805483919083908110611bc257634e487b7160e01b600052603260045260246000fd5b90600052602060002090600402016002016000828254611be291906120ff565b9091555060009250611c039050565b80611bfb81612163565b915050611a28565b508015611c525760405162461bcd60e51b815260206004820152600c60248201527f626164207472616e7366657200000000000000000000000000000000000000006044820152606401610760565b60005460405163a9059cbb60e01b81526001600160a01b038681166004830152602482018690529091169063a9059cbb90604401602060405180830381600087803b158015611ca057600080fd5b505af1158015611cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd89190611f94565b611ce157600080fd5b506001949350505050565b80356001600160a01b0381168114610d3d57600080fd5b600082601f830112611d13578081fd5b81356020611d28611d23836120db565b6120aa565b80838252828201915082860187848660051b8901011115611d47578586fd5b855b85811015611d6557813584529284019290840190600101611d49565b5090979650505050505050565b600060208284031215611d83578081fd5b61066f82611cec565b60008060408385031215611d9e578081fd5b611da783611cec565b9150611db560208401611cec565b90509250929050565b600080600060608486031215611dd2578081fd5b611ddb84611cec565b9250611de960208501611cec565b9150604084013590509250925092565b60008060408385031215611e0b578182fd5b611e1483611cec565b946020939093013593505050565b600080600060608486031215611e36578283fd5b611e3f84611cec565b95602085013595506040909401359392505050565b60008060008060808587031215611e69578081fd5b611e7285611cec565b966020860135965060408601359560600135945092505050565b60008060008060808587031215611ea1578384fd5b843567ffffffffffffffff80821115611eb8578586fd5b818701915087601f830112611ecb578586fd5b81356020611edb611d23836120db565b8083825282820191508286018c848660051b8901011115611efa578a8bfd5b8a96505b84871015611f2357611f0f81611cec565b835260019690960195918301918301611efe565b5098505088013592505080821115611f39578485fd5b611f4588838901611d03565b94506040870135915080821115611f5a578384fd5b611f6688838901611d03565b93506060870135915080821115611f7b578283fd5b50611f8887828801611d03565b91505092959194509250565b600060208284031215611fa5578081fd5b8151801515811461066f578182fd5b600060208284031215611fc5578081fd5b5035919050565b600060208284031215611fdd578081fd5b5051919050565b60008060408385031215611ff6578182fd5b50508035926020909101359150565b6000806000806080858703121561201a578081fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215612047578081fd5b815160ff8116811461066f578182fd5b6000602080835283518082850152825b8181101561208357858101830151858201604001528201612067565b818111156120945783604083870101525b50601f01601f1916929092016040019392505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156120d3576120d3612194565b604052919050565b600067ffffffffffffffff8211156120f5576120f5612194565b5060051b60200190565b600082198211156121125761211261217e565b500190565b6000828210156121295761212961217e565b500390565b600181811c9082168061214257607f821691505b60208210811415610d3b57634e487b7160e01b600052602260045260246000fd5b60006000198214156121775761217761217e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea264697066735822122039aa59c8fc42d78b5502510ef1e9387b463adb9a594cf14ec67de671e4833e9364736f6c63430008030033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002da719db753dfa10a62e140f436e1d67f2ddb0d600000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000e8d4a51000000000000000000000000000000000000000000000000000000000000b473500000000000000000000000000000000000000000000000000000000000000001343455245204e6574776f726b204c6f636b757000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b43455245204c6f636b7570000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _token (address): 0x2dA719DB753dFA10a62E140f436E1d67F2ddB0d6
Arg [1] : name_ (string): CERE Network Lockup
Arg [2] : symbol_ (string): CERE Lockup
Arg [3] : _minReleaseScheduleAmount (uint256): 1000000000000
Arg [4] : _maxReleaseDelay (uint256): 189216000
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 0000000000000000000000002da719db753dfa10a62e140f436e1d67f2ddb0d6
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 000000000000000000000000000000000000000000000000000000e8d4a51000
Arg [4] : 000000000000000000000000000000000000000000000000000000000b473500
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000013
Arg [6] : 43455245204e6574776f726b204c6f636b757000000000000000000000000000
Arg [7] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [8] : 43455245204c6f636b7570000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
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.