Contract 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec

Contract Overview

Balance:
0 BNB
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x5dc712cbda5fbe2d6336b60f77db931ef450c9e0c851921595ab82beaa2a6eb9Update Round Dat...87375792021-05-11 3:23:48132 days 16 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00138095
0x82212b2e2e6acb85ba894e41d63138f32a37a2e41fec151e55d742501d19dc7aHandle87375772021-05-11 3:23:42132 days 16 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00324903
0x44fb1bed6413c54d7432734600532b2e4ce64073320616075a0912e995910860Update Round Dat...87374782021-05-11 3:18:45132 days 16 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00138095
0x87fc7155368179016bc858aa03a764433aa81f6e220a7961c64abec8065204b2Handle87374752021-05-11 3:18:36132 days 16 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00324903
0x689af30b593de68bf4f757c406c7df5681fdf50981cc659a81d5dc0a3cfb5b2aUpdate Round Dat...87373742021-05-11 3:13:33132 days 16 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00138095
0x00027ed72b7969d14f889a192130acebfe1cc387bcd4cd9b94169f1e75d5d482Handle87373722021-05-11 3:13:27132 days 16 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00323265
0xeae3ab1e8cbd7a40a6539aab4c79dad68babcfe50479f696ab428d13fa6a271eUpdate Round Dat...87372712021-05-11 3:08:24132 days 17 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00138083
0xdb6c4ddf25ce6685d1ca2fce0d9b5eb2b2eb9a551f36904bb9db85e4b5a9f610Handle87372692021-05-11 3:08:18132 days 17 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00324903
0xa64855a9d9fd2c3b14e8c049f13a85820fd7a71cd0f3480f71e5f2f323c18c58Update Round Dat...87371692021-05-11 3:03:18132 days 17 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00138095
0x9afb08e2b9db63ad994a24c0ffdc718172f0d60aeb7405f1b8c062587c87a410Handle87371672021-05-11 3:03:12132 days 17 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00323265
0x1136c0535730e2c7a84bc1f924521bc5e7e5e04a837a62325abf651bf9a1b8f1Update Round Dat...87370662021-05-11 2:58:09132 days 17 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00138095
0x803f2175f767e0fe8658f221cb70a39010368add80bbf1aa305d6a9e42c17c21Handle87370642021-05-11 2:58:03132 days 17 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00324903
0xd2d675754310ae0c7c62151f391a0fe5a99a860c694efce7fb73dd140f12475bUpdate Round Dat...87369632021-05-11 2:53:00132 days 17 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00138095
0x9c94ba4c5b35bfef4c168c5e93a925a534a3f09cfb34f034af25a65c1c58165eHandle87369612021-05-11 2:52:54132 days 17 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00324903
0x5c7a45d1b334967e9a979256386153b686a3941c3b721022537021c10b0a9269Update Round Dat...87368612021-05-11 2:47:54132 days 17 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00138095
0xf44a4a54d90d654a21ca74e10688c4771d3133634a052fbe0ce49a29e3b146f1Handle87368592021-05-11 2:47:48132 days 17 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00324903
0xa69a8b5fd3879490330096b6f192ccf2a4d2c4be413c887a49d458961b1c3447Update Round Dat...87367602021-05-11 2:42:51132 days 17 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00138095
0x0df2041984cba014674e5c59a9b089cc2d8b88dc796ddb64a5887ce2a72f927dHandle87367562021-05-11 2:42:39132 days 17 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00324903
0x28aa63e9e4f5472dd68a6de27b0bbee262a495521d929a65037105f382e0d0d4Update Round Dat...87366552021-05-11 2:37:36132 days 17 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00138095
0xf29e3f9bddb0e59a7af5bff75c8f5853556b969d90dfe8ee685623c8f8e8042aHandle87366532021-05-11 2:37:30132 days 17 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00324903
0x35100f62ddd52c645420ec13cd589f94d26c4db7f2e08a22af56acdc8eb3461cUpdate Round Dat...87365532021-05-11 2:32:30132 days 17 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00138083
0xe7eeee983479630defb8319a581305f7a76ac1c860a2fde85b8f05946683559eHandle87365512021-05-11 2:32:24132 days 17 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00236763
0x9822cfc804ac54789f4fc13dfce1df140f52391a328af8cfe9b8d0b9b03dd020Handle87364482021-05-11 2:27:15132 days 17 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00176027
0xb93525b07ac5403a20192115c36bb43dde236b195833e2ac21543cda7f519a74Handle87364462021-05-11 2:27:09132 days 17 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00141853
0x5fe6d58368c066bab00e9dcb3bff0a73ae49d4fae46642493255d7d515260827Update Round Dat...87364432021-05-11 2:27:00132 days 17 hrs ago0xecf600b841d0734f301b8cc7e6e3c93772638851 IN  0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec0 BNB0.00138095
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x5dc712cbda5fbe2d6336b60f77db931ef450c9e0c851921595ab82beaa2a6eb987375792021-05-11 3:23:48132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x5ec11bf819c4e9d19f9bc9fb502dfd896dab989a0 BNB
0x82212b2e2e6acb85ba894e41d63138f32a37a2e41fec151e55d742501d19dc7a87375772021-05-11 3:23:42132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x17d20d600606717cd54306c68ffb0b118afaa78f0 BNB
0x82212b2e2e6acb85ba894e41d63138f32a37a2e41fec151e55d742501d19dc7a87375772021-05-11 3:23:42132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x17d20d600606717cd54306c68ffb0b118afaa78f0 BNB
0x82212b2e2e6acb85ba894e41d63138f32a37a2e41fec151e55d742501d19dc7a87375772021-05-11 3:23:42132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x17d20d600606717cd54306c68ffb0b118afaa78f0 BNB
0x82212b2e2e6acb85ba894e41d63138f32a37a2e41fec151e55d742501d19dc7a87375772021-05-11 3:23:42132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x17d20d600606717cd54306c68ffb0b118afaa78f0 BNB
0x82212b2e2e6acb85ba894e41d63138f32a37a2e41fec151e55d742501d19dc7a87375772021-05-11 3:23:42132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x17d20d600606717cd54306c68ffb0b118afaa78f0 BNB
0x82212b2e2e6acb85ba894e41d63138f32a37a2e41fec151e55d742501d19dc7a87375772021-05-11 3:23:42132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x17d20d600606717cd54306c68ffb0b118afaa78f0 BNB
0x82212b2e2e6acb85ba894e41d63138f32a37a2e41fec151e55d742501d19dc7a87375772021-05-11 3:23:42132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x17d20d600606717cd54306c68ffb0b118afaa78f0 BNB
0x82212b2e2e6acb85ba894e41d63138f32a37a2e41fec151e55d742501d19dc7a87375772021-05-11 3:23:42132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x17d20d600606717cd54306c68ffb0b118afaa78f0 BNB
0x82212b2e2e6acb85ba894e41d63138f32a37a2e41fec151e55d742501d19dc7a87375772021-05-11 3:23:42132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x17d20d600606717cd54306c68ffb0b118afaa78f0 BNB
0x82212b2e2e6acb85ba894e41d63138f32a37a2e41fec151e55d742501d19dc7a87375772021-05-11 3:23:42132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x17d20d600606717cd54306c68ffb0b118afaa78f0 BNB
0x82212b2e2e6acb85ba894e41d63138f32a37a2e41fec151e55d742501d19dc7a87375772021-05-11 3:23:42132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x17d20d600606717cd54306c68ffb0b118afaa78f0 BNB
0x82212b2e2e6acb85ba894e41d63138f32a37a2e41fec151e55d742501d19dc7a87375772021-05-11 3:23:42132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x17d20d600606717cd54306c68ffb0b118afaa78f0 BNB
0x44fb1bed6413c54d7432734600532b2e4ce64073320616075a0912e99591086087374782021-05-11 3:18:45132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x5ec11bf819c4e9d19f9bc9fb502dfd896dab989a0 BNB
0x87fc7155368179016bc858aa03a764433aa81f6e220a7961c64abec8065204b287374752021-05-11 3:18:36132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x17d20d600606717cd54306c68ffb0b118afaa78f0 BNB
0x87fc7155368179016bc858aa03a764433aa81f6e220a7961c64abec8065204b287374752021-05-11 3:18:36132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x17d20d600606717cd54306c68ffb0b118afaa78f0 BNB
0x87fc7155368179016bc858aa03a764433aa81f6e220a7961c64abec8065204b287374752021-05-11 3:18:36132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x17d20d600606717cd54306c68ffb0b118afaa78f0 BNB
0x87fc7155368179016bc858aa03a764433aa81f6e220a7961c64abec8065204b287374752021-05-11 3:18:36132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x17d20d600606717cd54306c68ffb0b118afaa78f0 BNB
0x87fc7155368179016bc858aa03a764433aa81f6e220a7961c64abec8065204b287374752021-05-11 3:18:36132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x17d20d600606717cd54306c68ffb0b118afaa78f0 BNB
0x87fc7155368179016bc858aa03a764433aa81f6e220a7961c64abec8065204b287374752021-05-11 3:18:36132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x17d20d600606717cd54306c68ffb0b118afaa78f0 BNB
0x87fc7155368179016bc858aa03a764433aa81f6e220a7961c64abec8065204b287374752021-05-11 3:18:36132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x17d20d600606717cd54306c68ffb0b118afaa78f0 BNB
0x87fc7155368179016bc858aa03a764433aa81f6e220a7961c64abec8065204b287374752021-05-11 3:18:36132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x17d20d600606717cd54306c68ffb0b118afaa78f0 BNB
0x87fc7155368179016bc858aa03a764433aa81f6e220a7961c64abec8065204b287374752021-05-11 3:18:36132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x17d20d600606717cd54306c68ffb0b118afaa78f0 BNB
0x87fc7155368179016bc858aa03a764433aa81f6e220a7961c64abec8065204b287374752021-05-11 3:18:36132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x17d20d600606717cd54306c68ffb0b118afaa78f0 BNB
0x87fc7155368179016bc858aa03a764433aa81f6e220a7961c64abec8065204b287374752021-05-11 3:18:36132 days 16 hrs ago 0x44e11469d56e33ae5c1c5f110e3a1061809fd7ec 0x17d20d600606717cd54306c68ffb0b118afaa78f0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DemaxPricePredictionOperator

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 6 : DemaxPricePredictionOperator.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.12;

