Contract 0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d

 

TxHash Block Age From To Value [TxFee]
0xbeceae7989828ed51035b67e979e09acfeda3d6989344cb52f22fec69d794fdd693992257 days 2 hrs ago0xede92d9d913b5479fd8d1f65979cd7b008024316  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.000136449
0xa3873500d32b0f317050ac730ec7024cc9d3864e13b9c07dac854caea6d9d59c686423269 days 19 hrs ago0xb63027a47526b139fd51c0754d3542d850879e43  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.000147312
0x36cb769eca256b7423b0f68c6274acdfbbdba5b45d27d2abed1e4a52bea8c268681057678 days 15 hrs ago0xbbd9e0fa169c09fc0b9a4da92d2253b93041b15d  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.00029558256
0xffe7facc11c238a7949d972d53369b2941cab1cbbcc5f5c8c01fe93dd249b058677933783 days 19 hrs ago0x8fea1cf4845417f0525f5effca0f312a8c419a4e  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.000147312
0x6d19a1f4599f121e6b9923206183f0d98ecbe6a92138b62c123a561d6b729e72674106190 days 2 hrs ago0x997fd8c1eaf2b388b5a584c05ef538aa76dcc9c3  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.00021828
0x117b1c4cf0b49cb284e37ff540f4f897705525d7e4c7755351adcd70935e1fdc674104390 days 2 hrs ago0x997fd8c1eaf2b388b5a584c05ef538aa76dcc9c3  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.0002585
0xd5665d0f69da007beb14c00528d0ab4891ee4bcf94f69b94f5ed708ccaf3f885672840092 days 4 hrs ago0x74871c76b488ac7617841e6fe7b1e73ff64744b8  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.0002202
0xe6db162013118f1afb8cdc08be7497a8a710ca687b81f307518c80c399bcb97d6586781115 days 9 hrs ago0xe15273e81bbed36dd657606824346e22a41bed74  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.000330876
0x488ace2bf172ea4e20f570966cf940228821836bb5b429fd566ac0cd3b4c0ae96567742118 days 11 hrs ago0x358b6d24cdc0734e7a53c43c561488d1fc63b050  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.0001302
0xe75c6195047fb6c6ec65b87cc2793e99b193c7371716a8e1650c4baefe6a1af06567702118 days 12 hrs ago0x358b6d24cdc0734e7a53c43c561488d1fc63b050  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.002117076
0xfd4acbfb574638f69efb9b6a2793f91358c0d969718069f6c7112f803ead847c6557973120 days 2 hrs ago0x594e4031fa38d01be5867e58a4f99981e7ef6572  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.0001519
0x6039acfbb8384e24b10c2042078f5f23737e6733fa2a24a63037a86fffe02d336546810121 days 21 hrs ago0x991bd83f4c601fc3798839d4e4372d628607f7c9  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.000514696
0x16c98bf369b4ea1b78345ed662204b7f77944ae8cc0afa68d36f8824b5e053776534656123 days 21 hrs ago0xd1040e124e58cefc4c8ec81ae1874ac33047f134  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.001509948
0x86862e9813eca17dddf027d220053604deb72fefc075d584b083fd9f38de5fec6528429124 days 22 hrs ago0xded19450f2a17da1cf68cde74a6e3d3ee174cd0b  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.000073656
0x26f805511a6936ef176d0dc6d15e986cddb1cccdd8b3b1bf4bb7690777df12816485477131 days 21 hrs ago0x1ecbc886ffd6e329f3d035f3fa768e7337ee7e88  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.000207056
0xde3f9731b56c7b19ee33c084c6374450d51dc6ea34a32e0fa7dde2c317bce2866470180134 days 8 hrs ago0xebb2972224d808b140d397800b9a45406c5a6a4a  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.000130968
0x21402025af6fd37b51e897400eac91df7732b634e6d48c01b9e2ca269d860d616446386138 days 5 hrs ago0x86e755e4128a8abb36a91f74d44e7a41b976b106  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.000147312
0xdb996f4a0275e6f2bd02486d602155784159f975b01fa50d9ea54046913cc8526422655142 days 3 hrs ago0x619eac21a080c9d210db032362015cd05227ec13  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.00030419
0x7735459fdb0da6f9bb35e06750f9a15b3e18ae15dd141bf12f6e4fadf9f1de3e6422645142 days 3 hrs ago0x619eac21a080c9d210db032362015cd05227ec13  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.00045419
0x3f5913b3a50f9207c30f6496e82319cbf51ea1ca2479ddad599fb4a2faee4d016419919142 days 13 hrs ago0x45c0a8f62ddfdbe2dc5a9921549783d9e0c32ef9  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.0004957647
0x2d406905c9f4ca8e084430cded34282f61c4fe1337c925c734fad2d0249a69a96418824142 days 17 hrs ago0x991bd83f4c601fc3798839d4e4372d628607f7c9  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.000514696
0x70c24b103c169b56dd8cbeaf9012bf799f7a7ca04c2b1aeea81ecbdcd91175bc6406454144 days 18 hrs ago0x991bd83f4c601fc3798839d4e4372d628607f7c9  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.00036764
0x1b7c20124e9b05162d53e4967f98f16704c94f54b629c11548366bb6f9981b436382743148 days 15 hrs ago0xb3366d16789812bfaac8209b7616e588d284f4ca  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.0001101
0x61261f980a467117b15c9bec6a3d3eacd76ff31ea243c5e5b1fc235770d8cf4c6380161149 days 2 hrs ago0x991bd83f4c601fc3798839d4e4372d628607f7c9  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.00036764
0x448f6e16129653ab2a9caf2f2bff2a93894a279655519dee7fcce30c9b1527c76369168150 days 21 hrs ago0x45c0a8f62ddfdbe2dc5a9921549783d9e0c32ef9  IN   0x33d99efc0c3cc4f93da6931ec2cccf19ca874b6d0 Ether0.0002819946
[ Download CSV Export 

Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: _0xLitecoinToken
Compiler Version: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimizer):  200


