Contract 0xa38fcedd23de2191dc27f9a0240ac170be0a14fe

 

TxHash Block Age From To Value [TxFee]
0x18c5e43e86b0a32165e3ce9dc5a85fb464a284d65d2993b8d1e5c53ba712a39f724969053 mins ago0x6696722c5cad75664a7dfe99fa2f9b0693c6de39 IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.001237432
0xeb71e7d60e246370ea3c7638ec0d743d4c1e76329e9f316f8e062433e575617d72495491 hr 32 mins ago0x6696722c5cad75664a7dfe99fa2f9b0693c6de39 IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.001237432
0xa39327c7043f06d13cc5234561aeb0d6f25cd846ccbcb3bb8103e4f849ba4fe372495421 hr 33 mins ago0x70f1587521c8abe634885f39315f9fba9f811fda IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00106104
0x9c069a1f9c76e9753cc8980f71a4db2134eac2dffa9f1486141bb614597b7e7272495301 hr 36 mins ago0x7c78b6560ba28657d29b1a86f5aeb1ed2731835c IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.001412672
0x33bd53b120d34d85126b866261fd2f2c95a2373df461cb2dcb6a99195abb700772493642 hrs 35 mins ago0x70f1587521c8abe634885f39315f9fba9f811fda IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.001237432
0x631e9587e6eb288ddf5c8a79504b3bfc73f51d549b687fd5df504664b63f1c8c72493052 hrs 53 mins ago0x6696722c5cad75664a7dfe99fa2f9b0693c6de39 IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.000184765
0x36e1283ef39158ad4c51482ede638490046c9c1ece7c157ff05eb763e6ae55a872493052 hrs 53 mins ago0x70f1587521c8abe634885f39315f9fba9f811fda IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00123788
0xd0ba46895fc6777967bed518159895c555108119097213d042d4473e1fab6b4c72492463 hrs 17 mins ago0xe4ac657af0690e9437f36d3e96886dc880b24404 IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00123564
0x3c8275c195c1e2383ed1343bd8e8d23af0f3bf0e295ac679bdd9c6c7c4502b1b72491913 hrs 37 mins ago0xae5bced214e1c954fcaa04fc88d296a8d60c7e60 IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.001059504
0x6f7d07c3932a7a78309e4d1571a34a414a662d7fd4d91bded594465bcef6c91172490904 hrs 7 mins ago0x6696722c5cad75664a7dfe99fa2f9b0693c6de39 IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.000184765
0x026fca256a2151cbb4551fa15730a9c8b69ac00e0057b0fe4408bccdf178abcc72490884 hrs 7 mins ago0x70f1587521c8abe634885f39315f9fba9f811fda IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.001237432
0xdbd5312a12eaaa705f11bc592ec84672281551934f8ccb82993b1150f87f1be672490524 hrs 21 mins ago0x6696722c5cad75664a7dfe99fa2f9b0693c6de39 IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.001237432
0x07c2d414c3fc1a17ff9c99a98bffefad54630f17f22784ce9fe8955b91e9f95272488645 hrs 30 mins ago0xae5bced214e1c954fcaa04fc88d296a8d60c7e60 IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.001059888
0x0abcea0fa9b53db4845a17e438ebfc64dea47b1e40e4822cdfe0e5d3e8828d9072487875 hrs 57 mins ago0x6696722c5cad75664a7dfe99fa2f9b0693c6de39 IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.001237432
0x60b970dc4efd2ca4dee0481d37c5824bd847de7bd16543e6112d3cfa17d2208672487716 hrs 2 mins ago0xe4ac657af0690e9437f36d3e96886dc880b24404 IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.001236088
0xf2ebf2c49495639c374b4afab8b4cd453fb800a6ec4930466aba8dbc34cdf7db72487536 hrs 8 mins ago0x6696722c5cad75664a7dfe99fa2f9b0693c6de39 IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.001237432
0x3fda746e09a396aa2a5c8026bb6468780aad8840d284284c01158978f078e64872487246 hrs 20 mins ago0xae5bced214e1c954fcaa04fc88d296a8d60c7e60 IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.001059504
0x6a61b2ec881a64adbc49cc183849c94763562873a114d1d4a83eb3d9a5cedd9372486946 hrs 31 mins ago0xe4ac657af0690e9437f36d3e96886dc880b24404 IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.000182973
0xf97b303123bdd8e573743b17e8e70c2088fd75e0caba878c2d746ecf0a7d41cc72486946 hrs 31 mins ago0x6696722c5cad75664a7dfe99fa2f9b0693c6de39 IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.001237432
0xc24834b3eaa468d722d5ca3b9b67cd238a86f8085f3eabd009ab22470774a25072486266 hrs 56 mins ago0xe4ac657af0690e9437f36d3e96886dc880b24404 IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.001236088
0xdb1812b0fb54e2199611ccbd0298ef931745dc189d2ece7a0f1023b0ea83be8172485837 hrs 10 mins ago0x70f1587521c8abe634885f39315f9fba9f811fda IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00123788
0xcbc4267154ece2c4f21d6676b6c1cd6ae0ae35957b576c6f8b025613d8d2219172483298 hrs 34 mins ago0x6696722c5cad75664a7dfe99fa2f9b0693c6de39 IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.001237432
0xfa2c6be0f8402d7d2634139112f4988f80ff2389bed41582e4e62db1e0c7c725724796910 hrs 35 mins ago0xd79efc8f7a26640718c50ca228c89c7f7bef37d3 IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.0008826
0xe185d71e314ac77ccad78b65f9cb23364ef0dff91d798ac6cad6bdd48dcebd31724777811 hrs 39 mins ago0xae5bced214e1c954fcaa04fc88d296a8d60c7e60 IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00123564
0x5912984d5abd97620877b087b2dcd947cd9fc59a1de64592438970517f969f41724775411 hrs 47 mins ago0x70f1587521c8abe634885f39315f9fba9f811fda IN  0xa38fcedd23de2191dc27f9a0240ac170be0a14fe0 Ether0.00106104
[ Download CSV Export 

Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
Contract Source Code Verified (Exact Match)
Contract Name: CaelumMiner
Compiler Version: v0.4.25+commit.59dbf8f1
Optimization Enabled: Yes
Runs (Optimizer):  200


Contract Source Code
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
6080604052660775f05a0740006009556032600c55610200600d5562010000600e557d040000000000000000000000000000000000000000000000000000000000600f5560006010556027601255603c60135560646014556107d060158190556200007a90600264010000000062001468620000f382021704565b6016556021805460a060020a60ff0219169055426022556103e760235560008054600160a060020a03191633178155601b55600954620000ca90600264010000000062001468620000f382021704565b601155600f54601a5543600a55620000ec600064010000000062000118810204565b506200021c565b6000808083116200010357600080fd5b82848115156200010f57fe5b04949350505050565b6000601154620001526200013a620001d1640100000000026401000000009004565b601b54906401000000006200191c6200020282021704565b118015620001635750601254601054105b1562000173576010805460010190555b601054600954620001989160010160020a64010000000062001468620000f382021704565b60095403601155600b54620001bd9060016401000000006200191c6200020282021704565b600b81905543600019014060195592915050565b601054600c54600091620001fd916305f5e100029060020a64010000000062001468620000f382021704565b905090565b6000828201838110156200021557600080fd5b9392505050565b611c35806200022c6000396000f3006080604052600436106102005763ffffffff60e060020a600035041663095b6d4c81146102055780630b2cb8a31461022c5780630de33210146102415780630e7b2f31146102725780630ecf42531461028757806317da485f146102aa5780631801fbe5146102bf57806318160ddd146102ee57806319cae462146103035780631beddf1c146103185780631dfb396f1461032d57806329a7922d1461034e5780632d38bf7a1461036f57806332e99708146103845780633426e5f51461039957806346eed3f3146103ae578063490203a7146103c35780634ef37628146103d85780634fa972e1146103ed57806354bcb164146104025780636de9f32b1461041757806370a082311461042c578063715018a61461044d5780637558d81e1461046257806381269a56146104b857806381ae8d86146104d9578063829965cc146104ee5780638786e0951461050357806387a2a9d6146105185780638ae0368b1461052d5780638da5cb5b1461054257806395e272bd14610557578063961a929c1461059c57806397566aa0146105b1578063aad5b4ae146105cf578063ad1dfe3b146105e4578063be550be4146105f9578063c28b29471461060e578063cb9ae70714610623578063d87b8fcb14610638578063dc6e9cf91461064d578063f2fde38b14610662578063f343d68314610683578063f72c28a114610698575b600080fd5b34801561021157600080fd5b5061021a6106b3565b60408051918252519081900360200190f35b34801561023857600080fd5b5061021a6106b9565b34801561024d57600080fd5b50610256610749565b60408051600160a060020a039092168252519081900360200190f35b34801561027e57600080fd5b506102566107a8565b34801561029357600080fd5b506102a8600160a060020a03600435166107b7565b005b3480156102b657600080fd5b5061021a6108fe565b3480156102cb57600080fd5b506102da60043560243561091c565b604080519115158252519081900360200190f35b3480156102fa57600080fd5b5061021a610b1b565b34801561030f57600080fd5b5061021a610b21565b34801561032457600080fd5b5061021a610b27565b34801561033957600080fd5b506102a8600160a060020a0360043516610b2d565b34801561035a57600080fd5b506102a8600160a060020a0360043516610b58565b34801561037b57600080fd5b5061021a610f2b565b34801561039057600080fd5b5061021a610f31565b3480156103a557600080fd5b5061021a610f37565b3480156103ba57600080fd5b5061021a610f3d565b3480156103cf57600080fd5b5061021a610f43565b3480156103e457600080fd5b5061021a610f65565b3480156103f957600080fd5b5061021a610f6b565b34801561040e57600080fd5b5061021a610f71565b34801561042357600080fd5b5061021a610f77565b34801561043857600080fd5b5061021a600160a060020a0360043516610f7d565b34801561045957600080fd5b506102a8611018565b34801561046e57600080fd5b50610477611084565b604080519889526020890197909752878701959095526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b3480156104c457600080fd5b506102da600435602435604435606435611140565b3480156104e557600080fd5b5061025661118a565b3480156104fa57600080fd5b5061021a6111e9565b34801561050f57600080fd5b506102da6111ef565b34801561052457600080fd5b5061021a611210565b34801561053957600080fd5b5061021a611216565b34801561054e57600080fd5b5061025661121c565b34801561056357600080fd5b5061056c61122b565b60408051600160a060020a0390951685526020850193909352838301919091526060830152519081900360800190f35b3480156105a857600080fd5b5061021a611246565b3480156105bd57600080fd5b5061021a60043560243560443561124c565b3480156105db57600080fd5b50610256611281565b3480156105f057600080fd5b5061021a6112e0565b34801561060557600080fd5b506102566112e6565b34801561061a57600080fd5b50610256611345565b34801561062f57600080fd5b5061021a611354565b34801561064457600080fd5b5061021a61135a565b34801561065957600080fd5b5061021a611360565b34801561066e57600080fd5b506102a8600160a060020a0360043516611366565b34801561068f57600080fd5b50610256611386565b3480156106a457600080fd5b506102a860ff60043516611395565b60155481565b602154604080517f1ad93a9b0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a031691631ad93a9b91600480830192602092919082900301818787803b15801561071857600080fd5b505af115801561072c573d6000803e3d6000fd5b505050506040513d602081101561074257600080fd5b5051905090565b600154604080517f0de332100000000000000000000000000000000000000000000000000000000081529051600092600160a060020a031691630de3321091600480830192602092919082900301818787803b15801561071857600080fd5b602154600160a060020a031681565b600160009054906101000a9004600160a060020a0316600160a060020a03166381ae8d866040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561080a57600080fd5b505af115801561081e573d6000803e3d6000fd5b505050506040513d602081101561083457600080fd5b5051600160a060020a03163314806108565750600054600160a060020a031633145b15156108c357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f57726f6e672073656e6465720000000000000000000000000000000000000000604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790556108f36113fa565b6108fb611431565b50565b6000610917601a54600f5461146890919063ffffffff16565b905090565b6000806000803a602354633b9aca0002811115151561099c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4761732061626f76652067776569206c696d6974210000000000000000000000604482015290519081900360640190fd5b60215474010000000000000000000000000000000000000000900460ff1615156109c557600080fd5b6109cf8787611490565b50602160009054906101000a9004600160a060020a0316600160a060020a031663a042d43e6040518163ffffffff1660e060020a028152600401600060405180830381600087803b158015610a2357600080fd5b505af1158015610a37573d6000803e3d6000fd5b50505050610a43611500565b9350610a4d61160f565b9250610a5f848463ffffffff61191c16565b601b80549091019055610a7187611935565b9150610a7b6119bd565b506040805160808101825233808252602080830188905243838501819052426060948501819052601c805473ffffffffffffffffffffffffffffffffffffffff191685179055601d8a9055601e91909155601f55601954845189815291820187905281850152925190927fcf6fbb9dcea7d07263ab4f5c3a92f53af33dffc421d9d121e1c74b307e68189d92908290030190a25060019695505050505050565b60095481565b601a5481565b60145481565b600054600160a060020a03163314610b4457600080fd5b602254620d2f00014211156108c357600080fd5b60008054600160a060020a03163314610b7057600080fd5b60215474010000000000000000000000000000000000000000900460ff1615610b9857600080fd5b610ba06112e6565b600160a060020a03161515610bb457600080fd5b610bbc611281565b600160a060020a03161515610bd057600080fd5b81905080600160a060020a03166319cae4626040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610c1157600080fd5b505af1158015610c25573d6000803e3d6000fd5b505050506040513d6020811015610c3b57600080fd5b5051601a55604080517f2d38bf7a0000000000000000000000000000000000000000000000000000000081529051600160a060020a03831691632d38bf7a9160048083019260209291908290030181600087803b158015610c9b57600080fd5b505af1158015610caf573d6000803e3d6000fd5b505050506040513d6020811015610cc557600080fd5b5051601055604080517f3426e5f50000000000000000000000000000000000000000000000000000000081529051600160a060020a03831691633426e5f59160048083019260209291908290030181600087803b158015610d2557600080fd5b505af1158015610d39573d6000803e3d6000fd5b505050506040513d6020811015610d4f57600080fd5b5051601355604080517f4fa972e10000000000000000000000000000000000000000000000000000000081529051600160a060020a03831691634fa972e19160048083019260209291908290030181600087803b158015610daf57600080fd5b505af1158015610dc3573d6000803e3d6000fd5b505050506040513d6020811015610dd957600080fd5b5051601155604080517f6de9f32b0000000000000000000000000000000000000000000000000000000081529051600160a060020a03831691636de9f32b9160048083019260209291908290030181600087803b158015610e3957600080fd5b505af1158015610e4d573d6000803e3d6000fd5b505050506040513d6020811015610e6357600080fd5b5051601b55604080517f829965cc0000000000000000000000000000000000000000000000000000000081529051600160a060020a0383169163829965cc9160048083019260209291908290030181600087803b158015610ec357600080fd5b505af1158015610ed7573d6000803e3d6000fd5b505050506040513d6020811015610eed57600080fd5b5051600b5550506021805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b60105481565b601a5490565b60135481565b60125481565b600061091760105460020a600c546305f5e1000261146890919063ffffffff16565b60195490565b60115481565b600c5481565b601b5481565b60208054604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152915160009492909316926370a082319260248084019391929182900301818787803b158015610fe657600080fd5b505af1158015610ffa573d6000803e3d6000fd5b505050506040513d602081101561101057600080fd5b505192915050565b600054600160a060020a0316331461102f57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600080600080600080600080611098611281565b600160a060020a0316637558d81e6040518163ffffffff1660e060020a02815260040161010060405180830381600087803b1580156110d657600080fd5b505af11580156110ea573d6000803e3d6000fd5b505050506040513d61010081101561110157600080fd5b508051602082015160408301516060840151608085015160a086015160c087015160e090970151959f949e50929c50909a509850965091945092509050565b604080518381526c01000000000000000000000000330260208201526034810186905290519081900360540190206000908281111561117e57600080fd5b93909314949350505050565b600154604080517f81ae8d860000000000000000000000000000000000000000000000000000000081529051600092600160a060020a0316916381ae8d8691600480830192602092919082900301818787803b15801561071857600080fd5b600b5481565b60215474010000000000000000000000000000000000000000900460ff1681565b600f5481565b60195481565b600054600160a060020a031681565b601c54601d54601e54601f54600160a060020a039093169284565b60235481565b604080518281526c01000000000000000000000000330260208201526034810185905290519081900360540190209392505050565b600154604080517faad5b4ae0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163aad5b4ae91600480830192602092919082900301818787803b15801561071857600080fd5b60165481565b600154604080517fbe550be40000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163be550be491600480830192602092919082900301818787803b15801561071857600080fd5b600154600160a060020a031681565b600a5481565b600d5481565b600e5481565b600054600160a060020a0316331461137d57600080fd5b6108fb81611b2d565b602054600160a060020a031681565b600054600160a060020a031633146113ac57600080fd5b600060ff8216116113bc57600080fd5b60ff8116602381905560408051918252517fdfd0de69153615d091009f6a203a3188c76f7dbdccfcdb30ae401af52279dd489181900360200190a150565b611402611281565b6021805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6114396112e6565b6020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008080831161147757600080fd5b828481151561148257fe5b0490508091505b5092915050565b601954604080519182526c0100000000000000000000000033026020830152603482018490525190819003605401902060008282146114ce57600080fd5b601a548211156114dd57600080fd5b506019546000908152601760205260409020805490829055801561148957600080fd5b600080602160009054906101000a9004600160a060020a0316600160a060020a0316631ad93a9b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561155657600080fd5b505af115801561156a573d6000803e3d6000fd5b505050506040513d602081101561158057600080fd5b5051602054604080517f680d5762000000000000000000000000000000000000000000000000000000008152336004820152602481018490529051929350600160a060020a039091169163680d57629160448082019260009290919082900301818387803b1580156115f157600080fd5b505af1158015611605573d6000803e3d6000fd5b5092949350505050565b6000806000602160009054906101000a9004600160a060020a0316600160a060020a031663e1eca3276040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561166757600080fd5b505af115801561167b573d6000803e3d6000fd5b505050506040513d602081101561169157600080fd5b5051602154604080517fe6f76fe80000000000000000000000000000000000000000000000000000000081529051929450600160a060020a039091169163e6f76fe8916004808201926020929091908290030181600087803b1580156116f657600080fd5b505af115801561170a573d6000803e3d6000fd5b505050506040513d602081101561172057600080fd5b505115156117315760009250611917565b602154604080517f448a00170000000000000000000000000000000000000000000000000000000081529051600160a060020a0390921691632debc54991839163448a0017916004808201926020929091908290030181600087803b15801561179957600080fd5b505af11580156117ad573d6000803e3d6000fd5b505050506040513d60208110156117c357600080fd5b50516040805160e060020a63ffffffff851602815260048101929092525160248083019260209291908290030181600087803b15801561180257600080fd5b505af1158015611816573d6000803e3d6000fd5b505050506040513d602081101561182c57600080fd5b50519050600160a060020a03811615156118495760009250611917565b602054604080517f680d5762000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152602482018690529151919092169163680d576291604480830192600092919082900301818387803b1580156118b757600080fd5b505af11580156118cb573d6000803e3d6000fd5b505060408051600160a060020a03851681526020810186905281517f8f9a423c71e43ad001bebf147d969f424a8fac4e5970a367c5e53abb17cbe7109450908190039091019150a18192505b505090565b60008282018381101561192e57600080fd5b9392505050565b6000601154611954611945610f43565b601b549063ffffffff61191c16565b1180156119645750601254601054105b15611973576010805460010190555b60105460095461198e9160010160020a63ffffffff61146816565b60095403601155600b546119a990600163ffffffff61191c16565b600b81905543600019014060195592915050565b600080600080600080600080600d54600b548115156119d857fe5b06156119e857601a549750611b23565b600a5443039650600d5495506013548602945084871015611a9257611a2887611a1c60145488611baa90919063ffffffff16565b9063ffffffff61146816565b601654909450611a4f90611a4386606463ffffffff611bd816565b9063ffffffff611bef16565b9250611a8a611a7b84611a6f601554601a5461146890919063ffffffff16565b9063ffffffff611baa16565b601a549063ffffffff611bd816565b601a55611af9565b611aab85611a1c6014548a611baa90919063ffffffff16565b601654909250611ac690611a4384606463ffffffff611bd816565b9050611af5611ae682611a6f601554601a5461146890919063ffffffff16565b601a549063ffffffff61191c16565b601a555b43600a55600e54601a541015611b1057600e54601a555b600f54601a541115611b2357600f54601a555b5050505050505090565b600160a060020a0381161515611b4257600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600080831515611bbd5760009150611489565b50828202828482811515611bcd57fe5b041461192e57600080fd5b60008083831115611be857600080fd5b5050900390565b600081831115611c00575080611c03565b50815b929150505600a165627a7a723058207537c5d7fcd1b4f1d86b395c12df84aab28b84fe5c2bbc1d74835d5f9b2633ff0029


   Swarm Source:
bzzr://7537c5d7fcd1b4f1d86b395c12df84aab28b84fe5c2bbc1d74835d5f9b2633ff
Block Age transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.