Goerli Testnet

Contract

0x3477EB82263dabb59AC0CAcE47a61292f28A2eA7

Overview

ETH Balance

Token Holdings

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Value
Submit Value61016582021-12-28 14:23:12821 days ago1640701392IN
0x3477EB82...2f28A2eA7
0 ETH0.0087366577.00000001
Submit Value60678212021-12-22 17:20:50827 days ago1640193650IN
0x3477EB82...2f28A2eA7
0 ETH0.0085097275
Submit Value60674792021-12-22 15:55:16827 days ago1640188516IN
0x3477EB82...2f28A2eA7
0 ETH0.007034762
Submit Value60674642021-12-22 15:51:31827 days ago1640188291IN
0x3477EB82...2f28A2eA7
0 ETH0.0097913275
Submit Value60395822021-12-17 19:38:28831 days ago1639769908IN
0x3477EB82...2f28A2eA7
0 ETH0.0226902200
Submit Value60395112021-12-17 19:20:43831 days ago1639768843IN
0x3477EB82...2f28A2eA7
0 ETH0.0056725550
Submit Value60275432021-12-15 17:27:59834 days ago1639589279IN
0x3477EB82...2f28A2eA7
0 ETH0.000340353
Submit Value60275352021-12-15 17:25:59834 days ago1639589159IN
0x3477EB82...2f28A2eA7
0 ETH0.000340353
Submit Value60268572021-12-15 14:36:26834 days ago1639578986IN
0x3477EB82...2f28A2eA7
0 ETH0.000340353
Submit Value60267012021-12-15 13:57:26834 days ago1639576646IN
0x3477EB82...2f28A2eA7
0 ETH0.000340353
Submit Value60266722021-12-15 13:50:11834 days ago1639576211IN
0x3477EB82...2f28A2eA7
0 ETH0.000340353
Submit Value60266602021-12-15 13:47:11834 days ago1639576031IN
0x3477EB82...2f28A2eA7
0 ETH0.000340353
Submit Value60266452021-12-15 13:43:26834 days ago1639575806IN
0x3477EB82...2f28A2eA7
0 ETH0.000340353
Submit Value60266442021-12-15 13:43:11834 days ago1639575791IN
0x3477EB82...2f28A2eA7
0 ETH0.000340353
Submit Value60266332021-12-15 13:40:26834 days ago1639575626IN
0x3477EB82...2f28A2eA7
0 ETH0.000340353
Submit Value60266282021-12-15 13:39:11834 days ago1639575551IN
0x3477EB82...2f28A2eA7
0 ETH0.000340353
Submit Value60266212021-12-15 13:37:26834 days ago1639575446IN
0x3477EB82...2f28A2eA7
0 ETH0.000340353
Submit Value60266122021-12-15 13:35:11834 days ago1639575311IN
0x3477EB82...2f28A2eA7
0 ETH0.000340353
Submit Value60211752021-12-14 14:55:26835 days ago1639493726IN
0x3477EB82...2f28A2eA7
0 ETH0.000340353
Submit Value59825702021-12-07 22:02:14841 days ago1638914534IN
0x3477EB82...2f28A2eA7
0 ETH0.000340353
Submit Value59825672021-12-07 22:01:29841 days ago1638914489IN
0x3477EB82...2f28A2eA7
0 ETH0.000340353
Submit Value59823652021-12-07 21:10:59841 days ago1638911459IN
0x3477EB82...2f28A2eA7
0 ETH0.000340353
Submit Value59823532021-12-07 21:07:58841 days ago1638911278IN
0x3477EB82...2f28A2eA7
0 ETH0.000340353
Submit Value59823392021-12-07 21:04:27841 days ago1638911067IN
0x3477EB82...2f28A2eA7
0 ETH0.000340353
Submit Value59823082021-12-07 20:56:42841 days ago1638910602IN
0x3477EB82...2f28A2eA7
0 ETH0.000340353

Latest 2 internal transactions

Advanced mode:
Parent Txn Hash Block From To Value
80973412022-12-08 10:19:00476 days ago1670494740
0x3477EB82...2f28A2eA7
0 ETH
68661242022-05-11 13:44:02687 days ago1652276642
0x3477EB82...2f28A2eA7
0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

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)