Contract Source Code
pragma solidity ^0.4.18;


// ----------------------------------------------------------------------------

// '0xLitecoin Token' contract

// Mineable ERC20 Token using Proof Of Work



/*

the idea is that the miner uses proxyMergeMint in https://github.com/snissn/0xlitecoin-token/blob/master/contracts/MintHelper.sol#L189 
to call parent::mint() and then this::merge() in the same transaction

*/

//

// Symbol      : 0xLTC

// Name        : 0xLitecoin Token

// Total supply: 4*21,000,000.00

// Decimals    : 8

//


// ----------------------------------------------------------------------------



// ----------------------------------------------------------------------------

// Safe maths

// ----------------------------------------------------------------------------

library SafeMath {

    function add(uint a, uint b) internal pure returns (uint c) {

        c = a + b;

        require(c >= a);

    }

    function sub(uint a, uint b) internal pure returns (uint c) {

        require(b <= a);

        c = a - b;

    }

    function mul(uint a, uint b) internal pure returns (uint c) {

        c = a * b;

        require(a == 0 || c / a == b);

    }

    function div(uint a, uint b) internal pure returns (uint c) {

        require(b > 0);

        c = a / b;

    }

}



library ExtendedMath {


    //return the smaller of the two inputs (a or b)
    function limitLessThan(uint a, uint b) internal pure returns (uint c) {

        if(a > b) return b;

        return a;

    }
}

// ----------------------------------------------------------------------------

// ERC Token Standard #20 Interface

// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md

// ----------------------------------------------------------------------------

contract ERC20Interface {

    function totalSupply() public constant returns (uint);

    function balanceOf(address tokenOwner) public constant returns (uint balance);

    function allowance(address tokenOwner, address spender) public constant returns (uint remaining);

    function transfer(address to, uint tokens) public returns (bool success);

    function approve(address spender, uint tokens) public returns (bool success);

    function transferFrom(address from, address to, uint tokens) public returns (bool success);


    event Transfer(address indexed from, address indexed to, uint tokens);

    event Approval(address indexed tokenOwner, address indexed spender, uint tokens);


}


contract ERC918Interface {
  function totalSupply() public constant returns (uint);
  function getMiningDifficulty() public constant returns (uint);
  function getMiningTarget() public constant returns (uint);
  function getMiningReward() public constant returns (uint);
  function balanceOf(address tokenOwner) public constant returns (uint balance);

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

  event Mint(address indexed from, uint reward_amount, uint epochCount, bytes32 newChallengeNumber);
  address public lastRewardTo;
  uint public lastRewardAmount;
  uint public lastRewardEthBlockNumber;
  bytes32 public challengeNumber;



}


// ----------------------------------------------------------------------------

// Contract function to receive approval and execute function in one call

//

// Borrowed from MiniMeToken

// ----------------------------------------------------------------------------

contract ApproveAndCallFallBack {

    function receiveApproval(address from, uint256 tokens, address token, bytes data) public;

}



// ----------------------------------------------------------------------------

// Owned contract

// ----------------------------------------------------------------------------

contract Owned {

    address public owner;

    address public newOwner;


    event OwnershipTransferred(address indexed _from, address indexed _to);


    function Owned() public {

        owner = msg.sender;

    }


    modifier onlyOwner {

        require(msg.sender == owner);

        _;

    }


    function transferOwnership(address _newOwner) public onlyOwner {

        newOwner = _newOwner;

    }

    function acceptOwnership() public {

        require(msg.sender == newOwner);

        OwnershipTransferred(owner, newOwner);

        owner = newOwner;

        newOwner = address(0);

    }

}



