More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 782 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Remove Beneficia... | 11934203 | 1453 days ago | IN | 0 ETH | 0.01132666 | ||||
Remove Beneficia... | 11934163 | 1453 days ago | IN | 0 ETH | 0.01130823 | ||||
Add Beneficiary | 11934156 | 1453 days ago | IN | 0 ETH | 0.02338059 | ||||
Remove Beneficia... | 11934128 | 1453 days ago | IN | 0 ETH | 0.01132666 | ||||
Add Beneficiary | 11934112 | 1453 days ago | IN | 0 ETH | 0.02338326 | ||||
Remove Beneficia... | 11934087 | 1453 days ago | IN | 0 ETH | 0.01132666 | ||||
Add Beneficiary | 11934061 | 1453 days ago | IN | 0 ETH | 0.02337793 | ||||
Remove Beneficia... | 11933972 | 1453 days ago | IN | 0 ETH | 0.0087042 | ||||
Remove Beneficia... | 11933842 | 1453 days ago | IN | 0 ETH | 0.00799666 | ||||
Remove Beneficia... | 11933827 | 1453 days ago | IN | 0 ETH | 0.01132666 | ||||
Release | 11683687 | 1492 days ago | IN | 0 ETH | 0.00800615 | ||||
Release | 11660441 | 1495 days ago | IN | 0 ETH | 0.00795878 | ||||
Add Beneficiary | 11659930 | 1495 days ago | IN | 0 ETH | 0.01263528 | ||||
Add Beneficiary | 11659923 | 1495 days ago | IN | 0 ETH | 0.001797 | ||||
Release | 11658955 | 1495 days ago | IN | 0 ETH | 0.00315896 | ||||
Release | 11655996 | 1496 days ago | IN | 0 ETH | 0.00181228 | ||||
Add Beneficiary | 11248695 | 1558 days ago | IN | 0 ETH | 0.00547528 | ||||
Release | 10999980 | 1597 days ago | IN | 0 ETH | 0.00155384 | ||||
Release | 10722036 | 1639 days ago | IN | 0 ETH | 0.00959534 | ||||
Release | 10717779 | 1640 days ago | IN | 0 ETH | 0.00620547 | ||||
Remove Beneficia... | 10679294 | 1646 days ago | IN | 0 ETH | 0.00499251 | ||||
Release | 10678815 | 1646 days ago | IN | 0 ETH | 0.00683187 | ||||
Release | 10677090 | 1646 days ago | IN | 0 ETH | 0.01042456 | ||||
Release | 10631713 | 1653 days ago | IN | 0 ETH | 0.00716508 | ||||
Release | 10558253 | 1665 days ago | IN | 0 ETH | 0.00298777 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Vesting
Compiler Version
v0.4.25+commit.59dbf8f1
Optimization Enabled:
No with 0 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-12-11 */ pragma solidity 0.4.25; // File: openzeppelin-solidity/contracts/math/SafeMath.sol /** * @title SafeMath * @dev Math operations with safety checks that revert on error */ library SafeMath { /** * @dev Multiplies two numbers, reverts on 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-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b); return c; } /** * @dev Integer division of two numbers truncating the quotient, reverts on division by zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0); // Solidity only automatically asserts when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); uint256 c = a - b; return c; } /** * @dev Adds two numbers, reverts on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } /** * @dev Divides two numbers and returns the remainder (unsigned integer modulo), * reverts when dividing by zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0); return a % b; } } // File: openzeppelin-solidity/contracts/token/ERC20/IERC20.sol /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function transfer(address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); event Transfer( address indexed from, address indexed to, uint256 value ); event Approval( address indexed owner, address indexed spender, uint256 value ); } // File: openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure. * 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; function safeTransfer( IERC20 token, address to, uint256 value ) internal { require(token.transfer(to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { require(token.transferFrom(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' require((value == 0) || (token.allowance(msg.sender, spender) == 0)); require(token.approve(spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); require(token.approve(spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value); require(token.approve(spender, newAllowance)); } } // File: openzeppelin-solidity/contracts/ownership/Ownable.sol /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() internal { _owner = msg.sender; emit OwnershipTransferred(address(0), _owner); } /** * @return the address of the owner. */ function owner() public view returns(address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner()); _; } /** * @return true if `msg.sender` is the owner of the contract. */ function isOwner() public view returns(bool) { return msg.sender == _owner; } /** * @dev Allows the current owner to relinquish control of the contract. * @notice Renouncing to ownership will leave the contract without an owner. * It will not be possible to call the functions with the `onlyOwner` * modifier anymore. */ function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0)); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: contracts/Vesting.sol /** * @title Vesting * @dev Vesting is a token holder contract that will allow a * beneficiary to extract the tokens after a given release time */ contract Vesting is Ownable { using SafeERC20 for IERC20; using SafeMath for uint256; // ERC20 basic token contract being held IERC20 private _token; // Info holds all the relevant information to calculate the right amount for `release` struct Info { bool known; // Logs whether or not the address is known and eligible to receive tokens uint256 totalAmount; // Total amount of tokens to receive uint256 receivedAmount; // Amount of tokens already received uint256 startTime; // Starting time of vesting uint256 releaseTime; // End time of vesting } // Mapping of an address to it's information mapping(address => Info) private _info; constructor( IERC20 token ) public { _token = token; } /** * @notice Add beneficiaries to the contract, allowing them to withdraw tokens. * @param beneficiary The address associated with the beneficiary. * @param releaseTime The timestamp at which 100% of their allocation is freed up. * @param amount The amount of tokens they can receive in total. */ function addBeneficiary( address beneficiary, uint256 startTime, uint256 releaseTime, uint256 amount ) external onlyOwner { Info storage info = _info[beneficiary]; require(!info.known, "This address is already known to the contract."); require(releaseTime > startTime, "Release time must be later than the start time."); require(releaseTime > block.timestamp, "End of vesting period must be somewhere in the future."); info.startTime = startTime; // Set starting time info.totalAmount = amount; // Set amount info.releaseTime = releaseTime; // Set release time info.known = true; // Prevent overwriting of address data } /** * @notice Remove a beneficiary from the contract, preventing them from * retrieving tokens in the future. * @param beneficiary The address associated with the beneficiary. */ function removeBeneficiary(address beneficiary) external onlyOwner { Info storage info = _info[beneficiary]; require(info.known, "The address you are trying to remove is unknown to the contract"); _release(beneficiary); // Release leftover tokens before removing the investor info.known = false; info.totalAmount = 0; info.receivedAmount = 0; info.startTime = 0; info.releaseTime = 0; } /** * @notice Withdraw tokens from the contract. This function is strictly * for the owner, intended to take out any leftovers if needed. * @param amount The amount of tokens to take out. */ function withdraw(uint256 amount) external onlyOwner { _token.safeTransfer(owner(), amount); } /** * @notice Transfers tokens held by timelock to beneficiary. * This function will check if a caller is eligible to receive tokens * and if so, will then call the internal `_release` function. */ function release() external { require(_info[msg.sender].known, "You are not eligible to receive tokens from this contract."); _release(msg.sender); } /** * @notice Simple function to return vesting information for a caller. * Callers can then validate if their information has been properly stored, * instead of trusting the contract owner. */ function check() external view returns (uint256, uint256, uint256, uint256) { return ( _info[msg.sender].totalAmount, _info[msg.sender].receivedAmount, _info[msg.sender].startTime, _info[msg.sender].releaseTime ); } /** * @notice Internal function to release tokens to a beneficiary. * This function has been extended from the `release` function included in * `TokenTimelock.sol` included in the OpenZeppelin-solidity library, to allow * for a 'second-by-second' token vesting schedule. Since block timestamps * is the closest Solidity can get to reading the current time, this * mechanism is used. */ function _release(address beneficiary) internal { Info storage info = _info[beneficiary]; if (block.timestamp >= info.releaseTime) { uint256 remainingTokens = info.totalAmount.sub(info.receivedAmount); require(remainingTokens > 0, "No tokens left to take out."); // Since `safeTransfer` will throw upon failure, we can modify the state beforehand. info.receivedAmount = info.totalAmount; _token.safeTransfer(beneficiary, remainingTokens); } else if (block.timestamp > info.startTime) { // Calculate allowance uint256 diff = info.releaseTime.sub(info.startTime); uint256 tokensPerTick = info.totalAmount.div(diff); uint256 ticks = block.timestamp.sub(info.startTime); uint256 tokens = tokensPerTick.mul(ticks); uint256 receivableTokens = tokens.sub(info.receivedAmount); require(receivableTokens > 0, "No tokens to take out right now."); // Since `safeTransfer` will throw upon failure, we can modify the state beforehand. info.receivedAmount = info.receivedAmount.add(receivableTokens); _token.safeTransfer(beneficiary, receivableTokens); } else { // We could let SafeMath revert release calls if vesting has not started yet. // However, in the interest of clarity to contract callers, this error // message is added instead. revert("This address is not eligible to receive tokens yet."); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"removeBeneficiary","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"release","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"check","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"startTime","type":"uint256"},{"name":"releaseTime","type":"uint256"},{"name":"amount","type":"uint256"}],"name":"addBeneficiary","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"token","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
608060405234801561001057600080fd5b506040516020806111c283398101806040528101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050611082806101406000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632e1a7d4d1461009e57806359633a1c146100cb578063715018a61461010e57806386d1a69f146101255780638da5cb5b1461013c5780638f32d59b14610193578063919840ad146101c2578063b095e12914610202578063f2fde38b14610263575b600080fd5b3480156100aa57600080fd5b506100c9600480360381019080803590602001909291905050506102a6565b005b3480156100d757600080fd5b5061010c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610310565b005b34801561011a57600080fd5b50610123610464565b005b34801561013157600080fd5b5061013a610536565b005b34801561014857600080fd5b5061015161062b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561019f57600080fd5b506101a8610654565b604051808215151515815260200191505060405180910390f35b3480156101ce57600080fd5b506101d76106ab565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34801561020e57600080fd5b50610261600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291905050506107cb565b005b34801561026f57600080fd5b506102a4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a47565b005b6102ae610654565b15156102b957600080fd5b61030d6102c461062b565b82600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a669092919063ffffffff16565b50565b600061031a610654565b151561032557600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900460ff161515610412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f8152602001807f546865206164647265737320796f752061726520747279696e6720746f20726581526020017f6d6f766520697320756e6b6e6f776e20746f2074686520636f6e74726163740081525060400191505060405180910390fd5b61041b82610b54565b60008160000160006101000a81548160ff021916908315150217905550600081600101819055506000816002018190555060008160030181905550600081600401819055505050565b61046c610654565b151561047757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff161515610620576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001807f596f7520617265206e6f7420656c696769626c6520746f20726563656976652081526020017f746f6b656e732066726f6d207468697320636f6e74726163742e00000000000081525060400191505060405180910390fd5b61062933610b54565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600080600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154935093509350935090919293565b60006107d5610654565b15156107e057600080fd5b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900460ff161515156108ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f54686973206164647265737320697320616c7265616479206b6e6f776e20746f81526020017f2074686520636f6e74726163742e00000000000000000000000000000000000081525060400191505060405180910390fd5b838311151561096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001807f52656c656173652074696d65206d757374206265206c61746572207468616e2081526020017f7468652073746172742074696d652e000000000000000000000000000000000081525060400191505060405180910390fd5b4283111515610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001807f456e64206f662076657374696e6720706572696f64206d75737420626520736f81526020017f6d65776865726520696e20746865206675747572652e0000000000000000000081525060400191505060405180910390fd5b83816003018190555081816001018190555082816004018190555060018160000160006101000a81548160ff0219169083151502179055505050505050565b610a4f610654565b1515610a5a57600080fd5b610a6381610eb2565b50565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610b0957600080fd5b505af1158015610b1d573d6000803e3d6000fd5b505050506040513d6020811015610b3357600080fd5b81019080805190602001909291905050501515610b4f57600080fd5b505050565b6000806000806000806000600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209650866004015442101515610ca157610bc887600201548860010154610fac90919063ffffffff16565b9550600086111515610c42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e6f20746f6b656e73206c65667420746f2074616b65206f75742e000000000081525060200191505060405180910390fd5b86600101548760020181905550610c9c8887600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a669092919063ffffffff16565b610ea8565b8660030154421115610e1357610cc887600301548860040154610fac90919063ffffffff16565b9450610ce1858860010154610fcd90919063ffffffff16565b9350610cfa876003015442610fac90919063ffffffff16565b9250610d0f8385610ff790919063ffffffff16565b9150610d28876002015483610fac90919063ffffffff16565b9050600081111515610da2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4e6f20746f6b656e7320746f2074616b65206f7574207269676874206e6f772e81525060200191505060405180910390fd5b610db981886002015461103590919063ffffffff16565b8760020181905550610e0e8882600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a669092919063ffffffff16565b610ea7565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001807f546869732061646472657373206973206e6f7420656c696769626c6520746f2081526020017f7265636569766520746f6b656e73207965742e0000000000000000000000000081525060400191505060405180910390fd5b5b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610eee57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080838311151515610fbe57600080fd5b82840390508091505092915050565b600080600083111515610fdf57600080fd5b8284811515610fea57fe5b0490508091505092915050565b600080600084141561100c576000915061102e565b828402905082848281151561101d57fe5b0414151561102a57600080fd5b8091505b5092915050565b600080828401905083811015151561104c57600080fd5b80915050929150505600a165627a7a72305820553ca159c085d491ff265ef371451fc6435747b2c746b5689ef5250a66f5856f0029000000000000000000000000940a2db1b7008b6c776d4faaca729d6d4a4aa551
Deployed Bytecode
0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632e1a7d4d1461009e57806359633a1c146100cb578063715018a61461010e57806386d1a69f146101255780638da5cb5b1461013c5780638f32d59b14610193578063919840ad146101c2578063b095e12914610202578063f2fde38b14610263575b600080fd5b3480156100aa57600080fd5b506100c9600480360381019080803590602001909291905050506102a6565b005b3480156100d757600080fd5b5061010c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610310565b005b34801561011a57600080fd5b50610123610464565b005b34801561013157600080fd5b5061013a610536565b005b34801561014857600080fd5b5061015161062b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561019f57600080fd5b506101a8610654565b604051808215151515815260200191505060405180910390f35b3480156101ce57600080fd5b506101d76106ab565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34801561020e57600080fd5b50610261600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291905050506107cb565b005b34801561026f57600080fd5b506102a4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a47565b005b6102ae610654565b15156102b957600080fd5b61030d6102c461062b565b82600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a669092919063ffffffff16565b50565b600061031a610654565b151561032557600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900460ff161515610412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f8152602001807f546865206164647265737320796f752061726520747279696e6720746f20726581526020017f6d6f766520697320756e6b6e6f776e20746f2074686520636f6e74726163740081525060400191505060405180910390fd5b61041b82610b54565b60008160000160006101000a81548160ff021916908315150217905550600081600101819055506000816002018190555060008160030181905550600081600401819055505050565b61046c610654565b151561047757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff161515610620576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001807f596f7520617265206e6f7420656c696769626c6520746f20726563656976652081526020017f746f6b656e732066726f6d207468697320636f6e74726163742e00000000000081525060400191505060405180910390fd5b61062933610b54565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600080600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154935093509350935090919293565b60006107d5610654565b15156107e057600080fd5b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900460ff161515156108ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f54686973206164647265737320697320616c7265616479206b6e6f776e20746f81526020017f2074686520636f6e74726163742e00000000000000000000000000000000000081525060400191505060405180910390fd5b838311151561096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001807f52656c656173652074696d65206d757374206265206c61746572207468616e2081526020017f7468652073746172742074696d652e000000000000000000000000000000000081525060400191505060405180910390fd5b4283111515610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001807f456e64206f662076657374696e6720706572696f64206d75737420626520736f81526020017f6d65776865726520696e20746865206675747572652e0000000000000000000081525060400191505060405180910390fd5b83816003018190555081816001018190555082816004018190555060018160000160006101000a81548160ff0219169083151502179055505050505050565b610a4f610654565b1515610a5a57600080fd5b610a6381610eb2565b50565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610b0957600080fd5b505af1158015610b1d573d6000803e3d6000fd5b505050506040513d6020811015610b3357600080fd5b81019080805190602001909291905050501515610b4f57600080fd5b505050565b6000806000806000806000600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209650866004015442101515610ca157610bc887600201548860010154610fac90919063ffffffff16565b9550600086111515610c42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e6f20746f6b656e73206c65667420746f2074616b65206f75742e000000000081525060200191505060405180910390fd5b86600101548760020181905550610c9c8887600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a669092919063ffffffff16565b610ea8565b8660030154421115610e1357610cc887600301548860040154610fac90919063ffffffff16565b9450610ce1858860010154610fcd90919063ffffffff16565b9350610cfa876003015442610fac90919063ffffffff16565b9250610d0f8385610ff790919063ffffffff16565b9150610d28876002015483610fac90919063ffffffff16565b9050600081111515610da2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4e6f20746f6b656e7320746f2074616b65206f7574207269676874206e6f772e81525060200191505060405180910390fd5b610db981886002015461103590919063ffffffff16565b8760020181905550610e0e8882600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a669092919063ffffffff16565b610ea7565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001807f546869732061646472657373206973206e6f7420656c696769626c6520746f2081526020017f7265636569766520746f6b656e73207965742e0000000000000000000000000081525060400191505060405180910390fd5b5b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610eee57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080838311151515610fbe57600080fd5b82840390508091505092915050565b600080600083111515610fdf57600080fd5b8284811515610fea57fe5b0490508091505092915050565b600080600084141561100c576000915061102e565b828402905082848281151561101d57fe5b0414151561102a57600080fd5b8091505b5092915050565b600080828401905083811015151561104c57600080fd5b80915050929150505600a165627a7a72305820553ca159c085d491ff265ef371451fc6435747b2c746b5689ef5250a66f5856f0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000940a2db1b7008b6c776d4faaca729d6d4a4aa551
-----Decoded View---------------
Arg [0] : token (address): 0x940a2dB1B7008B6C776d4faaCa729d6d4A4AA551
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000940a2db1b7008b6c776d4faaca729d6d4a4aa551
Swarm Source
bzzr://553ca159c085d491ff265ef371451fc6435747b2c746b5689ef5250a66f5856f
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.12267 | 1 | $0.1226 |
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.