File 1 of 1 : TellorPlayground.sol
// 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);
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 300
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract ABI

[{"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"}]

6080604052426008553480156200001557600080fd5b506040805180820190915260108082526f15195b1b1bdc941b185e59dc9bdd5b9960821b60209092019182526200004f91600c9162000114565b50604080518082019091526004808252630545242560e41b60209092019182526200007d91600d9162000114565b50600e805460ff1916601217905560405130906000908190620000c6906020017f5f474f5645524e414e43455f434f4e5452414354000000000000000000000000815260140190565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550620001f7565b8280546200012290620001ba565b90600052602060002090601f01602090048101928262000146576000855562000191565b82601f106200016157805160ff191683800117855562000191565b8280016001018555821562000191579182015b828111156200019157825182559160200191906001019062000174565b506200019f929150620001a3565b5090565b5b808211156200019f5760008155600101620001a4565b600181811c90821680620001cf57607f821691505b60208210811415620001f157634e487b7160e01b600052602260045260246000fd5b50919050565b61169080620002076000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063c5958af911610097578063ce5e11bf11610071578063ce5e11bf1461041d578063dd62ed3e14610430578063ef0234ad14610469578063f25133f31461047c576101c4565b8063c5958af9146103ee578063c638407114610401578063c979fe9f1461040a576101c4565b806396426d97116100d357806396426d9714610391578063a1e588a5146103a0578063a9059cbb146103c8578063b86d1d63146103db576101c4565b806370a082311461034057806377b03e0d1461036957806395d89b4114610389576101c4565b8063313ce5671161016657806364473df21161014057806364473df2146102bf578063699f200f146102ed57806369d43bd31461032e5780636fd4f22914610337576101c4565b8063313ce567146102775780635eaa9ced1461028c578063602bf2271461029f576101c4565b806318160ddd116101a257806318160ddd1461021d5780631f379acc1461022f57806323b872dd14610244578063248638e514610257576101c4565b806306fdde03146101c9578063091b50ff146101e7578063095ea7b3146101fa575b600080fd5b6101d161048f565b6040516101de919061152f565b60405180910390f35b6101d16101f53660046113bd565b610521565b61020d6102083660046112d7565b6105c6565b60405190151581526020016101de565b600b545b6040519081526020016101de565b61024261023d3660046113bd565b6105dd565b005b61020d61025236600461129c565b6106a5565b61026a610265366004611300565b6106f7565b6040516101de9190611477565b600e5460405160ff90911681526020016101de565b61024261029a366004611318565b61075a565b6102216102ad366004611300565b60036020526000908152604090205481565b61020d6102cd3660046113bd565b600160209081526000928352604080842090915290825290205460ff1681565b6103166102fb366004611300565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101de565b61022160095481565b61022160085481565b61022161034e366004611249565b6001600160a01b031660009081526007602052604090205490565b610221610377366004611300565b60009081526002602052604090205490565b6101d1610919565b6102216706f05b59d3b2000081565b6103b36103ae366004611300565b610928565b604080519283526020830191909152016101de565b61020d6103d63660046112d7565b6109bb565b6102426103e9366004611249565b6109c8565b6101d16103fc3660046113bd565b6109de565b610221600a5481565b6102216104183660046113bd565b610a8c565b61022161042b3660046113bd565b610abd565b61022161043e36600461126a565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b6102426104773660046113de565b610b2a565b61022161048a3660046113bd565b610c3b565b6060600c805461049e906115d8565b80601f01602080910402602001604051908101604052809291908181526020018280546104ca906115d8565b80156105175780601f106104ec57610100808354040283529160200191610517565b820191906000526020600020905b8154815290600101906020018083116104fa57829003601f168201915b5050505050905090565b600460209081526000928352604080842090915290825290208054610545906115d8565b80601f0160208091040260200160405190810160405280929190818152602001828054610571906115d8565b80156105be5780601f10610593576101008083540402835291602001916105be565b820191906000526020600020905b8154815290600101906020018083116105a157829003601f168201915b505050505081565b60006105d3338484610c57565b5060015b92915050565b604080516020808201808452600080845286815260048352848120868252909252929020905161060d929061109e565b5060008281526001602081815260408084208585529091528220805460ff19169091179055600a80549161064083611613565b9190505550600560008383604051602001610665929190918252602082015260400190565b60408051601f19818403018152918152815160209283012083528282019390935291016000908120600a5481546001810183559183529290912001555050565b60006106b2848484610d73565b6001600160a01b0384166000908152600660209081526040808320338085529252909120546106ed9186916106e89086906115c1565b610c57565b5060019392505050565b60008181526005602090815260409182902080548351818402810184019094528084526060939283018282801561074d57602002820191906000526020600020905b815481526020019060010190808311610739575b505050505090505b919050565b60008581526002602052604090205482146107bc5760405162461bcd60e51b815260206004820152601760248201527f6e6f6e63652073686f756c6420626520636f727265637400000000000000000060448201526064015b60405180910390fd5b805160208201208514806107d1575060648511155b61081d5760405162461bcd60e51b815260206004820152601d60248201527f6964206d7573742062652068617368206f66206279746573206461746100000060448201526064016107b3565b60008581526004602090815260408083204284529091529020610841908585611122565b50600085815260026020908152604082208054600181018255908352908220429101558061086e87610928565b9092509050600061087f838361156a565b111561089557610893336103d6848461156a565b505b4260088190555081600960008282546108ae91906115c1565b90915550506000878152600360205260408120557fab1d593f8e2ecb165106e30a39db6769078d35c3fdbb110f24932f0d7af68c29874288886108f1868861156a565b8989336040516109089897969594939291906114bb565b60405180910390a150505050505050565b6060600d805461049e906115d8565b60008060006008544261093b91906115c1565b9050600061012c6109546706f05b59d3b20000846115a2565b61095e9190611582565b90506009548161096e919061156a565b3060009081526007602052604090205410156109a457600954306000908152600760205260409020546109a191906115c1565b90505b600094855260036020526040909420549492505050565b60006105d3338484610d73565b6109db81683635c9adc5dea00000610eda565b50565b60008281526004602090815260408083208484529091529020805460609190610a06906115d8565b80601f0160208091040260200160405190810160405280929190818152602001828054610a32906115d8565b8015610a7f5780601f10610a5457610100808354040283529160200191610a7f565b820191906000526020600020905b815481529060010190602001808311610a6257829003601f168201915b5050505050905092915050565b60056020528160005260406000208181548110610aa857600080fd5b90600052602060002001600091509150505481565b600082815260026020526040812054801580610ad95750828111155b15610ae85760009150506105d7565b6000848152600260205260409020805484908110610b1657634e487b7160e01b600052603260045260246000fd5b906000526020600020015491505092915050565b80516020820120831480610b3f575060648311155b610b8b5760405162461bcd60e51b815260206004820152601d60248201527f6964206d7573742062652068617368206f66206279746573206461746100000060448201526064016107b3565b610b96333084610d73565b610ba1600283611582565b9150610bad3083610fba565b8160096000828254610bbf919061156a565b909155505060008381526003602052604081208054849290610be290849061156a565b909155505060008381526003602052604090819020549051849133917fd951d408a0f5057da5c25b826fb5ce403d56542962b6ac6994dbc6d5432fbff591610c2e918791908790611542565b60405180910390a3505050565b60026020528160005260406000208181548110610aa857600080fd5b6001600160a01b038316610cb95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107b3565b6001600160a01b038216610d1a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107b3565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101610c2e565b6001600160a01b038316610dd75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107b3565b6001600160a01b038216610e395760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107b3565b6001600160a01b03831660009081526007602052604081208054839290610e619084906115c1565b90915550506001600160a01b03821660009081526007602052604081208054839290610e8e90849061156a565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c2e91815260200190565b6001600160a01b038216610f305760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107b3565b80600b6000828254610f42919061156a565b90915550506001600160a01b03821660009081526007602052604081208054839290610f6f90849061156a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b6001600160a01b03821661101a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107b3565b6001600160a01b038216600090815260076020526040812080548392906110429084906115c1565b9250508190555080600b600082825461105b91906115c1565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610fae565b8280546110aa906115d8565b90600052602060002090601f0160209004810192826110cc5760008555611112565b82601f106110e557805160ff1916838001178555611112565b82800160010185558215611112579182015b828111156111125782518255916020019190600101906110f7565b5061111e929150611196565b5090565b82805461112e906115d8565b90600052602060002090601f0160209004810192826111505760008555611112565b82601f106111695782800160ff19823516178555611112565b82800160010185558215611112579182015b8281111561111257823582559160200191906001019061117b565b5b8082111561111e5760008155600101611197565b80356001600160a01b038116811461075557600080fd5b600082601f8301126111d2578081fd5b813567ffffffffffffffff808211156111ed576111ed611644565b604051601f8301601f19908116603f0116810190828211818310171561121557611215611644565b8160405283815286602085880101111561122d578485fd5b8360208701602083013792830160200193909352509392505050565b60006020828403121561125a578081fd5b611263826111ab565b9392505050565b6000806040838503121561127c578081fd5b611285836111ab565b9150611293602084016111ab565b90509250929050565b6000806000606084860312156112b0578081fd5b6112b9846111ab565b92506112c7602085016111ab565b9150604084013590509250925092565b600080604083850312156112e9578182fd5b6112f2836111ab565b946020939093013593505050565b600060208284031215611311578081fd5b5035919050565b60008060008060006080868803121561132f578081fd5b85359450602086013567ffffffffffffffff8082111561134d578283fd5b818801915088601f830112611360578283fd5b81358181111561136e578384fd5b89602082850101111561137f578384fd5b602083019650809550506040880135935060608801359150808211156113a3578283fd5b506113b0888289016111c2565b9150509295509295909350565b600080604083850312156113cf578182fd5b50508035926020909101359150565b6000806000606084860312156113f2578283fd5b8335925060208401359150604084013567ffffffffffffffff811115611416578182fd5b611422868287016111c2565b9150509250925092565b60008151808452815b8181101561145157602081850181015186830182015201611435565b818111156114625782602083870101525b50601f01601f19169290920160200192915050565b6020808252825182820181905260009190848201906040850190845b818110156114af57835183529284019291840191600101611493565b50909695505050505050565b600089825288602083015260e060408301528660e083015261010087898285013781818985010152601f19601f8901168301876060850152866080850152818482030160a085015261150f8282018761142c565b925050506001600160a01b03831660c08301529998505050505050505050565b600060208252611263602083018461142c565b600084825283602083015260606040830152611561606083018461142c565b95945050505050565b6000821982111561157d5761157d61162e565b500190565b60008261159d57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156115bc576115bc61162e565b500290565b6000828210156115d3576115d361162e565b500390565b600181811c908216806115ec57607f821691505b6020821081141561160d57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156116275761162761162e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea264697066735822122059f9c26280ca7e1f82cf1b3df4b797fa2d04eb6560431a17ade2afb650b13e5464736f6c63430008030033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063c5958af911610097578063ce5e11bf11610071578063ce5e11bf1461041d578063dd62ed3e14610430578063ef0234ad14610469578063f25133f31461047c576101c4565b8063c5958af9146103ee578063c638407114610401578063c979fe9f1461040a576101c4565b806396426d97116100d357806396426d9714610391578063a1e588a5146103a0578063a9059cbb146103c8578063b86d1d63146103db576101c4565b806370a082311461034057806377b03e0d1461036957806395d89b4114610389576101c4565b8063313ce5671161016657806364473df21161014057806364473df2146102bf578063699f200f146102ed57806369d43bd31461032e5780636fd4f22914610337576101c4565b8063313ce567146102775780635eaa9ced1461028c578063602bf2271461029f576101c4565b806318160ddd116101a257806318160ddd1461021d5780631f379acc1461022f57806323b872dd14610244578063248638e514610257576101c4565b806306fdde03146101c9578063091b50ff146101e7578063095ea7b3146101fa575b600080fd5b6101d161048f565b6040516101de919061152f565b60405180910390f35b6101d16101f53660046113bd565b610521565b61020d6102083660046112d7565b6105c6565b60405190151581526020016101de565b600b545b6040519081526020016101de565b61024261023d3660046113bd565b6105dd565b005b61020d61025236600461129c565b6106a5565b61026a610265366004611300565b6106f7565b6040516101de9190611477565b600e5460405160ff90911681526020016101de565b61024261029a366004611318565b61075a565b6102216102ad366004611300565b60036020526000908152604090205481565b61020d6102cd3660046113bd565b600160209081526000928352604080842090915290825290205460ff1681565b6103166102fb366004611300565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101de565b61022160095481565b61022160085481565b61022161034e366004611249565b6001600160a01b031660009081526007602052604090205490565b610221610377366004611300565b60009081526002602052604090205490565b6101d1610919565b6102216706f05b59d3b2000081565b6103b36103ae366004611300565b610928565b604080519283526020830191909152016101de565b61020d6103d63660046112d7565b6109bb565b6102426103e9366004611249565b6109c8565b6101d16103fc3660046113bd565b6109de565b610221600a5481565b6102216104183660046113bd565b610a8c565b61022161042b3660046113bd565b610abd565b61022161043e36600461126a565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b6102426104773660046113de565b610b2a565b61022161048a3660046113bd565b610c3b565b6060600c805461049e906115d8565b80601f01602080910402602001604051908101604052809291908181526020018280546104ca906115d8565b80156105175780601f106104ec57610100808354040283529160200191610517565b820191906000526020600020905b8154815290600101906020018083116104fa57829003601f168201915b5050505050905090565b600460209081526000928352604080842090915290825290208054610545906115d8565b80601f0160208091040260200160405190810160405280929190818152602001828054610571906115d8565b80156105be5780601f10610593576101008083540402835291602001916105be565b820191906000526020600020905b8154815290600101906020018083116105a157829003601f168201915b505050505081565b60006105d3338484610c57565b5060015b92915050565b604080516020808201808452600080845286815260048352848120868252909252929020905161060d929061109e565b5060008281526001602081815260408084208585529091528220805460ff19169091179055600a80549161064083611613565b9190505550600560008383604051602001610665929190918252602082015260400190565b60408051601f19818403018152918152815160209283012083528282019390935291016000908120600a5481546001810183559183529290912001555050565b60006106b2848484610d73565b6001600160a01b0384166000908152600660209081526040808320338085529252909120546106ed9186916106e89086906115c1565b610c57565b5060019392505050565b60008181526005602090815260409182902080548351818402810184019094528084526060939283018282801561074d57602002820191906000526020600020905b815481526020019060010190808311610739575b505050505090505b919050565b60008581526002602052604090205482146107bc5760405162461bcd60e51b815260206004820152601760248201527f6e6f6e63652073686f756c6420626520636f727265637400000000000000000060448201526064015b60405180910390fd5b805160208201208514806107d1575060648511155b61081d5760405162461bcd60e51b815260206004820152601d60248201527f6964206d7573742062652068617368206f66206279746573206461746100000060448201526064016107b3565b60008581526004602090815260408083204284529091529020610841908585611122565b50600085815260026020908152604082208054600181018255908352908220429101558061086e87610928565b9092509050600061087f838361156a565b111561089557610893336103d6848461156a565b505b4260088190555081600960008282546108ae91906115c1565b90915550506000878152600360205260408120557fab1d593f8e2ecb165106e30a39db6769078d35c3fdbb110f24932f0d7af68c29874288886108f1868861156a565b8989336040516109089897969594939291906114bb565b60405180910390a150505050505050565b6060600d805461049e906115d8565b60008060006008544261093b91906115c1565b9050600061012c6109546706f05b59d3b20000846115a2565b61095e9190611582565b90506009548161096e919061156a565b3060009081526007602052604090205410156109a457600954306000908152600760205260409020546109a191906115c1565b90505b600094855260036020526040909420549492505050565b60006105d3338484610d73565b6109db81683635c9adc5dea00000610eda565b50565b60008281526004602090815260408083208484529091529020805460609190610a06906115d8565b80601f0160208091040260200160405190810160405280929190818152602001828054610a32906115d8565b8015610a7f5780601f10610a5457610100808354040283529160200191610a7f565b820191906000526020600020905b815481529060010190602001808311610a6257829003601f168201915b5050505050905092915050565b60056020528160005260406000208181548110610aa857600080fd5b90600052602060002001600091509150505481565b600082815260026020526040812054801580610ad95750828111155b15610ae85760009150506105d7565b6000848152600260205260409020805484908110610b1657634e487b7160e01b600052603260045260246000fd5b906000526020600020015491505092915050565b80516020820120831480610b3f575060648311155b610b8b5760405162461bcd60e51b815260206004820152601d60248201527f6964206d7573742062652068617368206f66206279746573206461746100000060448201526064016107b3565b610b96333084610d73565b610ba1600283611582565b9150610bad3083610fba565b8160096000828254610bbf919061156a565b909155505060008381526003602052604081208054849290610be290849061156a565b909155505060008381526003602052604090819020549051849133917fd951d408a0f5057da5c25b826fb5ce403d56542962b6ac6994dbc6d5432fbff591610c2e918791908790611542565b60405180910390a3505050565b60026020528160005260406000208181548110610aa857600080fd5b6001600160a01b038316610cb95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107b3565b6001600160a01b038216610d1a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107b3565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101610c2e565b6001600160a01b038316610dd75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107b3565b6001600160a01b038216610e395760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107b3565b6001600160a01b03831660009081526007602052604081208054839290610e619084906115c1565b90915550506001600160a01b03821660009081526007602052604081208054839290610e8e90849061156a565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c2e91815260200190565b6001600160a01b038216610f305760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107b3565b80600b6000828254610f42919061156a565b90915550506001600160a01b03821660009081526007602052604081208054839290610f6f90849061156a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b6001600160a01b03821661101a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107b3565b6001600160a01b038216600090815260076020526040812080548392906110429084906115c1565b9250508190555080600b600082825461105b91906115c1565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610fae565b8280546110aa906115d8565b90600052602060002090601f0160209004810192826110cc5760008555611112565b82601f106110e557805160ff1916838001178555611112565b82800160010185558215611112579182015b828111156111125782518255916020019190600101906110f7565b5061111e929150611196565b5090565b82805461112e906115d8565b90600052602060002090601f0160209004810192826111505760008555611112565b82601f106111695782800160ff19823516178555611112565b82800160010185558215611112579182015b8281111561111257823582559160200191906001019061117b565b5b8082111561111e5760008155600101611197565b80356001600160a01b038116811461075557600080fd5b600082601f8301126111d2578081fd5b813567ffffffffffffffff808211156111ed576111ed611644565b604051601f8301601f19908116603f0116810190828211818310171561121557611215611644565b8160405283815286602085880101111561122d578485fd5b8360208701602083013792830160200193909352509392505050565b60006020828403121561125a578081fd5b611263826111ab565b9392505050565b6000806040838503121561127c578081fd5b611285836111ab565b9150611293602084016111ab565b90509250929050565b6000806000606084860312156112b0578081fd5b6112b9846111ab565b92506112c7602085016111ab565b9150604084013590509250925092565b600080604083850312156112e9578182fd5b6112f2836111ab565b946020939093013593505050565b600060208284031215611311578081fd5b5035919050565b60008060008060006080868803121561132f578081fd5b85359450602086013567ffffffffffffffff8082111561134d578283fd5b818801915088601f830112611360578283fd5b81358181111561136e578384fd5b89602082850101111561137f578384fd5b602083019650809550506040880135935060608801359150808211156113a3578283fd5b506113b0888289016111c2565b9150509295509295909350565b600080604083850312156113cf578182fd5b50508035926020909101359150565b6000806000606084860312156113f2578283fd5b8335925060208401359150604084013567ffffffffffffffff811115611416578182fd5b611422868287016111c2565b9150509250925092565b60008151808452815b8181101561145157602081850181015186830182015201611435565b818111156114625782602083870101525b50601f01601f19169290920160200192915050565b6020808252825182820181905260009190848201906040850190845b818110156114af57835183529284019291840191600101611493565b50909695505050505050565b600089825288602083015260e060408301528660e083015261010087898285013781818985010152601f19601f8901168301876060850152866080850152818482030160a085015261150f8282018761142c565b925050506001600160a01b03831660c08301529998505050505050505050565b600060208252611263602083018461142c565b600084825283602083015260606040830152611561606083018461142c565b95945050505050565b6000821982111561157d5761157d61162e565b500190565b60008261159d57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156115bc576115bc61162e565b500290565b6000828210156115d3576115d361162e565b500390565b600181811c908216806115ec57607f821691505b6020821081141561160d57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156116275761162761162e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea264697066735822122059f9c26280ca7e1f82cf1b3df4b797fa2d04eb6560431a17ade2afb650b13e5464736f6c63430008030033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.