// ----------------------------------------------------------------------------

// ERC20 Token, with the addition of symbol, name and decimals and an

// initial fixed supply

// ----------------------------------------------------------------------------

contract _0xLitecoinToken is ERC20Interface, Owned {

    using SafeMath for uint;
    using ExtendedMath for uint;


    string public symbol;

    string public  name;

    uint8 public decimals;

    uint public _totalSupply;

    address parentAddress;


     uint public latestDifficultyPeriodStarted;



    uint public epochCount;//number of 'blocks' mined


    // the goal is for 0xLitecoin to be mined with 0xBTC

    uint public _BLOCKS_PER_READJUSTMENT = 1024;


    //a little number
    uint public  _MINIMUM_TARGET = 2**16; // TODO increase this before deploying


      //a big number is easier ; just find a solution that is smaller
    //uint public  _MAXIMUM_TARGET = 2**224;  Litecoin uses 224
    uint public  _MAXIMUM_TARGET = 2**234;


    uint public miningTarget;

    bytes32 public challengeNumber;   //generate a new one when a new reward is minted



    uint public rewardEra;
    uint public maxSupplyForEra;


    address public lastRewardTo;
    uint public lastRewardAmount;
    uint public lastRewardEthBlockNumber;

    bool locked = false;

    mapping(bytes32 => bytes32) solutionForChallenge;

    uint public tokensMinted;

    mapping(address => uint) balances;


    mapping(address => mapping(address => uint)) allowed;


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

    // ------------------------------------------------------------------------

    // Constructor

    // ------------------------------------------------------------------------

    function _0xLitecoinToken() public onlyOwner{



        symbol = "0xLTC";

        name = "0xLitecoin Token";

        decimals = 8;

        _totalSupply = 4*21000000 * 10**uint(decimals);

        if(locked) revert();
        locked = true;

        tokensMinted = 0;

        rewardEra = 0;
        maxSupplyForEra = _totalSupply.div(2);

        miningTarget = 27938697607979437428382017032425071986904332731688489302005732; // from 0xBitcoin as of block 5902249

        latestDifficultyPeriodStarted = block.number;

        _startNewMiningEpoch();

        parentAddress = 0xb6ed7644c69416d67b522e20bc294a9a9b405b31;



        //The owner gets nothing! You must mine this ERC20 token
        //balances[owner] = _totalSupply;
        //Transfer(address(0), owner, _totalSupply);

    }




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


            //the PoW must contain work that includes a recent ethereum block hash (challenge number) and the msg.sender's address to prevent MITM attacks
            bytes32 digest =  keccak256(challengeNumber, msg.sender, nonce );

            //the challenge digest must match the expected
            if (digest != challenge_digest) revert();

            //the digest must be smaller than the target
            if(uint256(digest) > miningTarget) revert();


            //only allow one reward for each challenge
             bytes32 solution = solutionForChallenge[challengeNumber];
             solutionForChallenge[challengeNumber] = digest;
             if(solution != 0x0) revert();  //prevent the same answer from awarding twice


            uint reward_amount = getMiningReward();

            balances[msg.sender] = balances[msg.sender].add(reward_amount);

            tokensMinted = tokensMinted.add(reward_amount);


            //Cannot mint more tokens than there are
            assert(tokensMinted <= maxSupplyForEra);

            //set readonly diagnostics data
            lastRewardTo = msg.sender;
            lastRewardAmount = reward_amount;
            lastRewardEthBlockNumber = block.number;


             _startNewMiningEpoch();

              Mint(msg.sender, reward_amount, epochCount, challengeNumber );

           return true;

        }




        function merge() public returns (bool success) {

            // the idea is that the miner uses https://github.com/0xbitcoin/mint-helper/blob/master/contracts/MintHelper.sol 
            // to call mint() and then mergeMint() in the same transaction



            // hard code a reference to the "Parent" ERC918 Contract ( in this case 0xBitcoin)
            // Verify that the Parent contract was minted in this block, by the same person calling this contract
            // then followthrough with the resulting mint logic
            // don't call revert, but return true or false based on success
            // this method shouldn't revert because it will be calleed in the same transaction as a "Parent" mint attempt

            //ensure that mergeMint() can only be called once per Parent::mint()
            //do this by ensuring that the "new" challenge number from Parent::challenge post mint can be called once
            //and that this block time is the same as this mint, and the caller is msg.sender


            //only allow one reward for each challenge
            // do this by calculating what the new challenge will be in _startNewMiningEpoch, and verify that it is not that value
            // this checks happen in the local contract, not in the parent

            bytes32 future_challengeNumber = block.blockhash(block.number - 1);
            if(challengeNumber == future_challengeNumber){
                return false; // ( this is likely the second time that mergeMint() has been called in a transaction, so return false (don't revert))
            }

            //verify Parent::lastRewardTo == msg.sender;
            if(ERC918Interface(parentAddress).lastRewardTo() != msg.sender){
                return false; // a different address called mint last so return false ( don't revert)
            }
            
            //verify Parent::lastRewardEthBlockNumber == block.number;

            if(ERC918Interface(parentAddress).lastRewardEthBlockNumber() != block.number){
                return false; // parent::mint() was called in a different block number so return false ( don't revert)
            }

            //we have verified that _startNewMiningEpoch has not been run more than once this block by verifying that
            // the challenge is not the challenge that will be set by _startNewMiningEpoch
            //we have verified that this is the same block as a call to Parent::mint() and that the sender
            // is the sender that has called mint



             //0xLTC will have the same challenge numbers as 0xBitcoin, this means that mining for one is literally the same process as mining for the other
             // we want to make sure that one can't use a combination of merge and mint to get two blocks of 0xLTC for each valid nonce, since the same solution 
             //    applies to each coin
             // for this reason, we update the solutionForChallenge hashmap with the value of parent::challengeNumber when a solution is merge minted.
             // when a miner finds a valid solution, if they call this::mint(), without the next few lines of code they can then subsequently use the mint helper and in one transaction
             //   call parent::mint() this::merge(). the following code will ensure that this::merge() does not give a block reward, because the challenge number will already be set in the 
             //   solutionForChallenge map
             //only allow one reward for each challenge based on parent::challengeNumber
             bytes32 parentChallengeNumber = ERC918Interface(parentAddress).challengeNumber();
             bytes32 solution = solutionForChallenge[parentChallengeNumber];
             if(solution != 0x0) return false;  //prevent the same answer from awarding twice
             bytes32 digest = 'merge';
             solutionForChallenge[parentChallengeNumber] = digest;


            //so now we may safely run the relevant logic to give an award to the sender, and update the contract

            uint reward_amount = getMiningReward();

            balances[msg.sender] = balances[msg.sender].add(reward_amount);

            tokensMinted = tokensMinted.add(reward_amount);


            //Cannot mint more tokens than there are
            assert(tokensMinted <= maxSupplyForEra);

            //set readonly diagnostics data
            lastRewardTo = msg.sender;
            lastRewardAmount = reward_amount;
            lastRewardEthBlockNumber = block.number;


             _startNewMiningEpoch();

              Mint(msg.sender, reward_amount, epochCount, 0 ); // use 0 to indicate a merge mine

           return true;

        }



    //a new 'block' to be mined
    function _startNewMiningEpoch() internal {

      //if max supply for the era will be exceeded next reward round then enter the new era before that happens

      //40 is the final reward era, almost all tokens minted
      //once the final era is reached, more tokens will not be given out because the assert function
      if( tokensMinted.add(getMiningReward()) > maxSupplyForEra && rewardEra < 39)
      {
        rewardEra = rewardEra + 1;
      }

      //set the next minted supply at which the era will change
      // total supply is 4*2100000000000000  because of 8 decimal places
      maxSupplyForEra = _totalSupply - _totalSupply.div( 2**(rewardEra + 1));

      epochCount = epochCount.add(1);

      //every so often, readjust difficulty. Dont readjust when deploying
      if(epochCount % _BLOCKS_PER_READJUSTMENT == 0)
      {
        _reAdjustDifficulty();
      }


      //make the latest ethereum block hash a part of the next challenge for PoW to prevent pre-mining future blocks
      //do this last since this is a protection mechanism in the mint() function
      challengeNumber = block.blockhash(block.number - 1);






    }




    //https://en.Litecoin.it/wiki/Difficulty#What_is_the_formula_for_difficulty.3F
    //as of 2017 the Litecoin difficulty was up to 17 zeroes, it was only 8 in the early days

    //readjust the target by 5 percent
    function _reAdjustDifficulty() internal {


        uint ethBlocksSinceLastDifficultyPeriod = block.number - latestDifficultyPeriodStarted;
        //assume 360 ethereum blocks per hour

        //we want miners to spend 15 minutes to mine each 'block', about 60 ethereum blocks = one 0xLitecoin epoch = one 0xBitcoin
        uint epochsMined = _BLOCKS_PER_READJUSTMENT; //256

        uint targetEthBlocksPerDiffPeriod = epochsMined * 60; //should be 60 times slower than ethereum

        //if there were less eth blocks passed in time than expected
        if( ethBlocksSinceLastDifficultyPeriod < targetEthBlocksPerDiffPeriod )
        {
          uint excess_block_pct = (targetEthBlocksPerDiffPeriod.mul(100)).div( ethBlocksSinceLastDifficultyPeriod );

          uint excess_block_pct_extra = excess_block_pct.sub(100).limitLessThan(1000);
          // 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
          miningTarget = miningTarget.sub(miningTarget.div(2000).mul(excess_block_pct_extra));   //by up to 50 %
        }else{
          uint shortage_block_pct = (ethBlocksSinceLastDifficultyPeriod.mul(100)).div( targetEthBlocksPerDiffPeriod );

          uint shortage_block_pct_extra = shortage_block_pct.sub(100).limitLessThan(1000); //always between 0 and 1000

          //make it easier
          miningTarget = miningTarget.add(miningTarget.div(2000).mul(shortage_block_pct_extra));   //by up to 50 %
        }



        latestDifficultyPeriodStarted = block.number;

        if(miningTarget < _MINIMUM_TARGET) //very difficult
        {
          miningTarget = _MINIMUM_TARGET;
        }

        if(miningTarget > _MAXIMUM_TARGET) //very easy
        {
          miningTarget = _MAXIMUM_TARGET;
        }
    }


    //this is a recent ethereum block hash, used to prevent pre-mining future blocks
    function getChallengeNumber() public constant returns (bytes32) {
        return challengeNumber;
    }

    //the number of zeroes the digest of the PoW solution requires.  Auto adjusts
     function getMiningDifficulty() public constant returns (uint) {
        return _MAXIMUM_TARGET.div(miningTarget);
    }

    function getMiningTarget() public constant returns (uint) {
       return miningTarget;
   }



    //4*21m coins total
    //reward begins at 4*25 and is cut in half every reward era (as tokens are mined)
    function getMiningReward() public constant returns (uint) {
        //once we get half way thru the coins, only get 25 per block

         //every reward era, the reward amount halves.

         return (4*50 * 10**uint(decimals) ).div( 2**rewardEra ) ;

    }

    //help debug mining software
    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;

      }

        //help debug mining software
      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);

        }



    // ------------------------------------------------------------------------

    // Total supply

    // ------------------------------------------------------------------------

    function totalSupply() public constant returns (uint) {

        return _totalSupply  - balances[address(0)];

    }



    // ------------------------------------------------------------------------

    // Get the token balance for account `tokenOwner`

    // ------------------------------------------------------------------------

    function balanceOf(address tokenOwner) public constant returns (uint balance) {

        return balances[tokenOwner];

    }



    // ------------------------------------------------------------------------

    // Transfer the balance from token owner's account to `to` account

    // - Owner's account must have sufficient balance to transfer

    // - 0 value transfers are allowed

    // ------------------------------------------------------------------------

    function transfer(address to, uint tokens) public returns (bool success) {

        balances[msg.sender] = balances[msg.sender].sub(tokens);

        balances[to] = balances[to].add(tokens);

        Transfer(msg.sender, to, tokens);

        return true;

    }



    // ------------------------------------------------------------------------

    // Token owner can approve for `spender` to transferFrom(...) `tokens`

    // from the token owner's account

    //

    // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md

    // recommends that there are no checks for the approval double-spend attack

    // as this should be implemented in user interfaces

    // ------------------------------------------------------------------------

    function approve(address spender, uint tokens) public returns (bool success) {

        allowed[msg.sender][spender] = tokens;

        Approval(msg.sender, spender, tokens);

        return true;

    }



    // ------------------------------------------------------------------------

    // Transfer `tokens` from the `from` account to the `to` account

    //

    // The calling account must already have sufficient tokens approve(...)-d

    // for spending from the `from` account and

    // - From account must have sufficient balance to transfer

    // - Spender must have sufficient allowance to transfer

    // - 0 value transfers are allowed

    // ------------------------------------------------------------------------

    function transferFrom(address from, address to, uint tokens) public returns (bool success) {

        balances[from] = balances[from].sub(tokens);

        allowed[from][msg.sender] = allowed[from][msg.sender].sub(tokens);

        balances[to] = balances[to].add(tokens);

        Transfer(from, to, tokens);

        return true;

    }



    // ------------------------------------------------------------------------

    // Returns the amount of tokens approved by the owner that can be

    // transferred to the spender's account

    // ------------------------------------------------------------------------

    function allowance(address tokenOwner, address spender) public constant returns (uint remaining) {

        return allowed[tokenOwner][spender];

    }



    // ------------------------------------------------------------------------

    // Token owner can approve for `spender` to transferFrom(...) `tokens`

    // from the token owner's account. The `spender` contract function

    // `receiveApproval(...)` is then executed

    // ------------------------------------------------------------------------

    function approveAndCall(address spender, uint tokens, bytes data) public returns (bool success) {

        allowed[msg.sender][spender] = tokens;

        Approval(msg.sender, spender, tokens);

        ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, this, data);

        return true;

    }



    // ------------------------------------------------------------------------

    // Don't accept ETH

    // ------------------------------------------------------------------------

    function () public payable {

        revert();

    }



    // ------------------------------------------------------------------------

    // Owner can transfer out any accidentally sent ERC20 tokens

    // ------------------------------------------------------------------------

    function transferAnyERC20Token(address tokenAddress, uint tokens) public onlyOwner returns (bool success) {

        return ERC20Interface(tokenAddress).transfer(owner, tokens);

    }

}