import './libraries/SafeMath.sol';
import './modules/Ownable.sol';
import './interfaces/IDemaxPricePrediction.sol';
import './interfaces/AggregatorV3Interface.sol';

contract DemaxPricePredictionOperator is Ownable {
    using SafeMath for uint256;
    address[] public predictions;
    mapping(address => bool) whiteList;
    mapping(address => bool) handles;

    struct Round {
        uint256 epoch;
        uint256 startBlock;
        uint256 lockBlock;
        uint256 endBlock;
        int256 lockPrice;
        int256 closePrice;
        uint256 totalAmount;
        uint256 bullAmount;
        uint256 bearAmount;
        uint256 rewardBaseCalAmount;
        uint256 rewardAmount;
        bool oracleCalled;
    }

    modifier onlyWhite() {
        require(whiteList[_msgSender()], "caller is not in the white list");
        _;
    }

    constructor() public {
        whiteList[msg.sender] = true;
    }

    function setWhite(address _user, bool _value) public {
        whiteList[_user] = _value;
    }
       
    function addPredictions(address[] memory _predictions) public onlyOwner {
        for(uint i; i< _predictions.length; i++) {
            addPrediction(_predictions[i]);
        }
    }

    function addPrediction(address _prediction) public onlyOwner {
        if(isPrediction(_prediction) == false) {
            predictions.push(_prediction);
        }
    }

    function removePredictions(address[] memory _predictions) public onlyOwner {
        for(uint i; i< _predictions.length; i++) {
            removePrediction(_predictions[i]);
        }
    }

    function removePrediction(address _prediction) public onlyOwner {
        uint index = indexPrediction(_prediction);
        if(index == predictions.length) {
            return;
        }
        if(index < predictions.length -1) {
            predictions[index] = predictions[predictions.length-1];
        }
        predictions.pop();
    }

    function isPrediction(address _prediction) public view returns (bool) {
        for(uint i = 0;i < predictions.length;i++) {
            if(_prediction == predictions[i]) {
                return true;
            }
        }
        return false;
    }
    
    function indexPrediction(address _prediction) public view returns (uint) {
        for(uint i; i< predictions.length; i++) {
            if(predictions[i] == _prediction) {
                return i;
            }
        }
        return predictions.length;
    }

    function countPrediction() public view returns (uint) {
        return predictions.length;
    }

    function getPredictions() public view returns (address[] memory) {
        return predictions;
    }

    function getLockBlock(address _prediction) public view returns (uint256) {
        IDemaxPricePrediction prediction = IDemaxPricePrediction(_prediction);
        (
            ,
            ,
            uint256 lockBlock,
            ,
            ,
            ,
            ,
            ,
            ,
            ,
            ,
        ) = prediction.rounds(prediction.currentEpoch());
        return lockBlock;
    }

    function restart(address _prediction) public onlyWhite returns (bool) {
        IDemaxPricePrediction prediction = IDemaxPricePrediction(_prediction);
        uint256 bufferBlocks = prediction.bufferBlocks();
        uint256 lockBlock = getLockBlock(_prediction);
        if(
            prediction.genesisStartOnce() 
            && block.number > lockBlock.add(bufferBlocks) 
        ) {
            prediction.restart();
            return true;
        }
        return false;
    }

    function genesisStartRound(address _prediction) public onlyWhite returns (bool) {
        IDemaxPricePrediction prediction = IDemaxPricePrediction(_prediction);
        if(!prediction.genesisStartOnce()) {
            prediction.genesisStartRound();
            return true;
        }
        return false;
    }

    function genesisLockRound(address _prediction) public onlyWhite returns (bool) {
        IDemaxPricePrediction prediction = IDemaxPricePrediction(_prediction);
        uint256 lockBlock = getLockBlock(_prediction);
        uint256 bufferBlocks = prediction.bufferBlocks();
        if(prediction.genesisStartOnce() && !prediction.genesisLockOnce() && block.number >= lockBlock && block.number <= lockBlock.add(bufferBlocks)) {
            prediction.genesisLockRound();
            return true;
        }
        return false;
    }

    function executeRound(address _prediction) public onlyWhite returns (bool) {
        IDemaxPricePrediction prediction = IDemaxPricePrediction(_prediction);
        uint256 lockBlock = getLockBlock(_prediction);
        uint256 bufferBlocks = prediction.bufferBlocks();
        if(prediction.genesisStartOnce() && prediction.genesisLockOnce() && block.number >= lockBlock && block.number <= lockBlock.add(bufferBlocks)) {
            prediction.executeRound();
            return true;
        }
        return false;
    }

    function restarts() public onlyWhite {
        for(uint i; i< predictions.length; i++) {
            if(handles[predictions[i]] == false) {
                handles[predictions[i]] = restart(predictions[i]);
            }
        }
    }

    function genesisStartRounds() public onlyWhite {
        for(uint i; i< predictions.length; i++) {
            if(handles[predictions[i]] == false) {
                handles[predictions[i]] = genesisStartRound(predictions[i]);
            }
        }
    }

    function genesisLockRounds() public onlyWhite {
        for(uint i; i< predictions.length; i++) {
            if(handles[predictions[i]] == false) {
                handles[predictions[i]] = genesisLockRound(predictions[i]);
            }
        }
    }

    function executeRounds() public onlyWhite {
        for(uint i; i< predictions.length; i++) {
            if(handles[predictions[i]] == false) {
                handles[predictions[i]] = executeRound(predictions[i]);
            }
        }
    }

    function resetHandles() public onlyWhite {
        for(uint i; i< predictions.length; i++) {
            if(handles[predictions[i]]) {
                handles[predictions[i]] = false;
            }
        }
    }

    function handle() public onlyWhite {
        resetHandles();
        genesisStartRounds();
        genesisLockRounds();
        executeRounds();
        restarts();
    }

    function isHandle() public view returns (bool) {
        for(uint i; i< predictions.length; i++) {
            IDemaxPricePrediction prediction = IDemaxPricePrediction(predictions[i]);
            uint256 bufferBlocks = prediction.bufferBlocks();
            uint256 lockBlock = getLockBlock(predictions[i]);

            if(!prediction.genesisStartOnce()) {
                return true;
            }

            if(prediction.genesisStartOnce() && block.number >= lockBlock && block.number <= lockBlock.add(bufferBlocks)) {
                return true;
            }

            if(prediction.genesisStartOnce() && block.number > lockBlock.add(bufferBlocks)) {
                return true;
            }
        }
        return false;
    }

    function isUpdateRoundData(address _prediction) public view returns (address oracle, string memory symbol) {
        IDemaxPricePrediction prediction = IDemaxPricePrediction(_prediction);
        oracle = prediction.oracle();
        symbol = AggregatorV3Interface(oracle).description();
        (uint80 roundId, , , , ) = AggregatorV3Interface(oracle).latestRoundData();
        uint256 lockBlock = getLockBlock(_prediction);

        if(prediction.genesisStartOnce() && block.number >= lockBlock && block.number <= lockBlock.add(prediction.bufferBlocks()) && roundId <= prediction.oracleLatestRoundId()) {
            return (oracle, symbol);
        }
        if(prediction.genesisStartOnce() && prediction.genesisLockOnce() && roundId <= prediction.oracleLatestRoundId()) {
            return (oracle, symbol);
        }
        oracle = address(0);
        return (oracle, symbol);
    }

    function updateRoundData(address _oracle, int256 _answer) public onlyWhite {
        AggregatorV3Interface(_oracle).updateRoundData(_answer);
    }

    function updateRoundDatas(address[] memory _oracles, int256[] memory _answers) public onlyWhite {
        require(_oracles.length == _answers.length, 'invalid parameters');
        for(uint256 i; i<_oracles.length; i++) {
            updateRoundData(_oracles[i], _answers[i]);
        }
    }

}

