ETH Price: $3,486.11 (-0.14%)

Contract

0xb3Dc3C839a02134f9932CbD60f3566C231cc90CC
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer73160902019-03-06 13:45:112121 days ago1551879911IN
0xb3Dc3C83...231cc90CC
0 ETH0.000435794
Approve67651362018-11-24 17:21:312223 days ago1543080091IN
0xb3Dc3C83...231cc90CC
0 ETH0.0006600514
Transfer65184932018-10-15 7:54:172263 days ago1539590057IN
0xb3Dc3C83...231cc90CC
0 ETH0.000212733
Approve64472562018-10-03 18:52:072275 days ago1538592727IN
0xb3Dc3C83...231cc90CC
0 ETH0.000186744.1
Mint62423942018-08-30 19:50:572309 days ago1535658657IN
0xb3Dc3C83...231cc90CC
0 ETH0.000347343
Mint62423872018-08-30 19:49:272309 days ago1535658567IN
0xb3Dc3C83...231cc90CC
0 ETH0.000347153
Mint62423772018-08-30 19:47:492309 days ago1535658469IN
0xb3Dc3C83...231cc90CC
0 ETH0.000347153
Mint62423752018-08-30 19:47:242309 days ago1535658444IN
0xb3Dc3C83...231cc90CC
0 ETH0.000347343
Mint62423692018-08-30 19:45:472309 days ago1535658347IN
0xb3Dc3C83...231cc90CC
0 ETH0.000347153
Mint62423612018-08-30 19:44:322309 days ago1535658272IN
0xb3Dc3C83...231cc90CC
0 ETH0.000346963
Mint62423552018-08-30 19:43:512309 days ago1535658231IN
0xb3Dc3C83...231cc90CC
0 ETH0.000347343
Mint62423482018-08-30 19:40:372309 days ago1535658037IN
0xb3Dc3C83...231cc90CC
0 ETH0.000346963
Mint62423432018-08-30 19:38:392309 days ago1535657919IN
0xb3Dc3C83...231cc90CC
0 ETH0.000347343
Mint62423382018-08-30 19:36:302309 days ago1535657790IN
0xb3Dc3C83...231cc90CC
0 ETH0.000346963
Mint62423312018-08-30 19:34:352309 days ago1535657675IN
0xb3Dc3C83...231cc90CC
0 ETH0.000346963
Mint62423292018-08-30 19:34:092309 days ago1535657649IN
0xb3Dc3C83...231cc90CC
0 ETH0.000347343
Mint62423212018-08-30 19:32:042309 days ago1535657524IN
0xb3Dc3C83...231cc90CC
0 ETH0.000347343
Mint62423142018-08-30 19:30:502309 days ago1535657450IN
0xb3Dc3C83...231cc90CC
0 ETH0.000347343
Mint62423082018-08-30 19:29:432309 days ago1535657383IN
0xb3Dc3C83...231cc90CC
0 ETH0.000347153
Mint62423062018-08-30 19:28:262309 days ago1535657306IN
0xb3Dc3C83...231cc90CC
0 ETH0.000347343
Mint62423022018-08-30 19:27:202309 days ago1535657240IN
0xb3Dc3C83...231cc90CC
0 ETH0.000347343
Mint62422992018-08-30 19:26:392309 days ago1535657199IN
0xb3Dc3C83...231cc90CC
0 ETH0.000347153
Mint62422962018-08-30 19:25:572309 days ago1535657157IN
0xb3Dc3C83...231cc90CC
0 ETH0.000347343
Mint62422912018-08-30 19:25:102309 days ago1535657110IN
0xb3Dc3C83...231cc90CC
0 ETH0.000346963
Mint62422882018-08-30 19:24:092309 days ago1535657049IN
0xb3Dc3C83...231cc90CC
0 ETH0.000347153
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Skorch

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-07-01
*/

pragma solidity ^0.4.18;

 

//-------------------------------
// (        )   )  (            )  
// )\ )  ( /(( /(  )\ )  (   ( /(  
//(()/(  )\())\())(()/(  )\  )\()) 
// /(_))((_)((_)\  /(_)|((_)((_)\  
//(_)) |_ ((_)((_)(_)) )\___ _((_) 
/// __|| |/ // _ \| _ ((/ __| || | 
//\__ \  ' <| (_) |   /| (__| __ | 
//|___/ _|\_\\___/|_|_\ \___|_||_| 
//--------------------------------

//------------------------------------------
// Official Website: https://skorch.io
// Github: https://github.com/skorchtoken
// Twitter: https://twitter.com/SkorchToken
// Reddit: https://reddit.com/r/SkorchToken
// Medium: https://medium.com/@skorchtoken
// Discord: https://discord.gg/yxZAnfe
// Telegram: https://t.me/skorchtoken

// ALWAYS refer to our official social media channels and website for project announcements.
//------------------------------------------

// Skorch is the first PoW+PoS mineable ERC20 token using Keccak256 (Sha3) algorithm
// 210 Million Total Supply 
// 21 Million available for Proof of Work mining based on Bitcoin's SHA256 Algorithm
// 21k (21,000) SKO Required to be held in your wallet to gain Proof of Stake Rewards
// 189 Million of 210 Million total supply will be minted by the smart contract for PoS rewards 
// 30% PoS rewards for the first year but decreases each year after until 0 
// PoS requirement decreases after first year and each year after until 0

// Difficulty target auto-adjusts with PoW hashrate
// Mining rewards decrease as more tokens are minted

// To fix and improve the original Skorch token contract a snapshot was taken at block 5882054.


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;
    }
}

//209899900000000

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;
    }
}

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 ApproveAndCallFallBack {
    function receiveApproval(address from, uint256 tokens, address token, bytes data) public;
}

contract Owned {

    address public owner;

    address public newOwner;

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

    constructor() 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);
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
        newOwner = address(0);
    }
}

