More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 51 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Unlock Vested To... | 20919757 | 11 days ago | IN | 0 ETH | 0.00094399 | ||||
Unlock Vested To... | 20468727 | 74 days ago | IN | 0 ETH | 0.00024522 | ||||
Unlock Vested To... | 20234678 | 107 days ago | IN | 0 ETH | 0.00108519 | ||||
Unlock Vested To... | 19827290 | 164 days ago | IN | 0 ETH | 0.00045591 | ||||
Unlock Vested To... | 19532136 | 205 days ago | IN | 0 ETH | 0.00193514 | ||||
Unlock Vested To... | 19360892 | 229 days ago | IN | 0 ETH | 0.00490315 | ||||
Unlock Vested To... | 19296793 | 238 days ago | IN | 0 ETH | 0.00157962 | ||||
Unlock Vested To... | 19161485 | 257 days ago | IN | 0 ETH | 0.00123332 | ||||
Unlock Vested To... | 18990783 | 281 days ago | IN | 0 ETH | 0.00347844 | ||||
Unlock Vested To... | 18920367 | 291 days ago | IN | 0 ETH | 0.00222231 | ||||
Unlock Vested To... | 18775718 | 311 days ago | IN | 0 ETH | 0.00300209 | ||||
Unlock Vested To... | 18684231 | 324 days ago | IN | 0 ETH | 0.00235638 | ||||
Unlock Vested To... | 18641086 | 330 days ago | IN | 0 ETH | 0.00198451 | ||||
Unlock Vested To... | 18533614 | 345 days ago | IN | 0 ETH | 0.0019056 | ||||
Unlock Vested To... | 18418300 | 361 days ago | IN | 0 ETH | 0.0013316 | ||||
Unlock Vested To... | 18346855 | 371 days ago | IN | 0 ETH | 0.00043729 | ||||
Unlock Vested To... | 18234931 | 387 days ago | IN | 0 ETH | 0.00174367 | ||||
Unlock Vested To... | 18077529 | 409 days ago | IN | 0 ETH | 0.00111119 | ||||
Unlock Vested To... | 17927195 | 430 days ago | IN | 0 ETH | 0.00159856 | ||||
Unlock Vested To... | 17828305 | 444 days ago | IN | 0 ETH | 0.00199637 | ||||
Unlock Vested To... | 17792500 | 449 days ago | IN | 0 ETH | 0.00202645 | ||||
Unlock Vested To... | 17613358 | 474 days ago | IN | 0 ETH | 0.00387455 | ||||
Unlock Vested To... | 17249908 | 525 days ago | IN | 0 ETH | 0.00313953 | ||||
Unlock Vested To... | 17173365 | 536 days ago | IN | 0 ETH | 0.00841428 | ||||
Granting | 17173357 | 536 days ago | IN | 0 ETH | 0.01403144 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
OVRVesting
Compiler Version
v0.4.24+commit.e67f0147
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-12-26 */ pragma solidity 0.4.24; // File: node_modules/openzeppelin-solidity/contracts/math/SafeMath.sol /** * @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; } } // File: node_modules/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 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. */ constructor() 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; } } // File: node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/179 */ contract ERC20Basic { function totalSupply() public view returns (uint256); function balanceOf(address who) public view returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } // File: node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 is ERC20Basic { function allowance(address owner, address spender) public view returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value); } // File: node_modules/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 { function safeTransfer(ERC20Basic token, address to, uint256 value) internal { assert(token.transfer(to, value)); } function safeTransferFrom( ERC20 token, address from, address to, uint256 value ) internal { assert(token.transferFrom(from, to, value)); } function safeApprove(ERC20 token, address spender, uint256 value) internal { assert(token.approve(spender, value)); } } // File: contracts/OVRVesting.sol /** * @title Vesting trustee contract for OVRToken. */ contract OVRVesting is Ownable { using SafeMath for uint256; using SafeERC20 for ERC20; uint256 private constant vstart = 1608037200; //15 dec 2020 uint256 public constant vcliff = 1608037200; //15 dec 2020 uint256 public constant vend = 1797339600; // 15 dec 2026 uint256 public constant vinstallmentLength = 3600; // 60 min // OVRToken contract. ERC20 public constant token = ERC20(0x21BfBDa47A0B4B5b1248c767Ee49F7caA9B23697); // Vesting grant for a specific holder. struct Grant { uint256 value; uint256 start; uint256 cliff; uint256 end; uint256 installmentLength; // In seconds. uint256 transferred; bool revocable; } // Holder to grant information mapping. mapping (address => Grant) public grants; // Total tokens available for vesting. uint256 public totalVesting; event NewGrant(address indexed _from, address indexed _to, uint256 _value); event TokensUnlocked(address indexed _to, uint256 _value); event GrantRevoked(address indexed _holder, uint256 _refund); /** * @dev Unlock vested tokens and transfer them to their holder. */ function unlockVestedTokens() external { Grant storage grant_ = grants[msg.sender]; // Require that the grant is not empty. require(grant_.value != 0); // Get the total amount of vested tokens, according to grant. uint256 vested = calculateVestedTokens(grant_, block.timestamp); 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; } // Update transferred and total vesting amount, then transfer remaining vested funds to holder. grant_.transferred = grant_.transferred.add(transferable); totalVesting = totalVesting.sub(transferable); token.safeTransfer(msg.sender, transferable); emit TokensUnlocked(msg.sender, transferable); } /** * @dev Grant tokens to a specified address. * @param _to address The holder address. * @param _value uint256 The amount of tokens to be granted. * @param _revocable bool Whether the grant is revocable or not. */ function granting(address _to, uint256 _value, bool _revocable) external onlyOwner { require(_to != address(0)); // Don't allow holder to be this contract. require(_to != address(this)); require(_value > 0); // Require that every holder can be granted tokens only once. require(grants[_to].value == 0); // Assign a new grant. grants[_to] = Grant({ value: _value, start: vstart, cliff: vcliff, end: vend, installmentLength: vinstallmentLength, transferred: 0, revocable: _revocable }); // Since tokens have been granted, increase the total amount of vesting. totalVesting = totalVesting.add(_value); emit NewGrant(msg.sender, _to, _value); } /** * @dev Calculate the total amount of vested tokens of a holder at a given time. * @param _holder address The address of the holder. * @param _time uint256 The specific time to calculate against. * @return a uint256 Representing a holder's total amount of vested tokens. */ function vestedTokens(address _holder, uint256 _time) external constant returns (uint256) { Grant memory grant_ = grants[_holder]; if (grant_.value == 0) { return 0; } return calculateVestedTokens(grant_, _time); } /** * @dev Revoke the grant of tokens of a specifed address. * @param _holder The address which will have its tokens revoked. */ function revoke(address _holder) public onlyOwner { Grant memory grant_ = grants[_holder]; // Grant must be revocable. require(grant_.revocable); // Calculate amount of remaining tokens that are still available (i.e. not yet vested) to be returned to owner. uint256 vested = calculateVestedTokens(grant_, block.timestamp); uint256 notTransferredInstallment = vested.sub(grant_.transferred); uint256 refund = grant_.value.sub(vested); //Update of transferred not necessary due to deletion of the grant in the following step. // Remove grant information. delete grants[_holder]; // Update total vesting amount and transfer previously calculated tokens to owner. totalVesting = totalVesting.sub(refund).sub(notTransferredInstallment); // Transfer vested amount that was not yet transferred to _holder. token.safeTransfer(_holder, notTransferredInstallment); emit TokensUnlocked(_holder, notTransferredInstallment); token.safeTransfer(msg.sender, refund); emit TokensUnlocked(msg.sender, refund); emit GrantRevoked(_holder, refund); } /** * @dev Revoke all the grants of tokens. * @param _vault The address which will receive the tokens. */ function revokeAll(address _vault) external onlyOwner { uint256 transferable=token.balanceOf(address(this)); token.safeTransfer(_vault, transferable); } /** * @dev Calculate amount of vested tokens at a specifc time. * @param _grant Grant The vesting grant. * @param _time uint256 The time to be checked * @return a uint256 Representing the amount of vested tokens of a specific grant. */ 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.end) { return _grant.value; } // Calculate amount of installments past until now. // NOTE result gets floored because of integer division. uint256 installmentsPast = _time.sub(_grant.start).div(_grant.installmentLength); // Calculate amount of days in entire vesting period. uint256 vestingDays = _grant.end.sub(_grant.start); // Calculate and return installments that have passed according to vesting days that have passed. return _grant.value.mul(installmentsPast.mul(_grant.installmentLength)).div(vestingDays); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":"vinstallmentLength","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_revocable","type":"bool"}],"name":"granting","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"vend","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_holder","type":"address"}],"name":"revoke","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"vcliff","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":"address"}],"name":"grants","outputs":[{"name":"value","type":"uint256"},{"name":"start","type":"uint256"},{"name":"cliff","type":"uint256"},{"name":"end","type":"uint256"},{"name":"installmentLength","type":"uint256"},{"name":"transferred","type":"uint256"},{"name":"revocable","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_vault","type":"address"}],"name":"revokeAll","outputs":[],"payable":false,"stateMutability":"nonpayable","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"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"NewGrant","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"TokensUnlocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_holder","type":"address"},{"indexed":false,"name":"_refund","type":"uint256"}],"name":"GrantRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
6080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611328806100536000396000f3006080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631a64adae146100ca5780632d781e731461012b5780632f974a6b146101565780634598507b146101af57806374a8f103146101da57806378d43ec31461021d5780637c17357d1461024857806383fcf973146102735780638da5cb5b1461028a578063b869cea3146102e1578063e7dd4b2c14610366578063f2fde38b146103a9578063fc0c546a146103ec575b600080fd5b3480156100d657600080fd5b50610115600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610443565b6040518082815260200191505060405180910390f35b34801561013757600080fd5b5061014061051b565b6040518082815260200191505060405180910390f35b34801561016257600080fd5b506101ad600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803515159060200190929190505050610521565b005b3480156101bb57600080fd5b506101c46107bb565b6040518082815260200191505060405180910390f35b3480156101e657600080fd5b5061021b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c3565b005b34801561022957600080fd5b50610232610b3f565b6040518082815260200191505060405180910390f35b34801561025457600080fd5b5061025d610b47565b6040518082815260200191505060405180910390f35b34801561027f57600080fd5b50610288610b4d565b005b34801561029657600080fd5b5061029f610d18565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102ed57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d3d565b604051808881526020018781526020018681526020018581526020018481526020018381526020018215151515815260200197505050505050505060405180910390f35b34801561037257600080fd5b506103a7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d8c565b005b3480156103b557600080fd5b506103ea600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f18565b005b3480156103f857600080fd5b5061040161106d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600061044d6112bc565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060e060405190810160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820160009054906101000a900460ff16151515158152505090506000816000015114156105075760009150610514565b6105118184611085565b91505b5092915050565b610e1081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561057c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156105b857600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156105f357600080fd5b60008211151561060257600080fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414151561065357600080fd5b60e060405190810160405280838152602001635fd8b3508152602001635fd8b3508152602001636b2139d08152602001610e10815260200160008152602001821515815250600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c08201518160060160006101000a81548160ff02191690831515021790555090505061074b8260025461114e90919063ffffffff16565b6002819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ffabf00c3717e5e33d6fcc433d4d70ef919a4101fb7d5c444fe349927034eaa45846040518082815260200191505060405180910390a3505050565b636b2139d081565b6107cb6112bc565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561082b57600080fd5b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060e060405190810160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820160009054906101000a900460ff16151515158152505093508360c0015115156108df57600080fd5b6108e98442611085565b92506109028460a001518461116a90919063ffffffff16565b915061091b83856000015161116a90919063ffffffff16565b9050600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160009055600182016000905560028201600090556003820160009055600482016000905560058201600090556006820160006101000a81549060ff021916905550506109ca826109bc8360025461116a90919063ffffffff16565b61116a90919063ffffffff16565b600281905550610a0f85837321bfbda47a0b4b5b1248c767ee49f7caa9b2369773ffffffffffffffffffffffffffffffffffffffff166111839092919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167fe7b379c6c1fa169e9079c25e9143b127637eef8ec8c9d5c06ddb4ab3e1195888836040518082815260200191505060405180910390a2610a9c33827321bfbda47a0b4b5b1248c767ee49f7caa9b2369773ffffffffffffffffffffffffffffffffffffffff166111839092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167fe7b379c6c1fa169e9079c25e9143b127637eef8ec8c9d5c06ddb4ab3e1195888826040518082815260200191505060405180910390a28473ffffffffffffffffffffffffffffffffffffffff167f740528a7c317c81f0923adc30df75db3f448298c78cdaf548adfcfdb3c84ff6f826040518082815260200191505060405180910390a25050505050565b635fd8b35081565b60025481565b6000806000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002092506000836000015414151515610ba757600080fd5b610c148360e060405190810160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820160009054906101000a900460ff16151515158152505042611085565b91506000821415610c2457610d13565b610c3b83600501548361116a90919063ffffffff16565b90506000811415610c4b57610d13565b610c6281846005015461114e90919063ffffffff16565b8360050181905550610c7f8160025461116a90919063ffffffff16565b600281905550610cc433827321bfbda47a0b4b5b1248c767ee49f7caa9b2369773ffffffffffffffffffffffffffffffffffffffff166111839092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167fe7b379c6c1fa169e9079c25e9143b127637eef8ec8c9d5c06ddb4ab3e1195888826040518082815260200191505060405180910390a25b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060160009054906101000a900460ff16905087565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610de957600080fd5b7321bfbda47a0b4b5b1248c767ee49f7caa9b2369773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610e9857600080fd5b505af1158015610eac573d6000803e3d6000fd5b505050506040513d6020811015610ec257600080fd5b81019080805190602001909291905050509050610f1482827321bfbda47a0b4b5b1248c767ee49f7caa9b2369773ffffffffffffffffffffffffffffffffffffffff166111839092919063ffffffff16565b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f7357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610faf57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7321bfbda47a0b4b5b1248c767ee49f7caa9b2369781565b6000806000846040015184101561109f5760009250611146565b8460600151841015156110b85784600001519250611146565b6110e585608001516110d787602001518761116a90919063ffffffff16565b61126e90919063ffffffff16565b91506111028560200151866060015161116a90919063ffffffff16565b90506111438161113561112288608001518661128490919063ffffffff16565b886000015161128490919063ffffffff16565b61126e90919063ffffffff16565b92505b505092915050565b6000818301905082811015151561116157fe5b80905092915050565b600082821115151561117857fe5b818303905092915050565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561122657600080fd5b505af115801561123a573d6000803e3d6000fd5b505050506040513d602081101561125057600080fd5b8101908080519060200190929190505050151561126957fe5b505050565b6000818381151561127b57fe5b04905092915050565b60008083141561129757600090506112b6565b81830290508183828115156112a857fe5b041415156112b257fe5b8090505b92915050565b60e06040519081016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815250905600a165627a7a72305820235b6f852307424e2d29509b8d563589231d2f6ee23fe0eebed1b568ebb8bba30029
Deployed Bytecode
0x6080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631a64adae146100ca5780632d781e731461012b5780632f974a6b146101565780634598507b146101af57806374a8f103146101da57806378d43ec31461021d5780637c17357d1461024857806383fcf973146102735780638da5cb5b1461028a578063b869cea3146102e1578063e7dd4b2c14610366578063f2fde38b146103a9578063fc0c546a146103ec575b600080fd5b3480156100d657600080fd5b50610115600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610443565b6040518082815260200191505060405180910390f35b34801561013757600080fd5b5061014061051b565b6040518082815260200191505060405180910390f35b34801561016257600080fd5b506101ad600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803515159060200190929190505050610521565b005b3480156101bb57600080fd5b506101c46107bb565b6040518082815260200191505060405180910390f35b3480156101e657600080fd5b5061021b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c3565b005b34801561022957600080fd5b50610232610b3f565b6040518082815260200191505060405180910390f35b34801561025457600080fd5b5061025d610b47565b6040518082815260200191505060405180910390f35b34801561027f57600080fd5b50610288610b4d565b005b34801561029657600080fd5b5061029f610d18565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102ed57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d3d565b604051808881526020018781526020018681526020018581526020018481526020018381526020018215151515815260200197505050505050505060405180910390f35b34801561037257600080fd5b506103a7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d8c565b005b3480156103b557600080fd5b506103ea600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f18565b005b3480156103f857600080fd5b5061040161106d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600061044d6112bc565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060e060405190810160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820160009054906101000a900460ff16151515158152505090506000816000015114156105075760009150610514565b6105118184611085565b91505b5092915050565b610e1081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561057c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156105b857600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156105f357600080fd5b60008211151561060257600080fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414151561065357600080fd5b60e060405190810160405280838152602001635fd8b3508152602001635fd8b3508152602001636b2139d08152602001610e10815260200160008152602001821515815250600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c08201518160060160006101000a81548160ff02191690831515021790555090505061074b8260025461114e90919063ffffffff16565b6002819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ffabf00c3717e5e33d6fcc433d4d70ef919a4101fb7d5c444fe349927034eaa45846040518082815260200191505060405180910390a3505050565b636b2139d081565b6107cb6112bc565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561082b57600080fd5b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060e060405190810160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820160009054906101000a900460ff16151515158152505093508360c0015115156108df57600080fd5b6108e98442611085565b92506109028460a001518461116a90919063ffffffff16565b915061091b83856000015161116a90919063ffffffff16565b9050600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160009055600182016000905560028201600090556003820160009055600482016000905560058201600090556006820160006101000a81549060ff021916905550506109ca826109bc8360025461116a90919063ffffffff16565b61116a90919063ffffffff16565b600281905550610a0f85837321bfbda47a0b4b5b1248c767ee49f7caa9b2369773ffffffffffffffffffffffffffffffffffffffff166111839092919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167fe7b379c6c1fa169e9079c25e9143b127637eef8ec8c9d5c06ddb4ab3e1195888836040518082815260200191505060405180910390a2610a9c33827321bfbda47a0b4b5b1248c767ee49f7caa9b2369773ffffffffffffffffffffffffffffffffffffffff166111839092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167fe7b379c6c1fa169e9079c25e9143b127637eef8ec8c9d5c06ddb4ab3e1195888826040518082815260200191505060405180910390a28473ffffffffffffffffffffffffffffffffffffffff167f740528a7c317c81f0923adc30df75db3f448298c78cdaf548adfcfdb3c84ff6f826040518082815260200191505060405180910390a25050505050565b635fd8b35081565b60025481565b6000806000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002092506000836000015414151515610ba757600080fd5b610c148360e060405190810160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820160009054906101000a900460ff16151515158152505042611085565b91506000821415610c2457610d13565b610c3b83600501548361116a90919063ffffffff16565b90506000811415610c4b57610d13565b610c6281846005015461114e90919063ffffffff16565b8360050181905550610c7f8160025461116a90919063ffffffff16565b600281905550610cc433827321bfbda47a0b4b5b1248c767ee49f7caa9b2369773ffffffffffffffffffffffffffffffffffffffff166111839092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167fe7b379c6c1fa169e9079c25e9143b127637eef8ec8c9d5c06ddb4ab3e1195888826040518082815260200191505060405180910390a25b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060160009054906101000a900460ff16905087565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610de957600080fd5b7321bfbda47a0b4b5b1248c767ee49f7caa9b2369773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610e9857600080fd5b505af1158015610eac573d6000803e3d6000fd5b505050506040513d6020811015610ec257600080fd5b81019080805190602001909291905050509050610f1482827321bfbda47a0b4b5b1248c767ee49f7caa9b2369773ffffffffffffffffffffffffffffffffffffffff166111839092919063ffffffff16565b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f7357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610faf57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7321bfbda47a0b4b5b1248c767ee49f7caa9b2369781565b6000806000846040015184101561109f5760009250611146565b8460600151841015156110b85784600001519250611146565b6110e585608001516110d787602001518761116a90919063ffffffff16565b61126e90919063ffffffff16565b91506111028560200151866060015161116a90919063ffffffff16565b90506111438161113561112288608001518661128490919063ffffffff16565b886000015161128490919063ffffffff16565b61126e90919063ffffffff16565b92505b505092915050565b6000818301905082811015151561116157fe5b80905092915050565b600082821115151561117857fe5b818303905092915050565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561122657600080fd5b505af115801561123a573d6000803e3d6000fd5b505050506040513d602081101561125057600080fd5b8101908080519060200190929190505050151561126957fe5b505050565b6000818381151561127b57fe5b04905092915050565b60008083141561129757600090506112b6565b81830290508183828115156112a857fe5b041415156112b257fe5b8090505b92915050565b60e06040519081016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815250905600a165627a7a72305820235b6f852307424e2d29509b8d563589231d2f6ee23fe0eebed1b568ebb8bba30029
Deployed Bytecode Sourcemap
4331:7077:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8092:268;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8092:268:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4632:49;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4632:49:0;;;;;;;;;;;;;;;;;;;;;;;6849:919;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6849:919:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4569:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4569:41:0;;;;;;;;;;;;;;;;;;;;;;;8521:1301;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8521:1301:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4505:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4505:43:0;;;;;;;;;;;;;;;;;;;;;;;5231:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5231:27:0;;;;;;;;;;;;;;;;;;;;;;;5574:1015;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5574:1015:0;;;;;;1552:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1552:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;5138:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5138:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9968:175;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9968:175:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2167:178;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2167:178:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4731:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4731:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;8092:268;8173:7;8193:19;;:::i;:::-;8215:6;:15;8222:7;8215:15;;;;;;;;;;;;;;;8193:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8261:1;8245:6;:12;;;:17;8241:58;;;8286:1;8279:8;;;;8241:58;8316:36;8338:6;8346:5;8316:21;:36::i;:::-;8309:43;;8092:268;;;;;;:::o;4632:49::-;4677:4;4632:49;:::o;6849:919::-;1980:5;;;;;;;;;;;1966:19;;:10;:19;;;1958:28;;;;;;;;6981:1;6966:17;;:3;:17;;;;6958:26;;;;;;;;7080:4;7065:20;;:3;:20;;;;7057:29;;;;;;;;7124:1;7115:6;:10;7107:19;;;;;;;;7247:1;7226:6;:11;7233:3;7226:11;;;;;;;;;;;;;;;:17;;;:22;7218:31;;;;;;;;7316:243;;;;;;;;;7344:6;7316:243;;;;4474:10;7316:243;;;;4538:10;7316:243;;;;4600:10;7316:243;;;;4677:4;7316:243;;;;7510:1;7316:243;;;;7537:10;7316:243;;;;;7302:6;:11;7309:3;7302:11;;;;;;;;;;;;;;;:257;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7677:24;7694:6;7677:12;;:16;;:24;;;;:::i;:::-;7662:12;:39;;;;7748:3;7727:33;;7736:10;7727:33;;;7753:6;7727:33;;;;;;;;;;;;;;;;;;6849:919;;;:::o;4569:41::-;4600:10;4569:41;:::o;8521:1301::-;8582:19;;:::i;:::-;8828:14;8912:33;8999:14;1980:5;;;;;;;;;;;1966:19;;:10;:19;;;1958:28;;;;;;;;8604:6;:15;8611:7;8604:15;;;;;;;;;;;;;;;8582:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8677:6;:16;;;8669:25;;;;;;;;8845:46;8867:6;8875:15;8845:21;:46::i;:::-;8828:63;;8948:30;8959:6;:18;;;8948:6;:10;;:30;;;;:::i;:::-;8912:66;;9016:24;9033:6;9016;:12;;;:16;;:24;;;;:::i;:::-;8999:41;;9215:6;:15;9222:7;9215:15;;;;;;;;;;;;;;;;9208:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9358:55;9387:25;9358:24;9375:6;9358:12;;:16;;:24;;;;:::i;:::-;:28;;:55;;;;:::i;:::-;9343:12;:70;;;;9510:54;9529:7;9538:25;4767:42;9510:18;;;;:54;;;;;:::i;:::-;9605:7;9590:50;;;9614:25;9590:50;;;;;;;;;;;;;;;;;;9661:38;9680:10;9692:6;4767:42;9661:18;;;;:38;;;;;:::i;:::-;9740:10;9725:34;;;9752:6;9725:34;;;;;;;;;;;;;;;;;;9798:7;9785:29;;;9807:6;9785:29;;;;;;;;;;;;;;;;;;8521:1301;;;;;:::o;4505:43::-;4538:10;4505:43;:::o;5231:27::-;;;;:::o;5574:1015::-;5624:20;5845:14;6090:20;5647:6;:18;5654:10;5647:18;;;;;;;;;;;;;;;5624:41;;5751:1;5735:6;:12;;;:17;;5727:26;;;;;;;;5862:46;5884:6;5862:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5892:15;5862:21;:46::i;:::-;5845:63;;5943:1;5933:6;:11;5929:50;;;5961:7;;5929:50;6113:30;6124:6;:18;;;6113:6;:10;;:30;;;;:::i;:::-;6090:53;;6184:1;6168:12;:17;6164:56;;;6202:7;;6164:56;6366:36;6389:12;6366:6;:18;;;:22;;:36;;;;:::i;:::-;6345:6;:18;;:57;;;;6428:30;6445:12;6428;;:16;;:30;;;;:::i;:::-;6413:12;:45;;;;6479:44;6498:10;6510:12;4767:42;6479:18;;;;:44;;;;;:::i;:::-;6556:10;6541:40;;;6568:12;6541:40;;;;;;;;;;;;;;;;;;5574:1015;;;;:::o;1552:20::-;;;;;;;;;;;;;:::o;5138:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9968:175::-;10033:20;1980:5;;;;;;;;;;;1966:19;;:10;:19;;;1958:28;;;;;;;;4767:42;10054:15;;;10078:4;10054:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10054:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10054:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10054:30:0;;;;;;;;;;;;;;;;10033:51;;10095:40;10114:6;10122:12;4767:42;10095:18;;;;:40;;;;;:::i;:::-;9968:175;;:::o;2167:178::-;1980:5;;;;;;;;;;;1966:19;;:10;:19;;;1958:28;;;;;;;;2264:1;2244:22;;:8;:22;;;;2236:31;;;;;;;;2307:8;2279:37;;2300:5;;;;;;;;;;;2279:37;;;;;;;;;;;;2331:8;2323:5;;:16;;;;;;;;;;;;;;;;;;2167:178;:::o;4731:79::-;4767:42;4731:79;:::o;10426:979::-;10508:7;10969:24;11132:19;10603:6;:12;;;10595:5;:20;10591:61;;;10639:1;10632:8;;;;10591:61;10765:6;:10;;;10756:5;:19;;10752:71;;;10799:6;:12;;;10792:19;;;;10752:71;10996:53;11024:6;:24;;;10996:23;11006:6;:12;;;10996:5;:9;;:23;;;;:::i;:::-;:27;;:53;;;;:::i;:::-;10969:80;;11154:28;11169:6;:12;;;11154:6;:10;;;:14;;:28;;;;:::i;:::-;11132:50;;11316:81;11385:11;11316:64;11333:46;11354:6;:24;;;11333:16;:20;;:46;;;;:::i;:::-;11316:6;:12;;;:16;;:64;;;;:::i;:::-;:68;;:81;;;;:::i;:::-;11309:88;;10426:979;;;;;;;:::o;1122:127::-;1180:9;1206:1;1202;:5;1198:9;;1226:1;1221;:6;;1214:14;;;;;;1242:1;1235:8;;1122:127;;;;:::o;942:113::-;1000:7;1028:1;1023;:6;;1016:14;;;;;;1048:1;1044;:5;1037:12;;942:113;;;;:::o;3790:122::-;3880:5;:14;;;3895:2;3899:5;3880:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3880:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3880:25:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3880:25:0;;;;;;;;;;;;;;;;3873:33;;;;;;3790:122;;;:::o;548:277::-;606:7;818:1;814;:5;;;;;;;;807:12;;548:277;;;;:::o;287:174::-;345:9;372:1;367;:6;363:37;;;391:1;384:8;;;;363:37;414:1;410;:5;406:9;;438:1;433;429;:5;;;;;;;;:10;422:18;;;;;;454:1;447:8;;287:174;;;;;:::o;4331:7077::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
bzzr://235b6f852307424e2d29509b8d563589231d2f6ee23fe0eebed1b568ebb8bba3
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.