ETH Price: $3,056.70 (+5.01%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Submit Value158797372022-11-02 3:45:47738 days ago1667360747IN
0xe8218cAC...8869945ea
0 ETH0.0044538615
Submit Value158796522022-11-02 3:28:47738 days ago1667359727IN
0xe8218cAC...8869945ea
0 ETH0.0044538615
Submit Value158791412022-11-02 1:45:47738 days ago1667353547IN
0xe8218cAC...8869945ea
0 ETH0.0041569314
Submit Value158789142022-11-02 0:59:47738 days ago1667350787IN
0xe8218cAC...8869945ea
0 ETH0.0035630812
Submit Value158788062022-11-02 0:38:11738 days ago1667349491IN
0xe8218cAC...8869945ea
0 ETH0.0035630812
Submit Value158786982022-11-02 0:16:23738 days ago1667348183IN
0xe8218cAC...8869945ea
0 ETH0.0033347811.40136192
Submit Value158782802022-11-01 22:52:23738 days ago1667343143IN
0xe8218cAC...8869945ea
0 ETH0.0032661611
Submit Value158779602022-11-01 21:47:59738 days ago1667339279IN
0xe8218cAC...8869945ea
0 ETH0.0044538615
Submit Value158778292022-11-01 21:21:47738 days ago1667337707IN
0xe8218cAC...8869945ea
0 ETH0.0041569314
Submit Value158776222022-11-01 20:39:59738 days ago1667335199IN
0xe8218cAC...8869945ea
0 ETH0.0044538615
Submit Value158773622022-11-01 19:47:23738 days ago1667332043IN
0xe8218cAC...8869945ea
0 ETH0.0047507816
Submit Value158766692022-11-01 17:28:23738 days ago1667323703IN
0xe8218cAC...8869945ea
0 ETH0.0053446318
Submit Value158765152022-11-01 16:57:23738 days ago1667321843IN
0xe8218cAC...8869945ea
0 ETH0.0053446318
Submit Value158760992022-11-01 15:34:11738 days ago1667316851IN
0xe8218cAC...8869945ea
0 ETH0.0077200226
Submit Value158759122022-11-01 14:56:23738 days ago1667314583IN
0xe8218cAC...8869945ea
0 ETH0.0086107929
Submit Value158755362022-11-01 13:40:35738 days ago1667310035IN
0xe8218cAC...8869945ea
0 ETH0.0047507816
Submit Value158752982022-11-01 12:52:47738 days ago1667307167IN
0xe8218cAC...8869945ea
0 ETH0.0027700912
Submit Value158752562022-11-01 12:44:23738 days ago1667306663IN
0xe8218cAC...8869945ea
0 ETH0.0065323222
Submit Value158751772022-11-01 12:28:23738 days ago1667305703IN
0xe8218cAC...8869945ea
0 ETH0.0038600113
Submit Value158751452022-11-01 12:21:59738 days ago1667305319IN
0xe8218cAC...8869945ea
0 ETH0.0047507816
Submit Value158750302022-11-01 11:58:47738 days ago1667303927IN
0xe8218cAC...8869945ea
0 ETH0.0041569314
Submit Value158748842022-11-01 11:29:11738 days ago1667302151IN
0xe8218cAC...8869945ea
0 ETH0.0032661611
Submit Value158743342022-11-01 9:37:35738 days ago1667295455IN
0xe8218cAC...8869945ea
0 ETH0.0032660311
Submit Value158742142022-11-01 9:13:23738 days ago1667294003IN
0xe8218cAC...8869945ea
0 ETH0.0032661611
Submit Value158740732022-11-01 8:44:35738 days ago1667292275IN
0xe8218cAC...8869945ea
0 ETH0.0032661611
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
210681102024-10-29 1:48:3511 days ago1730166515
0xe8218cAC...8869945ea
0 ETH
210681102024-10-29 1:48:3511 days ago1730166515
0xe8218cAC...8869945ea
0 ETH
210681102024-10-29 1:48:3511 days ago1730166515
0xe8218cAC...8869945ea
0 ETH
210681102024-10-29 1:48:3511 days ago1730166515
0xe8218cAC...8869945ea
0 ETH
210681102024-10-29 1:48:3511 days ago1730166515
0xe8218cAC...8869945ea
0 ETH
210681102024-10-29 1:48:3511 days ago1730166515
0xe8218cAC...8869945ea
0 ETH
210681102024-10-29 1:48:3511 days ago1730166515
0xe8218cAC...8869945ea
0 ETH
210681102024-10-29 1:48:3511 days ago1730166515
0xe8218cAC...8869945ea
0 ETH
189418102024-01-05 14:58:35308 days ago1704466715
0xe8218cAC...8869945ea
0 ETH
189418102024-01-05 14:58:35308 days ago1704466715
0xe8218cAC...8869945ea
0 ETH
189418102024-01-05 14:58:35308 days ago1704466715
0xe8218cAC...8869945ea
0 ETH
189418102024-01-05 14:58:35308 days ago1704466715
0xe8218cAC...8869945ea
0 ETH
189417842024-01-05 14:52:59308 days ago1704466379
0xe8218cAC...8869945ea
0 ETH
189417842024-01-05 14:52:59308 days ago1704466379
0xe8218cAC...8869945ea
0 ETH
189417842024-01-05 14:52:59308 days ago1704466379
0xe8218cAC...8869945ea
0 ETH
189417842024-01-05 14:52:59308 days ago1704466379
0xe8218cAC...8869945ea
0 ETH
174356052023-06-08 12:30:47519 days ago1686227447
0xe8218cAC...8869945ea
0 ETH
174356052023-06-08 12:30:47519 days ago1686227447
0xe8218cAC...8869945ea
0 ETH
174356052023-06-08 12:30:47519 days ago1686227447
0xe8218cAC...8869945ea
0 ETH
174356052023-06-08 12:30:47519 days ago1686227447
0xe8218cAC...8869945ea
0 ETH
170056032023-04-08 19:01:35580 days ago1680980495
0xe8218cAC...8869945ea
0 ETH
170056032023-04-08 19:01:35580 days ago1680980495
0xe8218cAC...8869945ea
0 ETH
170056032023-04-08 19:01:35580 days ago1680980495
0xe8218cAC...8869945ea
0 ETH
170056032023-04-08 19:01:35580 days ago1680980495
0xe8218cAC...8869945ea
0 ETH
167030442023-02-25 4:50:47623 days ago1677300647
0xe8218cAC...8869945ea
0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Oracle

Compiler Version
v0.8.3+commit.8d00100c

Optimization Enabled:
Yes with 300 runs

Other Settings:
default evmVersion
File 1 of 4 : Oracle.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.3;

import "./interfaces/IController.sol";
import "./TellorVars.sol";

/**
 @author Tellor Inc.
 @title Oracle
 @dev This is the Oracle contract which defines the functionality for the Tellor
 * oracle, where reporters submit values on chain and users can retrieve values.
*/
contract Oracle is TellorVars {
    // Storage
    uint256 public reportingLock = 12 hours; // amount of time before a reporter is able to submit a value again
    uint256 public timeBasedReward = 5e17; // time based reward for a reporter for successfully submitting a value
    uint256 public timeOfLastNewValue = block.timestamp; // time of the last new submitted value, originally set to the block timestamp
    uint256 public tipsInContract; // amount of tips within the contract
    mapping(bytes32 => Report) private reports; // mapping of query IDs to a report
    mapping(bytes32 => uint256) public tips; // mapping of query IDs to the amount of TRB they are tipped
    mapping(address => uint256) private reporterLastTimestamp; // mapping of reporter addresses to the timestamp of their last reported value
    mapping(address => uint256) private reportsSubmittedByAddress; // mapping of reporter addresses to the number of reports they've submitted
    mapping(address => uint256) private tipsByUser; // mapping of a user to the amount of tips they've paid

    // Structs
    struct Report {
        uint256[] timestamps; // array of all newValueTimestamps reported
        mapping(uint256 => uint256) timestampIndex; // mapping of timestamps to respective indices
        mapping(uint256 => uint256) timestampToBlockNum; // mapping of timestamp to block number
        mapping(uint256 => bytes) valueByTimestamp; // mapping of timestamps to values
        mapping(uint256 => address) reporterByTimestamp; // mapping of timestamps to reporters
    }

    // Events
    event ReportingLockChanged(uint256 _newReportingLock);
    event NewReport(
        bytes32 _queryId,
        uint256 _time,
        bytes _value,
        uint256 _reward,
        uint256 _nonce,
        bytes _queryData,
        address _reporter
    );
    event TimeBasedRewardsChanged(uint256 _newTimeBasedReward);
    event TipAdded(
        address indexed _user,
        bytes32 indexed _queryId,
        uint256 _tip,
        uint256 _totalTip,
        bytes _queryData
    );

    /**
     * @dev Changes reporting lock for reporters.
     * Note: this function is only callable by the Governance contract.
     * @param _newReportingLock is the new reporting lock.
     */
    function changeReportingLock(uint256 _newReportingLock) external {
        require(
            msg.sender ==
                IController(TELLOR_ADDRESS).addresses(_GOVERNANCE_CONTRACT),
            "Only governance contract can change reporting lock."
        );
        require(_newReportingLock < 8640000, "Invalid _newReportingLock value");
        reportingLock = _newReportingLock;
        emit ReportingLockChanged(_newReportingLock);
    }

    /**
     * @dev Changes time based reward for reporters.
     * Note: this function is only callable by the Governance contract.
     * @param _newTimeBasedReward is the new time based reward.
     */
    function changeTimeBasedReward(uint256 _newTimeBasedReward) external {
        require(
            msg.sender ==
                IController(TELLOR_ADDRESS).addresses(_GOVERNANCE_CONTRACT),
            "Only governance contract can change time based reward."
        );
        timeBasedReward = _newTimeBasedReward;
        emit TimeBasedRewardsChanged(_newTimeBasedReward);
    }

    /**
     * @dev Removes a value from the oracle.
     * Note: this function is only callable by the Governance contract.
     * @param _queryId is ID of the specific data feed
     * @param _timestamp is the timestamp of the data value to remove
     */
    function removeValue(bytes32 _queryId, uint256 _timestamp) external {
        require(
            msg.sender ==
                IController(TELLOR_ADDRESS).addresses(_GOVERNANCE_CONTRACT) ||
                msg.sender ==
                IController(TELLOR_ADDRESS).addresses(_ORACLE_CONTRACT),
            "caller must be the governance contract or the oracle contract"
        );
        Report storage rep = reports[_queryId];
        uint256 _index = rep.timestampIndex[_timestamp];
        // Shift all timestamps back to reflect deletion of value
        for (uint256 i = _index; i < rep.timestamps.length - 1; i++) {
            rep.timestamps[i] = rep.timestamps[i + 1];
            rep.timestampIndex[rep.timestamps[i]] -= 1;
        }
        // Delete and reset timestamp and value
        delete rep.timestamps[rep.timestamps.length - 1];
        rep.timestamps.pop();
        rep.valueByTimestamp[_timestamp] = "";
        rep.timestampIndex[_timestamp] = 0;
    }

    /**
     * @dev Allows a reporter to submit a value to the oracle
     * @param _queryId is ID of the specific data feed. Equals keccak256(_queryData) for non-legacy IDs
     * @param _value is the value the user submits to the oracle
     * @param _nonce is the current value count for the query id
     * @param _queryData is the data used to fulfill the data query
     */
    function submitValue(
        bytes32 _queryId,
        bytes calldata _value,
        uint256 _nonce,
        bytes memory _queryData
    ) external {
        Report storage rep = reports[_queryId];
        require(
            _nonce == rep.timestamps.length,
            "nonce must match timestamp index"
        );
        // Require reporter to abide by given reporting lock
        require(
            block.timestamp - reporterLastTimestamp[msg.sender] > reportingLock,
            "still in reporter time lock, please wait!"
        );
        require(
            address(this) ==
                IController(TELLOR_ADDRESS).addresses(_ORACLE_CONTRACT),
            "can only submit to current oracle contract"
        );
        require(
            _queryId == keccak256(_queryData) || uint256(_queryId) <= 100,
            "id must be hash of bytes data"
        );
        reporterLastTimestamp[msg.sender] = block.timestamp;
        IController _tellor = IController(TELLOR_ADDRESS);
        // Checks that reporter is not already staking TRB
        (uint256 _status, ) = _tellor.getStakerInfo(msg.sender);
        require(_status == 1, "Reporter status is not staker");
        // Check is in case the stake amount increases
        require(
            _tellor.balanceOf(msg.sender) >= _tellor.uints(_STAKE_AMOUNT),
            "balance must be greater than stake amount"
        );
        // Checks for no double reporting of timestamps
        require(
            rep.reporterByTimestamp[block.timestamp] == address(0),
            "timestamp already reported for"
        );
        // Update number of timestamps, value for given timestamp, and reporter for timestamp
        rep.timestampIndex[block.timestamp] = rep.timestamps.length;
        rep.timestamps.push(block.timestamp);
        rep.timestampToBlockNum[block.timestamp] = block.number;
        rep.valueByTimestamp[block.timestamp] = _value;
        rep.reporterByTimestamp[block.timestamp] = msg.sender;
        // Send tips + timeBasedReward to reporter of value, and reset tips for ID
        (uint256 _tip, uint256 _reward) = getCurrentReward(_queryId);
        tipsInContract -= _tip;
        if (_reward + _tip > 0) {
            _tellor.transfer(msg.sender, _reward + _tip);
        }
        tips[_queryId] = 0;
        // Update last oracle value and number of values submitted by a reporter
        timeOfLastNewValue = block.timestamp;
        reportsSubmittedByAddress[msg.sender]++;
        emit NewReport(
            _queryId,
            block.timestamp,
            _value,
            _tip + _reward,
            _nonce,
            _queryData,
            msg.sender
        );
    }

    /**
     * @dev Adds tips to incentivize reporters to submit values for specific data IDs.
     * @param _queryId is ID of the specific data feed
     * @param _tip is the amount to tip the given data ID
     * @param _queryData is required for IDs greater than 100, informs reporters how to fulfill request. See github.com/tellor-io/dataSpecs
     */
    function tipQuery(
        bytes32 _queryId,
        uint256 _tip,
        bytes memory _queryData
    ) external {
        // Require tip to be greater than 1 and be paid
        require(_tip > 1, "Tip should be greater than 1");
        require(
            IController(TELLOR_ADDRESS).approveAndTransferFrom(
                msg.sender,
                address(this),
                _tip
            ),
            "tip must be paid"
        );
        require(
            _queryId == keccak256(_queryData) ||
                uint256(_queryId) <= 100 ||
                msg.sender ==
                IController(TELLOR_ADDRESS).addresses(_GOVERNANCE_CONTRACT),
            "id must be hash of bytes data"
        );
        // Burn half the tip
        _tip = _tip / 2;
        IController(TELLOR_ADDRESS).burn(_tip);
        // Update total tip amount for user, data ID, and in total contract
        tips[_queryId] += _tip;
        tipsByUser[msg.sender] += _tip;
        tipsInContract += _tip;
        emit TipAdded(msg.sender, _queryId, _tip, tips[_queryId], _queryData);
    }

    //Getters
    /**
     * @dev Returns the block number at a given timestamp
     * @param _queryId is ID of the specific data feed
     * @param _timestamp is the timestamp to find the corresponding block number for
     * @return uint256 block number of the timestamp for the given data ID
     */
    function getBlockNumberByTimestamp(bytes32 _queryId, uint256 _timestamp)
        external
        view
        returns (uint256)
    {
        return reports[_queryId].timestampToBlockNum[_timestamp];
    }

    /**
     * @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 tips on given queryId
     * @return uint256 time based reward
     */
    function getCurrentReward(bytes32 _queryId)
        public
        view
        returns (uint256, uint256)
    {
        IController _tellor = IController(TELLOR_ADDRESS);
        uint256 _timeDiff = block.timestamp - timeOfLastNewValue;
        uint256 _reward = (_timeDiff * timeBasedReward) / 300; //.5 TRB per 5 minutes (should we make this upgradeable)
        if (_tellor.balanceOf(address(this)) < _reward + tipsInContract) {
            _reward = _tellor.balanceOf(address(this)) - tipsInContract;
        }
        return (tips[_queryId], _reward);
    }

    /**
     * @dev Returns the current value of a data feed given a specific ID
     * @param _queryId is the ID of the specific data feed
     * @return bytes memory of the current value of data
     */
    function getCurrentValue(bytes32 _queryId)
        external
        view
        returns (bytes memory)
    {
        return
            reports[_queryId].valueByTimestamp[
                reports[_queryId].timestamps[
                    reports[_queryId].timestamps.length - 1
                ]
            ];
    }

    /**
     * @dev Returns the reporting lock time, the amount of time a reporter must wait to submit again
     * @return uint256 reporting lock time
     */
    function getReportingLock() external view returns (uint256) {
        return reportingLock;
    }

    /**
     * @dev Returns the address of the reporter who submitted a value for a data ID at a specific time
     * @param _queryId is ID of the specific data feed
     * @param _timestamp is the timestamp to find a corresponding reporter for
     * @return address of the reporter who reported the value for the data ID at the given timestamp
     */
    function getReporterByTimestamp(bytes32 _queryId, uint256 _timestamp)
        external
        view
        returns (address)
    {
        return reports[_queryId].reporterByTimestamp[_timestamp];
    }

    /**
     * @dev Returns the timestamp of the reporter's last submission
     * @param _reporter is address of the reporter
     * @return uint256 timestamp of the reporter's last submission
     */
    function getReporterLastTimestamp(address _reporter)
        external
        view
        returns (uint256)
    {
        return reporterLastTimestamp[_reporter];
    }

    /**
     * @dev Returns the number of values submitted by a specific reporter address
     * @param _reporter is the address of a reporter
     * @return uint256 of the number of values submitted by the given reporter
     */
    function getReportsSubmittedByAddress(address _reporter)
        external
        view
        returns (uint256)
    {
        return reportsSubmittedByAddress[_reporter];
    }

    /**
     * @dev Returns the timestamp of a reported value given a data ID and timestamp index
     * @param _queryId is ID of the specific data feed
     * @param _index is the index of the timestamp
     * @return uint256 timestamp of the given queryId and index
     */
    function getReportTimestampByIndex(bytes32 _queryId, uint256 _index)
        external
        view
        returns (uint256)
    {
        return reports[_queryId].timestamps[_index];
    }

    /**
     * @dev Returns the time based reward for submitting a value
     * @return uint256 of time based reward
     */
    function getTimeBasedReward() external view returns (uint256) {
        return timeBasedReward;
    }

    /**
     * @dev Returns the number of timestamps/reports for a specific data ID
     * @param _queryId is ID of the specific data feed
     * @return uint256 of the number of timestamps/reports for the given data ID
     */
    function getTimestampCountById(bytes32 _queryId)
        external
        view
        returns (uint256)
    {
        return reports[_queryId].timestamps.length;
    }

    /**
     * @dev Returns the timestamp for the last value of any ID from the oracle
     * @return uint256 of timestamp of the last oracle value
     */
    function getTimeOfLastNewValue() external view returns (uint256) {
        return timeOfLastNewValue;
    }

    /**
     * @dev Returns the index of a reporter timestamp in the timestamp array for a specific data ID
     * @param _queryId is ID of the specific data feed
     * @param _timestamp is the timestamp to find in the timestamps array
     * @return uint256 of the index of the reporter timestamp in the array for specific ID
     */
    function getTimestampIndexByTimestamp(bytes32 _queryId, uint256 _timestamp)
        external
        view
        returns (uint256)
    {
        return reports[_queryId].timestampIndex[_timestamp];
    }

    /**
     * @dev Returns the amount of tips available for a specific query ID
     * @param _queryId is ID of the specific data feed
     * @return uint256 of the amount of tips added for the specific ID
     */
    function getTipsById(bytes32 _queryId) external view returns (uint256) {
        return tips[_queryId];
    }

    /**
     * @dev Returns the amount of tips made by a user
     * @param _user is the address of the user
     * @return uint256 of the amount of tips made by the user
     */
    function getTipsByUser(address _user) external view returns (uint256) {
        return tipsByUser[_user];
    }

    /**
     * @dev Returns the value of a data feed given a specific ID and timestamp
     * @param _queryId is the ID of the specific data feed
     * @param _timestamp is the timestamp to look for data
     * @return bytes memory of the value of data at the associated timestamp
     */
    function getValueByTimestamp(bytes32 _queryId, uint256 _timestamp)
        external
        view
        returns (bytes memory)
    {
        return reports[_queryId].valueByTimestamp[_timestamp];
    }

    /**
     * @dev Used during the upgrade process to verify valid Tellor Contracts
     */
    function verify() external pure returns (uint256) {
        return 9999;
    }
}

File 2 of 4 : IController.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.3;

interface IController{
    function addresses(bytes32) external returns(address);
    function uints(bytes32) external returns(uint256);
    function burn(uint256 _amount) external;
    function changeDeity(address _newDeity) external;
    function changeOwner(address _newOwner) external;
    function changeTellorContract(address _tContract) external;
    function changeControllerContract(address _newController) external;
    function changeGovernanceContract(address _newGovernance) external;
    function changeOracleContract(address _newOracle) external;
    function changeTreasuryContract(address _newTreasury) external;
    function changeUint(bytes32 _target, uint256 _amount) external;
    function migrate() external;
    function mint(address _reciever, uint256 _amount) external;
    function init() external;
    function getDisputeIdByDisputeHash(bytes32 _hash) external view returns (uint256);
    function getLastNewValueById(uint256 _requestId) external view returns (uint256, bool);
    function retrieveData(uint256 _requestId, uint256 _timestamp) external view returns (uint256);
    function getNewValueCountbyRequestId(uint256 _requestId) external view returns (uint256);
    function getAddressVars(bytes32 _data) external view returns (address);
    function getUintVar(bytes32 _data) external view returns (uint256);
    function totalSupply() external view returns (uint256);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function allowance(address _user, address _spender) external view  returns (uint256);
    function allowedToTrade(address _user, uint256 _amount) external view returns (bool);
    function approve(address _spender, uint256 _amount) external returns (bool);
    function approveAndTransferFrom(address _from, address _to, uint256 _amount) external returns(bool);
    function balanceOf(address _user) external view returns (uint256);
    function balanceOfAt(address _user, uint256 _blockNumber)external view returns (uint256);
    function transfer(address _to, uint256 _amount)external returns (bool success);
    function transferFrom(address _from,address _to,uint256 _amount) external returns (bool success) ;
    function depositStake() external;
    function requestStakingWithdraw() external;
    function withdrawStake() external;
    function changeStakingStatus(address _reporter, uint _status) external;
    function slashReporter(address _reporter, address _disputer) external;
    function getStakerInfo(address _staker) external view returns (uint256, uint256);
    function getTimestampbyRequestIDandIndex(uint256 _requestID, uint256 _index) external view returns (uint256);
    function getNewCurrentVariables()external view returns (bytes32 _c,uint256[5] memory _r,uint256 _d,uint256 _t);
    //in order to call fallback function
    function beginDispute(uint256 _requestId, uint256 _timestamp,uint256 _minerIndex) external;
    function unlockDisputeFee(uint256 _disputeId) external;
    function vote(uint256 _disputeId, bool _supportsDispute) external;
    function tallyVotes(uint256 _disputeId) external;
    //test functions
    function tipQuery(uint,uint,bytes memory) external;
    function getNewVariablesOnDeck() external view returns (uint256[5] memory idsOnDeck, uint256[5] memory tipsOnDeck);
}

File 3 of 4 : TellorVars.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.3;

import "./tellor3/TellorVariables.sol";

/**
 @author Tellor Inc.
 @title TellorVariables
 @dev Helper contract to store hashes of variables.
 * For each of the bytes32 constants, the values are equal to
 * keccak256([VARIABLE NAME])
*/
contract TellorVars is TellorVariables {
    // Storage
    address constant TELLOR_ADDRESS =
        0x88dF592F8eb5D7Bd38bFeF7dEb0fBc02cf3778a0; // Address of main Tellor Contract
    // Hashes for each pertinent contract
    bytes32 constant _GOVERNANCE_CONTRACT =
        0xefa19baa864049f50491093580c5433e97e8d5e41f8db1a61108b4fa44cacd93;
    bytes32 constant _ORACLE_CONTRACT =
        0xfa522e460446113e8fd353d7fa015625a68bc0369712213a42e006346440891e;
    bytes32 constant _TREASURY_CONTRACT =
        0x1436a1a60dca0ebb2be98547e57992a0fa082eb479e7576303cbd384e934f1fa;
    bytes32 constant _SWITCH_TIME =
        0x6c0e91a96227393eb6e42b88e9a99f7c5ebd588098b549c949baf27ac9509d8f;
    bytes32 constant _MINIMUM_DISPUTE_FEE =
        0x7335d16d7e7f6cb9f532376441907fe76aa2ea267285c82892601f4755ed15f0;
}

File 4 of 4 : TellorVariables.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.7.4;

/**
 @author Tellor Inc.
 @title TellorVariables
 @dev Helper contract to store hashes of variables
*/
contract TellorVariables {
    bytes32 constant _BLOCK_NUMBER =
        0x4b4cefd5ced7569ef0d091282b4bca9c52a034c56471a6061afd1bf307a2de7c; //keccak256("_BLOCK_NUMBER");
    bytes32 constant _CURRENT_CHALLENGE =
        0xd54702836c9d21d0727ffacc3e39f57c92b5ae0f50177e593bfb5ec66e3de280; //keccak256("_CURRENT_CHALLENGE");
    bytes32 constant _CURRENT_REQUESTID =
        0xf5126bb0ac211fbeeac2c0e89d4c02ac8cadb2da1cfb27b53c6c1f4587b48020; //keccak256("_CURRENT_REQUESTID");
    bytes32 constant _CURRENT_REWARD =
        0xd415862fd27fb74541e0f6f725b0c0d5b5fa1f22367d9b78ec6f61d97d05d5f8; //keccak256("_CURRENT_REWARD");
    bytes32 constant _CURRENT_TOTAL_TIPS =
        0x09659d32f99e50ac728058418d38174fe83a137c455ff1847e6fb8e15f78f77a; //keccak256("_CURRENT_TOTAL_TIPS");
    bytes32 constant _DEITY =
        0x5fc094d10c65bc33cc842217b2eccca0191ff24148319da094e540a559898961; //keccak256("_DEITY");
    bytes32 constant _DIFFICULTY =
        0xf758978fc1647996a3d9992f611883adc442931dc49488312360acc90601759b; //keccak256("_DIFFICULTY");
    bytes32 constant _DISPUTE_COUNT =
        0x310199159a20c50879ffb440b45802138b5b162ec9426720e9dd3ee8bbcdb9d7; //keccak256("_DISPUTE_COUNT");
    bytes32 constant _DISPUTE_FEE =
        0x675d2171f68d6f5545d54fb9b1fb61a0e6897e6188ca1cd664e7c9530d91ecfc; //keccak256("_DISPUTE_FEE");
    bytes32 constant _DISPUTE_ROUNDS =
        0x6ab2b18aafe78fd59c6a4092015bddd9fcacb8170f72b299074f74d76a91a923; //keccak256("_DISPUTE_ROUNDS");
    bytes32 constant _EXTENSION =
        0x2b2a1c876f73e67ebc4f1b08d10d54d62d62216382e0f4fd16c29155818207a4; //keccak256("_EXTENSION");
    bytes32 constant _FEE =
        0x1da95f11543c9b03927178e07951795dfc95c7501a9d1cf00e13414ca33bc409; //keccak256("_FEE");
    bytes32 constant _FORK_EXECUTED =
        0xda571dfc0b95cdc4a3835f5982cfdf36f73258bee7cb8eb797b4af8b17329875; //keccak256("_FORK_EXECUTED");
    bytes32 constant _LOCK =
        0xd051321aa26ce60d202f153d0c0e67687e975532ab88ce92d84f18e39895d907;
    bytes32 constant _MIGRATOR =
        0xc6b005d45c4c789dfe9e2895b51df4336782c5ff6bd59a5c5c9513955aa06307; //keccak256("_MIGRATOR");
    bytes32 constant _MIN_EXECUTION_DATE =
        0x46f7d53798d31923f6952572c6a19ad2d1a8238d26649c2f3493a6d69e425d28; //keccak256("_MIN_EXECUTION_DATE");
    bytes32 constant _MINER_SLOT =
        0x6de96ee4d33a0617f40a846309c8759048857f51b9d59a12d3c3786d4778883d; //keccak256("_MINER_SLOT");
    bytes32 constant _NUM_OF_VOTES =
        0x1da378694063870452ce03b189f48e04c1aa026348e74e6c86e10738514ad2c4; //keccak256("_NUM_OF_VOTES");
    bytes32 constant _OLD_TELLOR =
        0x56e0987db9eaec01ed9e0af003a0fd5c062371f9d23722eb4a3ebc74f16ea371; //keccak256("_OLD_TELLOR");
    bytes32 constant _ORIGINAL_ID =
        0xed92b4c1e0a9e559a31171d487ecbec963526662038ecfa3a71160bd62fb8733; //keccak256("_ORIGINAL_ID");
    bytes32 constant _OWNER =
        0x7a39905194de50bde334d18b76bbb36dddd11641d4d50b470cb837cf3bae5def; //keccak256("_OWNER");
    bytes32 constant _PAID =
        0x29169706298d2b6df50a532e958b56426de1465348b93650fca42d456eaec5fc; //keccak256("_PAID");
    bytes32 constant _PENDING_OWNER =
        0x7ec081f029b8ac7e2321f6ae8c6a6a517fda8fcbf63cabd63dfffaeaafa56cc0; //keccak256("_PENDING_OWNER");
    bytes32 constant _REQUEST_COUNT =
        0x3f8b5616fa9e7f2ce4a868fde15c58b92e77bc1acd6769bf1567629a3dc4c865; //keccak256("_REQUEST_COUNT");
    bytes32 constant _REQUEST_ID =
        0x9f47a2659c3d32b749ae717d975e7962959890862423c4318cf86e4ec220291f; //keccak256("_REQUEST_ID");
    bytes32 constant _REQUEST_Q_POSITION =
        0xf68d680ab3160f1aa5d9c3a1383c49e3e60bf3c0c031245cbb036f5ce99afaa1; //keccak256("_REQUEST_Q_POSITION");
    bytes32 constant _SLOT_PROGRESS =
        0xdfbec46864bc123768f0d134913175d9577a55bb71b9b2595fda21e21f36b082; //keccak256("_SLOT_PROGRESS");
    bytes32 constant _STAKE_AMOUNT =
        0x5d9fadfc729fd027e395e5157ef1b53ef9fa4a8f053043c5f159307543e7cc97; //keccak256("_STAKE_AMOUNT");
    bytes32 constant _STAKE_COUNT =
        0x10c168823622203e4057b65015ff4d95b4c650b308918e8c92dc32ab5a0a034b; //keccak256("_STAKE_COUNT");
    bytes32 constant _T_BLOCK =
        0xf3b93531fa65b3a18680d9ea49df06d96fbd883c4889dc7db866f8b131602dfb; //keccak256("_T_BLOCK");
    bytes32 constant _TALLY_DATE =
        0xf9e1ae10923bfc79f52e309baf8c7699edb821f91ef5b5bd07be29545917b3a6; //keccak256("_TALLY_DATE");
    bytes32 constant _TARGET_MINERS =
        0x0b8561044b4253c8df1d9ad9f9ce2e0f78e4bd42b2ed8dd2e909e85f750f3bc1; //keccak256("_TARGET_MINERS");
    bytes32 constant _TELLOR_CONTRACT =
        0x0f1293c916694ac6af4daa2f866f0448d0c2ce8847074a7896d397c961914a08; //keccak256("_TELLOR_CONTRACT");
    bytes32 constant _TELLOR_GETTERS =
        0xabd9bea65759494fe86471c8386762f989e1f2e778949e94efa4a9d1c4b3545a; //keccak256("_TELLOR_GETTERS");
    bytes32 constant _TIME_OF_LAST_NEW_VALUE =
        0x2c8b528fbaf48aaf13162a5a0519a7ad5a612da8ff8783465c17e076660a59f1; //keccak256("_TIME_OF_LAST_NEW_VALUE");
    bytes32 constant _TIME_TARGET =
        0xd4f87b8d0f3d3b7e665df74631f6100b2695daa0e30e40eeac02172e15a999e1; //keccak256("_TIME_TARGET");
    bytes32 constant _TIMESTAMP =
        0x2f9328a9c75282bec25bb04befad06926366736e0030c985108445fa728335e5; //keccak256("_TIMESTAMP");
    bytes32 constant _TOTAL_SUPPLY =
        0xe6148e7230ca038d456350e69a91b66968b222bfac9ebfbea6ff0a1fb7380160; //keccak256("_TOTAL_SUPPLY");
    bytes32 constant _TOTAL_TIP =
        0x1590276b7f31dd8e2a06f9a92867333eeb3eddbc91e73b9833e3e55d8e34f77d; //keccak256("_TOTAL_TIP");
    bytes32 constant _VALUE =
        0x9147231ab14efb72c38117f68521ddef8de64f092c18c69dbfb602ffc4de7f47; //keccak256("_VALUE");
    bytes32 constant _EIP_SLOT =
        0x7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3;
}

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

Contract Security Audit

Contract ABI

[{"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":false,"internalType":"uint256","name":"_newReportingLock","type":"uint256"}],"name":"ReportingLockChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newTimeBasedReward","type":"uint256"}],"name":"TimeBasedRewardsChanged","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"},{"inputs":[{"internalType":"uint256","name":"_newReportingLock","type":"uint256"}],"name":"changeReportingLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newTimeBasedReward","type":"uint256"}],"name":"changeTimeBasedReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"getBlockNumberByTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"getCurrentValue","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getReportTimestampByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"getReporterByTimestamp","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_reporter","type":"address"}],"name":"getReporterLastTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReportingLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_reporter","type":"address"}],"name":"getReportsSubmittedByAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTimeBasedReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTimeOfLastNewValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"}],"name":"getTimestampCountById","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"getTimestampIndexByTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"}],"name":"getTipsById","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getTipsByUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"getValueByTimestamp","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"removeValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reportingLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"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":"_queryId","type":"bytes32"},{"internalType":"uint256","name":"_tip","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":"verify","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"}]