contract Skorch is ERC20Interface, Owned {

    using SafeMath for uint;
    using ExtendedMath for uint;

    string public symbol;

    string public  name;

    uint8 public decimals = 8;

    uint public _totalSupply;
    uint public latestDifficultyPeriodStarted;
    uint public epochCount;
    uint public _BLOCKS_PER_READJUSTMENT = 1024;

    uint public  _MINIMUM_TARGET = 2**16;

    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;
    
    uint internal GLOBAL_START_TIMER;

    mapping(address => uint) balances;

    mapping(address => mapping(address => uint)) allowed;
    
    mapping(address => uint256) timer; // timer to check PoS 
    
    // how to calculate doubleUnit: 
    // specify how much percent increase you want per year 
    // e.g. 130% -> 2.3 multiplier every year 
    // now divide (1 years) by LOG(2.3) where LOG is the natural logarithm (not LOG10)
    // in this case LOG(2.3) is 0.83290912293
    // hence multiplying by 1/0.83290912293 is the same 
    // 31536000 = 1 years (to prevent deprecated warning in solc)
   
    
  //  uint256 timerUnit = 2.2075199 * (10**8);
    uint256 timerUnit = 88416639; // unit for staking req
    uint256 stakingRequirement = (21000 * (10**uint(decimals)));
    
    
    uint stakeUnit = 930222908; // unit  for staking 
    
    //uint256 stakingCap = (210000000 * (10**uint(decimals)));

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

    constructor()
        public 
        onlyOwner()
    {
        symbol = "SKO";
        name = "Skorch";
        decimals = 8;
        // uncomment this to test 
        //balances[msg.sender] = (21000) * (10 ** uint(decimals)); // change 21000 to some lower number than 21000 
        //to see you will not get PoS tokens if you have less than 21000 tokens 
        //timer[msg.sender] = now - (1 years);
        _totalSupply = 210000000 * 10**uint(decimals);
        if(locked) revert();
        locked = true;
        tokensMinted = 69750000000000;
        rewardEra = 0;
        maxSupplyForEra = 1050000000000000;
        //miningTarget = _MAXIMUM_TARGET;
        latestDifficultyPeriodStarted = block.number;
        //_startNewMiningEpoch(); all relevant vars are set below
        GLOBAL_START_TIMER = now;
        challengeNumber = 0x48f499eca7dc41858c2a53fded09096d138b8b88a9da8f488dccd5118bb1bbe2;
        epochCount = 20181;
        rewardEra = 0;
        maxSupplyForEra = (_totalSupply/10) - _totalSupply.div( 20**(rewardEra + 1)); // multiplied by 10 since totalsupply is 210 million here 
        miningTarget = 462884030900683306229868328231836786922375156766639975465481078398;
        
        
        
        // SNAPSHOT DATA 
// NEW FILE
balances[0xab4485ca338b91087a09ae8bc141648bb1c6e967]=111501588282;
emit Transfer(address(0x0), 0xab4485ca338b91087a09ae8bc141648bb1c6e967, 111501588282);
balances[0xf2119e50578b3dfa248652c4fbec76b9e415acb2]=10136508025;
emit Transfer(address(0x0), 0xf2119e50578b3dfa248652c4fbec76b9e415acb2, 10136508025);
balances[0xb12b538cb67fceb50bbc1a31d2011eb92e6f7188]=1583682;
emit Transfer(address(0x0), 0xb12b538cb67fceb50bbc1a31d2011eb92e6f7188, 1583682);
balances[0x21b7e18dacde5c004a0a56e74f071ac3fb2e98ff]=10790714329;
emit Transfer(address(0x0), 0x21b7e18dacde5c004a0a56e74f071ac3fb2e98ff, 10790714329);
balances[0xe539a7645d2f33103c89b5b03abb422a163b7c73]=60819048154;
emit Transfer(address(0x0), 0xe539a7645d2f33103c89b5b03abb422a163b7c73, 60819048154);
balances[0x4ffe17a2a72bc7422cb176bc71c04ee6d87ce329]=451048209723;
emit Transfer(address(0x0), 0x4ffe17a2a72bc7422cb176bc71c04ee6d87ce329, 451048209723);
balances[0xc0a2002e74b3b22e77098cb87232f446d813ce31]=33885;
emit Transfer(address(0x0), 0xc0a2002e74b3b22e77098cb87232f446d813ce31, 33885);
balances[0xfc313f77c2cbc6cd0dd82b9a0ed1620ba906e46d]=192593652488;
emit Transfer(address(0x0), 0xfc313f77c2cbc6cd0dd82b9a0ed1620ba906e46d, 192593652488);
balances[0x219fdb55ea364fcaf29aaa87fb1c45ba7db8128e]=20273016051;
emit Transfer(address(0x0), 0x219fdb55ea364fcaf29aaa87fb1c45ba7db8128e, 20273016051);
balances[0xfbc2b315ac1fba765597a92ff100222425ce66fd]=608190481542;
emit Transfer(address(0x0), 0xfbc2b315ac1fba765597a92ff100222425ce66fd, 608190481542);
balances[0x852563d88480decbc9bfb4428bb689af48dd92a9]=1008618359915;
emit Transfer(address(0x0), 0x852563d88480decbc9bfb4428bb689af48dd92a9, 1008618359915);
balances[0x4d01d11697f00097064d7e05114ecd3843e82867]=789840293838;
emit Transfer(address(0x0), 0x4d01d11697f00097064d7e05114ecd3843e82867, 789840293838);
balances[0xe75ea07e4b90e46e13c37644138aa99ec69020ae]=526108154879;
emit Transfer(address(0x0), 0xe75ea07e4b90e46e13c37644138aa99ec69020ae, 526108154879);
balances[0x51138ab5497b2c3d85be94d23905f5ead9e533a7]=5068254012;
emit Transfer(address(0x0), 0x51138ab5497b2c3d85be94d23905f5ead9e533a7, 5068254012);
balances[0xae7c95f2192c739edfb16412a6112a54f8965305]=55750794141;
emit Transfer(address(0x0), 0xae7c95f2192c739edfb16412a6112a54f8965305, 55750794141);
balances[0xe0261acfdd10508c75b6a60b1534c8386c4daa52]=5047016671743;
emit Transfer(address(0x0), 0xe0261acfdd10508c75b6a60b1534c8386c4daa52, 5047016671743);
balances[0x0a26d9674c2a1581ada4316e3f5960bb70fb0fb2]=516961909310;
emit Transfer(address(0x0), 0x0a26d9674c2a1581ada4316e3f5960bb70fb0fb2, 516961909310);
balances[0xa62178f120cccba370d2d2d12ec6fb1ff276d706]=2052642875205;
emit Transfer(address(0x0), 0xa62178f120cccba370d2d2d12ec6fb1ff276d706, 2052642875205);
balances[0xe57a18783640c9fa3c5e8e4d4b4443e2024a7ff9]=2494738345632;
emit Transfer(address(0x0), 0xe57a18783640c9fa3c5e8e4d4b4443e2024a7ff9, 2494738345632);
balances[0x9b8957d1ac592bd388dcde346933ac1269b7c314]=106433334269;
emit Transfer(address(0x0), 0x9b8957d1ac592bd388dcde346933ac1269b7c314, 106433334269);
balances[0xf27bb893a4d9574378c4b1d089bdb6b9fce5099e]=380845;
emit Transfer(address(0x0), 0xf27bb893a4d9574378c4b1d089bdb6b9fce5099e, 380845);
balances[0x54a8f792298af9489de7a1245169a943fb69f5a6]=707886981662;
emit Transfer(address(0x0), 0x54a8f792298af9489de7a1245169a943fb69f5a6, 707886981662);
balances[0x004ba728a652bded4d4b79fb04b5a92ad8ce15e7]=21250198;
emit Transfer(address(0x0), 0x004ba728a652bded4d4b79fb04b5a92ad8ce15e7, 21250198);
balances[0xd05803aee240195460f8589a6d6487fcea0097c1]=85731;
emit Transfer(address(0x0), 0xd05803aee240195460f8589a6d6487fcea0097c1, 85731);
balances[0xad9f11d1dd6d202243473a0cdae606308ab243b4]=101365080257;
emit Transfer(address(0x0), 0xad9f11d1dd6d202243473a0cdae606308ab243b4, 101365080257);
balances[0xfec55e783595682141c4b5e6ad9ea605f1683844]=60657099080;
emit Transfer(address(0x0), 0xfec55e783595682141c4b5e6ad9ea605f1683844, 60657099080);
balances[0x99a7e5777b711ff23e2b6961232a4009f7cec1b0]=456860909542;
emit Transfer(address(0x0), 0x99a7e5777b711ff23e2b6961232a4009f7cec1b0, 456860909542);
balances[0xbf45f4280cfbe7c2d2515a7d984b8c71c15e82b7]=1366848029003;
emit Transfer(address(0x0), 0xbf45f4280cfbe7c2d2515a7d984b8c71c15e82b7, 1366848029003);
balances[0xb38094d492af4fffff760707f36869713bfb2250]=2032369859152;
emit Transfer(address(0x0), 0xb38094d492af4fffff760707f36869713bfb2250, 2032369859152);
balances[0x900953b10460908ec636b46307dca13a759275cb]=1856435;
emit Transfer(address(0x0), 0x900953b10460908ec636b46307dca13a759275cb, 1856435);
balances[0x167e733de0861f0d61b179d3d1891e6b90587732]=2047574621189;
emit Transfer(address(0x0), 0x167e733de0861f0d61b179d3d1891e6b90587732, 2047574621189);
balances[0xdb3cbb8aa4dec854e6e60982dd9d4e85a8b422bc]=2;
emit Transfer(address(0x0), 0xdb3cbb8aa4dec854e6e60982dd9d4e85a8b422bc, 2);
balances[0x072e8711704654019c3d9bc242b3f9a4ee1963ce]=10136236279;
emit Transfer(address(0x0), 0x072e8711704654019c3d9bc242b3f9a4ee1963ce, 10136236279);
balances[0x04f72aa695b65a54d79db635005077293d111635]=167020515303;
emit Transfer(address(0x0), 0x04f72aa695b65a54d79db635005077293d111635, 167020515303);
balances[0x30385a99e66469a8c0bf172896758dd4595704a9]=614699515479;
emit Transfer(address(0x0), 0x30385a99e66469a8c0bf172896758dd4595704a9, 614699515479);
balances[0xfe5a94e5bab010f52ae8fd8589b7d0a7b0b433ae]=2067847571118;
emit Transfer(address(0x0), 0xfe5a94e5bab010f52ae8fd8589b7d0a7b0b433ae, 2067847571118);
balances[0x88058d4d90cc9d9471509e5be819b2be361b51c6]=957900008429;
emit Transfer(address(0x0), 0x88058d4d90cc9d9471509e5be819b2be361b51c6, 957900008429);
balances[0xfcc6bf3369077e22a90e05ad567744bf5109e4d4]=1635580659302;
emit Transfer(address(0x0), 0xfcc6bf3369077e22a90e05ad567744bf5109e4d4, 1635580659302);
balances[0x21a6043877a0ac376b7ca91195521de88d440eba]=162184128411;
emit Transfer(address(0x0), 0x21a6043877a0ac376b7ca91195521de88d440eba, 162184128411);
balances[0xd7dd80404d3d923c8a40c47c1f61aacbccb4191e]=3569292763171;
emit Transfer(address(0x0), 0xd7dd80404d3d923c8a40c47c1f61aacbccb4191e, 3569292763171);
balances[0xa1a3e2fcc1e7c805994ca7309f9a829908a18b4c]=633301706054;
emit Transfer(address(0x0), 0xa1a3e2fcc1e7c805994ca7309f9a829908a18b4c, 633301706054);
balances[0xc5556ce5c51d2f6a8d7a54bec2a9961dfada84db]=2471775966918;
emit Transfer(address(0x0), 0xc5556ce5c51d2f6a8d7a54bec2a9961dfada84db, 2471775966918);
balances[0xb4894098be4dbfdc0024dfb9d2e9f6654e0e3786]=10053178133;
emit Transfer(address(0x0), 0xb4894098be4dbfdc0024dfb9d2e9f6654e0e3786, 10053178133);
balances[0xe8a01b61f80130aefda985ee2e9c6899a57a17c8]=177388890449;
emit Transfer(address(0x0), 0xe8a01b61f80130aefda985ee2e9c6899a57a17c8, 177388890449);
balances[0x559a922941f84ebe6b9f0ed58e3b96530614237e]=65887302167;
emit Transfer(address(0x0), 0x559a922941f84ebe6b9f0ed58e3b96530614237e, 65887302167);
balances[0xf95f528d7c25904f15d4154e45eab8e5d4b6c160]=425572373267;
emit Transfer(address(0x0), 0xf95f528d7c25904f15d4154e45eab8e5d4b6c160, 425572373267);
balances[0x0045b9707913eae3889283ed4d72077a904b9848]=1507541146428;
emit Transfer(address(0x0), 0x0045b9707913eae3889283ed4d72077a904b9848, 1507541146428);
balances[0x586389feed58c2c6a0ce6258cb1c58833abdb093]=2603426;
emit Transfer(address(0x0), 0x586389feed58c2c6a0ce6258cb1c58833abdb093, 2603426);
balances[0xd2b752bec2fe5c7e5cc600eb5ce465a210cb857a]=380119050963;
emit Transfer(address(0x0), 0xd2b752bec2fe5c7e5cc600eb5ce465a210cb857a, 380119050963);
balances[0x518bbb5e4a1e8f8f21a09436c35b9cb5c20c7b43]=5037433249;
emit Transfer(address(0x0), 0x518bbb5e4a1e8f8f21a09436c35b9cb5c20c7b43, 5037433249);
balances[0x25e5c43d5f53ee1a7dd5ad7560348e29baea3048]=5068254012;
emit Transfer(address(0x0), 0x25e5c43d5f53ee1a7dd5ad7560348e29baea3048, 5068254012);
balances[0x22dd964193df4de2e6954a2a9d9cbbd6f44f0b28]=2754253183453;
emit Transfer(address(0x0), 0x22dd964193df4de2e6954a2a9d9cbbd6f44f0b28, 2754253183453);
balances[0xaa7a7c2decb180f68f11e975e6d92b5dc06083a6]=116569842295;
emit Transfer(address(0x0), 0xaa7a7c2decb180f68f11e975e6d92b5dc06083a6, 116569842295);
balances[0x4e27a678c8dc883035c542c83124e7e3f39842b0]=35477778089;
emit Transfer(address(0x0), 0x4e27a678c8dc883035c542c83124e7e3f39842b0, 35477778089);
balances[0x3bd56f97876d3af248b1fe92e361c05038c74c27]=15181683975;
emit Transfer(address(0x0), 0x3bd56f97876d3af248b1fe92e361c05038c74c27, 15181683975);
balances[0x674194d05bfc9a176a5b84711c8687609ff3d17b]=4287056630970;
emit Transfer(address(0x0), 0x674194d05bfc9a176a5b84711c8687609ff3d17b, 4287056630970);
balances[0x0102f6ca7278e7d96a6d649da30bfe07e87155a3]=1233053375653;
emit Transfer(address(0x0), 0x0102f6ca7278e7d96a6d649da30bfe07e87155a3, 1233053375653);
balances[0x3750ecf5e0536d04dd3858173ab571a0dcbdf7e0]=50270330036;
emit Transfer(address(0x0), 0x3750ecf5e0536d04dd3858173ab571a0dcbdf7e0, 50270330036);
balances[0x07a68bd44a526e09b8dbfc7085b265450362b61a]=101365080257;
emit Transfer(address(0x0), 0x07a68bd44a526e09b8dbfc7085b265450362b61a, 101365080257);
balances[0xebd76aa221968b8ba9cdd6e6b4dbb889140088a3]=309163494783;
emit Transfer(address(0x0), 0xebd76aa221968b8ba9cdd6e6b4dbb889140088a3, 309163494783);
balances[0xc7ee330d69cdddc1b9955618ff0df27bb8de3143]=10098567209;
emit Transfer(address(0x0), 0xc7ee330d69cdddc1b9955618ff0df27bb8de3143, 10098567209);
balances[0xe0c059faabce16dd5ddb4817f427f5cf3b40f4c4]=656449480989;
emit Transfer(address(0x0), 0xe0c059faabce16dd5ddb4817f427f5cf3b40f4c4, 656449480989);
balances[0xdc680cc11a535e45329f49566850668fef34054f]=1629652247199;
emit Transfer(address(0x0), 0xdc680cc11a535e45329f49566850668fef34054f, 1629652247199);
balances[0x22ef324a534ba9aa0d060c92294fdd0fc4aca065]=105388398778;
emit Transfer(address(0x0), 0x22ef324a534ba9aa0d060c92294fdd0fc4aca065, 105388398778);
balances[0xe14cffadb6bbad8de69bd5ba214441a9582ec548]=70955556179;
emit Transfer(address(0x0), 0xe14cffadb6bbad8de69bd5ba214441a9582ec548, 70955556179);
balances[0xdfb895c870c4956261f4839dd12786ef612d7314]=307632851383;
emit Transfer(address(0x0), 0xdfb895c870c4956261f4839dd12786ef612d7314, 307632851383);
balances[0x620103bb2b263ab0a50a47f73140d218401541c0]=10780637244561;
emit Transfer(address(0x0), 0x620103bb2b263ab0a50a47f73140d218401541c0, 10780637244561);
balances[0x9fc5b0edc0309745c6974f1a6718029ea41a4d6e]=65859631176;
emit Transfer(address(0x0), 0x9fc5b0edc0309745c6974f1a6718029ea41a4d6e, 65859631176);
balances[0xd6ceae2756f2af0a2f825b6e3ca8a9cfb4d082e2]=1122517124649;
emit Transfer(address(0x0), 0xd6ceae2756f2af0a2f825b6e3ca8a9cfb4d082e2, 1122517124649);
balances[0x25437b6a20021ea94d549ddd50403994e532e9d7]=1711954946632;
emit Transfer(address(0x0), 0x25437b6a20021ea94d549ddd50403994e532e9d7, 1711954946632);
balances[0xeb4f4c886b402c65ff6f619716efe9319ce40fcf]=526035186557;
emit Transfer(address(0x0), 0xeb4f4c886b402c65ff6f619716efe9319ce40fcf, 526035186557);
balances[0xf3552d4018fad9fcc390f5684a243f7318d8b570]=253412700642;
emit Transfer(address(0x0), 0xf3552d4018fad9fcc390f5684a243f7318d8b570, 253412700642);
balances[0x85abe8e3bed0d4891ba201af1e212fe50bb65a26]=1060373239943;
emit Transfer(address(0x0), 0x85abe8e3bed0d4891ba201af1e212fe50bb65a26, 1060373239943);
balances[0xc446073e0c00a1138812b3a99a19df3cb8ace70d]=2032369859153;
emit Transfer(address(0x0), 0xc446073e0c00a1138812b3a99a19df3cb8ace70d, 2032369859153);
balances[0x195d65187a4aeb24b563dd2d52709a6b67064ad3]=235803680643;
emit Transfer(address(0x0), 0x195d65187a4aeb24b563dd2d52709a6b67064ad3, 235803680643);
balances[0x588611841bd8b134f3d6ca3ff2796b483dfca4c6]=27875;
emit Transfer(address(0x0), 0x588611841bd8b134f3d6ca3ff2796b483dfca4c6, 27875);
balances[0x43237ce180fc47cb4e3d32eb23e420f5ecf7a95e]=5087020825285;
emit Transfer(address(0x0), 0x43237ce180fc47cb4e3d32eb23e420f5ecf7a95e, 5087020825285);
balances[0x394299ef1650ac563a9adbec4061b25e50570f49]=65523270720;
emit Transfer(address(0x0), 0x394299ef1650ac563a9adbec4061b25e50570f49, 65523270720);
balances[0x0000bb50ee5f5df06be902d1f9cb774949c337ed]=728415;
emit Transfer(address(0x0), 0x0000bb50ee5f5df06be902d1f9cb774949c337ed, 728415);
balances[0x4927fb34fff626adb7b07305c447ac89ded8bea2]=15181318646;
emit Transfer(address(0x0), 0x4927fb34fff626adb7b07305c447ac89ded8bea2, 15181318646);
balances[0x93da7b2830e3932d906749e67a7ce1fbf3a5366d]=2768553093810;
emit Transfer(address(0x0), 0x93da7b2830e3932d906749e67a7ce1fbf3a5366d, 2768553093810);
balances[0x7f4924f55e215e1fe44e3b5bb7fdfced2154b30f]=506445600761;
emit Transfer(address(0x0), 0x7f4924f55e215e1fe44e3b5bb7fdfced2154b30f, 506445600761);
balances[0x9834977aa420b078b8fd47c73a9520f968d66a3a]=1035039327674;
emit Transfer(address(0x0), 0x9834977aa420b078b8fd47c73a9520f968d66a3a, 1035039327674);
balances[0x26b8c7606e828a509bbb208a0322cf960c17b225]=1314664139193;
emit Transfer(address(0x0), 0x26b8c7606e828a509bbb208a0322cf960c17b225, 1314664139193);
balances[0x8f3dd21c9334980030ba95c37565ba25df9574cd]=20273016051;
emit Transfer(address(0x0), 0x8f3dd21c9334980030ba95c37565ba25df9574cd, 20273016051);
balances[0x85d66f3a8da35f47e03d6bb51f51c2d70a61e12e]=10419370357974;
emit Transfer(address(0x0), 0x85d66f3a8da35f47e03d6bb51f51c2d70a61e12e, 10419370357974);
balances[0xbafc492638a2ec4f89aff258c8f18f806a844d72]=396663813367;
emit Transfer(address(0x0), 0xbafc492638a2ec4f89aff258c8f18f806a844d72, 396663813367);
balances[0x2f0d5a1d6bb5d7eaa0eaad39518621911a4a1d9f]=45613275677;
emit Transfer(address(0x0), 0x2f0d5a1d6bb5d7eaa0eaad39518621911a4a1d9f, 45613275677);
balances[0xae5910c6f3cd709bf497bae2b8eae8cf983aca1b]=561729123519;
emit Transfer(address(0x0), 0xae5910c6f3cd709bf497bae2b8eae8cf983aca1b, 561729123519);
balances[0xb963db36d28468ce64bce65e560e5f27e75f2f50]=50497795029;
emit Transfer(address(0x0), 0xb963db36d28468ce64bce65e560e5f27e75f2f50, 50497795029);
balances[0x7134161b9e6fa84d62f156037870ee77fa50f607]=806825;
emit Transfer(address(0x0), 0x7134161b9e6fa84d62f156037870ee77fa50f607, 806825);
balances[0x111fd8a12981d1174cfa8eef3b0141b3d5d4e5b3]=5023380788;
emit Transfer(address(0x0), 0x111fd8a12981d1174cfa8eef3b0141b3d5d4e5b3, 5023380788);
balances[0xafaf9a165408737e11191393fe695c1ebc7a5429]=3750469994332;
emit Transfer(address(0x0), 0xafaf9a165408737e11191393fe695c1ebc7a5429, 3750469994332);
balances[0x5329fcc196c445009aac138b22d25543ed195888]=126671028590;
emit Transfer(address(0x0), 0x5329fcc196c445009aac138b22d25543ed195888, 126671028590);
balances[0xa5b3725e37431dc6a103961749cb9c98954202cd]=446006353130;
emit Transfer(address(0x0), 0xa5b3725e37431dc6a103961749cb9c98954202cd, 446006353130);
balances[0xb8ab7387076f022c28481fafb28911ce4377e0ea]=3045242779146;
emit Transfer(address(0x0), 0xb8ab7387076f022c28481fafb28911ce4377e0ea, 3045242779146);
balances[0xd2470aacd96242207f06111819111d17ca055dfb]=957900008429;
emit Transfer(address(0x0), 0xd2470aacd96242207f06111819111d17ca055dfb, 957900008429);
balances[0x1fca39ed4f19edd12eb274dc467c099eb5106a13]=278753970706;
emit Transfer(address(0x0), 0x1fca39ed4f19edd12eb274dc467c099eb5106a13, 278753970706);
balances[0x8d12a197cb00d4747a1fe03395095ce2a5cc6819]=4743885756029;
emit Transfer(address(0x0), 0x8d12a197cb00d4747a1fe03395095ce2a5cc6819, 4743885756029);
balances[0x2a23527a6dbafae390514686d50f47747d01e44d]=652376852116;
emit Transfer(address(0x0), 0x2a23527a6dbafae390514686d50f47747d01e44d, 652376852116);
balances[0x371e31169df00563eafab334c738e66dd0476a8f]=226377928506;
emit Transfer(address(0x0), 0x371e31169df00563eafab334c738e66dd0476a8f, 226377928506);
balances[0x40ea0a2abc9479e51e411870cafd759cb110c258]=30282012248;
emit Transfer(address(0x0), 0x40ea0a2abc9479e51e411870cafd759cb110c258, 30282012248);
balances[0xe585ba86b84283f0f1118041837b06d03b96885e]=170791;
emit Transfer(address(0x0), 0xe585ba86b84283f0f1118041837b06d03b96885e, 170791);
balances[0xbede88c495132efb90b5039bc2942042e07814df]=40513641855;
emit Transfer(address(0x0), 0xbede88c495132efb90b5039bc2942042e07814df, 40513641855);
        


// test lines 
//balances[msg.sender] = 21000 * (10 ** uint(decimals));
//timer[msg.sender ] = ( now - ( 1 years));

    }


        function mint(uint256 nonce, bytes32 challenge_digest) public returns (bool success) {
            bytes32 digest =  keccak256(challengeNumber, msg.sender, nonce );
            if (digest != challenge_digest) revert();
            if(uint256(digest) > miningTarget) revert();
             bytes32 solution = solutionForChallenge[challengeNumber];
             solutionForChallenge[challengeNumber] = digest;
             if(solution != 0x0) revert();  //prevent the same answer from awarding twice
             _claimTokens(msg.sender);
             timer[msg.sender]=now;
            uint reward_amount = getMiningReward();
            balances[msg.sender] = balances[msg.sender].add(reward_amount);
            tokensMinted = tokensMinted.add(reward_amount);
            assert(tokensMinted <= maxSupplyForEra);
            lastRewardTo = msg.sender;
            lastRewardAmount = reward_amount;
            lastRewardEthBlockNumber = block.number;
             _startNewMiningEpoch();
              emit Mint(msg.sender, reward_amount, epochCount, challengeNumber );
              emit Transfer(address(0x0), msg.sender, reward_amount);
           return true;
        }

    function _startNewMiningEpoch() internal {
      if( tokensMinted.add(getMiningReward()) > maxSupplyForEra && rewardEra < 39)
      {
        rewardEra = rewardEra + 1;
      }
      maxSupplyForEra = _totalSupply/10 - _totalSupply.div( 20**(rewardEra + 1));
      epochCount = epochCount.add(1);
      if(epochCount % _BLOCKS_PER_READJUSTMENT == 0)
      {
        _reAdjustDifficulty();
      }
      challengeNumber = block.blockhash(block.number - 1);
    }

    function _reAdjustDifficulty() internal {
        uint ethBlocksSinceLastDifficultyPeriod = block.number - latestDifficultyPeriodStarted;
        uint epochsMined = _BLOCKS_PER_READJUSTMENT; 
        uint targetEthBlocksPerDiffPeriod = epochsMined * 60; //should be 60 times slower than ethereum
        if( ethBlocksSinceLastDifficultyPeriod < targetEthBlocksPerDiffPeriod )
        {
          uint excess_block_pct = (targetEthBlocksPerDiffPeriod.mul(100)).div( ethBlocksSinceLastDifficultyPeriod );
          uint excess_block_pct_extra = excess_block_pct.sub(100).limitLessThan(1000);
          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
          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;
        }
    }

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

    function getMiningDifficulty() public constant returns (uint) {
        return _MAXIMUM_TARGET.div(miningTarget);
    }

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

    function getMiningReward() public constant returns (uint) {
         return (50 * 10**uint(decimals) ).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);
        }

    function totalSupply() public constant returns (uint) {
        return _totalSupply;
    }

    function balanceOf(address tokenOwner) public constant returns (uint balance) {
        return balances[tokenOwner] + _getPoS(tokenOwner); // add unclaimed pos tokens 
    }

    function transfer(address to, uint tokens) public returns (bool success) {
        _claimTokens(msg.sender);
        _claimTokens(to);
        timer[msg.sender] = now;
        timer[to] = now;
        balances[msg.sender] = balances[msg.sender].sub(tokens);
        balances[to] = balances[to].add(tokens);
        emit Transfer(msg.sender, to, tokens);
        return true;
    }

    function approve(address spender, uint tokens) public returns (bool success) {
        allowed[msg.sender][spender] = tokens;
        emit Approval(msg.sender, spender, tokens);
        return true;
    }

    function transferFrom(address from, address to, uint tokens) public returns (bool success) {
        _claimTokens(from);
        _claimTokens(to);
        timer[from] = now;
        timer[to] = now;
        balances[from] = balances[from].sub(tokens);
        allowed[from][msg.sender] = allowed[from][msg.sender].sub(tokens);
        balances[to] = balances[to].add(tokens);
        emit Transfer(from, to, tokens);
        return true;
    }

    function approveAndCall(address spender, uint tokens, bytes data) public returns (bool success) {
        allowed[msg.sender][spender] = tokens;
        emit Approval(msg.sender, spender, tokens);
        ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, this, data);
        return true;
    }

    function allowance(address tokenOwner, address spender) public constant returns (uint remaining) {
        return allowed[tokenOwner][spender];
    }

    function () public payable {
        revert();
    } 
    function transferAnyERC20Token(address tokenAddress, uint tokens) public onlyOwner returns (bool success) {
        return ERC20Interface(tokenAddress).transfer(owner, tokens);
    }
    
    function claimTokens() public {
        _claimTokens(msg.sender);        
        timer[msg.sender] = now;
    }
    
    function _claimTokens(address target) internal{
        if (timer[target] == 0){
            // russian hackers BTFO

            if (balances[target] > 0){
                // timer is handled in _getPoS 
            }
            else{
                return;
            }
        }
        if (timer[target] == now){
            // 0 seconds passed, 0 tokens gotten via PoS 
            // return so no gas waste 
            return;
        }
        
        uint256 totalTkn = _getPoS(target);
        if (totalTkn > 0){
            balances[target] = balances[target].add(totalTkn);
            //_totalSupply.add(totalTkn); total supply is fixed 
            emit PoS(target, totalTkn);
        }

        //timer[target] = now; every time you claim tokens this timer is set. this is to prevent people claiming 0 tokens and then setting their timer
        emit Transfer(address(0x0), target, totalTkn);
    }
    
    function getStakingRequirementTime(address target, uint256 TIME) view returns (uint256){



            return (stakingRequirement * fixedExp(((int(GLOBAL_START_TIMER) - int(TIME)) * one) / int(timerUnit)))/uint(one) ; 

    }
    
    function getRequirementTime(address target) view returns (uint256) {
        uint256 balance = balances[target];
        int ONE = 0x10000000000000000;
        if (balance == 0){
            return (uint256(0) - 1); // inf 
        }
        uint TIME = timer[target];
        if (TIME == 0){
            TIME = GLOBAL_START_TIMER;
        }
        
        int ln = fixedLog((balance * uint(one)) / stakingRequirement);
        int mul = (int(timerUnit) * ln) / (int(one));
        uint pos = uint( -mul);
        
        
        return (pos + GLOBAL_START_TIMER);
    }
    
    function GetStakingNow() view returns (uint256){
        return (stakingRequirement * fixedExp(((int(GLOBAL_START_TIMER) - int(now)) * one) / int(timerUnit)))/uint(one) ; 
    }
    

    
    
    function _getPoS(address target) internal view returns (uint256){
        if (balances[target] == 0){
            return 0;
        }
        int ONE_SECOND = 0x10000000000000000;
        uint TIME = timer[target];
        if (TIME == 0){
            TIME = GLOBAL_START_TIMER;
        }
        if (balances[target] < getStakingRequirementTime(target, TIME)){
            // staking requirement was too low at update 
            // maybe it has since surpassed the requirement? 
            uint flipTime = getRequirementTime(target);
            if ( now > flipTime ){
                TIME = flipTime;
            }
            else{
                return 0;
            }
        }
        int PORTION_SCALED = ( (int(GLOBAL_START_TIMER) - int(TIME)) * ONE_SECOND) / int(stakeUnit); 
        uint256 exp = fixedExp(PORTION_SCALED);
        
        PORTION_SCALED = ( (int(GLOBAL_START_TIMER) - int(now)) * ONE_SECOND) / int(stakeUnit); 
        uint256 exp2 = fixedExp(PORTION_SCALED);
        
        uint256 MULT = (9 * (exp.sub(exp2)) * (balances[target])) / (uint(one)); 
        

        
        return (MULT);
    }
    
    
    
    int256 constant ln2       = 0x0b17217f7d1cf79ac;
    int256 constant ln2_64dot5= 0x2cb53f09f05cc627c8;
    int256 constant one       = 0x10000000000000000;
    int256 constant c2 =  0x02aaaaaaaaa015db0;
    int256 constant c4 = -0x000b60b60808399d1;
    int256 constant c6 =  0x0000455956bccdd06;
    int256 constant c8 = -0x000001b893ad04b3a;
    uint256 constant sqrt2    = 0x16a09e667f3bcc908;
    uint256 constant sqrtdot5 = 0x0b504f333f9de6484;
    int256 constant c1        = 0x1ffffffffff9dac9b;
    int256 constant c3        = 0x0aaaaaaac16877908;
    int256 constant c5        = 0x0666664e5e9fa0c99;
    int256 constant c7        = 0x049254026a7630acf;
    int256 constant c9        = 0x038bd75ed37753d68;
    int256 constant c11       = 0x03284a0c14610924f;
    function fixedExp(int256 a) public pure returns (uint256 exp) {
        int256 scale = (a + (ln2_64dot5)) / ln2 - 64;
        a -= scale*ln2;
        // The polynomial R = 2 + c2*x^2 + c4*x^4 + ...
        // approximates the function x*(exp(x)+1)/(exp(x)-1)
        // Hence exp(x) = (R(x)+x)/(R(x)-x)
        int256 z = (a*a) / one;
        int256 R = ((int256)(2) * one) +
            (z*(c2 + (z*(c4 + (z*(c6 + (z*c8/one))/one))/one))/one);
        exp = (uint256) (((R + a) * one) / (R - a));
        if (scale >= 0)
            exp <<= scale;
        else
            exp >>= -scale;
        return exp;
    }

    function fixedLog(uint256 a) internal pure returns (int256 log) {
        int32 scale = 0;
        while (a > sqrt2) {
            a /= 2;
            scale++;
        }
        while (a <= sqrtdot5) {
            a *= 2;
            scale--;
        }
        int256 s = (((int256)(a) - one) * one) / ((int256)(a) + one);
        // The polynomial R = c1*x + c3*x^3 + ... + c11 * x^11
        // approximates the function log(1+x)-log(1-x)
        // Hence R(s) = log((1+s)/(1-s)) = log(a)
        var z = (s*s) / one;
        return scale * ln2 +
            (s*(c1 + (z*(c3 + (z*(c5 + (z*(c7 + (z*(c9 + (z*c11/one))
                /one))/one))/one))/one))/one);
    }

}

