Note: Our ether balance display is temporarily unavailable. Please check back later.
Source Code
Overview
ETH Balance
Ether balance is temporarily unavailable. Please check back later.
Token Holdings
More Info
ContractCreator
Multichain Info
N/A
Latest 25 from a total of 25 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Submit Value | 6101658 | 821 days ago | IN | 0 ETH | 0.00873665 | ||||
Submit Value | 6067821 | 827 days ago | IN | 0 ETH | 0.00850972 | ||||
Submit Value | 6067479 | 827 days ago | IN | 0 ETH | 0.0070347 | ||||
Submit Value | 6067464 | 827 days ago | IN | 0 ETH | 0.00979132 | ||||
Submit Value | 6039582 | 831 days ago | IN | 0 ETH | 0.0226902 | ||||
Submit Value | 6039511 | 831 days ago | IN | 0 ETH | 0.00567255 | ||||
Submit Value | 6027543 | 834 days ago | IN | 0 ETH | 0.00034035 | ||||
Submit Value | 6027535 | 834 days ago | IN | 0 ETH | 0.00034035 | ||||
Submit Value | 6026857 | 834 days ago | IN | 0 ETH | 0.00034035 | ||||
Submit Value | 6026701 | 834 days ago | IN | 0 ETH | 0.00034035 | ||||
Submit Value | 6026672 | 834 days ago | IN | 0 ETH | 0.00034035 | ||||
Submit Value | 6026660 | 834 days ago | IN | 0 ETH | 0.00034035 | ||||
Submit Value | 6026645 | 834 days ago | IN | 0 ETH | 0.00034035 | ||||
Submit Value | 6026644 | 834 days ago | IN | 0 ETH | 0.00034035 | ||||
Submit Value | 6026633 | 834 days ago | IN | 0 ETH | 0.00034035 | ||||
Submit Value | 6026628 | 834 days ago | IN | 0 ETH | 0.00034035 | ||||
Submit Value | 6026621 | 834 days ago | IN | 0 ETH | 0.00034035 | ||||
Submit Value | 6026612 | 834 days ago | IN | 0 ETH | 0.00034035 | ||||
Submit Value | 6021175 | 835 days ago | IN | 0 ETH | 0.00034035 | ||||
Submit Value | 5982570 | 841 days ago | IN | 0 ETH | 0.00034035 | ||||
Submit Value | 5982567 | 841 days ago | IN | 0 ETH | 0.00034035 | ||||
Submit Value | 5982365 | 841 days ago | IN | 0 ETH | 0.00034035 | ||||
Submit Value | 5982353 | 841 days ago | IN | 0 ETH | 0.00034035 | ||||
Submit Value | 5982339 | 841 days ago | IN | 0 ETH | 0.00034035 | ||||
Submit Value | 5982308 | 841 days ago | IN | 0 ETH | 0.00034035 |
Loading...
Loading
Contract Name:
TellorPlayground
Compiler Version
v0.8.3+commit.8d00100c
Optimization Enabled:
Yes with 300 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.3; contract TellorPlayground { // Events event Approval( address indexed owner, address indexed spender, uint256 value ); event NewReport( bytes32 _queryId, uint256 _time, bytes _value, uint256 _reward, uint256 _nonce, bytes _queryData, address _reporter ); event TipAdded( address indexed _user, bytes32 indexed _queryId, uint256 _tip, uint256 _totalTip, bytes _queryData ); event Transfer(address indexed from, address indexed to, uint256 value); // Storage mapping(bytes32 => address) public addresses; mapping(bytes32 => mapping(uint256 => bool)) public isDisputed; //queryId -> timestamp -> value mapping(bytes32 => uint256[]) public timestamps; mapping(bytes32 => uint256) public tips; // mapping of data IDs to the amount of TRB they are tipped mapping(bytes32 => mapping(uint256 => bytes)) public values; //queryId -> timestamp -> value mapping(bytes32 => uint256[]) public voteRounds; // mapping of vote identifier hashes to an array of dispute IDs mapping(address => mapping(address => uint256)) private _allowances; mapping(address => uint256) private _balances; uint256 public constant timeBasedReward = 5e17; // time based reward for a reporter for successfully submitting a value uint256 public timeOfLastNewValue = block.timestamp; // time of the last new value, originally set to the block timestamp uint256 public tipsInContract; // number of tips within the contract uint256 public voteCount; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; // Functions /** * @dev Initializes playground parameters */ constructor() { _name = "TellorPlayground"; _symbol = "TRBP"; _decimals = 18; addresses[keccak256( abi.encodePacked("_GOVERNANCE_CONTRACT") )] = address(this); } /** * @dev Approves amount that an address is alowed to spend of behalf of another * @param _spender The address which is allowed to spend the tokens * @param _amount The amount that msg.sender is allowing spender to use * @return bool Whether the transaction succeeded * */ function approve(address _spender, uint256 _amount) public virtual returns (bool) { _approve(msg.sender, _spender, _amount); return true; } /** * @dev A mock function to create a dispute * @param _queryId The tellorId to be disputed * @param _timestamp the timestamp of the value to be disputed */ function beginDispute(bytes32 _queryId, uint256 _timestamp) external { values[_queryId][_timestamp] = bytes(""); isDisputed[_queryId][_timestamp] = true; voteCount++; voteRounds[keccak256(abi.encodePacked(_queryId, _timestamp))].push( voteCount ); } /** * @dev Public function to mint tokens to the given address * @param _user The address which will receive the tokens */ function faucet(address _user) external { _mint(_user, 1000 ether); } /** * @dev A mock function to submit a value to be read without reporter staking needed * @param _queryId the ID to associate the value to * @param _value the value for the queryId * @param _nonce the current value count for the query id * @param _queryData the data used by reporters to fulfill the data query */ // slither-disable-next-line timestamp function submitValue( bytes32 _queryId, bytes calldata _value, uint256 _nonce, bytes memory _queryData ) external { require( _nonce == timestamps[_queryId].length, "nonce should be correct" ); require( _queryId == keccak256(_queryData) || uint256(_queryId) <= 100, "id must be hash of bytes data" ); values[_queryId][block.timestamp] = _value; timestamps[_queryId].push(block.timestamp); // Send tips + timeBasedReward to reporter and reset tips for ID (uint256 _tip, uint256 _reward) = getCurrentReward(_queryId); if (_reward + _tip > 0) { transfer(msg.sender, _reward + _tip); } timeOfLastNewValue = block.timestamp; tipsInContract -= _tip; tips[_queryId] = 0; emit NewReport( _queryId, block.timestamp, _value, _tip + _reward, _nonce, _queryData, msg.sender ); } /** * @dev Adds a tip to a given query ID. * @param _queryId is the queryId to look up * @param _amount is the amount of tips * @param _queryData is the extra bytes data needed to fulfill the request */ function tipQuery( bytes32 _queryId, uint256 _amount, bytes memory _queryData ) external { require( _queryId == keccak256(_queryData) || uint256(_queryId) <= 100, "id must be hash of bytes data" ); _transfer(msg.sender, address(this), _amount); _amount = _amount / 2; _burn(address(this), _amount); tipsInContract += _amount; tips[_queryId] += _amount; emit TipAdded( msg.sender, _queryId, _amount, tips[_queryId], _queryData ); } /** * @dev Transfer tokens from one user to another * @param _recipient The destination address * @param _amount The amount of tokens, including decimals, to transfer * @return bool If the transfer succeeded */ function transfer(address _recipient, uint256 _amount) public virtual returns (bool) { _transfer(msg.sender, _recipient, _amount); return true; } /** * @dev Transfer tokens from user to another * @param _sender The address which owns the tokens * @param _recipient The destination address * @param _amount The quantity of tokens to transfer * @return bool Whether the transfer succeeded */ function transferFrom(address _sender, address _recipient, uint256 _amount) public virtual returns (bool) { _transfer(_sender, _recipient, _amount); _approve( _sender, msg.sender, _allowances[_sender][msg.sender] - _amount ); return true; } // Getters /** * @dev Returns the amount that an address is alowed to spend of behalf of another * @param _owner The address which owns the tokens * @param _spender The address that will use the tokens * @return uint256 The amount of allowed tokens */ function allowance(address _owner, address _spender) public view virtual returns (uint256) { return _allowances[_owner][_spender]; } /** * @dev Returns the balance of a given user. * @param _account user address * @return uint256 user's token balance */ function balanceOf(address _account) public view returns (uint256) { return _balances[_account]; } /** * @dev Returns the number of decimals used to get its user representation. * @return uint8 the number of decimals; used only for display purposes */ function decimals() public view returns (uint8) { return _decimals; } /** * @dev Calculates the current reward for a reporter given tips and time based reward * @param _queryId is ID of the specific data feed * @return uint256 tip amount for given query ID * @return uint256 time based reward */ // slither-disable-next-line timestamp function getCurrentReward(bytes32 _queryId) public view returns (uint256, uint256) { uint256 _timeDiff = block.timestamp - timeOfLastNewValue; uint256 _reward = (_timeDiff * timeBasedReward) / 300; //.5 TRB per 5 minutes (should we make this upgradeable) if (balanceOf(address(this)) < _reward + tipsInContract) { _reward = balanceOf(address(this)) - tipsInContract; } return (tips[_queryId], _reward); } /** * @dev Counts the number of values that have been submitted for a given ID * @param _queryId the ID to look up * @return uint256 count of the number of values received for the queryId */ function getNewValueCountbyQueryId(bytes32 _queryId) public view returns (uint256) { return timestamps[_queryId].length; } /** * @dev Gets the timestamp for the value based on their index * @param _queryId is the queryId to look up * @param _index is the value index to look up * @return uint256 timestamp */ function getTimestampbyQueryIdandIndex(bytes32 _queryId, uint256 _index) public view returns (uint256) { uint256 len = timestamps[_queryId].length; if (len == 0 || len <= _index) return 0; return timestamps[_queryId][_index]; } /** * @dev Returns an array of voting rounds for a given vote * @param _hash is the identifier hash for a vote * @return uint256[] memory dispute IDs of the vote rounds */ function getVoteRounds(bytes32 _hash) public view returns (uint256[] memory) { return voteRounds[_hash]; } /** * @dev Returns the name of the token. * @return string name of the token */ function name() public view returns (string memory) { return _name; } /** * @dev Retrieves value from oracle based on queryId/timestamp * @param _queryId being requested * @param _timestamp to retrieve data/value from * @return bytes value for queryId/timestamp submitted */ function retrieveData(bytes32 _queryId, uint256 _timestamp) public view returns (bytes memory) { return values[_queryId][_timestamp]; } /** * @dev Returns the symbol of the token. * @return string symbol of the token */ function symbol() public view returns (string memory) { return _symbol; } /** * @dev Returns the total supply of the token. * @return uint256 total supply of token */ function totalSupply() public view returns (uint256) { return _totalSupply; } // Internal functions /** * @dev Internal function to approve tokens for the user * @param _owner The owner of the tokens * @param _spender The address which is allowed to spend the tokens * @param _amount The amount that msg.sender is allowing spender to use */ function _approve(address _owner, address _spender, uint256 _amount) internal virtual { require(_owner != address(0), "ERC20: approve from the zero address"); require(_spender != address(0), "ERC20: approve to the zero address"); _allowances[_owner][_spender] = _amount; emit Approval(_owner, _spender, _amount); } /** * @dev Internal function to burn tokens for the user * @param _account The address whose tokens to burn * @param _amount The quantity of tokens to burn */ function _burn(address _account, uint256 _amount) internal virtual { require(_account != address(0), "ERC20: burn from the zero address"); _balances[_account] -= _amount; _totalSupply -= _amount; emit Transfer(_account, address(0), _amount); } /** * @dev Internal function to create new tokens for the user * @param _account The address which receives minted tokens * @param _amount The quantity of tokens to min */ function _mint(address _account, uint256 _amount) internal virtual { require(_account != address(0), "ERC20: mint to the zero address"); _totalSupply += _amount; _balances[_account] += _amount; emit Transfer(address(0), _account, _amount); } /** * @dev Internal function to perform token transfer * @param _sender The address which owns the tokens * @param _recipient The destination address * @param _amount The quantity of tokens to transfer */ function _transfer(address _sender, address _recipient, uint256 _amount) internal virtual { require(_sender != address(0), "ERC20: transfer from the zero address"); require( _recipient != address(0), "ERC20: transfer to the zero address" ); _balances[_sender] -= _amount; _balances[_recipient] += _amount; emit Transfer(_sender, _recipient, _amount); } }
{ "optimizer": { "enabled": true, "runs": 300 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"_time","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"_value","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"_reward","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_nonce","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"_queryData","type":"bytes"},{"indexed":false,"internalType":"address","name":"_reporter","type":"address"}],"name":"NewReport","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":true,"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"_tip","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_totalTip","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"_queryData","type":"bytes"}],"name":"TipAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"addresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"beginDispute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"faucet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"}],"name":"getCurrentReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"}],"name":"getNewValueCountbyQueryId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getTimestampbyQueryIdandIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"}],"name":"getVoteRounds","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"isDisputed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"retrieveData","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"internalType":"bytes","name":"_value","type":"bytes"},{"internalType":"uint256","name":"_nonce","type":"uint256"},{"internalType":"bytes","name":"_queryData","type":"bytes"}],"name":"submitValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeBasedReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeOfLastNewValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"timestamps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_queryData","type":"bytes"}],"name":"tipQuery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"tips","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tipsInContract","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"values","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"voteCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"voteRounds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052426008553480156200001557600080fd5b506040805180820190915260108082526f15195b1b1bdc941b185e59dc9bdd5b9960821b60209092019182526200004f91600c9162000114565b50604080518082019091526004808252630545242560e41b60209092019182526200007d91600d9162000114565b50600e805460ff1916601217905560405130906000908190620000c6906020017f5f474f5645524e414e43455f434f4e5452414354000000000000000000000000815260140190565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550620001f7565b8280546200012290620001ba565b90600052602060002090601f01602090048101928262000146576000855562000191565b82601f106200016157805160ff191683800117855562000191565b8280016001018555821562000191579182015b828111156200019157825182559160200191906001019062000174565b506200019f929150620001a3565b5090565b5b808211156200019f5760008155600101620001a4565b600181811c90821680620001cf57607f821691505b60208210811415620001f157634e487b7160e01b600052602260045260246000fd5b50919050565b61169080620002076000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063c5958af911610097578063ce5e11bf11610071578063ce5e11bf1461041d578063dd62ed3e14610430578063ef0234ad14610469578063f25133f31461047c576101c4565b8063c5958af9146103ee578063c638407114610401578063c979fe9f1461040a576101c4565b806396426d97116100d357806396426d9714610391578063a1e588a5146103a0578063a9059cbb146103c8578063b86d1d63146103db576101c4565b806370a082311461034057806377b03e0d1461036957806395d89b4114610389576101c4565b8063313ce5671161016657806364473df21161014057806364473df2146102bf578063699f200f146102ed57806369d43bd31461032e5780636fd4f22914610337576101c4565b8063313ce567146102775780635eaa9ced1461028c578063602bf2271461029f576101c4565b806318160ddd116101a257806318160ddd1461021d5780631f379acc1461022f57806323b872dd14610244578063248638e514610257576101c4565b806306fdde03146101c9578063091b50ff146101e7578063095ea7b3146101fa575b600080fd5b6101d161048f565b6040516101de919061152f565b60405180910390f35b6101d16101f53660046113bd565b610521565b61020d6102083660046112d7565b6105c6565b60405190151581526020016101de565b600b545b6040519081526020016101de565b61024261023d3660046113bd565b6105dd565b005b61020d61025236600461129c565b6106a5565b61026a610265366004611300565b6106f7565b6040516101de9190611477565b600e5460405160ff90911681526020016101de565b61024261029a366004611318565b61075a565b6102216102ad366004611300565b60036020526000908152604090205481565b61020d6102cd3660046113bd565b600160209081526000928352604080842090915290825290205460ff1681565b6103166102fb366004611300565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101de565b61022160095481565b61022160085481565b61022161034e366004611249565b6001600160a01b031660009081526007602052604090205490565b610221610377366004611300565b60009081526002602052604090205490565b6101d1610919565b6102216706f05b59d3b2000081565b6103b36103ae366004611300565b610928565b604080519283526020830191909152016101de565b61020d6103d63660046112d7565b6109bb565b6102426103e9366004611249565b6109c8565b6101d16103fc3660046113bd565b6109de565b610221600a5481565b6102216104183660046113bd565b610a8c565b61022161042b3660046113bd565b610abd565b61022161043e36600461126a565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b6102426104773660046113de565b610b2a565b61022161048a3660046113bd565b610c3b565b6060600c805461049e906115d8565b80601f01602080910402602001604051908101604052809291908181526020018280546104ca906115d8565b80156105175780601f106104ec57610100808354040283529160200191610517565b820191906000526020600020905b8154815290600101906020018083116104fa57829003601f168201915b5050505050905090565b600460209081526000928352604080842090915290825290208054610545906115d8565b80601f0160208091040260200160405190810160405280929190818152602001828054610571906115d8565b80156105be5780601f10610593576101008083540402835291602001916105be565b820191906000526020600020905b8154815290600101906020018083116105a157829003601f168201915b505050505081565b60006105d3338484610c57565b5060015b92915050565b604080516020808201808452600080845286815260048352848120868252909252929020905161060d929061109e565b5060008281526001602081815260408084208585529091528220805460ff19169091179055600a80549161064083611613565b9190505550600560008383604051602001610665929190918252602082015260400190565b60408051601f19818403018152918152815160209283012083528282019390935291016000908120600a5481546001810183559183529290912001555050565b60006106b2848484610d73565b6001600160a01b0384166000908152600660209081526040808320338085529252909120546106ed9186916106e89086906115c1565b610c57565b5060019392505050565b60008181526005602090815260409182902080548351818402810184019094528084526060939283018282801561074d57602002820191906000526020600020905b815481526020019060010190808311610739575b505050505090505b919050565b60008581526002602052604090205482146107bc5760405162461bcd60e51b815260206004820152601760248201527f6e6f6e63652073686f756c6420626520636f727265637400000000000000000060448201526064015b60405180910390fd5b805160208201208514806107d1575060648511155b61081d5760405162461bcd60e51b815260206004820152601d60248201527f6964206d7573742062652068617368206f66206279746573206461746100000060448201526064016107b3565b60008581526004602090815260408083204284529091529020610841908585611122565b50600085815260026020908152604082208054600181018255908352908220429101558061086e87610928565b9092509050600061087f838361156a565b111561089557610893336103d6848461156a565b505b4260088190555081600960008282546108ae91906115c1565b90915550506000878152600360205260408120557fab1d593f8e2ecb165106e30a39db6769078d35c3fdbb110f24932f0d7af68c29874288886108f1868861156a565b8989336040516109089897969594939291906114bb565b60405180910390a150505050505050565b6060600d805461049e906115d8565b60008060006008544261093b91906115c1565b9050600061012c6109546706f05b59d3b20000846115a2565b61095e9190611582565b90506009548161096e919061156a565b3060009081526007602052604090205410156109a457600954306000908152600760205260409020546109a191906115c1565b90505b600094855260036020526040909420549492505050565b60006105d3338484610d73565b6109db81683635c9adc5dea00000610eda565b50565b60008281526004602090815260408083208484529091529020805460609190610a06906115d8565b80601f0160208091040260200160405190810160405280929190818152602001828054610a32906115d8565b8015610a7f5780601f10610a5457610100808354040283529160200191610a7f565b820191906000526020600020905b815481529060010190602001808311610a6257829003601f168201915b5050505050905092915050565b60056020528160005260406000208181548110610aa857600080fd5b90600052602060002001600091509150505481565b600082815260026020526040812054801580610ad95750828111155b15610ae85760009150506105d7565b6000848152600260205260409020805484908110610b1657634e487b7160e01b600052603260045260246000fd5b906000526020600020015491505092915050565b80516020820120831480610b3f575060648311155b610b8b5760405162461bcd60e51b815260206004820152601d60248201527f6964206d7573742062652068617368206f66206279746573206461746100000060448201526064016107b3565b610b96333084610d73565b610ba1600283611582565b9150610bad3083610fba565b8160096000828254610bbf919061156a565b909155505060008381526003602052604081208054849290610be290849061156a565b909155505060008381526003602052604090819020549051849133917fd951d408a0f5057da5c25b826fb5ce403d56542962b6ac6994dbc6d5432fbff591610c2e918791908790611542565b60405180910390a3505050565b60026020528160005260406000208181548110610aa857600080fd5b6001600160a01b038316610cb95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107b3565b6001600160a01b038216610d1a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107b3565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101610c2e565b6001600160a01b038316610dd75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107b3565b6001600160a01b038216610e395760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107b3565b6001600160a01b03831660009081526007602052604081208054839290610e619084906115c1565b90915550506001600160a01b03821660009081526007602052604081208054839290610e8e90849061156a565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c2e91815260200190565b6001600160a01b038216610f305760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107b3565b80600b6000828254610f42919061156a565b90915550506001600160a01b03821660009081526007602052604081208054839290610f6f90849061156a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b6001600160a01b03821661101a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107b3565b6001600160a01b038216600090815260076020526040812080548392906110429084906115c1565b9250508190555080600b600082825461105b91906115c1565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610fae565b8280546110aa906115d8565b90600052602060002090601f0160209004810192826110cc5760008555611112565b82601f106110e557805160ff1916838001178555611112565b82800160010185558215611112579182015b828111156111125782518255916020019190600101906110f7565b5061111e929150611196565b5090565b82805461112e906115d8565b90600052602060002090601f0160209004810192826111505760008555611112565b82601f106111695782800160ff19823516178555611112565b82800160010185558215611112579182015b8281111561111257823582559160200191906001019061117b565b5b8082111561111e5760008155600101611197565b80356001600160a01b038116811461075557600080fd5b600082601f8301126111d2578081fd5b813567ffffffffffffffff808211156111ed576111ed611644565b604051601f8301601f19908116603f0116810190828211818310171561121557611215611644565b8160405283815286602085880101111561122d578485fd5b8360208701602083013792830160200193909352509392505050565b60006020828403121561125a578081fd5b611263826111ab565b9392505050565b6000806040838503121561127c578081fd5b611285836111ab565b9150611293602084016111ab565b90509250929050565b6000806000606084860312156112b0578081fd5b6112b9846111ab565b92506112c7602085016111ab565b9150604084013590509250925092565b600080604083850312156112e9578182fd5b6112f2836111ab565b946020939093013593505050565b600060208284031215611311578081fd5b5035919050565b60008060008060006080868803121561132f578081fd5b85359450602086013567ffffffffffffffff8082111561134d578283fd5b818801915088601f830112611360578283fd5b81358181111561136e578384fd5b89602082850101111561137f578384fd5b602083019650809550506040880135935060608801359150808211156113a3578283fd5b506113b0888289016111c2565b9150509295509295909350565b600080604083850312156113cf578182fd5b50508035926020909101359150565b6000806000606084860312156113f2578283fd5b8335925060208401359150604084013567ffffffffffffffff811115611416578182fd5b611422868287016111c2565b9150509250925092565b60008151808452815b8181101561145157602081850181015186830182015201611435565b818111156114625782602083870101525b50601f01601f19169290920160200192915050565b6020808252825182820181905260009190848201906040850190845b818110156114af57835183529284019291840191600101611493565b50909695505050505050565b600089825288602083015260e060408301528660e083015261010087898285013781818985010152601f19601f8901168301876060850152866080850152818482030160a085015261150f8282018761142c565b925050506001600160a01b03831660c08301529998505050505050505050565b600060208252611263602083018461142c565b600084825283602083015260606040830152611561606083018461142c565b95945050505050565b6000821982111561157d5761157d61162e565b500190565b60008261159d57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156115bc576115bc61162e565b500290565b6000828210156115d3576115d361162e565b500390565b600181811c908216806115ec57607f821691505b6020821081141561160d57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156116275761162761162e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea264697066735822122059f9c26280ca7e1f82cf1b3df4b797fa2d04eb6560431a17ade2afb650b13e5464736f6c63430008030033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063c5958af911610097578063ce5e11bf11610071578063ce5e11bf1461041d578063dd62ed3e14610430578063ef0234ad14610469578063f25133f31461047c576101c4565b8063c5958af9146103ee578063c638407114610401578063c979fe9f1461040a576101c4565b806396426d97116100d357806396426d9714610391578063a1e588a5146103a0578063a9059cbb146103c8578063b86d1d63146103db576101c4565b806370a082311461034057806377b03e0d1461036957806395d89b4114610389576101c4565b8063313ce5671161016657806364473df21161014057806364473df2146102bf578063699f200f146102ed57806369d43bd31461032e5780636fd4f22914610337576101c4565b8063313ce567146102775780635eaa9ced1461028c578063602bf2271461029f576101c4565b806318160ddd116101a257806318160ddd1461021d5780631f379acc1461022f57806323b872dd14610244578063248638e514610257576101c4565b806306fdde03146101c9578063091b50ff146101e7578063095ea7b3146101fa575b600080fd5b6101d161048f565b6040516101de919061152f565b60405180910390f35b6101d16101f53660046113bd565b610521565b61020d6102083660046112d7565b6105c6565b60405190151581526020016101de565b600b545b6040519081526020016101de565b61024261023d3660046113bd565b6105dd565b005b61020d61025236600461129c565b6106a5565b61026a610265366004611300565b6106f7565b6040516101de9190611477565b600e5460405160ff90911681526020016101de565b61024261029a366004611318565b61075a565b6102216102ad366004611300565b60036020526000908152604090205481565b61020d6102cd3660046113bd565b600160209081526000928352604080842090915290825290205460ff1681565b6103166102fb366004611300565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101de565b61022160095481565b61022160085481565b61022161034e366004611249565b6001600160a01b031660009081526007602052604090205490565b610221610377366004611300565b60009081526002602052604090205490565b6101d1610919565b6102216706f05b59d3b2000081565b6103b36103ae366004611300565b610928565b604080519283526020830191909152016101de565b61020d6103d63660046112d7565b6109bb565b6102426103e9366004611249565b6109c8565b6101d16103fc3660046113bd565b6109de565b610221600a5481565b6102216104183660046113bd565b610a8c565b61022161042b3660046113bd565b610abd565b61022161043e36600461126a565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b6102426104773660046113de565b610b2a565b61022161048a3660046113bd565b610c3b565b6060600c805461049e906115d8565b80601f01602080910402602001604051908101604052809291908181526020018280546104ca906115d8565b80156105175780601f106104ec57610100808354040283529160200191610517565b820191906000526020600020905b8154815290600101906020018083116104fa57829003601f168201915b5050505050905090565b600460209081526000928352604080842090915290825290208054610545906115d8565b80601f0160208091040260200160405190810160405280929190818152602001828054610571906115d8565b80156105be5780601f10610593576101008083540402835291602001916105be565b820191906000526020600020905b8154815290600101906020018083116105a157829003601f168201915b505050505081565b60006105d3338484610c57565b5060015b92915050565b604080516020808201808452600080845286815260048352848120868252909252929020905161060d929061109e565b5060008281526001602081815260408084208585529091528220805460ff19169091179055600a80549161064083611613565b9190505550600560008383604051602001610665929190918252602082015260400190565b60408051601f19818403018152918152815160209283012083528282019390935291016000908120600a5481546001810183559183529290912001555050565b60006106b2848484610d73565b6001600160a01b0384166000908152600660209081526040808320338085529252909120546106ed9186916106e89086906115c1565b610c57565b5060019392505050565b60008181526005602090815260409182902080548351818402810184019094528084526060939283018282801561074d57602002820191906000526020600020905b815481526020019060010190808311610739575b505050505090505b919050565b60008581526002602052604090205482146107bc5760405162461bcd60e51b815260206004820152601760248201527f6e6f6e63652073686f756c6420626520636f727265637400000000000000000060448201526064015b60405180910390fd5b805160208201208514806107d1575060648511155b61081d5760405162461bcd60e51b815260206004820152601d60248201527f6964206d7573742062652068617368206f66206279746573206461746100000060448201526064016107b3565b60008581526004602090815260408083204284529091529020610841908585611122565b50600085815260026020908152604082208054600181018255908352908220429101558061086e87610928565b9092509050600061087f838361156a565b111561089557610893336103d6848461156a565b505b4260088190555081600960008282546108ae91906115c1565b90915550506000878152600360205260408120557fab1d593f8e2ecb165106e30a39db6769078d35c3fdbb110f24932f0d7af68c29874288886108f1868861156a565b8989336040516109089897969594939291906114bb565b60405180910390a150505050505050565b6060600d805461049e906115d8565b60008060006008544261093b91906115c1565b9050600061012c6109546706f05b59d3b20000846115a2565b61095e9190611582565b90506009548161096e919061156a565b3060009081526007602052604090205410156109a457600954306000908152600760205260409020546109a191906115c1565b90505b600094855260036020526040909420549492505050565b60006105d3338484610d73565b6109db81683635c9adc5dea00000610eda565b50565b60008281526004602090815260408083208484529091529020805460609190610a06906115d8565b80601f0160208091040260200160405190810160405280929190818152602001828054610a32906115d8565b8015610a7f5780601f10610a5457610100808354040283529160200191610a7f565b820191906000526020600020905b815481529060010190602001808311610a6257829003601f168201915b5050505050905092915050565b60056020528160005260406000208181548110610aa857600080fd5b90600052602060002001600091509150505481565b600082815260026020526040812054801580610ad95750828111155b15610ae85760009150506105d7565b6000848152600260205260409020805484908110610b1657634e487b7160e01b600052603260045260246000fd5b906000526020600020015491505092915050565b80516020820120831480610b3f575060648311155b610b8b5760405162461bcd60e51b815260206004820152601d60248201527f6964206d7573742062652068617368206f66206279746573206461746100000060448201526064016107b3565b610b96333084610d73565b610ba1600283611582565b9150610bad3083610fba565b8160096000828254610bbf919061156a565b909155505060008381526003602052604081208054849290610be290849061156a565b909155505060008381526003602052604090819020549051849133917fd951d408a0f5057da5c25b826fb5ce403d56542962b6ac6994dbc6d5432fbff591610c2e918791908790611542565b60405180910390a3505050565b60026020528160005260406000208181548110610aa857600080fd5b6001600160a01b038316610cb95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107b3565b6001600160a01b038216610d1a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107b3565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101610c2e565b6001600160a01b038316610dd75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107b3565b6001600160a01b038216610e395760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107b3565b6001600160a01b03831660009081526007602052604081208054839290610e619084906115c1565b90915550506001600160a01b03821660009081526007602052604081208054839290610e8e90849061156a565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c2e91815260200190565b6001600160a01b038216610f305760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107b3565b80600b6000828254610f42919061156a565b90915550506001600160a01b03821660009081526007602052604081208054839290610f6f90849061156a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b6001600160a01b03821661101a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107b3565b6001600160a01b038216600090815260076020526040812080548392906110429084906115c1565b9250508190555080600b600082825461105b91906115c1565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610fae565b8280546110aa906115d8565b90600052602060002090601f0160209004810192826110cc5760008555611112565b82601f106110e557805160ff1916838001178555611112565b82800160010185558215611112579182015b828111156111125782518255916020019190600101906110f7565b5061111e929150611196565b5090565b82805461112e906115d8565b90600052602060002090601f0160209004810192826111505760008555611112565b82601f106111695782800160ff19823516178555611112565b82800160010185558215611112579182015b8281111561111257823582559160200191906001019061117b565b5b8082111561111e5760008155600101611197565b80356001600160a01b038116811461075557600080fd5b600082601f8301126111d2578081fd5b813567ffffffffffffffff808211156111ed576111ed611644565b604051601f8301601f19908116603f0116810190828211818310171561121557611215611644565b8160405283815286602085880101111561122d578485fd5b8360208701602083013792830160200193909352509392505050565b60006020828403121561125a578081fd5b611263826111ab565b9392505050565b6000806040838503121561127c578081fd5b611285836111ab565b9150611293602084016111ab565b90509250929050565b6000806000606084860312156112b0578081fd5b6112b9846111ab565b92506112c7602085016111ab565b9150604084013590509250925092565b600080604083850312156112e9578182fd5b6112f2836111ab565b946020939093013593505050565b600060208284031215611311578081fd5b5035919050565b60008060008060006080868803121561132f578081fd5b85359450602086013567ffffffffffffffff8082111561134d578283fd5b818801915088601f830112611360578283fd5b81358181111561136e578384fd5b89602082850101111561137f578384fd5b602083019650809550506040880135935060608801359150808211156113a3578283fd5b506113b0888289016111c2565b9150509295509295909350565b600080604083850312156113cf578182fd5b50508035926020909101359150565b6000806000606084860312156113f2578283fd5b8335925060208401359150604084013567ffffffffffffffff811115611416578182fd5b611422868287016111c2565b9150509250925092565b60008151808452815b8181101561145157602081850181015186830182015201611435565b818111156114625782602083870101525b50601f01601f19169290920160200192915050565b6020808252825182820181905260009190848201906040850190845b818110156114af57835183529284019291840191600101611493565b50909695505050505050565b600089825288602083015260e060408301528660e083015261010087898285013781818985010152601f19601f8901168301876060850152866080850152818482030160a085015261150f8282018761142c565b925050506001600160a01b03831660c08301529998505050505050505050565b600060208252611263602083018461142c565b600084825283602083015260606040830152611561606083018461142c565b95945050505050565b6000821982111561157d5761157d61162e565b500190565b60008261159d57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156115bc576115bc61162e565b500290565b6000828210156115d3576115d361162e565b500390565b600181811c908216806115ec57607f821691505b6020821081141561160d57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156116275761162761162e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea264697066735822122059f9c26280ca7e1f82cf1b3df4b797fa2d04eb6560431a17ade2afb650b13e5464736f6c63430008030033
Loading...
Loading
[ Download: CSV Export ]
[ 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.