608060405261a8c06000556706f05b59d3b200006001554260025534801561002657600080fd5b50611e52806100366000396000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c80636fd4f229116100ee578063adf1639d11610097578063e07c548611610071578063e07c5486146103d7578063ef0234ad14610426578063ef4c262d14610439578063fc735e9914610459576101ae565b8063adf1639d14610393578063b736ec36146103a6578063c0f95d52146103cf576101ae565b806396426d97116100c857806396426d97146103335780639d9b16ed1461033c578063a1e588a51461036b576101ae565b80636fd4f229146102e85780637c37b8b4146102f1578063935408d014610304576101ae565b806350005b831161015b5780635eaa9ced116101355780635eaa9ced14610299578063602bf227146102ac57806369d43bd3146102cc5780636d53585f146102d5576101ae565b806350005b83146102485780635b5edcfc146102715780635d183cfa14610286576101ae565b806335e724321161018c57806335e72432146101f75780633878293e14610217578063460c33a214610240576101ae565b80630b2d2b0d146101b357806314d66b9a146101dc5780633321fc41146101ee575b600080fd5b6101c66101c1366004611b70565b610461565b6040516101d39190611cd9565b60405180910390f35b6001545b6040519081526020016101d3565b6101e060005481565b6101e0610205366004611ab3565b60009081526004602052604090205490565b6101e0610225366004611a54565b6001600160a01b031660009081526007602052604090205490565b6000546101e0565b6101e0610256366004611a54565b6001600160a01b031660009081526006602052604090205490565b61028461027f366004611b70565b610512565b005b610284610294366004611ab3565b6108b6565b6102846102a7366004611acb565b610a64565b6101e06102ba366004611ab3565b60056020526000908152604090205481565b6101e060035481565b6102846102e3366004611ab3565b611153565b6101e060025481565b6101e06102ff366004611b70565b6112b2565b6101e0610312366004611b70565b60009182526004602090815260408084209284526002909201905290205490565b6101e060015481565b6101e061034a366004611b70565b60009182526004602090815260408084209284526001909201905290205490565b61037e610379366004611ab3565b6112f3565b604080519283526020830191909152016101d3565b6101c66103a1366004611ab3565b61146a565b6101e06103b4366004611a54565b6001600160a01b031660009081526008602052604090205490565b6002546101e0565b61040e6103e5366004611b70565b60009182526004602081815260408085209385529290910190529020546001600160a01b031690565b6040516001600160a01b0390911681526020016101d3565b610284610434366004611b91565b611557565b6101e0610447366004611ab3565b60009081526005602052604090205490565b61270f6101e0565b6000828152600460209081526040808320848452600301909152902080546060919061048c90611d82565b80601f01602080910402602001604051908101604052809291908181526020018280546104b890611d82565b80156105055780601f106104da57610100808354040283529160200191610505565b820191906000526020600020905b8154815290600101906020018083116104e857829003601f168201915b5050505050905092915050565b60405163699f200f60e01b81527fefa19baa864049f50491093580c5433e97e8d5e41f8db1a61108b4fa44cacd9360048201527388df592f8eb5d7bd38bfef7deb0fbc02cf3778a09063699f200f90602401602060405180830381600087803b15801561057e57600080fd5b505af1158015610592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b69190611a77565b6001600160a01b0316336001600160a01b03161480610689575060405163699f200f60e01b81527ffa522e460446113e8fd353d7fa015625a68bc0369712213a42e006346440891e60048201527388df592f8eb5d7bd38bfef7deb0fbc02cf3778a09063699f200f90602401602060405180830381600087803b15801561063c57600080fd5b505af1158015610650573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106749190611a77565b6001600160a01b0316336001600160a01b0316145b6107005760405162461bcd60e51b815260206004820152603d60248201527f63616c6c6572206d7573742062652074686520676f7665726e616e636520636f60448201527f6e7472616374206f7220746865206f7261636c6520636f6e747261637400000060648201526084015b60405180910390fd5b60008281526004602090815260408083208484526001810190925290912054805b825461072f90600190611d6b565b8110156108075782610742826001611d14565b8154811061076057634e487b7160e01b600052603260045260246000fd5b906000526020600020015483600001828154811061078e57634e487b7160e01b600052603260045260246000fd5b906000526020600020018190555060018360010160008560000184815481106107c757634e487b7160e01b600052603260045260246000fd5b9060005260206000200154815260200190815260200160002060008282546107ef9190611d6b565b909155508190506107ff81611dbd565b915050610721565b508154829061081890600190611d6b565b8154811061083657634e487b7160e01b600052603260045260246000fd5b6000918252602082200155815482908061086057634e487b7160e01b600052603160045260246000fd5b6000828152602080822083016000199081018390559092019092556040805180830180835284825287855260038701909352922091516108a19291906118c0565b50506000918252600101602052604081205550565b60405163699f200f60e01b81527fefa19baa864049f50491093580c5433e97e8d5e41f8db1a61108b4fa44cacd9360048201527388df592f8eb5d7bd38bfef7deb0fbc02cf3778a09063699f200f90602401602060405180830381600087803b15801561092257600080fd5b505af1158015610936573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095a9190611a77565b6001600160a01b0316336001600160a01b0316146109d65760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920676f7665726e616e636520636f6e74726163742063616e206368616044820152723733b2903932b837b93a34b733903637b1b59760691b60648201526084016106f7565b6283d6008110610a285760405162461bcd60e51b815260206004820152601f60248201527f496e76616c6964205f6e65775265706f7274696e674c6f636b2076616c75650060448201526064016106f7565b60008190556040518181527f8867dac9fd763aeaa408825321cc53f6fd67a46ea326adadfd2a378d17fedf22906020015b60405180910390a150565b600085815260046020526040902080548314610ac25760405162461bcd60e51b815260206004820181905260248201527f6e6f6e6365206d757374206d617463682074696d657374616d7020696e64657860448201526064016106f7565b600080543382526006602052604090912054610ade9042611d6b565b11610b3d5760405162461bcd60e51b815260206004820152602960248201527f7374696c6c20696e207265706f727465722074696d65206c6f636b2c20706c6560448201526861736520776169742160b81b60648201526084016106f7565b60405163699f200f60e01b81527ffa522e460446113e8fd353d7fa015625a68bc0369712213a42e006346440891e60048201527388df592f8eb5d7bd38bfef7deb0fbc02cf3778a09063699f200f90602401602060405180830381600087803b158015610ba957600080fd5b505af1158015610bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be19190611a77565b6001600160a01b0316306001600160a01b031614610c545760405162461bcd60e51b815260206004820152602a60248201527f63616e206f6e6c79207375626d697420746f2063757272656e74206f7261636c604482015269194818dbdb9d1c9858dd60b21b60648201526084016106f7565b81516020830120861480610c69575060648611155b610cb55760405162461bcd60e51b815260206004820152601d60248201527f6964206d7573742062652068617368206f66206279746573206461746100000060448201526064016106f7565b3360008181526006602052604080822042905551630733bdef60e41b815260048101929092527388df592f8eb5d7bd38bfef7deb0fbc02cf3778a091829063733bdef090602401604080518083038186803b158015610d1357600080fd5b505afa158015610d27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4b9190611bf7565b50905080600114610d9e5760405162461bcd60e51b815260206004820152601d60248201527f5265706f7274657220737461747573206973206e6f74207374616b657200000060448201526064016106f7565b604051632d67853560e21b81527f5d9fadfc729fd027e395e5157ef1b53ef9fa4a8f053043c5f159307543e7cc9760048201526001600160a01b0383169063b59e14d490602401602060405180830381600087803b158015610dff57600080fd5b505af1158015610e13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e379190611bdf565b6040516370a0823160e01b81523360048201526001600160a01b038416906370a082319060240160206040518083038186803b158015610e7657600080fd5b505afa158015610e8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eae9190611bdf565b1015610f0e5760405162461bcd60e51b815260206004820152602960248201527f62616c616e6365206d7573742062652067726561746572207468616e207374616044820152681ad948185b5bdd5b9d60ba1b60648201526084016106f7565b4260009081526004840160205260409020546001600160a01b031615610f765760405162461bcd60e51b815260206004820152601e60248201527f74696d657374616d7020616c7265616479207265706f7274656420666f72000060448201526064016106f7565b82544260008181526001808701602090815260408084208690559185018855878352808320909401839055918152600286018352818120439055600386019092529020610fc4908888611944565b504260009081526004840160205260408120805473ffffffffffffffffffffffffffffffffffffffff19163317905580610ffd8a6112f3565b9150915081600360008282546110139190611d6b565b90915550600090506110258383611d14565b11156110c5576001600160a01b03841663a9059cbb336110458585611d14565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561108b57600080fd5b505af115801561109f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c39190611a93565b505b60008a815260056020908152604080832083905542600255338352600790915281208054916110f383611dbd565b909155507fab1d593f8e2ecb165106e30a39db6769078d35c3fdbb110f24932f0d7af68c2990508a428b8b6111288688611d14565b8c8c3360405161113f989796959493929190611c65565b60405180910390a150505050505050505050565b60405163699f200f60e01b81527fefa19baa864049f50491093580c5433e97e8d5e41f8db1a61108b4fa44cacd9360048201527388df592f8eb5d7bd38bfef7deb0fbc02cf3778a09063699f200f90602401602060405180830381600087803b1580156111bf57600080fd5b505af11580156111d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f79190611a77565b6001600160a01b0316336001600160a01b03161461127d5760405162461bcd60e51b815260206004820152603660248201527f4f6e6c7920676f7665726e616e636520636f6e74726163742063616e2063686160448201527f6e67652074696d65206261736564207265776172642e0000000000000000000060648201526084016106f7565b60018190556040518181527f01432c5d54689da3dbfec924c89d1e453ecaec349928ceabd50207e909e8f7de90602001610a59565b60008281526004602052604081208054839081106112e057634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b60008060007388df592f8eb5d7bd38bfef7deb0fbc02cf3778a0905060006002544261131f9190611d6b565b9050600061012c600154836113349190611d4c565b61133e9190611d2c565b90506003548161134e9190611d14565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a082319060240160206040518083038186803b15801561138d57600080fd5b505afa1580156113a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c59190611bdf565b1015611452576003546040516370a0823160e01b81523060048201526001600160a01b038516906370a082319060240160206040518083038186803b15801561140d57600080fd5b505afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190611bdf565b61144f9190611d6b565b90505b60009586526005602052604090952054959350505050565b600081815260046020526040812080546060926003830192909161149090600190611d6b565b815481106114ae57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154815260200190815260200160002080546114d290611d82565b80601f01602080910402602001604051908101604052809291908181526020018280546114fe90611d82565b801561154b5780601f106115205761010080835404028352916020019161154b565b820191906000526020600020905b81548152906001019060200180831161152e57829003601f168201915b50505050509050919050565b600182116115a75760405162461bcd60e51b815260206004820152601c60248201527f5469702073686f756c642062652067726561746572207468616e20310000000060448201526064016106f7565b60405163288c9c9d60e01b8152336004820152306024820152604481018390527388df592f8eb5d7bd38bfef7deb0fbc02cf3778a09063288c9c9d90606401602060405180830381600087803b15801561160057600080fd5b505af1158015611614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116389190611a93565b6116775760405162461bcd60e51b815260206004820152601060248201526f1d1a5c081b5d5cdd081899481c185a5960821b60448201526064016106f7565b8051602082012083148061168c575060648311155b8061174b575060405163699f200f60e01b81527fefa19baa864049f50491093580c5433e97e8d5e41f8db1a61108b4fa44cacd9360048201527388df592f8eb5d7bd38bfef7deb0fbc02cf3778a09063699f200f90602401602060405180830381600087803b1580156116fe57600080fd5b505af1158015611712573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117369190611a77565b6001600160a01b0316336001600160a01b0316145b6117975760405162461bcd60e51b815260206004820152601d60248201527f6964206d7573742062652068617368206f66206279746573206461746100000060448201526064016106f7565b6117a2600283611d2c565b604051630852cd8d60e31b8152600481018290529092507388df592f8eb5d7bd38bfef7deb0fbc02cf3778a0906342966c6890602401600060405180830381600087803b1580156117f257600080fd5b505af1158015611806573d6000803e3d6000fd5b5050506000848152600560205260408120805485935090919061182a908490611d14565b9091555050336000908152600860205260408120805484929061184e908490611d14565b9250508190555081600360008282546118679190611d14565b909155505060008381526005602052604090819020549051849133917fd951d408a0f5057da5c25b826fb5ce403d56542962b6ac6994dbc6d5432fbff5916118b3918791908790611cec565b60405180910390a3505050565b8280546118cc90611d82565b90600052602060002090601f0160209004810192826118ee5760008555611934565b82601f1061190757805160ff1916838001178555611934565b82800160010185558215611934579182015b82811115611934578251825591602001919060010190611919565b506119409291506119b8565b5090565b82805461195090611d82565b90600052602060002090601f0160209004810192826119725760008555611934565b82601f1061198b5782800160ff19823516178555611934565b82800160010185558215611934579182015b8281111561193457823582559160200191906001019061199d565b5b8082111561194057600081556001016119b9565b600082601f8301126119dd578081fd5b813567ffffffffffffffff808211156119f8576119f8611dee565b604051601f8301601f19908116603f01168101908282118183101715611a2057611a20611dee565b81604052838152866020858801011115611a38578485fd5b8360208701602083013792830160200193909352509392505050565b600060208284031215611a65578081fd5b8135611a7081611e04565b9392505050565b600060208284031215611a88578081fd5b8151611a7081611e04565b600060208284031215611aa4578081fd5b81518015158114611a70578182fd5b600060208284031215611ac4578081fd5b5035919050565b600080600080600060808688031215611ae2578081fd5b85359450602086013567ffffffffffffffff80821115611b00578283fd5b818801915088601f830112611b13578283fd5b813581811115611b21578384fd5b896020828501011115611b32578384fd5b60208301965080955050604088013593506060880135915080821115611b56578283fd5b50611b63888289016119cd565b9150509295509295909350565b60008060408385031215611b82578182fd5b50508035926020909101359150565b600080600060608486031215611ba5578283fd5b8335925060208401359150604084013567ffffffffffffffff811115611bc9578182fd5b611bd5868287016119cd565b9150509250925092565b600060208284031215611bf0578081fd5b5051919050565b60008060408385031215611c09578182fd5b505080516020909101519092909150565b60008151808452815b81811015611c3f57602081850181015186830182015201611c23565b81811115611c505782602083870101525b50601f01601f19169290920160200192915050565b600089825288602083015260e060408301528660e083015261010087898285013781818985010152601f19601f8901168301876060850152866080850152818482030160a0850152611cb982820187611c1a565b925050506001600160a01b03831660c08301529998505050505050505050565b600060208252611a706020830184611c1a565b600084825283602083015260606040830152611d0b6060830184611c1a565b95945050505050565b60008219821115611d2757611d27611dd8565b500190565b600082611d4757634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611d6657611d66611dd8565b500290565b600082821015611d7d57611d7d611dd8565b500390565b600181811c90821680611d9657607f821691505b60208210811415611db757634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611dd157611dd1611dd8565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611e1957600080fd5b5056fea26469706673582212201ec320c16a6f6431c31e1fa0184ecb5db4f3edfb5dedfa957962f63c8925874e64736f6c63430008030033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101ae5760003560e01c80636fd4f229116100ee578063adf1639d11610097578063e07c548611610071578063e07c5486146103d7578063ef0234ad14610426578063ef4c262d14610439578063fc735e9914610459576101ae565b8063adf1639d14610393578063b736ec36146103a6578063c0f95d52146103cf576101ae565b806396426d97116100c857806396426d97146103335780639d9b16ed1461033c578063a1e588a51461036b576101ae565b80636fd4f229146102e85780637c37b8b4146102f1578063935408d014610304576101ae565b806350005b831161015b5780635eaa9ced116101355780635eaa9ced14610299578063602bf227146102ac57806369d43bd3146102cc5780636d53585f146102d5576101ae565b806350005b83146102485780635b5edcfc146102715780635d183cfa14610286576101ae565b806335e724321161018c57806335e72432146101f75780633878293e14610217578063460c33a214610240576101ae565b80630b2d2b0d146101b357806314d66b9a146101dc5780633321fc41146101ee575b600080fd5b6101c66101c1366004611b70565b610461565b6040516101d39190611cd9565b60405180910390f35b6001545b6040519081526020016101d3565b6101e060005481565b6101e0610205366004611ab3565b60009081526004602052604090205490565b6101e0610225366004611a54565b6001600160a01b031660009081526007602052604090205490565b6000546101e0565b6101e0610256366004611a54565b6001600160a01b031660009081526006602052604090205490565b61028461027f366004611b70565b610512565b005b610284610294366004611ab3565b6108b6565b6102846102a7366004611acb565b610a64565b6101e06102ba366004611ab3565b60056020526000908152604090205481565b6101e060035481565b6102846102e3366004611ab3565b611153565b6101e060025481565b6101e06102ff366004611b70565b6112b2565b6101e0610312366004611b70565b60009182526004602090815260408084209284526002909201905290205490565b6101e060015481565b6101e061034a366004611b70565b60009182526004602090815260408084209284526001909201905290205490565b61037e610379366004611ab3565b6112f3565b604080519283526020830191909152016101d3565b6101c66103a1366004611ab3565b61146a565b6101e06103b4366004611a54565b6001600160a01b031660009081526008602052604090205490565b6002546101e0565b61040e6103e5366004611b70565b60009182526004602081815260408085209385529290910190529020546001600160a01b031690565b6040516001600160a01b0390911681526020016101d3565b610284610434366004611b91565b611557565b6101e0610447366004611ab3565b60009081526005602052604090205490565b61270f6101e0565b6000828152600460209081526040808320848452600301909152902080546060919061048c90611d82565b80601f01602080910402602001604051908101604052809291908181526020018280546104b890611d82565b80156105055780601f106104da57610100808354040283529160200191610505565b820191906000526020600020905b8154815290600101906020018083116104e857829003601f168201915b5050505050905092915050565b60405163699f200f60e01b81527fefa19baa864049f50491093580c5433e97e8d5e41f8db1a61108b4fa44cacd9360048201527388df592f8eb5d7bd38bfef7deb0fbc02cf3778a09063699f200f90602401602060405180830381600087803b15801561057e57600080fd5b505af1158015610592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b69190611a77565b6001600160a01b0316336001600160a01b03161480610689575060405163699f200f60e01b81527ffa522e460446113e8fd353d7fa015625a68bc0369712213a42e006346440891e60048201527388df592f8eb5d7bd38bfef7deb0fbc02cf3778a09063699f200f90602401602060405180830381600087803b15801561063c57600080fd5b505af1158015610650573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106749190611a77565b6001600160a01b0316336001600160a01b0316145b6107005760405162461bcd60e51b815260206004820152603d60248201527f63616c6c6572206d7573742062652074686520676f7665726e616e636520636f60448201527f6e7472616374206f7220746865206f7261636c6520636f6e747261637400000060648201526084015b60405180910390fd5b60008281526004602090815260408083208484526001810190925290912054805b825461072f90600190611d6b565b8110156108075782610742826001611d14565b8154811061076057634e487b7160e01b600052603260045260246000fd5b906000526020600020015483600001828154811061078e57634e487b7160e01b600052603260045260246000fd5b906000526020600020018190555060018360010160008560000184815481106107c757634e487b7160e01b600052603260045260246000fd5b9060005260206000200154815260200190815260200160002060008282546107ef9190611d6b565b909155508190506107ff81611dbd565b915050610721565b508154829061081890600190611d6b565b8154811061083657634e487b7160e01b600052603260045260246000fd5b6000918252602082200155815482908061086057634e487b7160e01b600052603160045260246000fd5b6000828152602080822083016000199081018390559092019092556040805180830180835284825287855260038701909352922091516108a19291906118c0565b50506000918252600101602052604081205550565b60405163699f200f60e01b81527fefa19baa864049f50491093580c5433e97e8d5e41f8db1a61108b4fa44cacd9360048201527388df592f8eb5d7bd38bfef7deb0fbc02cf3778a09063699f200f90602401602060405180830381600087803b15801561092257600080fd5b505af1158015610936573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095a9190611a77565b6001600160a01b0316336001600160a01b0316146109d65760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920676f7665726e616e636520636f6e74726163742063616e206368616044820152723733b2903932b837b93a34b733903637b1b59760691b60648201526084016106f7565b6283d6008110610a285760405162461bcd60e51b815260206004820152601f60248201527f496e76616c6964205f6e65775265706f7274696e674c6f636b2076616c75650060448201526064016106f7565b60008190556040518181527f8867dac9fd763aeaa408825321cc53f6fd67a46ea326adadfd2a378d17fedf22906020015b60405180910390a150565b600085815260046020526040902080548314610ac25760405162461bcd60e51b815260206004820181905260248201527f6e6f6e6365206d757374206d617463682074696d657374616d7020696e64657860448201526064016106f7565b600080543382526006602052604090912054610ade9042611d6b565b11610b3d5760405162461bcd60e51b815260206004820152602960248201527f7374696c6c20696e207265706f727465722074696d65206c6f636b2c20706c6560448201526861736520776169742160b81b60648201526084016106f7565b60405163699f200f60e01b81527ffa522e460446113e8fd353d7fa015625a68bc0369712213a42e006346440891e60048201527388df592f8eb5d7bd38bfef7deb0fbc02cf3778a09063699f200f90602401602060405180830381600087803b158015610ba957600080fd5b505af1158015610bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be19190611a77565b6001600160a01b0316306001600160a01b031614610c545760405162461bcd60e51b815260206004820152602a60248201527f63616e206f6e6c79207375626d697420746f2063757272656e74206f7261636c604482015269194818dbdb9d1c9858dd60b21b60648201526084016106f7565b81516020830120861480610c69575060648611155b610cb55760405162461bcd60e51b815260206004820152601d60248201527f6964206d7573742062652068617368206f66206279746573206461746100000060448201526064016106f7565b3360008181526006602052604080822042905551630733bdef60e41b815260048101929092527388df592f8eb5d7bd38bfef7deb0fbc02cf3778a091829063733bdef090602401604080518083038186803b158015610d1357600080fd5b505afa158015610d27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4b9190611bf7565b50905080600114610d9e5760405162461bcd60e51b815260206004820152601d60248201527f5265706f7274657220737461747573206973206e6f74207374616b657200000060448201526064016106f7565b604051632d67853560e21b81527f5d9fadfc729fd027e395e5157ef1b53ef9fa4a8f053043c5f159307543e7cc9760048201526001600160a01b0383169063b59e14d490602401602060405180830381600087803b158015610dff57600080fd5b505af1158015610e13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e379190611bdf565b6040516370a0823160e01b81523360048201526001600160a01b038416906370a082319060240160206040518083038186803b158015610e7657600080fd5b505afa158015610e8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eae9190611bdf565b1015610f0e5760405162461bcd60e51b815260206004820152602960248201527f62616c616e6365206d7573742062652067726561746572207468616e207374616044820152681ad948185b5bdd5b9d60ba1b60648201526084016106f7565b4260009081526004840160205260409020546001600160a01b031615610f765760405162461bcd60e51b815260206004820152601e60248201527f74696d657374616d7020616c7265616479207265706f7274656420666f72000060448201526064016106f7565b82544260008181526001808701602090815260408084208690559185018855878352808320909401839055918152600286018352818120439055600386019092529020610fc4908888611944565b504260009081526004840160205260408120805473ffffffffffffffffffffffffffffffffffffffff19163317905580610ffd8a6112f3565b9150915081600360008282546110139190611d6b565b90915550600090506110258383611d14565b11156110c5576001600160a01b03841663a9059cbb336110458585611d14565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561108b57600080fd5b505af115801561109f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c39190611a93565b505b60008a815260056020908152604080832083905542600255338352600790915281208054916110f383611dbd565b909155507fab1d593f8e2ecb165106e30a39db6769078d35c3fdbb110f24932f0d7af68c2990508a428b8b6111288688611d14565b8c8c3360405161113f989796959493929190611c65565b60405180910390a150505050505050505050565b60405163699f200f60e01b81527fefa19baa864049f50491093580c5433e97e8d5e41f8db1a61108b4fa44cacd9360048201527388df592f8eb5d7bd38bfef7deb0fbc02cf3778a09063699f200f90602401602060405180830381600087803b1580156111bf57600080fd5b505af11580156111d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f79190611a77565b6001600160a01b0316336001600160a01b03161461127d5760405162461bcd60e51b815260206004820152603660248201527f4f6e6c7920676f7665726e616e636520636f6e74726163742063616e2063686160448201527f6e67652074696d65206261736564207265776172642e0000000000000000000060648201526084016106f7565b60018190556040518181527f01432c5d54689da3dbfec924c89d1e453ecaec349928ceabd50207e909e8f7de90602001610a59565b60008281526004602052604081208054839081106112e057634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b60008060007388df592f8eb5d7bd38bfef7deb0fbc02cf3778a0905060006002544261131f9190611d6b565b9050600061012c600154836113349190611d4c565b61133e9190611d2c565b90506003548161134e9190611d14565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a082319060240160206040518083038186803b15801561138d57600080fd5b505afa1580156113a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c59190611bdf565b1015611452576003546040516370a0823160e01b81523060048201526001600160a01b038516906370a082319060240160206040518083038186803b15801561140d57600080fd5b505afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190611bdf565b61144f9190611d6b565b90505b60009586526005602052604090952054959350505050565b600081815260046020526040812080546060926003830192909161149090600190611d6b565b815481106114ae57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154815260200190815260200160002080546114d290611d82565b80601f01602080910402602001604051908101604052809291908181526020018280546114fe90611d82565b801561154b5780601f106115205761010080835404028352916020019161154b565b820191906000526020600020905b81548152906001019060200180831161152e57829003601f168201915b50505050509050919050565b600182116115a75760405162461bcd60e51b815260206004820152601c60248201527f5469702073686f756c642062652067726561746572207468616e20310000000060448201526064016106f7565b60405163288c9c9d60e01b8152336004820152306024820152604481018390527388df592f8eb5d7bd38bfef7deb0fbc02cf3778a09063288c9c9d90606401602060405180830381600087803b15801561160057600080fd5b505af1158015611614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116389190611a93565b6116775760405162461bcd60e51b815260206004820152601060248201526f1d1a5c081b5d5cdd081899481c185a5960821b60448201526064016106f7565b8051602082012083148061168c575060648311155b8061174b575060405163699f200f60e01b81527fefa19baa864049f50491093580c5433e97e8d5e41f8db1a61108b4fa44cacd9360048201527388df592f8eb5d7bd38bfef7deb0fbc02cf3778a09063699f200f90602401602060405180830381600087803b1580156116fe57600080fd5b505af1158015611712573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117369190611a77565b6001600160a01b0316336001600160a01b0316145b6117975760405162461bcd60e51b815260206004820152601d60248201527f6964206d7573742062652068617368206f66206279746573206461746100000060448201526064016106f7565b6117a2600283611d2c565b604051630852cd8d60e31b8152600481018290529092507388df592f8eb5d7bd38bfef7deb0fbc02cf3778a0906342966c6890602401600060405180830381600087803b1580156117f257600080fd5b505af1158015611806573d6000803e3d6000fd5b5050506000848152600560205260408120805485935090919061182a908490611d14565b9091555050336000908152600860205260408120805484929061184e908490611d14565b9250508190555081600360008282546118679190611d14565b909155505060008381526005602052604090819020549051849133917fd951d408a0f5057da5c25b826fb5ce403d56542962b6ac6994dbc6d5432fbff5916118b3918791908790611cec565b60405180910390a3505050565b8280546118cc90611d82565b90600052602060002090601f0160209004810192826118ee5760008555611934565b82601f1061190757805160ff1916838001178555611934565b82800160010185558215611934579182015b82811115611934578251825591602001919060010190611919565b506119409291506119b8565b5090565b82805461195090611d82565b90600052602060002090601f0160209004810192826119725760008555611934565b82601f1061198b5782800160ff19823516178555611934565b82800160010185558215611934579182015b8281111561193457823582559160200191906001019061199d565b5b8082111561194057600081556001016119b9565b600082601f8301126119dd578081fd5b813567ffffffffffffffff808211156119f8576119f8611dee565b604051601f8301601f19908116603f01168101908282118183101715611a2057611a20611dee565b81604052838152866020858801011115611a38578485fd5b8360208701602083013792830160200193909352509392505050565b600060208284031215611a65578081fd5b8135611a7081611e04565b9392505050565b600060208284031215611a88578081fd5b8151611a7081611e04565b600060208284031215611aa4578081fd5b81518015158114611a70578182fd5b600060208284031215611ac4578081fd5b5035919050565b600080600080600060808688031215611ae2578081fd5b85359450602086013567ffffffffffffffff80821115611b00578283fd5b818801915088601f830112611b13578283fd5b813581811115611b21578384fd5b896020828501011115611b32578384fd5b60208301965080955050604088013593506060880135915080821115611b56578283fd5b50611b63888289016119cd565b9150509295509295909350565b60008060408385031215611b82578182fd5b50508035926020909101359150565b600080600060608486031215611ba5578283fd5b8335925060208401359150604084013567ffffffffffffffff811115611bc9578182fd5b611bd5868287016119cd565b9150509250925092565b600060208284031215611bf0578081fd5b5051919050565b60008060408385031215611c09578182fd5b505080516020909101519092909150565b60008151808452815b81811015611c3f57602081850181015186830182015201611c23565b81811115611c505782602083870101525b50601f01601f19169290920160200192915050565b600089825288602083015260e060408301528660e083015261010087898285013781818985010152601f19601f8901168301876060850152866080850152818482030160a0850152611cb982820187611c1a565b925050506001600160a01b03831660c08301529998505050505050505050565b600060208252611a706020830184611c1a565b600084825283602083015260606040830152611d0b6060830184611c1a565b95945050505050565b60008219821115611d2757611d27611dd8565b500190565b600082611d4757634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611d6657611d66611dd8565b500290565b600082821015611d7d57611d7d611dd8565b500390565b600181811c90821680611d9657607f821691505b60208210811415611db757634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611dd157611dd1611dd8565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611e1957600080fd5b5056fea26469706673582212201ec320c16a6f6431c31e1fa0184ecb5db4f3edfb5dedfa957962f63c8925874e64736f6c63430008030033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.