Contract Security Audit

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":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":false,"inputs":[],"name":"claimTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","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":true,"inputs":[],"name":"GetStakingNow","outputs":[{"name":"","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":"target","type":"address"},{"name":"TIME","type":"uint256"}],"name":"getStakingRequirementTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":true,"inputs":[{"name":"a","type":"int256"}],"name":"fixedExp","outputs":[{"name":"exp","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"target","type":"address"}],"name":"getRequirementTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":false,"name":"reward_amount","type":"uint256"}],"name":"PoS","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"}]

608060405260048054600860ff199182168117928390556104009055620100006009557d040000000000000000000000000000000000000000000000000000000000600a90815560128054909216909155630545217f60195560ff909116900a61520802601a55633772133c601b553480156200007b57600080fd5b5060008054600160a060020a0319163390811791829055600160a060020a039190911614620000a957600080fd5b6040805180820190915260038082527f534b4f00000000000000000000000000000000000000000000000000000000006020909201918252620000ef9160029162002e74565b506040805180820190915260068082527f536b6f72636800000000000000000000000000000000000000000000000000006020909201918252620001369160039162002e74565b506004805460ff191660081790819055630c84588060ff918216600a0a0260055560125416156200016657600080fd5b6012805460ff19166001179055653f6feff91c0060149081556000600d556603baf82d03a000600e5543600655426015557f48f499eca7dc41858c2a53fded09096d138b8b88a9da8f488dccd5118bb1bbe2600c55614ed5600755600554620001dd91640100000000620012aa62002e5182021704565b600554600a900403600e557b046535708ac23bbf831c5398f7a5a62bf1db79ad7bf59530faaf067e600b5573ab4485ca338b91087a09ae8bc141648bb1c6e9676000818152601660209081526419f603373a7fc0c23cf1013bb8bb05b21da3740533a054fcd4e45b1c436adceeba2a8934f8a48190556040805191825251600080516020620047dc833981519152929181900390910190a373f2119e50578b3dfa248652c4fbec76b9e415acb260008181526016602090815264025c2ed6797f7c5b7c2bdbd7d81fb76fa4771cc11ae9157b4da604bc0929fbc0af446861b5508190556040805191825251600080516020620047dc833981519152929181900390910190a373b12b538cb67fceb50bbc1a31d2011eb92e6f718860008181526016602090815262182a427f4dcacd0b22d57fd0e123ddf590a560428655aa2e6e18429782a1998fde81d8dd8190556040805191825251600080516020620047dc833981519152929181900390910190a37321b7e18dacde5c004a0a56e74f071ac3fb2e98ff6000818152601660209081526402832d3bd97f597dcbdfd4b33bf94c2d42f74077cee03a71b7fc2b14bb21c3366b5da4d70eb38190556040805191825251600080516020620047dc833981519152929181900390910190a373e539a7645d2f33103c89b5b03abb422a163b7c73600081815260166020908152640e291906da7fe90867f0ab853d9a011a3d391458a06dffbff068cdff395c8acaa169d9ce32488190556040805191825251600080516020620047dc833981519152929181900390910190a3734ffe17a2a72bc7422cb176bc71c04ee6d87ce329600081815260166020908152646904917d3b7f0763abcb717d1194c820cf3eeb0683e857f26dbb8d6feb31992fdd7d60b2d0868190556040805191825251600080516020620047dc833981519152929181900390910190a373c0a2002e74b3b22e77098cb87232f446d813ce3160008181526016602090815261845d7f497052c62c376d801f6aa712f63ec3d00e59991fb1f9ac41f9ffd7cd95e791ce8190556040805191825251600080516020620047dc833981519152929181900390910190a373fc313f77c2cbc6cd0dd82b9a0ed1620ba906e46d600081815260166020908152642cd779eb087ffacfb4067d16f27c010ac464a6d723a2f6848f1619d1e1ab602f3c9ec184961c8190556040805191825251600080516020620047dc833981519152929181900390910190a373219fdb55ea364fcaf29aaa87fb1c45ba7db8128e6000818152601660209081526404b85dacf37f0b47a498c14dadb92b9c6c0e5911466e1007904c4b2c555a46ee9583f162c52d8190556040805191825251600080516020620047dc833981519152929181900390910190a373fbc2b315ac1fba765597a92ff100222425ce66fd600081815260166020908152648d9afa44867f3d05645cccde8b28c58e16270baa9b83e012331698df6df87940c23528d90a428190556040805191825251600080516020620047dc833981519152929181900390910190a373852563d88480decbc9bfb4428bb689af48dd92a960008181526016602090815264ead656cc6b7f934ba94bea7b65c21e6e6b4d520e5e8d8eb000f4a973d36bbf80a483d2dbe3c28190556040805191825251600080516020620047dc833981519152929181900390910190a3734d01d11697f00097064d7e05114ecd3843e8286760008181526016602090815264b7e6266fce7f28a52e1fbb1a182cb9f7508dee7ab25aecd55e239ac0770a25cf8883cabb2d548190556040805191825251600080516020620047dc833981519152929181900390910190a373e75ea07e4b90e46e13c37644138aa99ec69020ae600081815260166020908152647a7e7d5bff7ffe627fcfe99184079b04fb0cfe5c875f3473603354c6d5826b9eaa75bf4ea9228190556040805191825251600080516020620047dc833981519152929181900390910190a37351138ab5497b2c3d85be94d23905f5ead9e533a760008181526016602090815264012e176b3c7f2c58aa4e7497c842dc9ce1f7bf41570d7e373341abea4f450f2376f47734a1b98190556040805191825251600080516020620047dc833981519152929181900390910190a373ae7c95f2192c739edfb16412a6112a54f8965305600081815260166020908152640cfb019b9d7f55347597902e69ccde1f178fd38c2f369fe9eb5e4eecd383283bf2b1db89e97c8190556040805191825251600080516020620047dc833981519152929181900390910190a373e0261acfdd10508c75b6a60b1534c8386c4daa5260008181526016602090815265049719a2c9ff7faba0f22f9d03332d9598c2a9af6da108229374edc472f7c08c4c60d83eb230898190556040805191825251600080516020620047dc833981519152929181900390910190a3730a26d9674c2a1581ada4316e3f5960bb70fb0fb260008181526016602090815264785d54ba3e7f7eec9ef2c79c5152db940b5fd0a421a2022aa3a0cd93f9edfd5add2602e9227a8190556040805191825251600080516020620047dc833981519152929181900390910190a373a62178f120cccba370d2d2d12ec6fb1ff276d7066000818152601660209081526501ddeb0ca7457f640c5b46264908df741ecec5ac8e6058d4ca0d10e7160bc0dfd020daaccc98dc8190556040805191825251600080516020620047dc833981519152929181900390910190a373e57a18783640c9fa3c5e8e4d4b4443e2024a7ff9600081815260166020908152650244d9fe2ea07f930d08df740b0d68943f67af6cf755c1e0ebeb6079f4c263b01ef96d76cbef178190556040805191825251600080516020620047dc833981519152929181900390910190a3739b8957d1ac592bd388dcde346933ac1269b7c3146000818152601660209081526418c7ebcbfd7f396b0ce6421ffde24865b9bdaac3c700015c0ba6524cfba16f0cb417ccace94c8190556040805191825251600080516020620047dc833981519152929181900390910190a373f27bb893a4d9574378c4b1d089bdb6b9fce5099e6000818152601660209081526205cfad7f386f2db23de87b6f5a8895cf4192ba0ba7fe23410a4c25fc4f87ba6b928c97018190556040805191825251600080516020620047dc833981519152929181900390910190a37354a8f792298af9489de7a1245169a943fb69f5a660008181526016602090815264a4d15a221e7fdc6f385054b9933540720e80d9582d1be260d727a5780ca639bdda8c26aea48b8190556040805191825251600080516020620047dc833981519152929181900390910190a3724ba728a652bded4d4b79fb04b5a92ad8ce15e760008181526016602090815263014440967f6a3d3a65d6bb97c827a6b951680b0b34f8028cc0df9ffb882c29a5330e6faf6f8190556040805191825251600080516020620047dc833981519152929181900390910190a373d05803aee240195460f8589a6d6487fcea0097c160008181526016602090815262014ee37f1f0f23d231fa195b224a3d4e37551e361404b68bf9e00ea26ca13031d8963cb68190556040805191825251600080516020620047dc833981519152929181900390910190a373ad9f11d1dd6d202243473a0cdae606308ab243b4600081815260166020908152641799d460c17fc298f9cbb1f82e38ea87a6b2b14754c5e5cdeab0a8099f530d2f5e82c79507ed8190556040805191825251600080516020620047dc833981519152929181900390910190a373fec55e783595682141c4b5e6ad9ea605f1683844600081815260166020908152640e1f71e1487fb80e2e7f14473f3678f7f4845e13990f90d523ac8c196e6358a069983f76ed868190556040805191825251600080516020620047dc833981519152929181900390910190a37399a7e5777b711ff23e2b6961232a4009f7cec1b0600081815260166020908152646a5f083fe67f8224b470fd54cc3843b7968180a10cdc9d686938f414a002872453b826b2eeee8190556040805191825251600080516020620047dc833981519152929181900390910190a373bf45f4280cfbe7c2d2515a7d984b8c71c15e82b760008181526016602090815265013e3e7dc14b7f11cdb501a02b153c9bc3e5f265ecfba21240d3ec7a86a3cd568b5566c7cc84448190556040805191825251600080516020620047dc833981519152929181900390910190a373b38094d492af4fffff760707f36869713bfb22506000818152601660209081526501d932aefa507fcaeb02534233f7b6825fc81f34d78c58b7a41a72bd7186f734a06941d953e7fa8190556040805191825251600080516020620047dc833981519152929181900390910190a373900953b10460908ec636b46307dca13a759275cb600081815260166020908152621c53b37f1b68ac2c8753a3afdef872d573f987c1e6b58e916512f7ae8898274d4c8df5bd8190556040805191825251600080516020620047dc833981519152929181900390910190a373167e733de0861f0d61b179d3d1891e6b905877326000818152601660209081526501dcbcf53c057fe5ab0c354e2dc5f96bc4f3ebba2b13e8c681d4df7d5d8893edb8b44874a9a1c58190556040805191825251600080516020620047dc833981519152929181900390910190a373db3cbb8aa4dec854e6e60982dd9d4e85a8b422bc60008181526016602090815260027fa6c0644695b56e400a4eca9d2e52e027c2567e76d2c35891f100fd5568b91dd58190556040805191825251600080516020620047dc833981519152929181900390910190a373072e8711704654019c3d9bc242b3f9a4ee1963ce60008181526016602090815264025c2ab0f77f016c8f082b010c620b336981bc02b188cb254589b599eff7b992e369ed2822d18190556040805191825251600080516020620047dc833981519152929181900390910190a37304f72aa695b65a54d79db635005077293d1116356000818152601660209081526426e332cfe77fbaf731b111464b38ceee5e6826e98b190c0b4ac8198bfb58eace49e6810f832d8190556040805191825251600080516020620047dc833981519152929181900390910190a37330385a99e66469a8c0bf172896758dd4595704a9600081815260166020908152648f1ef23e577fe12fa6dd2481ef0720598ebeaf913183ddb63174d5d314bc0c27d01309f9c13e8190556040805191825251600080516020620047dc833981519152929181900390910190a373fe5a94e5bab010f52ae8fd8589b7d0a7b0b433ae6000818152601660209081526501e17551e6ae7f53aa5faac46d723bc46343c65f5e7dd0e2af7a3c739e8fedf05b8a4bd3790ca48190556040805191825251600080516020620047dc833981519152929181900390910190a37388058d4d90cc9d9471509e5be819b2be361b51c660008181526016602090815264df074a2bed7ff737f1091a1e8d363cd7d5924bc138ec0036096c01f675d72ccfe63c7e24b4158190556040805191825251600080516020620047dc833981519152929181900390910190a373fcc6bf3369077e22a90e05ad567744bf5109e4d460008181526016602090815265017cd03446667fd93a3ca2238d7eb596bbfe454b328f83564e38a298165c6db48b02237ad7f8318190556040805191825251600080516020620047dc833981519152929181900390910190a37321a6043877a0ac376b7ca91195521de88d440eba6000818152601660209081526425c2ed679b7fede9747f5790e00a4765a2f545744d93d3fcfa74f3148f0958d28cf177b609af8190556040805191825251600080516020620047dc833981519152929181900390910190a373d7dd80404d3d923c8a40c47c1f61aacbccb4191e60008181526016602090815265033f0a6d60237ff0b04e04f2dfbfcbf5d00269b043fc03629ab9f91e4f3a37a7b263a063ab31658190556040805191825251600080516020620047dc833981519152929181900390910190a373a1a3e2fcc1e7c805994ca7309f9a829908a18b4c600081815260166020908152649373b925467f7d8dba173a4c4638e8047b9d1e226432733bcbee63855ae9f0d01c52a25107dc8190556040805191825251600080516020620047dc833981519152929181900390910190a373c5556ce5c51d2f6a8d7a54bec2a9961dfada84db60008181526016602090815265023f815416c67f1acf008a2ad3323a53f5f636464004d7f832b2fb326eb7144c917864828e7c0e8190556040805191825251600080516020620047dc833981519152929181900390910190a373b4894098be4dbfdc0024dfb9d2e9f6654e0e37866000818152601660209081526402573753157fbd35163db8070d2c86ed968d1483ac04fc2174ec8cbc58866429d0fc88966a0c8190556040805191825251600080516020620047dc833981519152929181900390910190a373e8a01b61f80130aefda985ee2e9c6899a57a17c860008181526016602090815264294d33a9517f25765c8d0eb8a786dd59833ebeff7d9e38300440a99004f7b6a6a8255573daad8190556040805191825251600080516020620047dc833981519152929181900390910190a373559a922941f84ebe6b9f0ed58e3b96530614237e600081815260166020908152640f573072177f513c0a2f358316295b5c5298d0539093d8e35c0b2e78e56197568f7f75e5385f8190556040805191825251600080516020620047dc833981519152929181900390910190a373f95f528d7c25904f15d4154e45eab8e5d4b6c1606000818152601660209081526463161713137f1e71756126dcb0c2d0ec3c98b674f4f485e334262a124554c09b89e7f26a3d848190556040805191825251600080516020620047dc833981519152929181900390910190a37245b9707913eae3889283ed4d72077a904b984860008181526016602090815265015f00745b3c7f731c84d3c2257ca3a667c41aad28b3092082d3555b1a868461e6fbb728c339188190556040805191825251600080516020620047dc833981519152929181900390910190a373586389feed58c2c6a0ce6258cb1c58833abdb0936000818152601660209081526227b9a27fc19d9769addab0d8d59aea4cff23030e699b8942bcdd65b0a513d3f377b070b28190556040805191825251600080516020620047dc833981519152929181900390910190a373d2b752bec2fe5c7e5cc600eb5ce465a210cb857a600081815260166020908152645880dc6ad37f13d1ba82fec0e4a6a76cecd7aa38cb930f522e868345b616afe81237e2cf22758190556040805191825251600080516020620047dc833981519152929181900390910190a373518bbb5e4a1e8f8f21a09436c35b9cb5c20c7b4360008181526016602090815264012c4121a17f9a3c8aa34a17b723a1460e108d02adb8a9208a6bc910dee1180db458e9357d898190556040805191825251600080516020620047dc833981519152929181900390910190a37325e5c43d5f53ee1a7dd5ad7560348e29baea304860008181526016602090815264012e176b3c7f15bd9a7af98b9aaf5d72dcf527d5fd5557cc56fa42165e7504372728c72e8ef28190556040805191825251600080516020620047dc833981519152929181900390910190a37322dd964193df4de2e6954a2a9d9cbbd6f44f0b28600081815260166020908152650281464859dd7f735f15e08029df6723628f779100676effb4beed6a2fa09bd85b5b3e8f9df5c28190556040805191825251600080516020620047dc833981519152929181900390910190a373aa7a7c2decb180f68f11e975e6d92b5dc06083a6600081815260166020908152641b241aa2777fcd8d67a4b09eb95e344ecb91b7330f42c386b0e5049b74f20192c12a7fa3ecef8190556040805191825251600080516020620047dc833981519152929181900390910190a3734e27a678c8dc883035c542c83124e7e3f39842b0600081815260166020908152640842a3eea97fd5b42408fece2f6474e12ea3fbae0ad04668f898e73358120a56888e5b5347cb8190556040805191825251600080516020620047dc833981519152929181900390910190a3733bd56f97876d3af248b1fe92e361c05038c74c27600081815260166020908152640388e61d077f5d86c6edc0263dbe0705c5363db344b08f85e1cb64f89b1f8d9ff1bd7e1e22c38190556040805191825251600080516020620047dc833981519152929181900390910190a373674194d05bfc9a176a5b84711c8687609ff3d17b6000818152601660209081526503e6287cd4ba7f673c610a50d34090f48834d885e0866355179c08aca2c472f901e37533fbe70b8190556040805191825251600080516020620047dc833981519152929181900390910190a3730102f6ca7278e7d96a6d649da30bfe07e87155a360008181526016602090815265011f17b55ca57fed949d3f2f58461b1ee6694feeba381e58ab4fae0ac0f6d6cee60e10c067e0a48190556040805191825251600080516020620047dc833981519152929181900390910190a3733750ecf5e0536d04dd3858173ab571a0dcbdf7e0600081815260166020908152640bb4585cb47ffc9ab9a60f972aff26ac16e2d064bd611a82ecf2b1ae2b009a0ec8f87923a7e88190556040805191825251600080516020620047dc833981519152929181900390910190a37307a68bd44a526e09b8dbfc7085b265450362b61a600081815260166020908152641799d460c17fda22c0de966777e11aa46f205b5ab76f64342d4db4ff26be79542ce956bddae08190556040805191825251600080516020620047dc833981519152929181900390910190a373ebd76aa221968b8ba9cdd6e6b4dbb889140088a36000818152601660209081526447fb948d7f7f3efb8ec705194e63ae1849f19ba1a0d97d7b8f2f6a74193d6ca290a7cb9039d58190556040805191825251600080516020620047dc833981519152929181900390910190a373c7ee330d69cdddc1b9955618ff0df27bb8de3143600081815260166020908152640259ebe8297f018a5d1c05b343f1e1b3e8cac946949ba1011aa11a5f158f0fb63cf079a16a578190556040805191825251600080516020620047dc833981519152929181900390910190a373e0c059faabce16dd5ddb4817f427f5cf3b40f4c46000818152601660209081526498d770291d7f6ad71e1f486a8b5d8b5cbb04c1d281810c890101da96e5a804287a650306c06e8190556040805191825251600080516020620047dc833981519152929181900390910190a373dc680cc11a535e45329f49566850668fef34054f60008181526016602090815265017b6ed7e29f7f1ea4d278a417985a97ef1498085aed88d64c465301548df70c96c17a4342278a8190556040805191825251600080516020620047dc833981519152929181900390910190a37322ef324a534ba9aa0d060c92294fdd0fc4aca065600081815260166020908152641889a358ba7f9815a5b5490a1b472cded866e0103812ea6a8dcea2051603d8c895d07db8ffd98190556040805191825251600080516020620047dc833981519152929181900390910190a373e14cffadb6bbad8de69bd5ba214441a9582ec54860008181526016602090815264108547dd537f16ca2d877a63c530fef5a339a566872abfd73aba3628ffed145769fba907f7c88190556040805191825251600080516020620047dc833981519152929181900390910190a373dfb895c870c4956261f4839dd12786ef612d73146000818152601660209081526447a058c9b77fdfd8e9bb3002ca7b50301bfcd50896280e825a9bb4059aa3c153965a95bb65088190556040805191825251600080516020620047dc833981519152929181900390910190a373620103bb2b263ab0a50a47f73140d218401541c06000818152601660209081526509ce100dac917f3797173b06b283cfca7e4d90d9da4d29b3bad7bb5256030b25db070dac7ce8278190556040805191825251600080516020620047dc833981519152929181900390910190a3739fc5b0edc0309745c6974f1a6718029ea41a4d6e600081815260166020908152640f558a38487fc6e56a538e0e0da21d83b499fc1abc33c7724b250db0cc7b7437fe3ffea2af4a8190556040805191825251600080516020620047dc833981519152929181900390910190a373d6ceae2756f2af0a2f825b6e3ca8a9cfb4d082e26000818152601660209081526501055b3c06297f2b70ad326c8d2b5421f60a350a530d18f4459afd6a39a005894089acbf33486d8190556040805191825251600080516020620047dc833981519152929181900390910190a37325437b6a20021ea94d549ddd50403994e532e9d760008181526016602090815265018e98776a487f0a587252fed9fa64f7a689a6ddf27bbb4c3a3a9731131b35008c8c8e57750f368190556040805191825251600080516020620047dc833981519152929181900390910190a373eb4f4c886b402c65ff6f619716efe9319ce40fcf600081815260166020908152647a7a23f37d7f486f11590b6c80d126ef82783d4dd8cab2ac941c20f033728180b501bf44a1f18190556040805191825251600080516020620047dc833981519152929181900390910190a373f3552d4018fad9fcc390f5684a243f7318d8b570600081815260166020908152643b0092f1e27fe268c410a1aba3aa721793aeae81515b964db96bac86d3175838e04b3873070a8190556040805191825251600080516020620047dc833981519152929181900390910190a37385abe8e3bed0d4891ba201af1e212fe50bb65a2660008181526016602090815264f6e32b98877f2cf6774bfed13160e2944f68a8dd7cc55e701162cd8d14655b7831eded246e8b8190556040805191825251600080516020620047dc833981519152929181900390910190a373c446073e0c00a1138812b3a99a19df3cb8ace70d6000818152601660209081526501d932aefa517fd6dad18bfddada3bdaf04e218b0b0565772ce8b7491e6b350dc13f0eb3f60f568190556040805191825251600080516020620047dc833981519152929181900390910190a373195d65187a4aeb24b563dd2d52709a6b67064ad36000818152601660209081526436e6fe9f837fff6413b0a9c94db81db1b8a1920fcfe7ba514461b7e18afac5262b82698771508190556040805191825251600080516020620047dc833981519152929181900390910190a373588611841bd8b134f3d6ca3ff2796b483dfca4c6600081815260166020908152616ce37f6bbdb83dd20bbdf24f638fa099105e6b4e09a68789ff6bc36a7a127c4a755e0e8190556040805191825251600080516020620047dc833981519152929181900390910190a37343237ce180fc47cb4e3d32eb23e420f5ecf7a95e6000818152601660209081526504a06a11bac57f319cde4db329bd1d90a03da4261f42ea4e60f4e5a14bea77760eb10017431eca8190556040805191825251600080516020620047dc833981519152929181900390910190a373394299ef1650ac563a9adbec4061b25e50570f49600081815260166020908152640f417dc4407f6788304b196ac642dd4a5257ab62bdfce657c5d61a473f0d4c45d7e5999f3df78190556040805191825251600080516020620047dc833981519152929181900390910190a371bb50ee5f5df06be902d1f9cb774949c337ed600081815260166020908152620b1d5f7f3da1d730a92ce177b3c177e681c2fbd2d06e573e0c10ae78417f37e4ea3d1d628190556040805191825251600080516020620047dc833981519152929181900390910190a3734927fb34fff626adb7b07305c447ac89ded8bea2600081815260166020908152640388e089f67f1e1056da55af4356b99473481adc7a123b0e49bceeade25a2b5935d86ba2d1d08190556040805191825251600080516020620047dc833981519152929181900390910190a37393da7b2830e3932d906749e67a7ce1fbf3a5366d6000818152601660209081526502849a9faab27f345b07c9e8aad63227c48da15b8ab4adc5adf4504f41e8aaae8ca216c014cda38190556040805191825251600080516020620047dc833981519152929181900390910190a3737f4924f55e215e1fe44e3b5bb7fdfced2154b30f6000818152601660209081526475ea8297f97fbad151298be0c3611b081396df4c4c0ce4801fce4e6afce5e04d96428f83ba768190556040805191825251600080516020620047dc833981519152929181900390910190a3739834977aa420b078b8fd47c73a9520f968d66a3a60008181526016602090815264f0fd26c5ba7f7294abe9ded1e97f376093e5614ea6127386eaa65eb0ee4758f43203bd7f11098190556040805191825251600080516020620047dc833981519152929181900390910190a37326b8c7606e828a509bbb208a0322cf960c17b2256000818152601660209081526501321816c9b97f615a9b8b383ee4a78930947ee9e0bf5f80fefcf6897dafc1d2cf59392cd95d358190556040805191825251600080516020620047dc833981519152929181900390910190a3738f3dd21c9334980030ba95c37565ba25df9574cd6000818152601660209081526404b85dacf37ffe14f9eb6bc82c2b87be8535bea0ee2d3e899dc51282d4023de8fa9168aba4018190556040805191825251600080516020620047dc833981519152929181900390910190a37385d66f3a8da35f47e03d6bb51f51c2d70a61e12e600081815260166020908152650979f2de74d67ff71d9c9d382ad2b08ec796f6e41f043b715472ea4ff44c87d1d333e3cdf8995b8190556040805191825251600080516020620047dc833981519152929181900390910190a373bafc492638a2ec4f89aff258c8f18f806a844d72600081815260166020908152645c5b0174f77fae9f2e23915fde656653d26d24756d84acc7910b4c160171968db7bd239f19558190556040805191825251600080516020620047dc833981519152929181900390910190a3732f0d5a1d6bb5d7eaa0eaad39518621911a4a1d9f600081815260166020908152640a9ec35a1d7f5d3627e1eb343a3bd2711d27d157d4bd133fa66e23c5d07b4f6492482297822d8190556040805191825251600080516020620047dc833981519152929181900390910190a373ae5910c6f3cd709bf497bae2b8eae8cf983aca1b6000818152601660209081526482c9aa34bf7f2d361b23d4c4c3a6d7642ed6abdca5523336cb913f937d0f62c6dc982a26062b8190556040805191825251600080516020620047dc833981519152929181900390910190a373b963db36d28468ce64bce65e560e5f27e75f2f50600081815260166020908152640bc1e733d57f0a44a4fcba93ed76c2e9808cef14ba0836afef991e2880b81059c7ce32a501938190556040805191825251600080516020620047dc833981519152929181900390910190a3737134161b9e6fa84d62f156037870ee77fa50f607600081815260166020908152620c4fa97fa50090065bf08d32796a6ca2e3e4dee5cebf932bf76872851df1a3e66b6f3ba68190556040805191825251600080516020620047dc833981519152929181900390910190a373111fd8a12981d1174cfa8eef3b0141b3d5d4e5b360008181526016602090815264012b6ab5347f6a2637cb0e7f43e7f1c2224525a7f77491b8fe9bb5de62ce5d2cad237ec2b9e68190556040805191825251600080516020620047dc833981519152929181900390910190a373afaf9a165408737e11191393fe695c1ebc7a5429600081815260166020908152650369396e875c7f9c293625c9a264c7a7bde0656297a932a1bba612b3d1898545f0375d6538afec8190556040805191825251600080516020620047dc833981519152929181900390910190a3735329fcc196c445009aac138b22d25543ed195888600081815260166020908152641d7e2e816e7f7486701bb617dcbebc5398b258970325c24bb8348ac0c2b4f22e53c4e887a1c88190556040805191825251600080516020620047dc833981519152929181900390910190a373a5b3725e37431dc6a103961749cb9c98954202cd6000818152601660209081526467d80cdcea7fbd7b6f88f15404447504781526929a850abafdef66be1cafb2f5cc577d0844bd8190556040805191825251600080516020620047dc833981519152929181900390910190a373b8ab7387076f022c28481fafb28911ce4377e0ea6000818152601660209081526502c5069d360a7f020c5376b9692d68ed780c2e640fdb026b71afc5ba3bdb76b197c0c3a3eda9998190556040805191825251600080516020620047dc833981519152929181900390910190a373d2470aacd96242207f06111819111d17ca055dfb60008181526016602090815264df074a2bed7f54d34bd6dd3ba53d590263c6ab4a030c399285904fa184a474bf39c2d4f9c5be8190556040805191825251600080516020620047dc833981519152929181900390910190a3731fca39ed4f19edd12eb274dc467c099eb5106a136000818152601660209081526440e7080a127f5e6e50db336bfee985e9c6d6cc6f51d8c00b1b668f854c701ed6ede3bff754f48190556040805191825251600080516020620047dc833981519152929181900390910190a3738d12a197cb00d4747a1fe03395095ce2a5cc681960008181526016602090815265045085a0167d7faa57e725b03ee30bd9929e7c5cb07b5157f1efcc3e0c0598d541306199a154398190556040805191825251600080516020620047dc833981519152929181900390910190a3732a23527a6dbafae390514686d50f47747d01e44d6000818152601660209081526497e4b0c6947f4312d4748f84997c86cea6215432593ad3f65c2f38eddf8e03af55f3ba5be02a8190556040805191825251600080516020620047dc833981519152929181900390910190a373371e31169df00563eafab334c738e66dd0476a8f6000818152601660209081526434b52d0f3a7f801992107ef0810cf3a21c489af176e32aecfdbaa6ca4cda0f7bfba2f5bc08e68190556040805191825251600080516020620047dc833981519152929181900390910190a37340ea0a2abc9479e51e411870cafd759cb110c25860008181526016602090815264070cf2d6587f64085a4f5abd0846318b6b6702351536ff596d1583263d93226b5895b8e66e188190556040805191825251600080516020620047dc833981519152929181900390910190a373e585ba86b84283f0f1118041837b06d03b96885e60008181526016602090815262029b277f1a796c7d3cf9a2c52c2b21f7bb9019b7903afab31874e66d6db3e0fe0fde221f8190556040805191825251600080516020620047dc833981519152929181900390910190a373bede88c495132efb90b5039bc2942042e07814df60008181526016602090815264096ecd1d7f7f6ad7ed9241d5020af61eaa11fb69745b4f7b4ae226fdc31d6bc552304fb0ffdc8190556040805191825251600080516020620047dc833981519152929181900390910190a362002f19565b600080821162002e6057600080fd5b818381151562002e6c57fe5b049392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062002eb757805160ff191683800117855562002ee7565b8280016001018555821562002ee7579182015b8281111562002ee757825182559160200191906001019062002eca565b5062002ef592915062002ef9565b5090565b62002f1691905b8082111562002ef5576000815560010162002f00565b90565b6118b38062002f296000396000f3006080604052600436106101f85763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101fd578063095ea7b314610287578063163aa00d146102bf57806317da485f146102e65780631801fbe5146102fb57806318160ddd1461031657806323b872dd1461032b5780632d38bf7a14610355578063313ce5671461036a57806332e99708146103955780633eaaf86b146103aa57806348c54b9d146103bf578063490203a7146103d65780634ef37628146103eb5780634fa972e1146104005780636de9f32b146104155780636fd396d61461042a57806370a082311461045b57806378dbce5f1461047c57806379ba50971461049157806381269a56146104a6578063829965cc146104c757806387a2a9d6146104dc5780638a769d35146104f15780638ae0368b146105065780638da5cb5b1461051b57806395d89b411461053057806397566aa014610545578063a9059cbb14610563578063a9d04bd814610587578063b5ade81b146105ab578063bafedcaa146105c0578063cae9ca51146105d5578063cb9ae7071461063e578063d4ee1d9014610653578063dc39d06d14610668578063dc6e9cf91461068c578063dd62ed3e146106a1578063de43844b146106c8578063f2fde38b146106e0578063ff67c9f514610701575b600080fd5b34801561020957600080fd5b50610212610722565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561024c578181015183820152602001610234565b50505050905090810190601f1680156102795780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561029357600080fd5b506102ab600160a060020a03600435166024356107b0565b604080519115158252519081900360200190f35b3480156102cb57600080fd5b506102d4610817565b60408051918252519081900360200190f35b3480156102f257600080fd5b506102d461081d565b34801561030757600080fd5b506102ab60043560243561083b565b34801561032257600080fd5b506102d46109d4565b34801561033757600080fd5b506102ab600160a060020a03600435811690602435166044356109da565b34801561036157600080fd5b506102d4610b05565b34801561037657600080fd5b5061037f610b0b565b6040805160ff9092168252519081900360200190f35b3480156103a157600080fd5b506102d4610b14565b3480156103b657600080fd5b506102d4610b1a565b3480156103cb57600080fd5b506103d4610b20565b005b3480156103e257600080fd5b506102d4610b3d565b3480156103f757600080fd5b506102d4610b5c565b34801561040c57600080fd5b506102d4610b62565b34801561042157600080fd5b506102d4610b68565b34801561043657600080fd5b5061043f610b6e565b60408051600160a060020a039092168252519081900360200190f35b34801561046757600080fd5b506102d4600160a060020a0360043516610b7d565b34801561048857600080fd5b506102d4610ba9565b34801561049d57600080fd5b506103d4610be3565b3480156104b257600080fd5b506102ab600435602435604435606435610c6b565b3480156104d357600080fd5b506102d4610cb5565b3480156104e857600080fd5b506102d4610cbb565b3480156104fd57600080fd5b506102d4610cc1565b34801561051257600080fd5b506102d4610cc7565b34801561052757600080fd5b5061043f610ccd565b34801561053c57600080fd5b50610212610cdc565b34801561055157600080fd5b506102d4600435602435604435610d34565b34801561056f57600080fd5b506102ab600160a060020a0360043516602435610d69565b34801561059357600080fd5b506102d4600160a060020a0360043516602435610e3b565b3480156105b757600080fd5b506102d4610e71565b3480156105cc57600080fd5b506102d4610e77565b3480156105e157600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526102ab948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750610e7d9650505050505050565b34801561064a57600080fd5b506102d4610fde565b34801561065f57600080fd5b5061043f610fe4565b34801561067457600080fd5b506102ab600160a060020a0360043516602435610ff3565b34801561069857600080fd5b506102d46110ae565b3480156106ad57600080fd5b506102d4600160a060020a03600435811690602435166110b4565b3480156106d457600080fd5b506102d46004356110df565b3480156106ec57600080fd5b506103d4600160a060020a03600435166111c3565b34801561070d57600080fd5b506102d4600160a060020a0360043516611209565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107a85780601f1061077d576101008083540402835291602001916107a8565b820191906000526020600020905b81548152906001019060200180831161078b57829003601f168201915b505050505081565b336000818152601760209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b60115481565b6000610836600b54600a546112aa90919063ffffffff16565b905090565b600c54604080519182526c01000000000000000000000000330260208301526034820184905251908190036054019020600090818084831461087c57600080fd5b600b5483111561088b57600080fd5b600c546000908152601360205260409020805490849055915081156108af57600080fd5b6108b8336112c3565b3360009081526018602052604090204290556108d2610b3d565b336000908152601660205260409020549091506108f5908263ffffffff6113f416565b33600090815260166020526040902055601454610918908263ffffffff6113f416565b6014819055600e54101561092857fe5b600f805473ffffffffffffffffffffffffffffffffffffffff191633179055601081905543601155610958611404565b600754600c54604080518481526020810193909352828101919091525133917fcf6fbb9dcea7d07263ab4f5c3a92f53af33dffc421d9d121e1c74b307e68189d919081900360600190a260408051828152905133916000916000805160206118688339815191529181900360200190a350600195945050505050565b60055490565b60006109e5846112c3565b6109ee836112c3565b600160a060020a038085166000818152601860209081526040808320429081905594881683528083209490945591815260169091522054610a35908363ffffffff6114a516565b600160a060020a0385166000908152601660209081526040808320939093556017815282822033835290522054610a72908363ffffffff6114a516565b600160a060020a038086166000908152601760209081526040808320338452825280832094909455918616815260169091522054610ab6908363ffffffff6113f416565b600160a060020a03808516600081815260166020908152604091829020949094558051868152905191939288169260008051602061186883398151915292918290030190a35060019392505050565b600d5481565b60045460ff1681565b600b5490565b60055481565b610b29336112c3565b336000908152601860205260409020429055565b600d546004546000916108369160ff16600a0a6032029060020a6112aa565b600c5490565b600e5481565b60145481565b600f54600160a060020a031681565b6000610b88826114ba565b600160a060020a038316600090815260166020526040902054019050919050565b6000604060020a610bd0601954604060020a426015540302811515610bca57fe5b056110df565b601a5402811515610bdd57fe5b04905090565b600154600160a060020a03163314610bfa57600080fd5b60015460008054604051600160a060020a0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b604080518381526c010000000000000000000000003302602082015260348101869052905190819003605401902060009082811115610ca957600080fd5b93909314949350505050565b60075481565b600a5481565b600b5481565b600c5481565b600054600160a060020a031681565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156107a85780601f1061077d576101008083540402835291602001916107a8565b604080518281526c01000000000000000000000000330260208201526034810185905290519081900360540190209392505050565b6000610d74336112c3565b610d7d836112c3565b3360008181526018602090815260408083204290819055600160a060020a038816845281842055928252601690522054610dbd908363ffffffff6114a516565b3360009081526016602052604080822092909255600160a060020a03851681522054610def908363ffffffff6113f416565b600160a060020a0384166000818152601660209081526040918290209390935580518581529051919233926000805160206118688339815191529281900390910190a350600192915050565b6000604060020a610e5c601954604060020a856015540302811515610bca57fe5b601a5402811515610e6957fe5b049392505050565b60085481565b60105481565b336000818152601760209081526040808320600160a060020a038816808552908352818420879055815187815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a36040517f8f4ffcb10000000000000000000000000000000000000000000000000000000081523360048201818152602483018690523060448401819052608060648501908152865160848601528651600160a060020a038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b83811015610f6d578181015183820152602001610f55565b50505050905090810190601f168015610f9a5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610fbc57600080fd5b505af1158015610fd0573d6000803e3d6000fd5b506001979650505050505050565b60065481565b600154600160a060020a031681565b60008054600160a060020a0316331461100b57600080fd5b60008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810186905290519186169263a9059cbb926044808401936020939083900390910190829087803b15801561107b57600080fd5b505af115801561108f573d6000803e3d6000fd5b505050506040513d60208110156110a557600080fd5b50519392505050565b60095481565b600160a060020a03918216600090815260176020908152604080832093909416825291909152205490565b6000808080604067b17217f7d1cf79ac682cb53f09f05cc627c887010503925067b17217f7d1cf79ac830285039450604060020a85860281151561111f57fe5b059150604060020a672aaaaaaaaa015db0660455956bccdd06651b893ad04b3919850283900501840282900566b60b60808399d01901840282900501830205604060020a600202019050848103604060020a8683010281151561117e57fe5b059350600083126111a2578284600082121561119657fe5b9060020a0293506111bb565b826000038460008212156111b257fe5b9060020a900493505b505050919050565b600054600160a060020a031633146111da57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a038116600090815260166020526040812054604060020a8280808085151561123c57600019965061129f565b600160a060020a03881660009081526018602052604090205493508315156112645760155493505b611280601a54604060020a880281151561127a57fe5b0461160b565b601954909350604060020a908402059150816000039050601554810196505b505050505050919050565b60008082116112b857600080fd5b8183811515610e6957fe5b600160a060020a038116600090815260186020526040812054151561130b57600160a060020a03821660009081526016602052604081205411156113065761130b565b6113f0565b600160a060020a038216600090815260186020526040902054421415611330576113f0565b611339826114ba565b905060008111156113c057600160a060020a03821660009081526016602052604090205461136d908263ffffffff6113f416565b600160a060020a038316600081815260166020908152604091829020939093558051848152905191927fb6ca79c9847e64c21032ebeea3266417e6a012de32b21df76a8ab204edcb953392918290030190a25b604080518281529051600160a060020a038416916000916000805160206118688339815191529181900360200190a35b5050565b8181018281101561081157600080fd5b600e54611421611412610b3d565b6014549063ffffffff6113f416565b11801561143057506027600d54105b1561143f57600d805460010190555b600d5460055461145a9160010160140a63ffffffff6112aa16565b600554600a900403600e5560075461147990600163ffffffff6113f416565b60078190556008549081151561148b57fe5b06151561149a5761149a6116f0565b600019430140600c55565b6000828211156114b457600080fd5b50900390565b600080600080600080600080601660008a600160a060020a0316600160a060020a0316815260200190815260200160002054600014156114fd57600097506115ff565b600160a060020a038916600090815260186020526040902054604060020a9750955085151561152c5760155495505b6115368987610e3b565b600160a060020a038a1660009081526016602052604090205410156115795761155e89611209565b94508442111561157057849550611579565b600097506115ff565b601b548787601554030281151561158c57fe5b059350611598846110df565b9250601b54874260155403028115156115ad57fe5b0593506115b9846110df565b600160a060020a038a16600090815260166020526040902054909250604060020a906115eb858563ffffffff6114a516565b600902028115156115f857fe5b0490508097505b50505050505050919050565b60008080805b68016a09e667f3bcc90885111561163357600285049450600190920191611611565b5b67b504f333f9de64848511611656576002949094029360001990920191611634565b604060020a8501604060020a8087030281151561166f57fe5b05915050604060020a818002819005906801ffffffffff9dac9b67666664e5e9fa0c996738bd75ed37753d68673284a0c14610924f85028490050184028390056749254026a7630acf01840283900501830282900567aaaaaaac168779080183028290050183020567b17217f7d1cf79ac8460030b02019350505050919050565b600654600854439190910390603c81026000808080848710156117965761172e8761172287606463ffffffff61182a16565b9063ffffffff6112aa16565b93506117536103e861174786606463ffffffff6114a516565b9063ffffffff61184f16565b925061178e61177f846117736107d0600b546112aa90919063ffffffff16565b9063ffffffff61182a16565b600b549063ffffffff6114a516565b600b556117f7565b6117ab8561172289606463ffffffff61182a16565b91506117c46103e861174784606463ffffffff6114a516565b90506117f36117e4826117736107d0600b546112aa90919063ffffffff16565b600b549063ffffffff6113f416565b600b555b43600655600954600b54101561180e57600954600b555b600a54600b54111561182157600a54600b555b50505050505050565b818102821580611844575081838281151561184157fe5b04145b151561081157600080fd5b600081831115611860575080610811565b50909190505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820d0ba7f7ed2eadd4840dbb112646dfd1d303c6a346decb8cea12c3dd076c576890029ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x6080604052600436106101f85763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101fd578063095ea7b314610287578063163aa00d146102bf57806317da485f146102e65780631801fbe5146102fb57806318160ddd1461031657806323b872dd1461032b5780632d38bf7a14610355578063313ce5671461036a57806332e99708146103955780633eaaf86b146103aa57806348c54b9d146103bf578063490203a7146103d65780634ef37628146103eb5780634fa972e1146104005780636de9f32b146104155780636fd396d61461042a57806370a082311461045b57806378dbce5f1461047c57806379ba50971461049157806381269a56146104a6578063829965cc146104c757806387a2a9d6146104dc5780638a769d35146104f15780638ae0368b146105065780638da5cb5b1461051b57806395d89b411461053057806397566aa014610545578063a9059cbb14610563578063a9d04bd814610587578063b5ade81b146105ab578063bafedcaa146105c0578063cae9ca51146105d5578063cb9ae7071461063e578063d4ee1d9014610653578063dc39d06d14610668578063dc6e9cf91461068c578063dd62ed3e146106a1578063de43844b146106c8578063f2fde38b146106e0578063ff67c9f514610701575b600080fd5b34801561020957600080fd5b50610212610722565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561024c578181015183820152602001610234565b50505050905090810190601f1680156102795780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561029357600080fd5b506102ab600160a060020a03600435166024356107b0565b604080519115158252519081900360200190f35b3480156102cb57600080fd5b506102d4610817565b60408051918252519081900360200190f35b3480156102f257600080fd5b506102d461081d565b34801561030757600080fd5b506102ab60043560243561083b565b34801561032257600080fd5b506102d46109d4565b34801561033757600080fd5b506102ab600160a060020a03600435811690602435166044356109da565b34801561036157600080fd5b506102d4610b05565b34801561037657600080fd5b5061037f610b0b565b6040805160ff9092168252519081900360200190f35b3480156103a157600080fd5b506102d4610b14565b3480156103b657600080fd5b506102d4610b1a565b3480156103cb57600080fd5b506103d4610b20565b005b3480156103e257600080fd5b506102d4610b3d565b3480156103f757600080fd5b506102d4610b5c565b34801561040c57600080fd5b506102d4610b62565b34801561042157600080fd5b506102d4610b68565b34801561043657600080fd5b5061043f610b6e565b60408051600160a060020a039092168252519081900360200190f35b34801561046757600080fd5b506102d4600160a060020a0360043516610b7d565b34801561048857600080fd5b506102d4610ba9565b34801561049d57600080fd5b506103d4610be3565b3480156104b257600080fd5b506102ab600435602435604435606435610c6b565b3480156104d357600080fd5b506102d4610cb5565b3480156104e857600080fd5b506102d4610cbb565b3480156104fd57600080fd5b506102d4610cc1565b34801561051257600080fd5b506102d4610cc7565b34801561052757600080fd5b5061043f610ccd565b34801561053c57600080fd5b50610212610cdc565b34801561055157600080fd5b506102d4600435602435604435610d34565b34801561056f57600080fd5b506102ab600160a060020a0360043516602435610d69565b34801561059357600080fd5b506102d4600160a060020a0360043516602435610e3b565b3480156105b757600080fd5b506102d4610e71565b3480156105cc57600080fd5b506102d4610e77565b3480156105e157600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526102ab948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750610e7d9650505050505050565b34801561064a57600080fd5b506102d4610fde565b34801561065f57600080fd5b5061043f610fe4565b34801561067457600080fd5b506102ab600160a060020a0360043516602435610ff3565b34801561069857600080fd5b506102d46110ae565b3480156106ad57600080fd5b506102d4600160a060020a03600435811690602435166110b4565b3480156106d457600080fd5b506102d46004356110df565b3480156106ec57600080fd5b506103d4600160a060020a03600435166111c3565b34801561070d57600080fd5b506102d4600160a060020a0360043516611209565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107a85780601f1061077d576101008083540402835291602001916107a8565b820191906000526020600020905b81548152906001019060200180831161078b57829003601f168201915b505050505081565b336000818152601760209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b60115481565b6000610836600b54600a546112aa90919063ffffffff16565b905090565b600c54604080519182526c01000000000000000000000000330260208301526034820184905251908190036054019020600090818084831461087c57600080fd5b600b5483111561088b57600080fd5b600c546000908152601360205260409020805490849055915081156108af57600080fd5b6108b8336112c3565b3360009081526018602052604090204290556108d2610b3d565b336000908152601660205260409020549091506108f5908263ffffffff6113f416565b33600090815260166020526040902055601454610918908263ffffffff6113f416565b6014819055600e54101561092857fe5b600f805473ffffffffffffffffffffffffffffffffffffffff191633179055601081905543601155610958611404565b600754600c54604080518481526020810193909352828101919091525133917fcf6fbb9dcea7d07263ab4f5c3a92f53af33dffc421d9d121e1c74b307e68189d919081900360600190a260408051828152905133916000916000805160206118688339815191529181900360200190a350600195945050505050565b60055490565b60006109e5846112c3565b6109ee836112c3565b600160a060020a038085166000818152601860209081526040808320429081905594881683528083209490945591815260169091522054610a35908363ffffffff6114a516565b600160a060020a0385166000908152601660209081526040808320939093556017815282822033835290522054610a72908363ffffffff6114a516565b600160a060020a038086166000908152601760209081526040808320338452825280832094909455918616815260169091522054610ab6908363ffffffff6113f416565b600160a060020a03808516600081815260166020908152604091829020949094558051868152905191939288169260008051602061186883398151915292918290030190a35060019392505050565b600d5481565b60045460ff1681565b600b5490565b60055481565b610b29336112c3565b336000908152601860205260409020429055565b600d546004546000916108369160ff16600a0a6032029060020a6112aa565b600c5490565b600e5481565b60145481565b600f54600160a060020a031681565b6000610b88826114ba565b600160a060020a038316600090815260166020526040902054019050919050565b6000604060020a610bd0601954604060020a426015540302811515610bca57fe5b056110df565b601a5402811515610bdd57fe5b04905090565b600154600160a060020a03163314610bfa57600080fd5b60015460008054604051600160a060020a0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b604080518381526c010000000000000000000000003302602082015260348101869052905190819003605401902060009082811115610ca957600080fd5b93909314949350505050565b60075481565b600a5481565b600b5481565b600c5481565b600054600160a060020a031681565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156107a85780601f1061077d576101008083540402835291602001916107a8565b604080518281526c01000000000000000000000000330260208201526034810185905290519081900360540190209392505050565b6000610d74336112c3565b610d7d836112c3565b3360008181526018602090815260408083204290819055600160a060020a038816845281842055928252601690522054610dbd908363ffffffff6114a516565b3360009081526016602052604080822092909255600160a060020a03851681522054610def908363ffffffff6113f416565b600160a060020a0384166000818152601660209081526040918290209390935580518581529051919233926000805160206118688339815191529281900390910190a350600192915050565b6000604060020a610e5c601954604060020a856015540302811515610bca57fe5b601a5402811515610e6957fe5b049392505050565b60085481565b60105481565b336000818152601760209081526040808320600160a060020a038816808552908352818420879055815187815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a36040517f8f4ffcb10000000000000000000000000000000000000000000000000000000081523360048201818152602483018690523060448401819052608060648501908152865160848601528651600160a060020a038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b83811015610f6d578181015183820152602001610f55565b50505050905090810190601f168015610f9a5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610fbc57600080fd5b505af1158015610fd0573d6000803e3d6000fd5b506001979650505050505050565b60065481565b600154600160a060020a031681565b60008054600160a060020a0316331461100b57600080fd5b60008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810186905290519186169263a9059cbb926044808401936020939083900390910190829087803b15801561107b57600080fd5b505af115801561108f573d6000803e3d6000fd5b505050506040513d60208110156110a557600080fd5b50519392505050565b60095481565b600160a060020a03918216600090815260176020908152604080832093909416825291909152205490565b6000808080604067b17217f7d1cf79ac682cb53f09f05cc627c887010503925067b17217f7d1cf79ac830285039450604060020a85860281151561111f57fe5b059150604060020a672aaaaaaaaa015db0660455956bccdd06651b893ad04b3919850283900501840282900566b60b60808399d01901840282900501830205604060020a600202019050848103604060020a8683010281151561117e57fe5b059350600083126111a2578284600082121561119657fe5b9060020a0293506111bb565b826000038460008212156111b257fe5b9060020a900493505b505050919050565b600054600160a060020a031633146111da57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a038116600090815260166020526040812054604060020a8280808085151561123c57600019965061129f565b600160a060020a03881660009081526018602052604090205493508315156112645760155493505b611280601a54604060020a880281151561127a57fe5b0461160b565b601954909350604060020a908402059150816000039050601554810196505b505050505050919050565b60008082116112b857600080fd5b8183811515610e6957fe5b600160a060020a038116600090815260186020526040812054151561130b57600160a060020a03821660009081526016602052604081205411156113065761130b565b6113f0565b600160a060020a038216600090815260186020526040902054421415611330576113f0565b611339826114ba565b905060008111156113c057600160a060020a03821660009081526016602052604090205461136d908263ffffffff6113f416565b600160a060020a038316600081815260166020908152604091829020939093558051848152905191927fb6ca79c9847e64c21032ebeea3266417e6a012de32b21df76a8ab204edcb953392918290030190a25b604080518281529051600160a060020a038416916000916000805160206118688339815191529181900360200190a35b5050565b8181018281101561081157600080fd5b600e54611421611412610b3d565b6014549063ffffffff6113f416565b11801561143057506027600d54105b1561143f57600d805460010190555b600d5460055461145a9160010160140a63ffffffff6112aa16565b600554600a900403600e5560075461147990600163ffffffff6113f416565b60078190556008549081151561148b57fe5b06151561149a5761149a6116f0565b600019430140600c55565b6000828211156114b457600080fd5b50900390565b600080600080600080600080601660008a600160a060020a0316600160a060020a0316815260200190815260200160002054600014156114fd57600097506115ff565b600160a060020a038916600090815260186020526040902054604060020a9750955085151561152c5760155495505b6115368987610e3b565b600160a060020a038a1660009081526016602052604090205410156115795761155e89611209565b94508442111561157057849550611579565b600097506115ff565b601b548787601554030281151561158c57fe5b059350611598846110df565b9250601b54874260155403028115156115ad57fe5b0593506115b9846110df565b600160a060020a038a16600090815260166020526040902054909250604060020a906115eb858563ffffffff6114a516565b600902028115156115f857fe5b0490508097505b50505050505050919050565b60008080805b68016a09e667f3bcc90885111561163357600285049450600190920191611611565b5b67b504f333f9de64848511611656576002949094029360001990920191611634565b604060020a8501604060020a8087030281151561166f57fe5b05915050604060020a818002819005906801ffffffffff9dac9b67666664e5e9fa0c996738bd75ed37753d68673284a0c14610924f85028490050184028390056749254026a7630acf01840283900501830282900567aaaaaaac168779080183028290050183020567b17217f7d1cf79ac8460030b02019350505050919050565b600654600854439190910390603c81026000808080848710156117965761172e8761172287606463ffffffff61182a16565b9063ffffffff6112aa16565b93506117536103e861174786606463ffffffff6114a516565b9063ffffffff61184f16565b925061178e61177f846117736107d0600b546112aa90919063ffffffff16565b9063ffffffff61182a16565b600b549063ffffffff6114a516565b600b556117f7565b6117ab8561172289606463ffffffff61182a16565b91506117c46103e861174784606463ffffffff6114a516565b90506117f36117e4826117736107d0600b546112aa90919063ffffffff16565b600b549063ffffffff6113f416565b600b555b43600655600954600b54101561180e57600954600b555b600a54600b54111561182157600a54600b555b50505050505050565b818102821580611844575081838281151561184157fe5b04145b151561081157600080fd5b600081831115611860575080610811565b50909190505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820d0ba7f7ed2eadd4840dbb112646dfd1d303c6a346decb8cea12c3dd076c576890029

Swarm Source

bzzr://d0ba7f7ed2eadd4840dbb112646dfd1d303c6a346decb8cea12c3dd076c57689

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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