Sponsored:   VC, TLDR and CoinBene Funded "TEMCO: Bitcoin Network (RSK) Suppy Chain! Whitelist KYC Starts Now!!"
Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 8264 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0xdb93ce3cca2444ce5da5522a85758af79af0092dat txn 0xbed627b1cb6d81052d917c3249aa385e7c75220d68810363bb9f20d581ce620c
 Latest 25 transactions from a total of 8264 transactions

TxHash Age From To Value [TxFee]
0xf15c7ad131501511a400ddce3bcc0a0b3ed49f51241f0f8adb375ca4345aa74a5 mins ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.0008842
0x448bce71f3b147236885b812a58e09a14b5f3e4e20867c4cb41cc489f0785f836 mins ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00088164
0x22eb6bb04e833009496e983aae526827dad73728cf1031fbfcb02d2afb64de9e1 hr 15 mins ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00088164
0xae9680b4be471ba5f5e4c34d1420cda4105da0247647cb588fb6a23b6a5d65001 hr 32 mins ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.0008842
0x00e8e6afeae988662efb4db6e1d332990bcdbbb8d5d288e97f5f4ae1a1bc8fbb1 hr 34 mins ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00088164
0xa49e61078cee78d5fc5b6f2551b20e5a658942d2b2da5b5bb39ec5b8c82ce3f41 hr 51 mins ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00088196
0x1cf1a4b1db72ca12592c38b8d29a1a138844c64edb5378bce55b9ab9daf8f1441 hr 59 mins ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00088164
0x4ea64dc335be1767ae3c8bab18012736daea447fd8a82ab9f0a14151f6e6ec624 hrs 2 mins ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00088132
0xc8f98b07b152dd7872597ebb766e52a909b6a39bad593b264ecb7ce2592b229a4 hrs 57 mins ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.0008842
0x08ffebd76365c84d9e33b330901375b12bce99c528908b4d521060f9a6524a764 hrs 59 mins ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00088164
0x5d6a4a0b28b0632b43da0141703571faa08883d926926a9a50c65b9a504512396 hrs 39 mins ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00088388
0x26830bcd9e1f727ccb4d1f0642bcbd9a8ab19e64186dbb3476c4073ad26416259 hrs 33 mins ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00088388
0xd9614f736eafbb067868b9acd38d072778309e215c3888a85b2f9b4b8237e77510 hrs 38 mins ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00089029
0xad85d3d57fa2fa7da48999da63d725797986ea864f06b37dbbb122f88cc4a4ca10 hrs 52 mins ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00088164
0x9fd66d66e297f42481a0229fc65b35274eeced37ab5bc47e5fb4322706bd90db10 hrs 54 mins ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00088164
0x2ce16a3ada6c87bf17051a002d64a7996e2b84ede016e612f6acffaafee5a01c11 hrs 1 min ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00088292
0xef0b00fe4cdacc5db3013568c64213f4e02859d921e05b98e8a4f7f400d81e1811 hrs 41 mins ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00088164
0x2b4d48e655b9d6241af82ee59c28b1c0555a0ea87b5af08f71c94dcd1bebbbf612 hrs 11 mins ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00088132
0x040a3b1d405cc26e1ab79c27d110b19d10954ae5373f5c3addd19138fa4ef9f314 hrs 32 mins ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00088388
0x69ee791f13bc59d1ced0d5d75e0ea29431a96a9a6ef104adf6829d840ed2cadd14 hrs 46 mins ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00088196
0x246f18b230dae436b9e31a70ff9d84dcd8ddb31fa9641782f41c7ad1ab211d2714 hrs 57 mins ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00088164
0x08fcf8b050bbf6f1936c841448419f890d46379f5295af57f3a29ac4d18119af14 hrs 59 mins ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00088132
0xf6d0818df23c68c1a3e6cce4929dc71e8f99816f8356904ab54443af25f131a815 hrs 15 mins ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00088132
0xe8290449c4121f2a90c21973c9d3b695af8587d60aa074a4be8493879fffba3c15 hrs 27 mins ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.0008842
0xad6cacb989c6698f14c2fea639538f0c1523493745e65605d092aeaedff16a6716 hrs 41 mins ago0xbbaf778404f29dafabfb07981e3cf3fae29ce385  IN   0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00088388
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Contract Source Code Verified (Exact Match)
Contract Name: CaelumMiner
Compiler Text: v0.4.25+commit.59dbf8f1
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity 0.4.25;

