Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x79FB01E3...e01d1d718 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
PolypuXvesting
Compiler Version
v0.5.2+commit.1df8f40c
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-07-11 */ /** *Submitted for verification at Etherscan.io on 2019-04-20 */ pragma solidity 0.5.2; // File: openzeppelin-solidity/contracts/ownership/Ownable.sol //PUX Vesting Contract /** * @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: openzeppelin-solidity/contracts/math/SafeMath.sol /** * @title SafeMath * @dev Unsigned math operations with safety checks that revert on error */ library SafeMath { /** * @dev Multiplies two unsigned integers, reverts on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // 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 unsigned integers truncating the quotient, reverts on division by zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 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 unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); uint256 c = a - b; return c; } /** * @dev Adds two unsigned integers, reverts on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } /** * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo), * reverts when dividing by zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0); 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 transfer(address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); function totalSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } // 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: contracts/puxTokenVesting.sol /** * @title TokenVesting * @dev A token holder contract that can release its token balance gradually like a * typical vesting scheme, with a cliff and vesting period. Optionally revocable by the * owner. */ contract PolypuXvesting is Ownable { using SafeMath for uint256; using SafeERC20 for IERC20; IERC20 private puxToken; uint256 private tokensToVest = 0; uint256 private vestingId = 0; string private constant INSUFFICIENT_BALANCE = "Insufficient balance"; string private constant INVALID_VESTING_ID = "Invalid vesting id"; string private constant VESTING_ALREADY_RELEASED = "Vesting already released"; string private constant INVALID_BENEFICIARY = "Invalid beneficiary address"; string private constant NOT_VESTED = "Tokens have not vested yet"; struct Vesting { uint256 releaseTime; uint256 amount; address beneficiary; bool released; } mapping(uint256 => Vesting) public vestings; event TokenVestingReleased(uint256 indexed vestingId, address indexed beneficiary, uint256 amount); event TokenVestingAdded(uint256 indexed vestingId, address indexed beneficiary, uint256 amount); event TokenVestingRemoved(uint256 indexed vestingId, address indexed beneficiary, uint256 amount); constructor(IERC20 _token) public { require(address(_token) != address(0x0), "PUX token address is not valid"); puxToken = _token; uint256 SCALING_FACTOR = 10 ** 8; uint256 day = 1 days; addVesting(0x63c4303E0Bf93e8010757A29A733a1827866f337, now + 180 * day, 3000000 * SCALING_FACTOR); } function token() public view returns (IERC20) { return puxToken; } function beneficiary(uint256 _vestingId) public view returns (address) { return vestings[_vestingId].beneficiary; } function releaseTime(uint256 _vestingId) public view returns (uint256) { return vestings[_vestingId].releaseTime; } function vestingAmount(uint256 _vestingId) public view returns (uint256) { return vestings[_vestingId].amount; } function removeVesting(uint256 _vestingId) public onlyOwner { Vesting storage vesting = vestings[_vestingId]; require(vesting.beneficiary != address(0x0), INVALID_VESTING_ID); require(!vesting.released , VESTING_ALREADY_RELEASED); vesting.released = true; tokensToVest = tokensToVest.sub(vesting.amount); emit TokenVestingRemoved(_vestingId, vesting.beneficiary, vesting.amount); } function addVesting(address _beneficiary, uint256 _releaseTime, uint256 _amount) public onlyOwner { require(_beneficiary != address(0x0), INVALID_BENEFICIARY); tokensToVest = tokensToVest.add(_amount); vestingId = vestingId.add(1); vestings[vestingId] = Vesting({ beneficiary: _beneficiary, releaseTime: _releaseTime, amount: _amount, released: false }); emit TokenVestingAdded(vestingId, _beneficiary, _amount); } function release(uint256 _vestingId) public { Vesting storage vesting = vestings[_vestingId]; require(vesting.beneficiary != address(0x0), INVALID_VESTING_ID); require(!vesting.released , VESTING_ALREADY_RELEASED); // solhint-disable-next-line not-rely-on-time require(block.timestamp >= vesting.releaseTime, NOT_VESTED); require(puxToken.balanceOf(address(this)) >= vesting.amount, INSUFFICIENT_BALANCE); vesting.released = true; tokensToVest = tokensToVest.sub(vesting.amount); puxToken.safeTransfer(vesting.beneficiary, vesting.amount); emit TokenVestingReleased(_vestingId, vesting.beneficiary, vesting.amount); } function retrieveExcessTokens(uint256 _amount) public onlyOwner { require(_amount <= puxToken.balanceOf(address(this)).sub(tokensToVest), INSUFFICIENT_BALANCE); puxToken.safeTransfer(owner(), _amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[{"name":"_vestingId","type":"uint256"}],"name":"vestingAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_vestingId","type":"uint256"}],"name":"releaseTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_vestingId","type":"uint256"}],"name":"removeVesting","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_vestingId","type":"uint256"}],"name":"release","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"},{"name":"_releaseTime","type":"uint256"},{"name":"_amount","type":"uint256"}],"name":"addVesting","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_vestingId","type":"uint256"}],"name":"beneficiary","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"retrieveExcessTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"vestings","outputs":[{"name":"releaseTime","type":"uint256"},{"name":"amount","type":"uint256"},{"name":"beneficiary","type":"address"},{"name":"released","type":"bool"}],"payable":false,"stateMutability":"view","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":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_token","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"vestingId","type":"uint256"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenVestingReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"vestingId","type":"uint256"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenVestingAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"vestingId","type":"uint256"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenVestingRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ec576000357c0100000000000000000000000000000000000000000000000000000000900480636eb48096116100a95780638da5cb5b116100835780638da5cb5b146103565780638f32d59b146103a0578063f2fde38b146103c2578063fc0c546a14610406576100ec565b80636eb4809614610297578063715018a6146102c5578063821bee73146102cf576100ec565b806307ad23ef146100f157806309c4bb2b146101335780631bcde4ec1461017557806337bdc99b146101a35780634691a998146101d15780635daa316014610229575b600080fd5b61011d6004803603602081101561010757600080fd5b8101908080359060200190929190505050610450565b6040518082815260200191505060405180910390f35b61015f6004803603602081101561014957600080fd5b8101908080359060200190929190505050610470565b6040518082815260200191505060405180910390f35b6101a16004803603602081101561018b57600080fd5b8101908080359060200190929190505050610490565b005b6101cf600480360360208110156101b957600080fd5b8101908080359060200190929190505050610797565b005b610227600480360360608110156101e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610dc3565b005b6102556004803603602081101561023f57600080fd5b8101908080359060200190929190505050611041565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102c3600480360360208110156102ad57600080fd5b8101908080359060200190929190505050611081565b005b6102cd6112d7565b005b6102fb600480360360208110156102e557600080fd5b81019080803590602001909291905050506113a9565b604051808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b61035e611406565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103a861142f565b604051808215151515815260200191505060405180910390f35b610404600480360360208110156103d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611486565b005b61040e6114a5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600060046000838152602001908152602001600020600101549050919050565b600060046000838152602001908152602001600020600001549050919050565b61049861142f565b15156104a357600080fd5b6000600460008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156040805190810160405280601281526020017f496e76616c69642076657374696e6720696400000000000000000000000000008152509015156105ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156105b2578082015181840152602081019050610597565b50505050905090810190601f1680156105df5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508060020160149054906101000a900460ff16156040805190810160405280601881526020017f56657374696e6720616c72656164792072656c656173656400000000000000008152509015156106df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156106a4578082015181840152602081019050610689565b50505050905090810190601f1680156106d15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060018160020160146101000a81548160ff02191690831515021790555061071681600101546002546114cf90919063ffffffff16565b6002819055508060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16827fdc8b9c8cc0c8d05e10824e69ee88995716a539af94a1c60fb9898367f613477c83600101546040518082815260200191505060405180910390a35050565b6000600460008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156040805190810160405280601281526020017f496e76616c69642076657374696e6720696400000000000000000000000000008152509015156108e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108a657808201518184015260208101905061088b565b50505050905090810190601f1680156108d35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508060020160149054906101000a900460ff16156040805190810160405280601881526020017f56657374696e6720616c72656164792072656c656173656400000000000000008152509015156109d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561099857808201518184015260208101905061097d565b50505050905090810190601f1680156109c55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5080600001544210156040805190810160405280601a81526020017f546f6b656e732068617665206e6f742076657374656420796574000000000000815250901515610aba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a7f578082015181840152602081019050610a64565b50505050905090810190601f168015610aac5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508060010154600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610b7b57600080fd5b505afa158015610b8f573d6000803e3d6000fd5b505050506040513d6020811015610ba557600080fd5b810190808051906020019092919050505010156040805190810160405280601481526020017f496e73756666696369656e742062616c616e6365000000000000000000000000815250901515610c96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610c5b578082015181840152602081019050610c40565b50505050905090810190601f168015610c885780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060018160020160146101000a81548160ff021916908315150217905550610ccd81600101546002546114cf90919063ffffffff16565b600281905550610d488160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168260010154600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114f19092919063ffffffff16565b8060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16827f295ac83a3c5cf518a125ba974be97dca6a668bae6dd90b6902b2618cdff1fcc683600101546040518082815260200191505060405180910390a35050565b610dcb61142f565b1515610dd657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156040805190810160405280601b81526020017f496e76616c69642062656e656669636961727920616464726573730000000000815250901515610ee5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610eaa578082015181840152602081019050610e8f565b50505050905090810190601f168015610ed75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50610efb816002546115df90919063ffffffff16565b600281905550610f1760016003546115df90919063ffffffff16565b6003819055506080604051908101604052808381526020018281526020018473ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250600460006003548152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160020160146101000a81548160ff0219169083151502179055509050508273ffffffffffffffffffffffffffffffffffffffff166003547ffbd41c6118c5ed14f196c270a1793d95e8517e43031d9bb61aa71cb2a38bf557836040518082815260200191505060405180910390a3505050565b60006004600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61108961142f565b151561109457600080fd5b61119e600254600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561115557600080fd5b505afa158015611169573d6000803e3d6000fd5b505050506040513d602081101561117f57600080fd5b81019080805190602001909291905050506114cf90919063ffffffff16565b8111156040805190810160405280601481526020017f496e73756666696369656e742062616c616e636500000000000000000000000081525090151561127f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611244578082015181840152602081019050611229565b50505050905090810190601f1680156112715780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506112d461128b611406565b82600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114f19092919063ffffffff16565b50565b6112df61142f565b15156112ea57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60046020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900460ff16905084565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b61148e61142f565b151561149957600080fd5b6114a281611600565b50565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008282111515156114e057600080fd5b600082840390508091505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561159457600080fd5b505af11580156115a8573d6000803e3d6000fd5b505050506040513d60208110156115be57600080fd5b810190808051906020019092919050505015156115da57600080fd5b505050565b60008082840190508381101515156115f657600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561163c57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fea165627a7a72305820e8df9b98c1a9df30c20e6acf5c946b4ed15488fd5f845848a8c415c271bf64740029
Deployed Bytecode Sourcemap
6991:3895:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6991:3895:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8820:126;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8820:126:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8683:129;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8683:129:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8954:440;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8954:440:0;;;;;;;;;;;;;;;;;:::i;:::-;;9935:714;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9935:714:0;;;;;;;;;;;;;;;;;:::i;:::-;;9402:525;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9402:525:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8546:129;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8546:129:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10657:226;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10657:226:0;;;;;;;;;;;;;;;;;:::i;:::-;;1556:140;;;:::i;:::-;;7734:43;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7734:43:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;843:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1178:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1873:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1873:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;8458:80;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8820:126;8884:7;8911:8;:20;8920:10;8911:20;;;;;;;;;;;:27;;;8904:34;;8820:126;;;:::o;8683:129::-;8745:7;8772:8;:20;8781:10;8772:20;;;;;;;;;;;:32;;;8765:39;;8683:129;;;:::o;8954:440::-;1055:9;:7;:9::i;:::-;1047:18;;;;;;;;9025:23;9051:8;:20;9060:10;9051:20;;;;;;;;;;;9025:46;;9121:3;9090:35;;:7;:19;;;;;;;;;;;;:35;;;;9127:18;;;;;;;;;;;;;;;;;;9082:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9082:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9166:7;:16;;;;;;;;;;;;9165:17;9185:24;;;;;;;;;;;;;;;;;;9157:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9157:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9240:4;9221:7;:16;;;:23;;;;;;;;;;;;;;;;;;9270:32;9287:7;:14;;;9270:12;;:16;;:32;;;;:::i;:::-;9255:12;:47;;;;9350:7;:19;;;;;;;;;;;;9318:68;;9338:10;9318:68;9371:7;:14;;;9318:68;;;;;;;;;;;;;;;;;;1076:1;8954:440;:::o;9935:714::-;9990:23;10016:8;:20;10025:10;10016:20;;;;;;;;;;;9990:46;;10086:3;10055:35;;:7;:19;;;;;;;;;;;;:35;;;;10092:18;;;;;;;;;;;;;;;;;;10047:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10047:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10131:7;:16;;;;;;;;;;;;10130:17;10150:24;;;;;;;;;;;;;;;;;;10122:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10122:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10268:7;:19;;;10249:15;:38;;10289:10;;;;;;;;;;;;;;;;;;10241:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10241:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10358:7;:14;;;10321:8;;;;;;;;;;;:18;;;10348:4;10321:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10321:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10321:33:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10321:33:0;;;;;;;;;;;;;;;;:51;;10374:20;;;;;;;;;;;;;;;;;;10313:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10313:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10425:4;10406:7;:16;;;:23;;;;;;;;;;;;;;;;;;10455:32;10472:7;:14;;;10455:12;;:16;;:32;;;;:::i;:::-;10440:12;:47;;;;10498:58;10520:7;:19;;;;;;;;;;;;10541:7;:14;;;10498:8;;;;;;;;;;;:21;;;;:58;;;;;:::i;:::-;10605:7;:19;;;;;;;;;;;;10572:69;;10593:10;10572:69;10626:7;:14;;;10572:69;;;;;;;;;;;;;;;;;;9935:714;;:::o;9402:525::-;1055:9;:7;:9::i;:::-;1047:18;;;;;;;;9543:3;9519:28;;:12;:28;;;;9549:19;;;;;;;;;;;;;;;;;;9511:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9511:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9595:25;9612:7;9595:12;;:16;;:25;;;;:::i;:::-;9580:12;:40;;;;9643:16;9657:1;9643:9;;:13;;:16;;;;:::i;:::-;9631:9;:28;;;;9692:160;;;;;;;;;9768:12;9692:160;;;;9803:7;9692:160;;;;9728:12;9692:160;;;;;;9835:5;9692:160;;;;;9670:8;:19;9679:9;;9670:19;;;;;;;;;;;:182;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9897:12;9868:51;;9886:9;;9868:51;9911:7;9868:51;;;;;;;;;;;;;;;;;;9402:525;;;:::o;8546:129::-;8608:7;8635:8;:20;8644:10;8635:20;;;;;;;;;;;:32;;;;;;;;;;;;8628:39;;8546:129;;;:::o;10657:226::-;1055:9;:7;:9::i;:::-;1047:18;;;;;;;;10751:51;10789:12;;10751:8;;;;;;;;;;;:18;;;10778:4;10751:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10751:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10751:33:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10751:33:0;;;;;;;;;;;;;;;;:37;;:51;;;;:::i;:::-;10740:7;:62;;10804:20;;;;;;;;;;;;;;;;;;10732:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10732:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10836:39;10858:7;:5;:7::i;:::-;10867;10836:8;;;;;;;;;;;:21;;;;:39;;;;;:::i;:::-;10657:226;:::o;1556:140::-;1055:9;:7;:9::i;:::-;1047:18;;;;;;;;1655:1;1618:40;;1639:6;;;;;;;;;;;1618:40;;;;;;;;;;;;1686:1;1669:6;;:19;;;;;;;;;;;;;;;;;;1556:140::o;7734:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;843:79::-;881:7;908:6;;;;;;;;;;;901:13;;843:79;:::o;1178:92::-;1218:4;1256:6;;;;;;;;;;;1242:20;;:10;:20;;;1235:27;;1178:92;:::o;1873:109::-;1055:9;:7;:9::i;:::-;1047:18;;;;;;;;1946:28;1965:8;1946:18;:28::i;:::-;1873:109;:::o;8458:80::-;8496:6;8522:8;;;;;;;;;;;8515:15;;8458:80;:::o;3605:150::-;3663:7;3696:1;3691;:6;;3683:15;;;;;;;;3709:9;3725:1;3721;:5;3709:17;;3746:1;3739:8;;;3605:150;;;;:::o;5513:125::-;5604:5;:14;;;5619:2;5623:5;5604:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5604:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5604:25:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5604:25:0;;;;;;;;;;;;;;;;5596:34;;;;;;;;5513:125;;;:::o;3841:150::-;3899:7;3919:9;3935:1;3931;:5;3919:17;;3960:1;3955;:6;;3947:15;;;;;;;;3982:1;3975:8;;;3841:150;;;;:::o;2132:187::-;2226:1;2206:22;;:8;:22;;;;2198:31;;;;;;;;2274:8;2245:38;;2266:6;;;;;;;;;;;2245:38;;;;;;;;;;;;2303:8;2294:6;;:17;;;;;;;;;;;;;;;;;;2132:187;:::o
Swarm Source
bzzr://e8df9b98c1a9df30c20e6acf5c946b4ed15488fd5f845848a8c415c271bf6474
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.