File 2 of 6 : SafeMath.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

File 3 of 6 : Ownable.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0;

import './Context.sol';

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

File 4 of 6 : IDemaxPricePrediction.sol
pragma solidity >=0.6.0;

interface IDemaxPricePrediction {
    function oracle() external view returns (address);
    function oracleLatestRoundId() external view returns (uint256);
    function oracleUpdateAllowance() external view returns (uint256);
    function restart() external;
    function genesisStartOnce() external view returns (bool);
    function genesisLockOnce() external view returns (bool);
    function bufferBlocks() external view returns (uint256);
    function currentEpoch() external view returns (uint256);
    function rounds(uint256 _epoch) external view returns (
        uint256 epoch,
        uint256 startBlock,
        uint256 lockBlock,
        uint256 endBlock,
        int256 lockPrice,
        int256 closePrice,
        uint256 totalAmount,
        uint256 bullAmount,
        uint256 bearAmount,
        uint256 rewardBaseCalAmount,
        uint256 rewardAmount,
        bool oracleCalled
    );
    function genesisStartRound() external;
    function genesisLockRound() external;
    function executeRound() external;

}

File 5 of 6 : AggregatorV3Interface.sol
pragma solidity >=0.6.0;

interface AggregatorV3Interface {
    function decimals() external view returns (uint8);