library SafeMath {

    /**
     * @dev Multiplies two numbers, reverts on 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-solidity/pull/522
        if (_a == 0) {
            return 0;
        }

        uint256 c = _a * _b;
        require(c / _a == _b);

        return c;
    }

    /**
     * @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
     */
    function div(uint256 _a, uint256 _b) internal pure returns(uint256) {
        require(_b > 0); // Solidity only automatically asserts when dividing by 0
        uint256 c = _a / _b;
        // assert(_a == _b * c + _a % _b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
     */
    function sub(uint256 _a, uint256 _b) internal pure returns(uint256) {
        require(_b <= _a);
        uint256 c = _a - _b;

        return c;
    }

    /**
     * @dev Adds two numbers, reverts on overflow.
     */
    function add(uint256 _a, uint256 _b) internal pure returns(uint256) {
        uint256 c = _a + _b;
        require(c >= _a);

        return c;
    }

    /**
     * @dev Divides two numbers and returns the remainder (unsigned integer modulo),
     * reverts when dividing by zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns(uint256) {
        require(b != 0);
        return a % b;
    }
}

library ExtendedMath {
    function limitLessThan(uint a, uint b) internal pure returns(uint c) {
        if (a > b) return b;
        return a;
    }
}

contract Ownable {
  address public owner;


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


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  constructor() public {
    owner = msg.sender;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   * @dev Renouncing to ownership will leave the contract without an owner.
   * It will not be possible to call the functions with the `onlyOwner`
   * modifier anymore.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipRenounced(owner);
    owner = address(0);
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function transferOwnership(address _newOwner) public onlyOwner {
    _transferOwnership(_newOwner);
  }

  /**
   * @dev Transfers control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function _transferOwnership(address _newOwner) internal {
    require(_newOwner != address(0));
    emit OwnershipTransferred(owner, _newOwner);
    owner = _newOwner;
  }
}

contract InterfaceContracts is Ownable {
    InterfaceContracts public _internalMod;
    
    function setModifierContract (address _t) onlyOwner public {
        _internalMod = InterfaceContracts(_t);
    }

    modifier onlyMiningContract() {
      require(msg.sender == _internalMod._contract_miner(), "Wrong sender");
          _;
      }

    modifier onlyTokenContract() {
      require(msg.sender == _internalMod._contract_token(), "Wrong sender");
      _;
    }
    
    modifier onlyMasternodeContract() {
      require(msg.sender == _internalMod._contract_masternode(), "Wrong sender");
      _;
    }
    
    modifier onlyVotingOrOwner() {
      require(msg.sender == _internalMod._contract_voting() || msg.sender == owner, "Wrong sender");
      _;
    }
    
    modifier onlyVotingContract() {
      require(msg.sender == _internalMod._contract_voting() || msg.sender == owner, "Wrong sender");
      _;
    }
      
    function _contract_voting () public view returns (address) {
        return _internalMod._contract_voting();
    }
    
    function _contract_masternode () public view returns (address) {
        return _internalMod._contract_masternode();
    }
    
    function _contract_token () public view returns (address) {
        return _internalMod._contract_token();
    }
    
    function _contract_miner () public view returns (address) {
        return _internalMod._contract_miner();
    }
}

interface ICaelumMasternode {
    function _externalArrangeFlow() external;
    function rewardsProofOfWork() external returns (uint) ;
    function rewardsMasternode() external returns (uint) ;
    function masternodeIDcounter() external returns (uint) ;
    function masternodeCandidate() external returns (uint) ;
    function getUserFromID(uint) external view returns  (address) ;
    function contractProgress() external view returns (uint, uint, uint, uint, uint, uint, uint, uint);
}

interface ICaelumToken {
    function rewardExternal(address, uint) external;
    function balanceOf(address) external view returns (uint);
}

interface EIP918Interface  {

    /*
     * Externally facing mint function that is called by miners to validate challenge digests, calculate reward,
     * populate statistics, mutate epoch variables and adjust the solution difficulty as required. Once complete,
     * a Mint event is emitted before returning a success indicator.
     **/
  	function mint(uint256 nonce, bytes32 challenge_digest) external returns (bool success);


	/*
     * Returns the challenge number
     **/
    function getChallengeNumber() external view returns (bytes32);

    /*
     * Returns the mining difficulty. The number of digits that the digest of the PoW solution requires which
     * typically auto adjusts during reward generation.
     **/
    function getMiningDifficulty() external view returns (uint);

    /*
     * Returns the mining target
     **/
    function getMiningTarget() external view returns (uint);

    /*
     * Return the current reward amount. Depending on the algorithm, typically rewards are divided every reward era
     * as tokens are mined to provide scarcity
     **/
    function getMiningReward() external view returns (uint);

    /*
     * Upon successful verification and reward the mint method dispatches a Mint Event indicating the reward address,
     * the reward amount, the epoch count and newest challenge number.
     **/
    event Mint(address indexed from, uint reward_amount, uint epochCount, bytes32 newChallengeNumber);

}

contract AbstractERC918 is EIP918Interface {

    // generate a new challenge number after a new reward is minted
    bytes32 public challengeNumber;

    // the current mining difficulty
    uint public difficulty;

    // cumulative counter of the total minted tokens
    uint public tokensMinted;

    // track read only minting statistics
    struct Statistics {
        address lastRewardTo;
        uint lastRewardAmount;
        uint lastRewardEthBlockNumber;
        uint lastRewardTimestamp;
    }

    Statistics public statistics;

    /*
     * Externally facing mint function that is called by miners to validate challenge digests, calculate reward,
     * populate statistics, mutate epoch variables and adjust the solution difficulty as required. Once complete,
     * a Mint event is emitted before returning a success indicator.
     **/
    function mint(uint256 nonce, bytes32 challenge_digest) public returns (bool success);


    /*
     * Internal interface function _hash. Overide in implementation to define hashing algorithm and
     * validation
     **/
    function _hash(uint256 nonce, bytes32 challenge_digest) internal returns (bytes32 digest);

    /*
     * Internal interface function _reward. Overide in implementation to calculate and return reward
     * amount
     **/
    function _reward() internal returns (uint);

    /*
     * Internal interface function _newEpoch. Overide in implementation to define a cutpoint for mutating
     * mining variables in preparation for the next epoch
     **/
    function _newEpoch(uint256 nonce) internal returns (uint);

    /*
     * Internal interface function _adjustDifficulty. Overide in implementation to adjust the difficulty
     * of the mining as required
     **/
    function _adjustDifficulty() internal returns (uint);

}

contract CaelumAbstractMiner is InterfaceContracts, AbstractERC918 {
    /**
     * CaelumMiner contract.
     *
     * We need to make sure the contract is 100% compatible when using the EIP918Interface.
     * This contract is an abstract Caelum miner contract.
     *
     * Function 'mint', and '_reward' are overriden in the CaelumMiner contract.
     * Function '_reward_masternode' is added and needs to be overriden in the CaelumMiner contract.
     */

    using SafeMath for uint;
    using ExtendedMath for uint;

    uint256 public totalSupply = 2100000000000000;

    uint public latestDifficultyPeriodStarted;
    uint public epochCount;
    uint public baseMiningReward = 50;
    uint public blocksPerReadjustment = 512;
    uint public _MINIMUM_TARGET = 2 ** 16;
    uint public _MAXIMUM_TARGET = 2 ** 234;
    uint public rewardEra = 0;

    uint public maxSupplyForEra;
    uint public MAX_REWARD_ERA = 39;
    uint public MINING_RATE_FACTOR = 60; //mint the token 60 times less often than ether

    uint public MAX_ADJUSTMENT_PERCENT = 100;
    uint public TARGET_DIVISOR = 2000;
    uint public QUOTIENT_LIMIT = TARGET_DIVISOR.div(2);
    mapping(bytes32 => bytes32) solutionForChallenge;
    mapping(address => mapping(address => uint)) allowed;

    bytes32 public challengeNumber;
    uint public difficulty;
    uint public tokensMinted;

    Statistics public statistics;

    event Mint(address indexed from, uint reward_amount, uint epochCount, bytes32 newChallengeNumber);
    event RewardMasternode(address candidate, uint amount);

    constructor() public {
        tokensMinted = 0;
        maxSupplyForEra = totalSupply.div(2);
        difficulty = _MAXIMUM_TARGET;
        latestDifficultyPeriodStarted = block.number;
        _newEpoch(0);
    }

    function _newEpoch(uint256 nonce) internal returns(uint) {
        if (tokensMinted.add(getMiningReward()) > maxSupplyForEra && rewardEra < MAX_REWARD_ERA) {
            rewardEra = rewardEra + 1;
        }
        maxSupplyForEra = totalSupply - totalSupply.div(2 ** (rewardEra + 1));
        epochCount = epochCount.add(1);
        challengeNumber = blockhash(block.number - 1);
        return (epochCount);
    }

    function mint(uint256 nonce, bytes32 challenge_digest) public returns(bool success);

    function _hash(uint256 nonce, bytes32 challenge_digest) internal returns(bytes32 digest) {
        digest = keccak256(challengeNumber, msg.sender, nonce);
        if (digest != challenge_digest) revert();
        if (uint256(digest) > difficulty) revert();
        bytes32 solution = solutionForChallenge[challengeNumber];
        solutionForChallenge[challengeNumber] = digest;
        if (solution != 0x0) revert(); //prevent the same answer from awarding twice
    }

    function _reward() internal returns(uint);

    function _reward_masternode() internal returns(uint);

    function _adjustDifficulty() internal returns(uint) {
        //every so often, readjust difficulty. Dont readjust when deploying
        if (epochCount % blocksPerReadjustment != 0) {
            return difficulty;
        }

        uint ethBlocksSinceLastDifficultyPeriod = block.number - latestDifficultyPeriodStarted;
        //assume 360 ethereum blocks per hour
        //we want miners to spend 10 minutes to mine each 'block', about 60 ethereum blocks = one 0xbitcoin epoch
        uint epochsMined = blocksPerReadjustment;
        uint targetEthBlocksPerDiffPeriod = epochsMined * MINING_RATE_FACTOR;
        //if there were less eth blocks passed in time than expected
        if (ethBlocksSinceLastDifficultyPeriod < targetEthBlocksPerDiffPeriod) {
            uint excess_block_pct = (targetEthBlocksPerDiffPeriod.mul(MAX_ADJUSTMENT_PERCENT)).div(ethBlocksSinceLastDifficultyPeriod);
            uint excess_block_pct_extra = excess_block_pct.sub(100).limitLessThan(QUOTIENT_LIMIT);
            // If there were 5% more blocks mined than expected then this is 5.  If there were 100% more blocks mined than expected then this is 100.
            //make it harder
            difficulty = difficulty.sub(difficulty.div(TARGET_DIVISOR).mul(excess_block_pct_extra)); //by up to 50 %
        } else {
            uint shortage_block_pct = (ethBlocksSinceLastDifficultyPeriod.mul(MAX_ADJUSTMENT_PERCENT)).div(targetEthBlocksPerDiffPeriod);
            uint shortage_block_pct_extra = shortage_block_pct.sub(100).limitLessThan(QUOTIENT_LIMIT); //always between 0 and 1000
            //make it easier
            difficulty = difficulty.add(difficulty.div(TARGET_DIVISOR).mul(shortage_block_pct_extra)); //by up to 50 %
        }
        latestDifficultyPeriodStarted = block.number;
        if (difficulty < _MINIMUM_TARGET) //very difficult
        {
            difficulty = _MINIMUM_TARGET;
        }
        if (difficulty > _MAXIMUM_TARGET) //very easy
        {
            difficulty = _MAXIMUM_TARGET;
        }
    }

    function getChallengeNumber() public view returns(bytes32) {
        return challengeNumber;
    }

    function getMiningDifficulty() public view returns(uint) {
        return _MAXIMUM_TARGET.div(difficulty);
    }

    function getMiningTarget() public view returns(uint) {
        return difficulty;
    }

    function getMiningReward() public view returns(uint) {
        return (baseMiningReward * 1e8).div(2 ** rewardEra);
    }

    function getMintDigest(
        uint256 nonce,
        bytes32 challenge_digest,
        bytes32 challenge_number
    )
    public view returns(bytes32 digesttest) {
        bytes32 digest = keccak256(challenge_number, msg.sender, nonce);
        return digest;
    }

    function checkMintSolution(
        uint256 nonce,
        bytes32 challenge_digest,
        bytes32 challenge_number,
        uint testTarget
    )
    public view returns(bool success) {
        bytes32 digest = keccak256(challenge_number, msg.sender, nonce);
        if (uint256(digest) > testTarget) revert();
        return (digest == challenge_digest);
    }
}

contract CaelumMiner is CaelumAbstractMiner {

    ICaelumToken public tokenInterface;
    ICaelumMasternode public masternodeInterface;
    bool public ACTIVE_STATE = false;
    uint swapStartedBlock = now;
    uint public gasPriceLimit = 999;

    /**
     * @dev Allows the owner to set a gas limit on submitting solutions.
     * courtesy of KiwiToken.
     * See https://github.com/liberation-online/MineableToken for more details why.
     */

    modifier checkGasPrice(uint txnGasPrice) {
        require(txnGasPrice <= gasPriceLimit * 1000000000, "Gas above gwei limit!");
        _;
    }

    event GasPriceSet(uint8 _gasPrice);

    function setGasPriceLimit(uint8 _gasPrice) onlyOwner public {
        require(_gasPrice > 0);
        gasPriceLimit = _gasPrice;

        emit GasPriceSet(_gasPrice); //emit event
    }

    function setTokenContract() internal {
        tokenInterface = ICaelumToken(_contract_token());
    }

    function setMasternodeContract() internal {
        masternodeInterface = ICaelumMasternode(_contract_masternode());
    }

    /**
     * Override; For some reason, truffle testing does not recognize function.
     */
    function setModifierContract (address _contract) onlyOwner public {
        require (now <= swapStartedBlock + 10 days);
        _internalMod = InterfaceContracts(_contract);
        setMasternodeContract();
        setTokenContract();
    }

    /**
    * @dev Move the voting away from token. All votes will be made from the voting
    */
    function VoteModifierContract (address _contract) onlyVotingContract external {
        //_internalMod = CaelumModifierAbstract(_contract);
        _internalMod = InterfaceContracts(_contract);
        setMasternodeContract();
        setTokenContract();
    }

    function mint(uint256 nonce, bytes32 challenge_digest) checkGasPrice(tx.gasprice) public returns(bool success) {
        require(ACTIVE_STATE);

        _hash(nonce, challenge_digest);

        masternodeInterface._externalArrangeFlow();

        uint rewardAmount = _reward();
        uint rewardMasternode = _reward_masternode();

        tokensMinted += rewardAmount.add(rewardMasternode);

        uint epochCounter = _newEpoch(nonce);

        _adjustDifficulty();

        statistics = Statistics(msg.sender, rewardAmount, block.number, now);

        emit Mint(msg.sender, rewardAmount, epochCounter, challengeNumber);

        return true;
    }

    function _reward() internal returns(uint) {

        uint _pow = masternodeInterface.rewardsProofOfWork();

        tokenInterface.rewardExternal(msg.sender, _pow);

        return _pow;
    }

    function _reward_masternode() internal returns(uint) {

        uint _mnReward = masternodeInterface.rewardsMasternode();
        if (masternodeInterface.masternodeIDcounter() == 0) return 0;

        address _mnCandidate = masternodeInterface.getUserFromID(masternodeInterface.masternodeCandidate()); // userByIndex[masternodeCandidate].accountOwner;
        if (_mnCandidate == 0x0) return 0;

        tokenInterface.rewardExternal(_mnCandidate, _mnReward);

        emit RewardMasternode(_mnCandidate, _mnReward);

        return _mnReward;
    }

    /**
     * @dev Fetch data from the actual reward. We do this to prevent pools payout out
     * the global reward instead of the calculated ones.
     * By default, pools fetch the `getMiningReward()` value and will payout this amount.
     */
    function getMiningRewardForPool() public view returns(uint) {
        return masternodeInterface.rewardsProofOfWork();
    }

    function getMiningReward() public view returns(uint) {
        return (baseMiningReward * 1e8).div(2 ** rewardEra);
    }

    function contractProgress() public view returns
        (
            uint epoch,
            uint candidate,
            uint round,
            uint miningepoch,
            uint globalreward,
            uint powreward,
            uint masternodereward,
            uint usercounter
        ) {
            return ICaelumMasternode(_contract_masternode()).contractProgress();

        }

    /**
     * @dev Call this function prior to mining to copy all old contract values.
     * This included minted tokens, difficulty, etc..
     */

    function getDataFromContract(address _previous_contract) onlyOwner public {
        require(ACTIVE_STATE == false);
        require(_contract_token() != 0);
        require(_contract_masternode() != 0);

        CaelumAbstractMiner prev = CaelumAbstractMiner(_previous_contract);
        difficulty = prev.difficulty();
        rewardEra = prev.rewardEra();
        MINING_RATE_FACTOR = prev.MINING_RATE_FACTOR();
        maxSupplyForEra = prev.maxSupplyForEra();
        tokensMinted = prev.tokensMinted();
        epochCount = prev.epochCount();

        ACTIVE_STATE = true;
    }
    
    function balanceOf(address _owner) public view returns(uint256) {
        return tokenInterface.balanceOf(_owner);
    }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"TARGET_DIVISOR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMiningRewardForPool","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_contract_miner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"masternodeInterface","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_contract","type":"address"}],"name":"VoteModifierContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMiningDifficulty","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"nonce","type":"uint256"},{"name":"challenge_digest","type":"bytes32"}],"name":"mint","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"difficulty","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_ADJUSTMENT_PERCENT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_contract","type":"address"}],"name":"setModifierContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_previous_contract","type":"address"}],"name":"getDataFromContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardEra","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMiningTarget","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MINING_RATE_FACTOR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_REWARD_ERA","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMiningReward","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getChallengeNumber","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxSupplyForEra","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"baseMiningReward","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensMinted","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"contractProgress","outputs":[{"name":"epoch","type":"uint256"},{"name":"candidate","type":"uint256"},{"name":"round","type":"uint256"},{"name":"miningepoch","type":"uint256"},{"name":"globalreward","type":"uint256"},{"name":"powreward","type":"uint256"},{"name":"masternodereward","type":"uint256"},{"name":"usercounter","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"nonce","type":"uint256"},{"name":"challenge_digest","type":"bytes32"},{"name":"challenge_number","type":"bytes32"},{"name":"testTarget","type":"uint256"}],"name":"checkMintSolution","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_contract_voting","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"epochCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ACTIVE_STATE","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_MAXIMUM_TARGET","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"challengeNumber","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"statistics","outputs":[{"name":"lastRewardTo","type":"address"},{"name":"lastRewardAmount","type":"uint256"},{"name":"lastRewardEthBlockNumber","type":"uint256"},{"name":"lastRewardTimestamp","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gasPriceLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"nonce","type":"uint256"},{"name":"challenge_digest","type":"bytes32"},{"name":"challenge_number","type":"bytes32"}],"name":"getMintDigest","outputs":[{"name":"digesttest","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_contract_masternode","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"QUOTIENT_LIMIT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_contract_token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_internalMod","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"latestDifficultyPeriodStarted","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"blocksPerReadjustment","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_MINIMUM_TARGET","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenInterface","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_gasPrice","type":"uint8"}],"name":"setGasPriceLimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_gasPrice","type":"uint8"}],"name":"GasPriceSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"reward_amount","type":"uint256"},{"indexed":false,"name":"epochCount","type":"uint256"},{"indexed":false,"name":"newChallengeNumber","type":"bytes32"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"candidate","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"RewardMasternode","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6080604052660775f05a0740006009556032600c55610200600d5562010000600e557d040000000000000000000000000000000000000000000000000000000000600f5560006010556027601255603c60135560646014556107d060158190556200007a90600264010000000062001468620000f382021704565b6016556021805460a060020a60ff0219169055426022556103e760235560008054600160a060020a03191633178155601b55600954620000ca90600264010000000062001468620000f382021704565b601155600f54601a5543600a55620000ec600064010000000062000118810204565b506200021c565b6000808083116200010357600080fd5b82848115156200010f57fe5b04949350505050565b6000601154620001526200013a620001d1640100000000026401000000009004565b601b54906401000000006200191c6200020282021704565b118015620001635750601254601054105b1562000173576010805460010190555b601054600954620001989160010160020a64010000000062001468620000f382021704565b60095403601155600b54620001bd9060016401000000006200191c6200020282021704565b600b81905543600019014060195592915050565b601054600c54600091620001fd916305f5e100029060020a64010000000062001468620000f382021704565b905090565b6000828201838110156200021557600080fd5b9392505050565b611c35806200022c6000396000f3006080604052600436106102005763ffffffff60e060020a600035041663095b6d4c81146102055780630b2cb8a31461022c5780630de33210146102415780630e7b2f31146102725780630ecf42531461028757806317da485f146102aa5780631801fbe5146102bf57806318160ddd146102ee57806319cae462146103035780631beddf1c146103185780631dfb396f1461032d57806329a7922d1461034e5780632d38bf7a1461036f57806332e99708146103845780633426e5f51461039957806346eed3f3146103ae578063490203a7146103c35780634ef37628146103d85780634fa972e1146103ed57806354bcb164146104025780636de9f32b1461041757806370a082311461042c578063715018a61461044d5780637558d81e1461046257806381269a56146104b857806381ae8d86146104d9578063829965cc146104ee5780638786e0951461050357806387a2a9d6146105185780638ae0368b1461052d5780638da5cb5b1461054257806395e272bd14610557578063961a929c1461059c57806397566aa0146105b1578063aad5b4ae146105cf578063ad1dfe3b146105e4578063be550be4146105f9578063c28b29471461060e578063cb9ae70714610623578063d87b8fcb14610638578063dc6e9cf91461064d578063f2fde38b14610662578063f343d68314610683578063f72c28a114610698575b600080fd5b34801561021157600080fd5b5061021a6106b3565b60408051918252519081900360200190f35b34801561023857600080fd5b5061021a6106b9565b34801561024d57600080fd5b50610256610749565b60408051600160a060020a039092168252519081900360200190f35b34801561027e57600080fd5b506102566107a8565b34801561029357600080fd5b506102a8600160a060020a03600435166107b7565b005b3480156102b657600080fd5b5061021a6108fe565b3480156102cb57600080fd5b506102da60043560243561091c565b604080519115158252519081900360200190f35b3480156102fa57600080fd5b5061021a610b1b565b34801561030f57600080fd5b5061021a610b21565b34801561032457600080fd5b5061021a610b27565b34801561033957600080fd5b506102a8600160a060020a0360043516610b2d565b34801561035a57600080fd5b506102a8600160a060020a0360043516610b58565b34801561037b57600080fd5b5061021a610f2b565b34801561039057600080fd5b5061021a610f31565b3480156103a557600080fd5b5061021a610f37565b3480156103ba57600080fd5b5061021a610f3d565b3480156103cf57600080fd5b5061021a610f43565b3480156103e457600080fd5b5061021a610f65565b3480156103f957600080fd5b5061021a610f6b565b34801561040e57600080fd5b5061021a610f71565b34801561042357600080fd5b5061021a610f77565b34801561043857600080fd5b5061021a600160a060020a0360043516610f7d565b34801561045957600080fd5b506102a8611018565b34801561046e57600080fd5b50610477611084565b604080519889526020890197909752878701959095526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b3480156104c457600080fd5b506102da600435602435604435606435611140565b3480156104e557600080fd5b5061025661118a565b3480156104fa57600080fd5b5061021a6111e9565b34801561050f57600080fd5b506102da6111ef565b34801561052457600080fd5b5061021a611210565b34801561053957600080fd5b5061021a611216565b34801561054e57600080fd5b5061025661121c565b34801561056357600080fd5b5061056c61122b565b60408051600160a060020a0390951685526020850193909352838301919091526060830152519081900360800190f35b3480156105a857600080fd5b5061021a611246565b3480156105bd57600080fd5b5061021a60043560243560443561124c565b3480156105db57600080fd5b50610256611281565b3480156105f057600080fd5b5061021a6112e0565b34801561060557600080fd5b506102566112e6565b34801561061a57600080fd5b50610256611345565b34801561062f57600080fd5b5061021a611354565b34801561064457600080fd5b5061021a61135a565b34801561065957600080fd5b5061021a611360565b34801561066e57600080fd5b506102a8600160a060020a0360043516611366565b34801561068f57600080fd5b50610256611386565b3480156106a457600080fd5b506102a860ff60043516611395565b60155481565b602154604080517f1ad93a9b0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a031691631ad93a9b91600480830192602092919082900301818787803b15801561071857600080fd5b505af115801561072c573d6000803e3d6000fd5b505050506040513d602081101561074257600080fd5b5051905090565b600154604080517f0de332100000000000000000000000000000000000000000000000000000000081529051600092600160a060020a031691630de3321091600480830192602092919082900301818787803b15801561071857600080fd5b602154600160a060020a031681565b600160009054906101000a9004600160a060020a0316600160a060020a03166381ae8d866040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561080a57600080fd5b505af115801561081e573d6000803e3d6000fd5b505050506040513d602081101561083457600080fd5b5051600160a060020a03163314806108565750600054600160a060020a031633145b15156108c357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f57726f6e672073656e6465720000000000000000000000000000000000000000604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790556108f36113fa565b6108fb611431565b50565b6000610917601a54600f5461146890919063ffffffff16565b905090565b6000806000803a602354633b9aca0002811115151561099c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4761732061626f76652067776569206c696d6974210000000000000000000000604482015290519081900360640190fd5b60215474010000000000000000000000000000000000000000900460ff1615156109c557600080fd5b6109cf8787611490565b50602160009054906101000a9004600160a060020a0316600160a060020a031663a042d43e6040518163ffffffff1660e060020a028152600401600060405180830381600087803b158015610a2357600080fd5b505af1158015610a37573d6000803e3d6000fd5b50505050610a43611500565b9350610a4d61160f565b9250610a5f848463ffffffff61191c16565b601b80549091019055610a7187611935565b9150610a7b6119bd565b506040805160808101825233808252602080830188905243838501819052426060948501819052601c805473ffffffffffffffffffffffffffffffffffffffff191685179055601d8a9055601e91909155601f55601954845189815291820187905281850152925190927fcf6fbb9dcea7d07263ab4f5c3a92f53af33dffc421d9d121e1c74b307e68189d92908290030190a25060019695505050505050565b60095481565b601a5481565b60145481565b600054600160a060020a03163314610b4457600080fd5b602254620d2f00014211156108c357600080fd5b60008054600160a060020a03163314610b7057600080fd5b60215474010000000000000000000000000000000000000000900460ff1615610b9857600080fd5b610ba06112e6565b600160a060020a03161515610bb457600080fd5b610bbc611281565b600160a060020a03161515610bd057600080fd5b81905080600160a060020a03166319cae4626040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610c1157600080fd5b505af1158015610c25573d6000803e3d6000fd5b505050506040513d6020811015610c3b57600080fd5b5051601a55604080517f2d38bf7a0000000000000000000000000000000000000000000000000000000081529051600160a060020a03831691632d38bf7a9160048083019260209291908290030181600087803b158015610c9b57600080fd5b505af1158015610caf573d6000803e3d6000fd5b505050506040513d6020811015610cc557600080fd5b5051601055604080517f3426e5f50000000000000000000000000000000000000000000000000000000081529051600160a060020a03831691633426e5f59160048083019260209291908290030181600087803b158015610d2557600080fd5b505af1158015610d39573d6000803e3d6000fd5b505050506040513d6020811015610d4f57600080fd5b5051601355604080517f4fa972e10000000000000000000000000000000000000000000000000000000081529051600160a060020a03831691634fa972e19160048083019260209291908290030181600087803b158015610daf57600080fd5b505af1158015610dc3573d6000803e3d6000fd5b505050506040513d6020811015610dd957600080fd5b5051601155604080517f6de9f32b0000000000000000000000000000000000000000000000000000000081529051600160a060020a03831691636de9f32b9160048083019260209291908290030181600087803b158015610e3957600080fd5b505af1158015610e4d573d6000803e3d6000fd5b505050506040513d6020811015610e6357600080fd5b5051601b55604080517f829965cc0000000000000000000000000000000000000000000000000000000081529051600160a060020a0383169163829965cc9160048083019260209291908290030181600087803b158015610ec357600080fd5b505af1158015610ed7573d6000803e3d6000fd5b505050506040513d6020811015610eed57600080fd5b5051600b5550506021805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b60105481565b601a5490565b60135481565b60125481565b600061091760105460020a600c546305f5e1000261146890919063ffffffff16565b60195490565b60115481565b600c5481565b601b5481565b60208054604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152915160009492909316926370a082319260248084019391929182900301818787803b158015610fe657600080fd5b505af1158015610ffa573d6000803e3d6000fd5b505050506040513d602081101561101057600080fd5b505192915050565b600054600160a060020a0316331461102f57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600080600080600080600080611098611281565b600160a060020a0316637558d81e6040518163ffffffff1660e060020a02815260040161010060405180830381600087803b1580156110d657600080fd5b505af11580156110ea573d6000803e3d6000fd5b505050506040513d61010081101561110157600080fd5b508051602082015160408301516060840151608085015160a086015160c087015160e090970151959f949e50929c50909a509850965091945092509050565b604080518381526c01000000000000000000000000330260208201526034810186905290519081900360540190206000908281111561117e57600080fd5b93909314949350505050565b600154604080517f81ae8d860000000000000000000000000000000000000000000000000000000081529051600092600160a060020a0316916381ae8d8691600480830192602092919082900301818787803b15801561071857600080fd5b600b5481565b60215474010000000000000000000000000000000000000000900460ff1681565b600f5481565b60195481565b600054600160a060020a031681565b601c54601d54601e54601f54600160a060020a039093169284565b60235481565b604080518281526c01000000000000000000000000330260208201526034810185905290519081900360540190209392505050565b600154604080517faad5b4ae0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163aad5b4ae91600480830192602092919082900301818787803b15801561071857600080fd5b60165481565b600154604080517fbe550be40000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163be550be491600480830192602092919082900301818787803b15801561071857600080fd5b600154600160a060020a031681565b600a5481565b600d5481565b600e5481565b600054600160a060020a0316331461137d57600080fd5b6108fb81611b2d565b602054600160a060020a031681565b600054600160a060020a031633146113ac57600080fd5b600060ff8216116113bc57600080fd5b60ff8116602381905560408051918252517fdfd0de69153615d091009f6a203a3188c76f7dbdccfcdb30ae401af52279dd489181900360200190a150565b611402611281565b6021805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6114396112e6565b6020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008080831161147757600080fd5b828481151561148257fe5b0490508091505b5092915050565b601954604080519182526c0100000000000000000000000033026020830152603482018490525190819003605401902060008282146114ce57600080fd5b601a548211156114dd57600080fd5b506019546000908152601760205260409020805490829055801561148957600080fd5b600080602160009054906101000a9004600160a060020a0316600160a060020a0316631ad93a9b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561155657600080fd5b505af115801561156a573d6000803e3d6000fd5b505050506040513d602081101561158057600080fd5b5051602054604080517f680d5762000000000000000000000000000000000000000000000000000000008152336004820152602481018490529051929350600160a060020a039091169163680d57629160448082019260009290919082900301818387803b1580156115f157600080fd5b505af1158015611605573d6000803e3d6000fd5b5092949350505050565b6000806000602160009054906101000a9004600160a060020a0316600160a060020a031663e1eca3276040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561166757600080fd5b505af115801561167b573d6000803e3d6000fd5b505050506040513d602081101561169157600080fd5b5051602154604080517fe6f76fe80000000000000000000000000000000000000000000000000000000081529051929450600160a060020a039091169163e6f76fe8916004808201926020929091908290030181600087803b1580156116f657600080fd5b505af115801561170a573d6000803e3d6000fd5b505050506040513d602081101561172057600080fd5b505115156117315760009250611917565b602154604080517f448a00170000000000000000000000000000000000000000000000000000000081529051600160a060020a0390921691632debc54991839163448a0017916004808201926020929091908290030181600087803b15801561179957600080fd5b505af11580156117ad573d6000803e3d6000fd5b505050506040513d60208110156117c357600080fd5b50516040805160e060020a63ffffffff851602815260048101929092525160248083019260209291908290030181600087803b15801561180257600080fd5b505af1158015611816573d6000803e3d6000fd5b505050506040513d602081101561182c57600080fd5b50519050600160a060020a03811615156118495760009250611917565b602054604080517f680d5762000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152602482018690529151919092169163680d576291604480830192600092919082900301818387803b1580156118b757600080fd5b505af11580156118cb573d6000803e3d6000fd5b505060408051600160a060020a03851681526020810186905281517f8f9a423c71e43ad001bebf147d969f424a8fac4e5970a367c5e53abb17cbe7109450908190039091019150a18192505b505090565b60008282018381101561192e57600080fd5b9392505050565b6000601154611954611945610f43565b601b549063ffffffff61191c16565b1180156119645750601254601054105b15611973576010805460010190555b60105460095461198e9160010160020a63ffffffff61146816565b60095403601155600b546119a990600163ffffffff61191c16565b600b81905543600019014060195592915050565b600080600080600080600080600d54600b548115156119d857fe5b06156119e857601a549750611b23565b600a5443039650600d5495506013548602945084871015611a9257611a2887611a1c60145488611baa90919063ffffffff16565b9063ffffffff61146816565b601654909450611a4f90611a4386606463ffffffff611bd816565b9063ffffffff611bef16565b9250611a8a611a7b84611a6f601554601a5461146890919063ffffffff16565b9063ffffffff611baa16565b601a549063ffffffff611bd816565b601a55611af9565b611aab85611a1c6014548a611baa90919063ffffffff16565b601654909250611ac690611a4384606463ffffffff611bd816565b9050611af5611ae682611a6f601554601a5461146890919063ffffffff16565b601a549063ffffffff61191c16565b601a555b43600a55600e54601a541015611b1057600e54601a555b600f54601a541115611b2357600f54601a555b5050505050505090565b600160a060020a0381161515611b4257600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600080831515611bbd5760009150611489565b50828202828482811515611bcd57fe5b041461192e57600080fd5b60008083831115611be857600080fd5b5050900390565b600081831115611c00575080611c03565b50815b929150505600a165627a7a723058207537c5d7fcd1b4f1d86b395c12df84aab28b84fe5c2bbc1d74835d5f9b2633ff0029

   Swarm Source:
bzzr://7537c5d7fcd1b4f1d86b395c12df84aab28b84fe5c2bbc1d74835d5f9b2633ff

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.