Contract ABI
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"merge","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lastRewardEthBlockNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"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":"decimals","outputs":[{"name":"","type":"uint8"}],"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":"_totalSupply","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":"tokensMinted","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastRewardTo","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"epochCount","outputs":[{"name":"","type":"uint256"}],"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":"miningTarget","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":"symbol","outputs":[{"name":"","type":"string"}],"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":false,"inputs":[{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_BLOCKS_PER_READJUSTMENT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastRewardAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"},{"name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"latestDifficultyPeriodStarted","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_MINIMUM_TARGET","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"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":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenOwner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Approval","type":"event"}]

Contract Creation Code
608060405261040060095562010000600a557d040000000000000000000000000000000000000000000000000000000000600b556013805460ff191690553480156200004a57600080fd5b5060008054600160a060020a0319163390811791829055600160a060020a0391909116146200007857600080fd5b6040805180820190915260058082527f30784c54430000000000000000000000000000000000000000000000000000006020909201918252620000be9160029162000525565b506040805180820190915260108082527f30784c697465636f696e20546f6b656e000000000000000000000000000000006020909201918252620001059160039162000525565b506004805460ff191660081790819055630501bd0060ff918216600a0a0260055560135416156200013557600080fd5b6013805460ff1916600117905560006015819055600e556005546200016a90600264010000000062001370620001ce82021704565b600f55791162e42d548b70378065c1c259a827d7121f45ed38dbd7c697e4600c5543600755620001a2640100000000620001f1810204565b60068054600160a060020a03191673b6ed7644c69416d67b522e20bc294a9a9b405b31179055620005c7565b6000808211620001dd57600080fd5b8183811515620001e957fe5b049392505050565b600f54620002236200020b640100000000620002c6810204565b60155490640100000000620012c3620002fb82021704565b1180156200023357506027600e54105b156200024357600e805460010190555b600e54600554620002689160010160020a64010000000062001370620001ce82021704565b60055403600f556008546200028d906001640100000000620012c3620002fb82021704565b600881905560095490811515620002a057fe5b061515620002bb57620002bb64010000000062000312810204565b600019430140600d55565b600e54600454600091620002f59160ff16600a0a60c8029060020a640100000000620001ce8102620013701704565b90505b90565b818101828110156200030c57600080fd5b92915050565b600754600954439190910390603c81026000808080848710156200040657620003658762000350876064640100000000620014e0620004cd82021704565b9064010000000062001370620001ce82021704565b93506200039e6103e86200038986606464010000000062001391620004f582021704565b90640100000000620015056200050b82021704565b9250620003fd620003e584620003d06107d0600c54620001ce6401000000000262001370179091906401000000009004565b90640100000000620014e0620004cd82021704565b600c549064010000000062001391620004f582021704565b600c5562000498565b620004268562000350896064640100000000620014e0620004cd82021704565b91506200044a6103e86200038984606464010000000062001391620004f582021704565b9050620004946200047c82620003d06107d0600c54620001ce6401000000000262001370179091906401000000009004565b600c5490640100000000620012c3620002fb82021704565b600c555b43600755600a54600c541015620004b057600a54600c555b600b54600c541115620004c457600b54600c555b50505050505050565b818102821580620004e95750818382811515620004e657fe5b04145b15156200030c57600080fd5b6000828211156200050557600080fd5b50900390565b6000818311156200051e5750806200030c565b5090919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200056857805160ff191683800117855562000598565b8280016001018555821562000598579182015b82811115620005985782518255916020019190600101906200057b565b50620005a6929150620005aa565b5090565b620002f891905b80821115620005a65760008155600101620005b1565b61154980620005d76000396000f3006080604052600436106101cc5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101d1578063095ea7b31461025b5780630b65108b14610293578063163aa00d146102a857806317da485f146102cf5780631801fbe5146102e457806318160ddd146102ff57806323b872dd146103145780632d38bf7a1461033e578063313ce5671461035357806332e997081461037e5780633eaaf86b14610393578063490203a7146103a85780634ef37628146103bd5780634fa972e1146103d25780636de9f32b146103e75780636fd396d6146103fc57806370a082311461042d57806379ba50971461044e57806381269a5614610465578063829965cc1461048657806387a2a9d61461049b5780638a769d35146104b05780638ae0368b146104c55780638da5cb5b146104da57806395d89b41146104ef57806397566aa014610504578063a9059cbb14610522578063b5ade81b14610546578063bafedcaa1461055b578063cae9ca5114610570578063cb9ae707146105d9578063d4ee1d90146105ee578063dc39d06d14610603578063dc6e9cf914610627578063dd62ed3e1461063c578063f2fde38b14610663575b600080fd5b3480156101dd57600080fd5b506101e6610684565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610220578181015183820152602001610208565b50505050905090810190601f16801561024d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561026757600080fd5b5061027f600160a060020a0360043516602435610712565b604080519115158252519081900360200190f35b34801561029f57600080fd5b5061027f610779565b3480156102b457600080fd5b506102bd610aaa565b60408051918252519081900360200190f35b3480156102db57600080fd5b506102bd610ab0565b3480156102f057600080fd5b5061027f600435602435610ace565b34801561030b57600080fd5b506102bd610c26565b34801561032057600080fd5b5061027f600160a060020a0360043581169060243516604435610c58565b34801561034a57600080fd5b506102bd610d63565b34801561035f57600080fd5b50610368610d69565b6040805160ff9092168252519081900360200190f35b34801561038a57600080fd5b506102bd610d72565b34801561039f57600080fd5b506102bd610d78565b3480156103b457600080fd5b506102bd610d7e565b3480156103c957600080fd5b506102bd610d9d565b3480156103de57600080fd5b506102bd610da3565b3480156103f357600080fd5b506102bd610da9565b34801561040857600080fd5b50610411610daf565b60408051600160a060020a039092168252519081900360200190f35b34801561043957600080fd5b506102bd600160a060020a0360043516610dbe565b34801561045a57600080fd5b50610463610dd9565b005b34801561047157600080fd5b5061027f600435602435604435606435610e61565b34801561049257600080fd5b506102bd610eab565b3480156104a757600080fd5b506102bd610eb1565b3480156104bc57600080fd5b506102bd610eb7565b3480156104d157600080fd5b506102bd610ebd565b3480156104e657600080fd5b50610411610ec3565b3480156104fb57600080fd5b506101e6610ed2565b34801561051057600080fd5b506102bd600435602435604435610f2a565b34801561052e57600080fd5b5061027f600160a060020a0360043516602435610f5f565b34801561055257600080fd5b506102bd61100f565b34801561056757600080fd5b506102bd611015565b34801561057c57600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261027f948235600160a060020a031694602480359536959460649492019190819084018382808284375094975061101b9650505050505050565b3480156105e557600080fd5b506102bd61117c565b3480156105fa57600080fd5b50610411611182565b34801561060f57600080fd5b5061027f600160a060020a0360043516602435611191565b34801561063357600080fd5b506102bd61124c565b34801561064857600080fd5b506102bd600160a060020a0360043581169060243516611252565b34801561066f57600080fd5b50610463600160a060020a036004351661127d565b6003805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561070a5780601f106106df5761010080835404028352916020019161070a565b820191906000526020600020905b8154815290600101906020018083116106ed57829003601f168201915b505050505081565b336000818152601760209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b600d5460009060001943014090829081908190819085141561079e5760009550610aa2565b600654604080517f6fd396d600000000000000000000000000000000000000000000000000000000815290513392600160a060020a031691636fd396d69160048083019260209291908290030181600087803b1580156107fd57600080fd5b505af1158015610811573d6000803e3d6000fd5b505050506040513d602081101561082757600080fd5b5051600160a060020a0316146108405760009550610aa2565b600654604080517f163aa00d00000000000000000000000000000000000000000000000000000000815290514392600160a060020a03169163163aa00d9160048083019260209291908290030181600087803b15801561089f57600080fd5b505af11580156108b3573d6000803e3d6000fd5b505050506040513d60208110156108c957600080fd5b5051146108d95760009550610aa2565b600660009054906101000a9004600160a060020a0316600160a060020a0316638ae0368b6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561094557600080fd5b505af1158015610959573d6000803e3d6000fd5b505050506040513d602081101561096f57600080fd5b5051600081815260146020526040902054909450925082156109945760009550610aa2565b60008481526014602052604090207f6d657267650000000000000000000000000000000000000000000000000000009081905591506109d1610d7e565b336000908152601660205260409020549091506109f4908263ffffffff6112c316565b33600090815260166020526040902055601554610a17908263ffffffff6112c316565b6015819055600f541015610a2757fe5b6010805473ffffffffffffffffffffffffffffffffffffffff191633179055601181905543601255610a576112d3565b6008546040805183815260208101929092526000828201525133917fcf6fbb9dcea7d07263ab4f5c3a92f53af33dffc421d9d121e1c74b307e68189d919081900360600190a2600195505b505050505090565b60125481565b6000610ac9600c54600b5461137090919063ffffffff16565b905090565b600d54604080519182526c010000000000000000000000003302602083015260348201849052519081900360540190206000908180848314610b0f57600080fd5b600c54831115610b1e57600080fd5b600d54600090815260146020526040902080549084905591508115610b4257600080fd5b610b4a610d7e565b33600090815260166020526040902054909150610b6d908263ffffffff6112c316565b33600090815260166020526040902055601554610b90908263ffffffff6112c316565b6015819055600f541015610ba057fe5b6010805473ffffffffffffffffffffffffffffffffffffffff191633179055601181905543601255610bd06112d3565b600854600d54604080518481526020810193909352828101919091525133917fcf6fbb9dcea7d07263ab4f5c3a92f53af33dffc421d9d121e1c74b307e68189d919081900360600190a250600195945050505050565b6000805260166020527f0263c2b778d062355049effc2dece97bc6547ff8a88a3258daa512061c2153dd546005540390565b600160a060020a038316600090815260166020526040812054610c81908363ffffffff61139116565b600160a060020a0385166000908152601660209081526040808320939093556017815282822033835290522054610cbe908363ffffffff61139116565b600160a060020a038086166000908152601760209081526040808320338452825280832094909455918616815260169091522054610d02908363ffffffff6112c316565b600160a060020a0380851660008181526016602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b600e5481565b60045460ff1681565b600c5490565b60055481565b600e54600454600091610ac99160ff16600a0a60c8029060020a611370565b600d5490565b600f5481565b60155481565b601054600160a060020a031681565b600160a060020a031660009081526016602052604090205490565b600154600160a060020a03163314610df057600080fd5b60015460008054604051600160a060020a0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b604080518381526c010000000000000000000000003302602082015260348101869052905190819003605401902060009082811115610e9f57600080fd5b93909314949350505050565b60085481565b600b5481565b600c5481565b600d5481565b600054600160a060020a031681565b6002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561070a5780601f106106df5761010080835404028352916020019161070a565b604080518281526c01000000000000000000000000330260208201526034810185905290519081900360540190209392505050565b33600090815260166020526040812054610f7f908363ffffffff61139116565b3360009081526016602052604080822092909255600160a060020a03851681522054610fb1908363ffffffff6112c316565b600160a060020a0384166000818152601660209081526040918290209390935580518581529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600192915050565b60095481565b60115481565b336000818152601760209081526040808320600160a060020a038816808552908352818420879055815187815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a36040517f8f4ffcb10000000000000000000000000000000000000000000000000000000081523360048201818152602483018690523060448401819052608060648501908152865160848601528651600160a060020a038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b8381101561110b5781810151838201526020016110f3565b50505050905090810190601f1680156111385780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561115a57600080fd5b505af115801561116e573d6000803e3d6000fd5b506001979650505050505050565b60075481565b600154600160a060020a031681565b60008054600160a060020a031633146111a957600080fd5b60008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810186905290519186169263a9059cbb926044808401936020939083900390910190829087803b15801561121957600080fd5b505af115801561122d573d6000803e3d6000fd5b505050506040513d602081101561124357600080fd5b50519392505050565b600a5481565b600160a060020a03918216600090815260176020908152604080832093909416825291909152205490565b600054600160a060020a0316331461129457600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b8181018281101561077357600080fd5b600f546112f06112e1610d7e565b6015549063ffffffff6112c316565b1180156112ff57506027600e54105b1561130e57600e805460010190555b600e546005546113299160010160020a63ffffffff61137016565b60055403600f5560085461134490600163ffffffff6112c316565b60088190556009549081151561135657fe5b061515611365576113656113a6565b600019430140600d55565b600080821161137e57600080fd5b818381151561138957fe5b049392505050565b6000828211156113a057600080fd5b50900390565b600754600954439190910390603c810260008080808487101561144c576113e4876113d887606463ffffffff6114e016565b9063ffffffff61137016565b93506114096103e86113fd86606463ffffffff61139116565b9063ffffffff61150516565b9250611444611435846114296107d0600c5461137090919063ffffffff16565b9063ffffffff6114e016565b600c549063ffffffff61139116565b600c556114ad565b611461856113d889606463ffffffff6114e016565b915061147a6103e86113fd84606463ffffffff61139116565b90506114a961149a826114296107d0600c5461137090919063ffffffff16565b600c549063ffffffff6112c316565b600c555b43600755600a54600c5410156114c457600a54600c555b600b54600c5411156114d757600b54600c555b50505050505050565b8181028215806114fa57508183828115156114f757fe5b04145b151561077357600080fd5b600081831115611516575080610773565b50909190505600a165627a7a72305820822168a01be7c437e6ffbc34f3c6609d131141ef7779b3f593bee9420c3094600029


   Swarm Source:
bzzr://822168a01be7c437e6ffbc34f3c6609d131141ef7779b3f593bee9420c309460
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.