    function description() external view returns (string memory);

    function version() external view returns (uint256);

    function latestRound() external view returns (uint80);

    function updateRoundData(int256 _answer) external;

    // getRoundData and latestRoundData should both raise "No data present"
    // if they do not have data to report, instead of returning unset values
    // which could be misinterpreted as actual reported values.
    function getRoundData(uint80 _roundId)
        external
        view
        returns (
            uint80 roundId,
            int256 answer,
            uint256 startedAt,
            uint256 updatedAt,
            uint80 answeredInRound
        );

    function latestRoundData()
        external
        view
        returns (
            uint80 roundId,
            int256 answer,
            uint256 startedAt,
            uint256 updatedAt,
            uint80 answeredInRound
        );
}

File 6 of 6 : Context.sol
pragma solidity >=0.6.0 <0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"_prediction","type":"address"}],"name":"addPrediction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_predictions","type":"address[]"}],"name":"addPredictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"countPrediction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_prediction","type":"address"}],"name":"executeRound","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"executeRounds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_prediction","type":"address"}],"name":"genesisLockRound","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"genesisLockRounds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_prediction","type":"address"}],"name":"genesisStartRound","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"genesisStartRounds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_prediction","type":"address"}],"name":"getLockBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPredictions","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"handle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_prediction","type":"address"}],"name":"indexPrediction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isHandle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_prediction","type":"address"}],"name":"isPrediction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_prediction","type":"address"}],"name":"isUpdateRoundData","outputs":[{"internalType":"address","name":"oracle","type":"address"},{"internalType":"string","name":"symbol","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"predictions","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_prediction","type":"address"}],"name":"removePrediction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_predictions","type":"address[]"}],"name":"removePredictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetHandles","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_prediction","type":"address"}],"name":"restart","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restarts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"setWhite","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oracle","type":"address"},{"internalType":"int256","name":"_answer","type":"int256"}],"name":"updateRoundData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_oracles","type":"address[]"},{"internalType":"int256[]","name":"_answers","type":"int256[]"}],"name":"updateRoundDatas","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50600061001b610084565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350336000908152600260205260409020805460ff19166001179055610088565b3390565b612772806100976000396000f3fe608060405234801561001057600080fd5b50600436106101c35760003560e01c8063930875f4116100f9578063ea9c9df911610097578063f3ac555011610071578063f3ac5550146107a2578063f8ac0df0146107aa578063fd0da099146107b2578063fd173ecf146107ba576101c3565b8063ea9c9df914610730578063f18e2d9414610756578063f2fde38b1461077c576101c3565b8063c31d537e116100d3578063c31d537e146105a1578063c6ed4f3e146105a9578063c70e0db9146106d0578063c78c3a83146106d8576101c3565b8063930875f41461042a5780639d7a7f17146104cd578063b7355e8b146104f3576101c3565b80636705c5a3116101665780637a8b2d8a116101405780637a8b2d8a146103ce578063877f87cd146103f45780638c7e7576146103fc5780638da5cb5b14610422576101c3565b80636705c5a314610380578063715018a61461039a5780637160bf88146103a2576101c3565b806319bd6071116101a257806319bd607114610261578063472408741461028757806356863519146102b75780635dd01fec146102dd576101c3565b80624fbbb0146101c8578063038e5188146102015780631997a9e21461023b575b600080fd5b6101e5600480360360208110156101de57600080fd5b50356107c2565b604080516001600160a01b039092168252519081900360200190f35b6102276004803603602081101561021757600080fd5b50356001600160a01b03166107e9565b604080519115158252519081900360200190f35b6102276004803603602081101561025157600080fd5b50356001600160a01b0316610840565b6102276004803603602081101561027757600080fd5b50356001600160a01b0316610a8d565b6102b56004803603604081101561029d57600080fd5b506001600160a01b0381351690602001351515610bcb565b005b6102b5600480360360208110156102cd57600080fd5b50356001600160a01b0316610bf6565b6102b5600480360360208110156102f357600080fd5b81019060208101813564010000000081111561030e57600080fd5b82018360208201111561032057600080fd5b8035906020019184602083028401116401000000008311171561034257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610d3c945050505050565b610388610de4565b60408051918252519081900360200190f35b6102b5610deb565b6102b5600480360360408110156103b857600080fd5b506001600160a01b038135169060200135610eb6565b610227600480360360208110156103e457600080fd5b50356001600160a01b0316610f80565b6102b561119d565b6103886004803603602081101561041257600080fd5b50356001600160a01b03166112c7565b6101e56113d1565b6102b56004803603602081101561044057600080fd5b81019060208101813564010000000081111561045b57600080fd5b82018360208201111561046d57600080fd5b8035906020019184602083028401116401000000008311171561048f57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506113e0945050505050565b610227600480360360208110156104e357600080fd5b50356001600160a01b0316611484565b6105196004803603602081101561050957600080fd5b50356001600160a01b0316611622565b60405180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561056557818101518382015260200161054d565b50505050905090810190601f1680156105925780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6102b5611b2e565b6102b5600480360360408110156105bf57600080fd5b8101906020810181356401000000008111156105da57600080fd5b8201836020820111156105ec57600080fd5b8035906020019184602083028401116401000000008311171561060e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561065e57600080fd5b82018360208201111561067057600080fd5b8035906020019184602083028401116401000000008311171561069257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611c58945050505050565b6102b5611d5f565b6106e0611e62565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561071c578181015183820152602001610704565b505050509050019250505060405180910390f35b6103886004803603602081101561074657600080fd5b50356001600160a01b0316611ec4565b6102b56004803603602081101561076c57600080fd5b50356001600160a01b0316611f1d565b6102b56004803603602081101561079257600080fd5b50356001600160a01b0316611ffa565b6102b561211b565b6102b5612245565b6102b561236f565b610227612401565b600181815481106107cf57fe5b6000918252602090912001546001600160a01b0316905081565b6000805b600154811015610835576001818154811061080457fe5b6000918252602090912001546001600160a01b038481169116141561082d57600191505061083b565b6001016107ed565b50600090505b919050565b60006002600061084e612691565b6001600160a01b0316815260208101919091526040016000205460ff166108aa576040805162461bcd60e51b815260206004820152601f602482015260008051602061271d833981519152604482015290519081900360640190fd5b8160006108b6826112c7565b90506000826001600160a01b0316639780a7526040518163ffffffff1660e01b815260040160206040518083038186803b1580156108f357600080fd5b505afa158015610907573d6000803e3d6000fd5b505050506040513d602081101561091d57600080fd5b505160408051631effbd8560e31b815290519192506001600160a01b0385169163f7fdec2891600480820192602092909190829003018186803b15801561096357600080fd5b505afa158015610977573d6000803e3d6000fd5b505050506040513d602081101561098d57600080fd5b505180156109fd5750826001600160a01b0316630f74174f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109cf57600080fd5b505afa1580156109e3573d6000803e3d6000fd5b505050506040513d60208110156109f957600080fd5b5051155b8015610a095750814310155b8015610a1e5750610a1a8282612695565b4311155b15610a8257826001600160a01b031663d9d55eac6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a5e57600080fd5b505af1158015610a72573d6000803e3d6000fd5b505050506001935050505061083b565b506000949350505050565b600060026000610a9b612691565b6001600160a01b0316815260208101919091526040016000205460ff16610af7576040805162461bcd60e51b815260206004820152601f602482015260008051602061271d833981519152604482015290519081900360640190fd5b6000829050806001600160a01b031663f7fdec286040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3557600080fd5b505afa158015610b49573d6000803e3d6000fd5b505050506040513d6020811015610b5f57600080fd5b5051610bc257806001600160a01b031663452fd75a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ba057600080fd5b505af1158015610bb4573d6000803e3d6000fd5b50505050600191505061083b565b50600092915050565b6001600160a01b03919091166000908152600260205260409020805460ff1916911515919091179055565b610bfe612691565b6001600160a01b0316610c0f6113d1565b6001600160a01b031614610c6a576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000610c7582611ec4565b600154909150811415610c885750610d39565b60015460001901811015610cfd57600180546000198101908110610ca857fe5b600091825260209091200154600180546001600160a01b039092169183908110610cce57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b6001805480610d0857fe5b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff19169055019055505b50565b610d44612691565b6001600160a01b0316610d556113d1565b6001600160a01b031614610db0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60005b8151811015610de057610dd8828281518110610dcb57fe5b6020026020010151611f1d565b600101610db3565b5050565b6001545b90565b610df3612691565b6001600160a01b0316610e046113d1565b6001600160a01b031614610e5f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b60026000610ec2612691565b6001600160a01b0316815260208101919091526040016000205460ff16610f1e576040805162461bcd60e51b815260206004820152601f602482015260008051602061271d833981519152604482015290519081900360640190fd5b816001600160a01b03166311b7fc59826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f6457600080fd5b505af1158015610f78573d6000803e3d6000fd5b505050505050565b600060026000610f8e612691565b6001600160a01b0316815260208101919091526040016000205460ff16610fea576040805162461bcd60e51b815260206004820152601f602482015260008051602061271d833981519152604482015290519081900360640190fd5b816000610ff6826112c7565b90506000826001600160a01b0316639780a7526040518163ffffffff1660e01b815260040160206040518083038186803b15801561103357600080fd5b505afa158015611047573d6000803e3d6000fd5b505050506040513d602081101561105d57600080fd5b505160408051631effbd8560e31b815290519192506001600160a01b0385169163f7fdec2891600480820192602092909190829003018186803b1580156110a357600080fd5b505afa1580156110b7573d6000803e3d6000fd5b505050506040513d60208110156110cd57600080fd5b5051801561113c5750826001600160a01b0316630f74174f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561110f57600080fd5b505afa158015611123573d6000803e3d6000fd5b505050506040513d602081101561113957600080fd5b50515b80156111485750814310155b801561115d57506111598282612695565b4311155b15610a8257826001600160a01b0316637b3205f56040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a5e57600080fd5b600260006111a9612691565b6001600160a01b0316815260208101919091526040016000205460ff16611205576040805162461bcd60e51b815260206004820152601f602482015260008051602061271d833981519152604482015290519081900360640190fd5b60005b600154811015610d3957600360006001838154811061122357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff166112bf576112796001828154811061125f57fe5b6000918252602090912001546001600160a01b0316611484565b600360006001848154811061128a57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790555b600101611208565b6000808290506000816001600160a01b0316638c65c81f836001600160a01b031663766718086040518163ffffffff1660e01b815260040160206040518083038186803b15801561131757600080fd5b505afa15801561132b573d6000803e3d6000fd5b505050506040513d602081101561134157600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152600481019290925251602480830192610180929190829003018186803b15801561139957600080fd5b505afa1580156113ad573d6000803e3d6000fd5b505050506040513d6101808110156113c457600080fd5b5060400151949350505050565b6000546001600160a01b031690565b6113e8612691565b6001600160a01b03166113f96113d1565b6001600160a01b031614611454576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60005b8151811015610de05761147c82828151811061146f57fe5b6020026020010151610bf6565b600101611457565b600060026000611492612691565b6001600160a01b0316815260208101919091526040016000205460ff166114ee576040805162461bcd60e51b815260206004820152601f602482015260008051602061271d833981519152604482015290519081900360640190fd5b60008290506000816001600160a01b0316639780a7526040518163ffffffff1660e01b815260040160206040518083038186803b15801561152e57600080fd5b505afa158015611542573d6000803e3d6000fd5b505050506040513d602081101561155857600080fd5b505190506000611567856112c7565b9050826001600160a01b031663f7fdec286040518163ffffffff1660e01b815260040160206040518083038186803b1580156115a257600080fd5b505afa1580156115b6573d6000803e3d6000fd5b505050506040513d60208110156115cc57600080fd5b505180156115e257506115df8183612695565b43115b15610a8257826001600160a01b0316631ef3755d6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a5e57600080fd5b600060606000839050806001600160a01b0316637dc0d1d06040518163ffffffff1660e01b815260040160206040518083038186803b15801561166457600080fd5b505afa158015611678573d6000803e3d6000fd5b505050506040513d602081101561168e57600080fd5b5051604080517f7284e41600000000000000000000000000000000000000000000000000000000815290519194506001600160a01b03851691637284e41691600480820192600092909190829003018186803b1580156116ed57600080fd5b505afa158015611701573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561172a57600080fd5b810190808051604051939291908464010000000082111561174a57600080fd5b90830190602082018581111561175f57600080fd5b825164010000000081118282018810171561177957600080fd5b82525081516020918201929091019080838360005b838110156117a657818101518382015260200161178e565b50505050905090810190601f1680156117d35780820380516001836020036101000a031916815260200191505b5060405250505091506000836001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b15801561181757600080fd5b505afa15801561182b573d6000803e3d6000fd5b505050506040513d60a081101561184157600080fd5b505190506000611850866112c7565b9050826001600160a01b031663f7fdec286040518163ffffffff1660e01b815260040160206040518083038186803b15801561188b57600080fd5b505afa15801561189f573d6000803e3d6000fd5b505050506040513d60208110156118b557600080fd5b505180156118c35750804310155b801561193d5750611939836001600160a01b0316639780a7526040518163ffffffff1660e01b815260040160206040518083038186803b15801561190657600080fd5b505afa15801561191a573d6000803e3d6000fd5b505050506040513d602081101561193057600080fd5b50518290612695565b4311155b80156119b95750826001600160a01b031663ec3247036040518163ffffffff1660e01b815260040160206040518083038186803b15801561197d57600080fd5b505afa158015611991573d6000803e3d6000fd5b505050506040513d60208110156119a757600080fd5b505169ffffffffffffffffffff831611155b156119c657505050611b29565b826001600160a01b031663f7fdec286040518163ffffffff1660e01b815260040160206040518083038186803b1580156119ff57600080fd5b505afa158015611a13573d6000803e3d6000fd5b505050506040513d6020811015611a2957600080fd5b50518015611a985750826001600160a01b0316630f74174f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a6b57600080fd5b505afa158015611a7f573d6000803e3d6000fd5b505050506040513d6020811015611a9557600080fd5b50515b8015611b145750826001600160a01b031663ec3247036040518163ffffffff1660e01b815260040160206040518083038186803b158015611ad857600080fd5b505afa158015611aec573d6000803e3d6000fd5b505050506040513d6020811015611b0257600080fd5b505169ffffffffffffffffffff831611155b15611b2157505050611b29565b600094505050505b915091565b60026000611b3a612691565b6001600160a01b0316815260208101919091526040016000205460ff16611b96576040805162461bcd60e51b815260206004820152601f602482015260008051602061271d833981519152604482015290519081900360640190fd5b60005b600154811015610d39576003600060018381548110611bb457fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16611c5057611c0a60018281548110611bf057fe5b6000918252602090912001546001600160a01b0316610840565b6003600060018481548110611c1b57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790555b600101611b99565b60026000611c64612691565b6001600160a01b0316815260208101919091526040016000205460ff16611cc0576040805162461bcd60e51b815260206004820152601f602482015260008051602061271d833981519152604482015290519081900360640190fd5b8051825114611d16576040805162461bcd60e51b815260206004820152601260248201527f696e76616c696420706172616d65746572730000000000000000000000000000604482015290519081900360640190fd5b60005b8251811015611d5a57611d52838281518110611d3157fe5b6020026020010151838381518110611d4557fe5b6020026020010151610eb6565b600101611d19565b505050565b60026000611d6b612691565b6001600160a01b0316815260208101919091526040016000205460ff16611dc7576040805162461bcd60e51b815260206004820152601f602482015260008051602061271d833981519152604482015290519081900360640190fd5b60005b600154811015610d39576003600060018381548110611de557fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff1615611e5a5760006003600060018481548110611e2557fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790555b600101611dca565b60606001805480602002602001604051908101604052809291908181526020018280548015611eba57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611e9c575b5050505050905090565b6000805b600154811015611f1357826001600160a01b031660018281548110611ee957fe5b6000918252602090912001546001600160a01b03161415611f0b57905061083b565b600101611ec8565b5050600154919050565b611f25612691565b6001600160a01b0316611f366113d1565b6001600160a01b031614611f91576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b611f9a816107e9565b610d39576001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b612002612691565b6001600160a01b03166120136113d1565b6001600160a01b03161461206e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166120b35760405162461bcd60e51b81526004018080602001828103825260268152602001806126f76026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60026000612127612691565b6001600160a01b0316815260208101919091526040016000205460ff16612183576040805162461bcd60e51b815260206004820152601f602482015260008051602061271d833981519152604482015290519081900360640190fd5b60005b600154811015610d395760036000600183815481106121a157fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff1661223d576121f7600182815481106121dd57fe5b6000918252602090912001546001600160a01b0316610a8d565b600360006001848154811061220857fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790555b600101612186565b60026000612251612691565b6001600160a01b0316815260208101919091526040016000205460ff166122ad576040805162461bcd60e51b815260206004820152601f602482015260008051602061271d833981519152604482015290519081900360640190fd5b60005b600154811015610d395760036000600183815481106122cb57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612367576123216001828154811061230757fe5b6000918252602090912001546001600160a01b0316610f80565b600360006001848154811061233257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790555b6001016122b0565b6002600061237b612691565b6001600160a01b0316815260208101919091526040016000205460ff166123d7576040805162461bcd60e51b815260206004820152601f602482015260008051602061271d833981519152604482015290519081900360640190fd5b6123df611d5f565b6123e761211b565b6123ef611b2e565b6123f7612245565b6123ff61119d565b565b6000805b6001548110156126895760006001828154811061241e57fe5b6000918252602080832090910154604080517f9780a75200000000000000000000000000000000000000000000000000000000815290516001600160a01b0390921694508492639780a75292600480840193829003018186803b15801561248457600080fd5b505afa158015612498573d6000803e3d6000fd5b505050506040513d60208110156124ae57600080fd5b5051600180549192506000916124e39190869081106124c957fe5b6000918252602090912001546001600160a01b03166112c7565b9050826001600160a01b031663f7fdec286040518163ffffffff1660e01b815260040160206040518083038186803b15801561251e57600080fd5b505afa158015612532573d6000803e3d6000fd5b505050506040513d602081101561254857600080fd5b505161255b576001945050505050610de8565b826001600160a01b031663f7fdec286040518163ffffffff1660e01b815260040160206040518083038186803b15801561259457600080fd5b505afa1580156125a8573d6000803e3d6000fd5b505050506040513d60208110156125be57600080fd5b505180156125cc5750804310155b80156125e157506125dd8183612695565b4311155b156125f3576001945050505050610de8565b826001600160a01b031663f7fdec286040518163ffffffff1660e01b815260040160206040518083038186803b15801561262c57600080fd5b505afa158015612640573d6000803e3d6000fd5b505050506040513d602081101561265657600080fd5b5051801561266c57506126698183612695565b43115b1561267e576001945050505050610de8565b505050600101612405565b506000905090565b3390565b6000828201838110156126ef576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737363616c6c6572206973206e6f7420696e20746865207768697465206c69737400a26469706673582212205abd197cd90945e5aee71f0d1e15fbb94e5072007117b247ca3c1e3900bf823c64736f6c634300060c0033

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading