Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 681 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Unlock Vested To... | 20877629 | 19 hrs ago | IN | 0 ETH | 0.00047292 | ||||
Unlock Vested To... | 20875891 | 25 hrs ago | IN | 0 ETH | 0.00036347 | ||||
Unlock Vested To... | 20870005 | 44 hrs ago | IN | 0 ETH | 0.00082583 | ||||
Unlock Vested To... | 20864246 | 2 days ago | IN | 0 ETH | 0.00173334 | ||||
Unlock Vested To... | 20860998 | 3 days ago | IN | 0 ETH | 0.00037353 | ||||
Unlock Vested To... | 20853799 | 4 days ago | IN | 0 ETH | 0.00051807 | ||||
Unlock Vested To... | 20846264 | 5 days ago | IN | 0 ETH | 0.00054284 | ||||
Unlock Vested To... | 20840140 | 6 days ago | IN | 0 ETH | 0.00081281 | ||||
Unlock Vested To... | 20839514 | 6 days ago | IN | 0 ETH | 0.00100628 | ||||
Unlock Vested To... | 20825536 | 8 days ago | IN | 0 ETH | 0.00089917 | ||||
Unlock Vested To... | 20821090 | 8 days ago | IN | 0 ETH | 0.00325268 | ||||
Unlock Vested To... | 20821056 | 8 days ago | IN | 0 ETH | 0.00338215 | ||||
Unlock Vested To... | 20805693 | 10 days ago | IN | 0 ETH | 0.00078253 | ||||
Unlock Vested To... | 20802619 | 11 days ago | IN | 0 ETH | 0.0004054 | ||||
Unlock Vested To... | 20802056 | 11 days ago | IN | 0 ETH | 0.00044461 | ||||
Unlock Vested To... | 20788979 | 13 days ago | IN | 0 ETH | 0.00038406 | ||||
Revoke | 20778195 | 14 days ago | IN | 0 ETH | 0.00089219 | ||||
Revoke | 20778183 | 14 days ago | IN | 0 ETH | 0.00097356 | ||||
Unlock Vested To... | 20776827 | 14 days ago | IN | 0 ETH | 0.00071504 | ||||
Unlock Vested To... | 20776619 | 14 days ago | IN | 0 ETH | 0.00066575 | ||||
Unlock Vested To... | 20776603 | 14 days ago | IN | 0 ETH | 0.0009028 | ||||
Unlock Vested To... | 20774609 | 15 days ago | IN | 0 ETH | 0.00056636 | ||||
Unlock Vested To... | 20755217 | 17 days ago | IN | 0 ETH | 0.00018681 | ||||
Unlock Vested To... | 20754891 | 17 days ago | IN | 0 ETH | 0.0001384 | ||||
Unlock Vested To... | 20749845 | 18 days ago | IN | 0 ETH | 0.0003021 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
MultipleVesting
Compiler Version
v0.4.21+commit.dfe3193c
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-08-08 */ pragma solidity ^0.4.21; /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { if (a == 0) { return 0; } c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws 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 a / b; } /** * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256 c) { c = a + b; assert(c >= a); return c; } } /** * @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 public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ function Ownable() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @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 { require(newOwner != address(0)); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } } contract ERC20Token { function mintTokens(address _atAddress, uint256 _amount) public; } contract MultipleVesting is Ownable { using SafeMath for uint256; struct Grant { uint256 start; uint256 cliff; uint256 duration; uint256 value; uint256 transferred; bool revocable; } mapping (address => Grant) public grants; mapping (uint256 => address) public indexedGrants; uint256 public index; uint256 public totalVesting; ERC20Token token; event NewGrant(address indexed _address, uint256 _value); event UnlockGrant(address indexed _holder, uint256 _value); event RevokeGrant(address indexed _holder, uint256 _refund); function setToken(address _token) public onlyOwner { token = ERC20Token(_token); } /** * @dev Allows the current owner to add new grant * @param _address Address of grant * @param _start Start time of vesting in timestamp * @param _cliff Cliff in timestamp * @param _duration End of vesting in timestamp * @param _value Number of tokens to be vested * @param _revocable Can grant be revoked */ function newGrant(address _address, uint256 _start, uint256 _cliff, uint256 _duration, uint256 _value, bool _revocable) public onlyOwner { if(grants[_address].value == 0) { indexedGrants[index] = _address; index = index.add(1); } grants[_address] = Grant({ start: _start, cliff: _cliff, duration: _duration, value: _value, transferred: 0, revocable: _revocable }); totalVesting = totalVesting.add(_value); emit NewGrant(_address, _value); } /** * @dev Allows the curretn owner to revoke grant * @param _grant Address of grant to be revoked */ function revoke(address _grant) public onlyOwner { Grant storage grant = grants[_grant]; require(grant.revocable); uint256 refund = grant.value.sub(grant.transferred); // Remove the grant. delete grants[_grant]; totalVesting = totalVesting.sub(refund); token.mintTokens(msg.sender, refund); emit RevokeGrant(_grant, refund); } /** * @dev Number of veset token for _holder on _time * @param _holder Address of holder * @param _time Timestamp of time to check for vest amount */ function vestedTokens(address _holder, uint256 _time) public constant returns (uint256) { Grant storage grant = grants[_holder]; if (grant.value == 0) { return 0; } return calculateVestedTokens(grant, _time); } /** * @dev Calculate amount of vested tokens * @param _grant Grant to calculate for * @param _time Timestamp of time to check for */ function calculateVestedTokens(Grant _grant, uint256 _time) private pure returns (uint256) { // If we're before the cliff, then nothing is vested. if (_time < _grant.cliff) { return 0; } // If we're after the end of the vesting period - everything is vested; if (_time >= _grant.duration) { return _grant.value; } // Interpolate all vested tokens: vestedTokens = tokens/// (time - start) / (end - start) return _grant.value.mul(_time.sub(_grant.start)).div(_grant.duration.sub(_grant.start)); } /** * @dev Distribute tokens to grants */ function vest() public onlyOwner { for(uint16 i = 0; i < index; i++) { Grant storage grant = grants[indexedGrants[i]]; if(grant.value == 0) continue; uint256 vested = calculateVestedTokens(grant, now); if (vested == 0) { continue; } // Make sure the holder doesn't transfer more than what he already has. uint256 transferable = vested.sub(grant.transferred); if (transferable == 0) { continue; } grant.transferred = grant.transferred.add(transferable); totalVesting = totalVesting.sub(transferable); token.mintTokens(indexedGrants[i], transferable); emit UnlockGrant(msg.sender, transferable); } } function unlockVestedTokens() public { Grant storage grant = grants[msg.sender]; require(grant.value != 0); // Get the total amount of vested tokens, acccording to grant. uint256 vested = calculateVestedTokens(grant, now); if (vested == 0) { return; } // Make sure the holder doesn't transfer more than what he already has. uint256 transferable = vested.sub(grant.transferred); if (transferable == 0) { return; } grant.transferred = grant.transferred.add(transferable); totalVesting = totalVesting.sub(transferable); token.mintTokens(msg.sender, transferable); emit UnlockGrant(msg.sender, transferable); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"setToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_start","type":"uint256"},{"name":"_cliff","type":"uint256"},{"name":"_duration","type":"uint256"},{"name":"_value","type":"uint256"},{"name":"_revocable","type":"bool"}],"name":"newGrant","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_holder","type":"address"},{"name":"_time","type":"uint256"}],"name":"vestedTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"index","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"vest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_grant","type":"address"}],"name":"revoke","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalVesting","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unlockVestedTokens","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":"","type":"uint256"}],"name":"indexedGrants","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"grants","outputs":[{"name":"start","type":"uint256"},{"name":"cliff","type":"uint256"},{"name":"duration","type":"uint256"},{"name":"value","type":"uint256"},{"name":"transferred","type":"uint256"},{"name":"revocable","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_address","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"NewGrant","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_holder","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"UnlockGrant","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_holder","type":"address"},{"indexed":false,"name":"_refund","type":"uint256"}],"name":"RevokeGrant","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
6060604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112f4806100536000396000f3006060604052600436106100ba576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063144fa6d7146100bf57806319c9652c146100f85780631a64adae146101605780632986c0e5146101b6578063458efde3146101df57806374a8f103146101f45780637c17357d1461022d57806383fcf973146102565780638da5cb5b1461026b578063910bfecc146102c0578063b869cea314610323578063f2fde38b14610397575b600080fd5b34156100ca57600080fd5b6100f6600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506103d0565b005b341561010357600080fd5b61015e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091908035906020019091908035906020019091908035906020019091908035151590602001909190505061046f565b005b341561016b57600080fd5b6101a0600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106bc565b6040518082815260200191505060405180910390f35b34156101c157600080fd5b6101c9610783565b6040518082815260200191505060405180910390f35b34156101ea57600080fd5b6101f2610789565b005b34156101ff57600080fd5b61022b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ac8565b005b341561023857600080fd5b610240610d61565b6040518082815260200191505060405180910390f35b341561026157600080fd5b610269610d67565b005b341561027657600080fd5b61027e610fbd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102cb57600080fd5b6102e16004808035906020019091905050610fe2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561032e57600080fd5b61035a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611015565b6040518087815260200186815260200185815260200184815260200183815260200182151515158152602001965050505050505060405180910390f35b34156103a257600080fd5b6103ce600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061105e565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561042b57600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104ca57600080fd5b6000600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301541415610586578560026000600354815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061057f60016003546111b390919063ffffffff16565b6003819055505b60c06040519081016040528086815260200185815260200184815260200183815260200160008152602001821515815250600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff021916908315150217905550905050610660826004546111b390919063ffffffff16565b6004819055508573ffffffffffffffffffffffffffffffffffffffff167f9f808b48aa49d6354341cec305ba80825f6548f485ac497629c213c699e0b456836040518082815260200191505060405180910390a2505050505050565b600080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600301541415610716576000915061077c565b6107798160c0604051908101604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820160009054906101000a900460ff161515151581525050846111cf565b91505b5092915050565b60035481565b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107ea57600080fd5b600093505b6003548461ffff161015610ac25760016000600260008761ffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020925060008360030154141561088757610ab5565b6108ea8360c0604051908101604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820160009054906101000a900460ff161515151581525050426111cf565b915060008214156108fa57610ab5565b61091183600401548361126190919063ffffffff16565b9050600081141561092157610ab5565b6109388184600401546111b390919063ffffffff16565b83600401819055506109558160045461126190919063ffffffff16565b600481905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0dda65c600260008761ffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515610a5657600080fd5b5af11515610a6357600080fd5b5050503373ffffffffffffffffffffffffffffffffffffffff167f18a0e773189b1ed3c86000a786f0a897168a9b8b2a805c482c91e69ca25e4b3c826040518082815260200191505060405180910390a25b83806001019450506107ef565b50505050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b2657600080fd5b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091508160050160009054906101000a900460ff161515610b8457600080fd5b610b9f8260040154836003015461126190919063ffffffff16565b9050600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600090556002820160009055600382016000905560048201600090556005820160006101000a81549060ff02191690555050610c348160045461126190919063ffffffff16565b600481905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0dda65c33836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515610cfe57600080fd5b5af11515610d0b57600080fd5b5050508273ffffffffffffffffffffffffffffffffffffffff167fe25d8515ad21a65f901eaac99e62ae923aa01c8eb5812dce069abd9ea2785b57826040518082815260200191505060405180910390a2505050565b60045481565b6000806000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002092506000836003015414151515610dc157600080fd5b610e248360c0604051908101604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820160009054906101000a900460ff161515151581525050426111cf565b91506000821415610e3457610fb8565b610e4b83600401548361126190919063ffffffff16565b90506000811415610e5b57610fb8565b610e728184600401546111b390919063ffffffff16565b8360040181905550610e8f8160045461126190919063ffffffff16565b600481905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0dda65c33836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515610f5957600080fd5b5af11515610f6657600080fd5b5050503373ffffffffffffffffffffffffffffffffffffffff167f18a0e773189b1ed3c86000a786f0a897168a9b8b2a805c482c91e69ca25e4b3c826040518082815260200191505060405180910390a25b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050160009054906101000a900460ff16905086565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110b957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156110f557600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081830190508281101515156111c657fe5b80905092915050565b600082602001518210156111e6576000905061125b565b8260400151821015156111ff578260600151905061125b565b61125861121d8460000151856040015161126190919063ffffffff16565b61124a61123786600001518661126190919063ffffffff16565b866060015161127a90919063ffffffff16565b6112b290919063ffffffff16565b90505b92915050565b600082821115151561126f57fe5b818303905092915050565b60008083141561128d57600090506112ac565b818302905081838281151561129e57fe5b041415156112a857fe5b8090505b92915050565b600081838115156112bf57fe5b049050929150505600a165627a7a72305820ff5e8c3409e91fc32ce0446d66d9389ee288cd410c5098c9a0d99ededafd6a950029
Deployed Bytecode
0x6060604052600436106100ba576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063144fa6d7146100bf57806319c9652c146100f85780631a64adae146101605780632986c0e5146101b6578063458efde3146101df57806374a8f103146101f45780637c17357d1461022d57806383fcf973146102565780638da5cb5b1461026b578063910bfecc146102c0578063b869cea314610323578063f2fde38b14610397575b600080fd5b34156100ca57600080fd5b6100f6600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506103d0565b005b341561010357600080fd5b61015e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091908035906020019091908035906020019091908035906020019091908035151590602001909190505061046f565b005b341561016b57600080fd5b6101a0600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106bc565b6040518082815260200191505060405180910390f35b34156101c157600080fd5b6101c9610783565b6040518082815260200191505060405180910390f35b34156101ea57600080fd5b6101f2610789565b005b34156101ff57600080fd5b61022b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ac8565b005b341561023857600080fd5b610240610d61565b6040518082815260200191505060405180910390f35b341561026157600080fd5b610269610d67565b005b341561027657600080fd5b61027e610fbd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102cb57600080fd5b6102e16004808035906020019091905050610fe2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561032e57600080fd5b61035a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611015565b6040518087815260200186815260200185815260200184815260200183815260200182151515158152602001965050505050505060405180910390f35b34156103a257600080fd5b6103ce600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061105e565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561042b57600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104ca57600080fd5b6000600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301541415610586578560026000600354815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061057f60016003546111b390919063ffffffff16565b6003819055505b60c06040519081016040528086815260200185815260200184815260200183815260200160008152602001821515815250600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff021916908315150217905550905050610660826004546111b390919063ffffffff16565b6004819055508573ffffffffffffffffffffffffffffffffffffffff167f9f808b48aa49d6354341cec305ba80825f6548f485ac497629c213c699e0b456836040518082815260200191505060405180910390a2505050505050565b600080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600301541415610716576000915061077c565b6107798160c0604051908101604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820160009054906101000a900460ff161515151581525050846111cf565b91505b5092915050565b60035481565b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107ea57600080fd5b600093505b6003548461ffff161015610ac25760016000600260008761ffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020925060008360030154141561088757610ab5565b6108ea8360c0604051908101604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820160009054906101000a900460ff161515151581525050426111cf565b915060008214156108fa57610ab5565b61091183600401548361126190919063ffffffff16565b9050600081141561092157610ab5565b6109388184600401546111b390919063ffffffff16565b83600401819055506109558160045461126190919063ffffffff16565b600481905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0dda65c600260008761ffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515610a5657600080fd5b5af11515610a6357600080fd5b5050503373ffffffffffffffffffffffffffffffffffffffff167f18a0e773189b1ed3c86000a786f0a897168a9b8b2a805c482c91e69ca25e4b3c826040518082815260200191505060405180910390a25b83806001019450506107ef565b50505050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b2657600080fd5b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091508160050160009054906101000a900460ff161515610b8457600080fd5b610b9f8260040154836003015461126190919063ffffffff16565b9050600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600090556002820160009055600382016000905560048201600090556005820160006101000a81549060ff02191690555050610c348160045461126190919063ffffffff16565b600481905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0dda65c33836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515610cfe57600080fd5b5af11515610d0b57600080fd5b5050508273ffffffffffffffffffffffffffffffffffffffff167fe25d8515ad21a65f901eaac99e62ae923aa01c8eb5812dce069abd9ea2785b57826040518082815260200191505060405180910390a2505050565b60045481565b6000806000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002092506000836003015414151515610dc157600080fd5b610e248360c0604051908101604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820160009054906101000a900460ff161515151581525050426111cf565b91506000821415610e3457610fb8565b610e4b83600401548361126190919063ffffffff16565b90506000811415610e5b57610fb8565b610e728184600401546111b390919063ffffffff16565b8360040181905550610e8f8160045461126190919063ffffffff16565b600481905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f0dda65c33836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515610f5957600080fd5b5af11515610f6657600080fd5b5050503373ffffffffffffffffffffffffffffffffffffffff167f18a0e773189b1ed3c86000a786f0a897168a9b8b2a805c482c91e69ca25e4b3c826040518082815260200191505060405180910390a25b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050160009054906101000a900460ff16905086565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110b957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156110f557600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081830190508281101515156111c657fe5b80905092915050565b600082602001518210156111e6576000905061125b565b8260400151821015156111ff578260600151905061125b565b61125861121d8460000151856040015161126190919063ffffffff16565b61124a61123786600001518661126190919063ffffffff16565b866060015161127a90919063ffffffff16565b6112b290919063ffffffff16565b90505b92915050565b600082821115151561126f57fe5b818303905092915050565b60008083141561128d57600090506112ac565b818302905081838281151561129e57fe5b041415156112a857fe5b8090505b92915050565b600081838115156112bf57fe5b049050929150505600a165627a7a72305820ff5e8c3409e91fc32ce0446d66d9389ee288cd410c5098c9a0d99ededafd6a950029
Swarm Source
bzzr://ff5e8c3409e91fc32ce0446d66d9389ee288cd410c5098c9a0d99ededafd6a95
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 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.