Contract 0xd01a5280fc9bec93ea29983e2c46d8386a572471

Contract Overview

Balance:
1.993699723553608506 Ether
TxHash Block Age From To Value [TxFee]
0x132f27a099122f2cb2d5dc32ae26f2a6e35d06d88b7012aa9d4f4e069e7ae4724426799127 days 5 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00231069
0xd52176b24f69d5ffc0bfa3e1b84b3e7465d77037f1882604bff333501567b6704426777127 days 5 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00231069
0x690c0374dfedefdfbc828e420630617ab9596ce39189ab1ca7dd6c3cbb2d4bbe4426756127 days 5 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00231069
0x66b12ebe6399b5aae0ebdcc881b7a2240a2d77cf549f568739020a948dbdb6274426729127 days 5 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00231069
0xa27320f86e045c5751e6c01614f57efbb6a83728190cab8142f162949151500a4426724127 days 5 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00033357
0xa45fb4c21fd3a6fde371b60615d271dc7e2e6ae4229e5da843e922cd1ea134294426703127 days 5 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00231069
0xef14c9c1d3b7d83a268b97d8d02ce2ff3a61dfd3bd2eac27c6503dfdada388de4426701127 days 5 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00033357
0xb5345ae73dcab9196e5c901d6328e454e1e013f2cbf4b1648771b058814f8ea04426683127 days 5 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00231069
0xb3c7f4b42e660f5fcfe98f3819e769492d200c3cae46b36266fcc2516312e7ea4426653127 days 5 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00231069
0x6f167a560aa0395c0dc18a02f871dc0bd9ff0fdf03e7e93d4cc30376d94028604426636127 days 5 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00231069
0x489c0def5fed047aea92577f4d9db6e3326951f2c98f4c9e338a0a667e3ce69f4426600127 days 6 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00231069
0xd376ace8cfc8c2e2f4f69a4fdca5c7cf637b5e8cb059335aa5513143af7569b34426573127 days 6 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00231069
0xfdac88eb6ef53795ac207757d57fad97a5213fa703a124c45149332625a44a864426547127 days 6 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00231069
0x74b59f45467d85c8e700a21d903ffcefe2f2d4354b9842ca3a8b7c1490716bcb4426545127 days 6 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00033357
0x4bcebe2f78f48bece97a1c6b941264d3e501b68bddcaaaa4b51e6a55c7cae9714426525127 days 6 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00231069
0x1e501063cd6778bb56194a5beb4f9874bfb1e2b7e48b3fe2372bffb214ac63224426498127 days 6 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00231069
0x45a5f8d4ff401ca767b10e28e3a61f54170bf7d0199d19147a250d3ac9e5525b4426469127 days 6 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00231069
0x51e9f96061d1ea9e62b82efbe7e75d4930485c7982186a9ac533b402131967c24426468127 days 6 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00033357
0xcb6d272c3b4f33260dbef0a76011fa947e242ba9b9d43f0dfb6c2ae1d8de77824426442127 days 6 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00231069
0x67bf611e52fd83e58b77d5537650e48567ccd020975cb149cb1a44d6410afe244426414127 days 6 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00231069
0x105a1226ef94ac4b969e0ef952ca4ced9f75e6b2d50ded2992ce55fe69c7f9404426398127 days 6 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00231069
0x76f3dd9e056ed7f1a5dbcdfe2b65ee232c0f1cb7fd873a272d7991829727de134426372127 days 6 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00231069
0xe4f9f1336d013622a6ed18a68e0b993b0ba80de4ce6e29acab03093c4f2ba0434426345127 days 6 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00231069
0xc75857413b1763a6c03e18c4c8f39c4e81c1db14464b49000ed8f8bab70453904426319127 days 7 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00231069
0x4d5bd6018096f5b70d2ae8fa3b6cb5991834f0b7922abdcee8447e23b387388d4426299127 days 7 hrs ago0xc9b0a2f3308dbdce98741e56ab1dc3d81e078802 IN  0xd01a5280fc9bec93ea29983e2c46d8386a5724710 Ether0.00231069
[ Download CSV Export 

Latest 25 internal transaction, Click here to view more Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0x132f27a099122f2cb2d5dc32ae26f2a6e35d06d88b7012aa9d4f4e069e7ae4724426799127 days 5 hrs ago0xee8a59a44b61976413eff4ab544f664d3d0ca74a0xd01a5280fc9bec93ea29983e2c46d8386a5724710.000000000005856408 Ether
0x132f27a099122f2cb2d5dc32ae26f2a6e35d06d88b7012aa9d4f4e069e7ae4724426799127 days 5 hrs ago0xd01a5280fc9bec93ea29983e2c46d8386a5724710xee8a59a44b61976413eff4ab544f664d3d0ca74a0 Ether
0x132f27a099122f2cb2d5dc32ae26f2a6e35d06d88b7012aa9d4f4e069e7ae4724426799127 days 5 hrs ago0xd01a5280fc9bec93ea29983e2c46d8386a5724710xee8a59a44b61976413eff4ab544f664d3d0ca74a0 Ether
0xd52176b24f69d5ffc0bfa3e1b84b3e7465d77037f1882604bff333501567b6704426777127 days 5 hrs ago0xee8a59a44b61976413eff4ab544f664d3d0ca74a0xd01a5280fc9bec93ea29983e2c46d8386a5724710.000000000006507121 Ether
0xd52176b24f69d5ffc0bfa3e1b84b3e7465d77037f1882604bff333501567b6704426777127 days 5 hrs ago0xd01a5280fc9bec93ea29983e2c46d8386a5724710xee8a59a44b61976413eff4ab544f664d3d0ca74a0 Ether
0xd52176b24f69d5ffc0bfa3e1b84b3e7465d77037f1882604bff333501567b6704426777127 days 5 hrs ago0xd01a5280fc9bec93ea29983e2c46d8386a5724710xee8a59a44b61976413eff4ab544f664d3d0ca74a0 Ether
0x690c0374dfedefdfbc828e420630617ab9596ce39189ab1ca7dd6c3cbb2d4bbe4426756127 days 5 hrs ago0xee8a59a44b61976413eff4ab544f664d3d0ca74a0xd01a5280fc9bec93ea29983e2c46d8386a5724710.000000000007230135 Ether
0x690c0374dfedefdfbc828e420630617ab9596ce39189ab1ca7dd6c3cbb2d4bbe4426756127 days 5 hrs ago0xd01a5280fc9bec93ea29983e2c46d8386a5724710xee8a59a44b61976413eff4ab544f664d3d0ca74a0 Ether
0x690c0374dfedefdfbc828e420630617ab9596ce39189ab1ca7dd6c3cbb2d4bbe4426756127 days 5 hrs ago0xd01a5280fc9bec93ea29983e2c46d8386a5724710xee8a59a44b61976413eff4ab544f664d3d0ca74a0 Ether
0x66b12ebe6399b5aae0ebdcc881b7a2240a2d77cf549f568739020a948dbdb6274426729127 days 5 hrs ago0xee8a59a44b61976413eff4ab544f664d3d0ca74a0xd01a5280fc9bec93ea29983e2c46d8386a5724710.000000000008033484 Ether
0x66b12ebe6399b5aae0ebdcc881b7a2240a2d77cf549f568739020a948dbdb6274426729127 days 5 hrs ago0xd01a5280fc9bec93ea29983e2c46d8386a5724710xee8a59a44b61976413eff4ab544f664d3d0ca74a0 Ether
0x66b12ebe6399b5aae0ebdcc881b7a2240a2d77cf549f568739020a948dbdb6274426729127 days 5 hrs ago0xd01a5280fc9bec93ea29983e2c46d8386a5724710xee8a59a44b61976413eff4ab544f664d3d0ca74a0 Ether
0xa45fb4c21fd3a6fde371b60615d271dc7e2e6ae4229e5da843e922cd1ea134294426703127 days 5 hrs ago0xee8a59a44b61976413eff4ab544f664d3d0ca74a0xd01a5280fc9bec93ea29983e2c46d8386a5724710.000000000008926094 Ether
0xa45fb4c21fd3a6fde371b60615d271dc7e2e6ae4229e5da843e922cd1ea134294426703127 days 5 hrs ago0xd01a5280fc9bec93ea29983e2c46d8386a5724710xee8a59a44b61976413eff4ab544f664d3d0ca74a0 Ether
0xa45fb4c21fd3a6fde371b60615d271dc7e2e6ae4229e5da843e922cd1ea134294426703127 days 5 hrs ago0xd01a5280fc9bec93ea29983e2c46d8386a5724710xee8a59a44b61976413eff4ab544f664d3d0ca74a0 Ether
0xb5345ae73dcab9196e5c901d6328e454e1e013f2cbf4b1648771b058814f8ea04426683127 days 5 hrs ago0xee8a59a44b61976413eff4ab544f664d3d0ca74a0xd01a5280fc9bec93ea29983e2c46d8386a5724710.000000000009917883 Ether
0xb5345ae73dcab9196e5c901d6328e454e1e013f2cbf4b1648771b058814f8ea04426683127 days 5 hrs ago0xd01a5280fc9bec93ea29983e2c46d8386a5724710xee8a59a44b61976413eff4ab544f664d3d0ca74a0 Ether
0xb5345ae73dcab9196e5c901d6328e454e1e013f2cbf4b1648771b058814f8ea04426683127 days 5 hrs ago0xd01a5280fc9bec93ea29983e2c46d8386a5724710xee8a59a44b61976413eff4ab544f664d3d0ca74a0 Ether
0xb3c7f4b42e660f5fcfe98f3819e769492d200c3cae46b36266fcc2516312e7ea4426653127 days 5 hrs ago0xee8a59a44b61976413eff4ab544f664d3d0ca74a0xd01a5280fc9bec93ea29983e2c46d8386a5724710.00000000001101987 Ether
0xb3c7f4b42e660f5fcfe98f3819e769492d200c3cae46b36266fcc2516312e7ea4426653127 days 5 hrs ago0xd01a5280fc9bec93ea29983e2c46d8386a5724710xee8a59a44b61976413eff4ab544f664d3d0ca74a0 Ether
0xb3c7f4b42e660f5fcfe98f3819e769492d200c3cae46b36266fcc2516312e7ea4426653127 days 5 hrs ago0xd01a5280fc9bec93ea29983e2c46d8386a5724710xee8a59a44b61976413eff4ab544f664d3d0ca74a0 Ether
0x6f167a560aa0395c0dc18a02f871dc0bd9ff0fdf03e7e93d4cc30376d94028604426636127 days 5 hrs ago0xee8a59a44b61976413eff4ab544f664d3d0ca74a0xd01a5280fc9bec93ea29983e2c46d8386a5724710.000000000012244301 Ether
0x6f167a560aa0395c0dc18a02f871dc0bd9ff0fdf03e7e93d4cc30376d94028604426636127 days 5 hrs ago0xd01a5280fc9bec93ea29983e2c46d8386a5724710xee8a59a44b61976413eff4ab544f664d3d0ca74a0 Ether
0x6f167a560aa0395c0dc18a02f871dc0bd9ff0fdf03e7e93d4cc30376d94028604426636127 days 5 hrs ago0xd01a5280fc9bec93ea29983e2c46d8386a5724710xee8a59a44b61976413eff4ab544f664d3d0ca74a0 Ether
0x489c0def5fed047aea92577f4d9db6e3326951f2c98f4c9e338a0a667e3ce69f4426600127 days 6 hrs ago0xee8a59a44b61976413eff4ab544f664d3d0ca74a0xd01a5280fc9bec93ea29983e2c46d8386a5724710.000000000013604779 Ether
[ Download CSV Export 

Contract Source Code Verified (Exact Match)

Contract Name:
Richer3D

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes

Runs (Optimizer):
200

Contract Source Code

pragma solidity ^0.4.25;

contract Richer3D {
    using SafeMath for *;
    
    //************
    //Game Setting
    //************
    string constant public name = "Richer3D";
    string constant public symbol = "R3D";
    address constant private sysAdminAddress = 0x4A3913ce9e8882b418a0Be5A43d2C319c3F0a7Bd;
    address constant private sysInviterAddress = 0xC5E41EC7fa56C0656Bc6d7371a8706Eb9dfcBF61;
    address constant private sysDevelopAddress = 0xCf3A25b73A493F96C15c8198319F0218aE8cAA4A;
    address constant private p3dInviterAddress = 0x82Fc4514968b0c5FdDfA97ed005A01843d0E117d;
    uint256 constant cycleTime = 5 minutes;
    //************
    //Game Data
    //************
    uint256 private roundNumber;
    uint256 private dayNumber;
    uint256 private totalPlayerNumber;
    uint256 private platformBalance;
    //*************
    //Game DataBase
    //*************
    mapping(uint256=>DataModal.RoundInfo) private rInfoXrID;
    mapping(address=>DataModal.PlayerInfo) private pInfoXpAdd;
    mapping(address=>uint256) private pIDXpAdd;
    mapping(uint256=>address) private pAddXpID;
    
    //*************
    // P3D Data
    //*************
    //Ropsten
    HourglassInterface constant p3dContract = HourglassInterface(0xEE8A59A44b61976413EFf4AB544F664d3D0Ca74A);

    mapping(uint256=>uint256) private p3dDividesXroundID;

    //*************
    //Game Events
    //*************
    event newPlayerJoinGameEvent(address indexed _address,uint256 indexed _amount,bool indexed _JoinWithEth,uint256 _timestamp);
    event calculateTargetEvent(uint256 indexed _roundID);
    
    constructor() public {
        dayNumber = 1;
    }
    
    function() external payable {}
    
    //************
    //Game payable
    //************
    function joinGameWithInviterID(uint256 _inviterID) public payable {
        require(msg.value >= 0.01 ether,"You need to pay 0.01 eth at least");
        require(now.sub(rInfoXrID[roundNumber].lastCalculateTime) < cycleTime,"Waiting for settlement");
        if(pIDXpAdd[msg.sender] < 1) {
            registerWithInviterID(_inviterID);
        }
        buyCore(pInfoXpAdd[msg.sender].inviterAddress,msg.value);
        emit newPlayerJoinGameEvent(msg.sender,msg.value,true,now);
    }
    
    //********************
    // Method need Gas
    //********************
    function joinGameWithBalance(uint256 _amount) public payable {
        require(msg.value >= 0.01 ether,"You need to pay 0.01 eth at least");
        require(now.sub(rInfoXrID[roundNumber].lastCalculateTime) < cycleTime,"Waiting for settlement");
        uint256 balance = getUserBalance(msg.sender);
        require(balance >= _amount.mul(11).div(10),"balance is not enough");
        platformBalance = platformBalance.add(_amount.div(10));
        buyCore(pInfoXpAdd[msg.sender].inviterAddress,_amount);
        pInfoXpAdd[msg.sender].withDrawNumber = pInfoXpAdd[msg.sender].withDrawNumber.sub(_amount.mul(11).div(10));
        emit newPlayerJoinGameEvent(msg.sender,_amount,false,now);
    }
    
    function calculateTarget() public {
        require(now.sub(rInfoXrID[roundNumber].lastCalculateTime) >= cycleTime,"Less than cycle Time from last operation");
        //查询每日p3d分成,并提现到合约
        uint256 dividends = p3dContract.myDividends(true);
        if(dividends > 0) {
            p3dDividesXroundID[roundNumber] = p3dDividesXroundID[roundNumber].add(dividends);
            p3dContract.withdraw();
        }
        uint256 increaseBalance = getIncreaseBalance(dayNumber,roundNumber);
        uint256 targetBalance = getDailyTarget(roundNumber,dayNumber);
        if(increaseBalance >= targetBalance) {
            //购买P3D,购买金额为每日新增投资额的1%
            if(getIncreaseBalance(dayNumber,roundNumber) > 0) {
                p3dContract.buy.value(getIncreaseBalance(dayNumber,roundNumber).div(100))(p3dInviterAddress);
            }
            //continue
            dayNumber = dayNumber.add(1);
            rInfoXrID[roundNumber].totalDay = dayNumber;
            if(rInfoXrID[roundNumber].startTime == 0) {
                rInfoXrID[roundNumber].startTime = now;
                rInfoXrID[roundNumber].lastCalculateTime = now;
            } else {
                rInfoXrID[roundNumber].lastCalculateTime = rInfoXrID[roundNumber].startTime.add((cycleTime).mul(dayNumber.sub(1)));   
            }
            emit calculateTargetEvent(0);
        } else {
            //Game over, start new round
            bool haveWinner = false;
            if(dayNumber > 1) {
                sendBalanceForDevelop(roundNumber);
                haveWinner = true;
            }
            rInfoXrID[roundNumber].winnerDay = dayNumber.sub(1);
            roundNumber = roundNumber.add(1);
            dayNumber = 1;
            if(haveWinner) {
                rInfoXrID[roundNumber].bounsInitNumber = getBounsWithRoundID(roundNumber.sub(1)).div(10);
            } else {
                rInfoXrID[roundNumber].bounsInitNumber = getBounsWithRoundID(roundNumber.sub(1));
            }
            rInfoXrID[roundNumber].totalDay = 1;
            rInfoXrID[roundNumber].startTime = now;
            rInfoXrID[roundNumber].lastCalculateTime = now;
            emit calculateTargetEvent(roundNumber);
        }
    }

    function registerWithInviterID(uint256 _inviterID) private {
        totalPlayerNumber = totalPlayerNumber.add(1);
        pIDXpAdd[msg.sender] = totalPlayerNumber;
        pAddXpID[totalPlayerNumber] = msg.sender;
        pInfoXpAdd[msg.sender].inviterAddress = pAddXpID[_inviterID];
    }
    
    function buyCore(address _inviterAddress,uint256 _amount) private {
        //for inviter
        if(_inviterAddress == 0x0 || _inviterAddress == msg.sender) {
            platformBalance = platformBalance.add(_amount/10);
        } else {
            pInfoXpAdd[_inviterAddress].inviteEarnings = pInfoXpAdd[_inviterAddress].inviteEarnings.add(_amount/10);
        }
        uint256 playerIndex = rInfoXrID[roundNumber].dayInfoXDay[dayNumber].playerNumber.add(1);
        if(rInfoXrID[roundNumber].numberXaddress[msg.sender] == 0) {
            rInfoXrID[roundNumber].number = rInfoXrID[roundNumber].number.add(1);
            rInfoXrID[roundNumber].numberXaddress[msg.sender] = rInfoXrID[roundNumber].number;
            rInfoXrID[roundNumber].addressXnumber[rInfoXrID[roundNumber].number] = msg.sender;
        }
        rInfoXrID[roundNumber].dayInfoXDay[dayNumber].playerNumber = playerIndex;
        rInfoXrID[roundNumber].dayInfoXDay[dayNumber].addXIndex[playerIndex] = msg.sender;
        rInfoXrID[roundNumber].dayInfoXDay[dayNumber].indexXAddress[msg.sender] = playerIndex;
        rInfoXrID[roundNumber].dayInfoXDay[dayNumber].amountXIndex[playerIndex] = _amount;
    }
    
    function playerWithdraw(uint256 _amount) public {
        uint256 balance = getUserBalance(msg.sender);
        require(balance>=_amount,"amount out of limit");
        msg.sender.transfer(_amount);
        pInfoXpAdd[msg.sender].withDrawNumber = pInfoXpAdd[msg.sender].withDrawNumber.add(_amount);
    }
    
    function sendBalanceForDevelop(uint256 _roundID) private {
        uint256 bouns = getBounsWithRoundID(_roundID).div(5);
        sysDevelopAddress.transfer(bouns.div(2));
        sysInviterAddress.transfer(bouns.div(2));
    }
    
    //********************
    // Calculate Data
    //********************
    function getBounsWithRoundID(uint256 _roundID) private view returns(uint256 _bouns) {
        _bouns = _bouns.add(rInfoXrID[_roundID].bounsInitNumber);
        for(uint256 d=1;d<=rInfoXrID[_roundID].totalDay;d++){
            for(uint256 i=1;i<=rInfoXrID[_roundID].dayInfoXDay[d].playerNumber;i++) {
                uint256 amount = rInfoXrID[_roundID].dayInfoXDay[d].amountXIndex[i];
                _bouns = _bouns.add(amount.mul(891).div(1000));  
            }
            for(uint256 j=1;j<=rInfoXrID[_roundID].number;j++) {
                address address2 = rInfoXrID[_roundID].addressXnumber[j];
                if(d>=2) {
                    _bouns = _bouns.sub(getTransformMineInDay(address2,_roundID,d.sub(1)));
                } else {
                    _bouns = _bouns.sub(getTransformMineInDay(address2,_roundID,d));
                }
            }
        }
        return(_bouns);
    }
    
    function getIncreaseBalance(uint256 _dayID,uint256 _roundID) private view returns(uint256 _balance) {
        for(uint256 i=1;i<=rInfoXrID[_roundID].dayInfoXDay[_dayID].playerNumber;i++) {
            uint256 amount = rInfoXrID[_roundID].dayInfoXDay[_dayID].amountXIndex[i];
            _balance = _balance.add(amount);   
        }
        _balance = _balance.mul(9).div(10);
        return(_balance);
    }
    
    function getMineInfoInDay(address _userAddress,uint256 _roundID, uint256 _dayID) private view returns(uint256 _totalMine,uint256 _myMine,uint256 _additional) {
        for(uint256 i=1;i<=_dayID;i++) {
            for(uint256 j=1;j<=rInfoXrID[_roundID].dayInfoXDay[i].playerNumber;j++) {
                address userAddress = rInfoXrID[_roundID].dayInfoXDay[i].addXIndex[j];
                uint256 amount = rInfoXrID[_roundID].dayInfoXDay[i].amountXIndex[j];
                if(_totalMine == 0) {
                    _totalMine = _totalMine.add(amount.mul(5));
                    if(userAddress == _userAddress){
                        _myMine = _myMine.add(amount.mul(5));
                    }
                } else {
                    uint256 addPart = (amount.mul(5)/2).mul(_myMine)/_totalMine;
                    _totalMine = _totalMine.add(amount.mul(15).div(2));
                    if(userAddress == _userAddress){
                        _myMine = _myMine.add(amount.mul(5)).add(addPart);    
                    }else {
                        _myMine = _myMine.add(addPart);
                    }
                    _additional = _additional.add(addPart);
                }
            }
        }
        return(_totalMine,_myMine,_additional);
    }
    
    function getTransformRate(address _userAddress,uint256 _roundID,uint256 _dayID) private view returns(uint256 _rate) {
        (,uint256 userMine,) = getMineInfoInDay(_userAddress,_roundID,_dayID);
        if(userMine > 0) {
            uint256 rate = userMine.mul(4).div(1000000000000000000).add(40);
            if(rate >80)                              
                return(80);
            else
                return(rate);        
        } else {
            return(40);
        }
    }
    
    function getTransformMineInDay(address _userAddress,uint256 _roundID,uint256 _dayID) private view returns(uint256 _transformedMine) {
        (,uint256 userMine,) = getMineInfoInDay(_userAddress,_roundID,_dayID.sub(1));
        uint256 rate = getTransformRate(_userAddress,_roundID,_dayID.sub(1));
        _transformedMine = userMine.mul(rate).div(10000);
        return(_transformedMine);
    }
    
    function calculateTotalMinePay(uint256 _roundID,uint256 _dayID) private view returns(uint256 _needToPay) {
        (uint256 mine,,) = getMineInfoInDay(msg.sender,_roundID,_dayID.sub(1));
        _needToPay = mine.mul(8).div(1000);
        return(_needToPay);
    }
    
    function getDailyTarget(uint256 _roundID,uint256 _dayID) private view returns(uint256) {
        uint256 needToPay = calculateTotalMinePay(_roundID,_dayID);
        uint256 target = 0;
        if (_dayID > 20) {
            target = (SafeMath.pwr(((5).mul(_dayID).sub(100)),3).add(1000000)).mul(needToPay).div(1000000);
            return(target);
        } else {
            target = ((1000000).sub(SafeMath.pwr((100).sub((5).mul(_dayID)),3))).mul(needToPay).div(1000000);
            if(target == 0) target = 0.0063 ether;
            return(target);            
        }
    }
    
    function getUserBalance(address _userAddress) private view returns(uint256 _balance) {
        if(pIDXpAdd[_userAddress] == 0) {
            return(0);
        }
        uint256 withDrawNumber = pInfoXpAdd[_userAddress].withDrawNumber;
        uint256 totalTransformed = 0;
        for(uint256 i=1;i<=roundNumber;i++) {
            for(uint256 j=1;j<rInfoXrID[i].totalDay;j++) {
                totalTransformed = totalTransformed.add(getTransformMineInDay(_userAddress,i,j));
            }
        }
        uint256 inviteEarnings = pInfoXpAdd[_userAddress].inviteEarnings;
        _balance = totalTransformed.add(inviteEarnings).add(getBounsEarnings(_userAddress)).add(getHoldEarnings(_userAddress)).add(getUserP3DDivEarnings(_userAddress)).sub(withDrawNumber);
        return(_balance);
    }
    
    function getBounsEarnings(address _userAddress) private view returns(uint256 _bounsEarnings) {
        for(uint256 i=1;i<roundNumber;i++) {
            uint256 winnerDay = rInfoXrID[i].winnerDay;
            uint256 myAmountInWinnerDay=0;
            uint256 totalAmountInWinnerDay=0;
            if(winnerDay == 0) {
                _bounsEarnings = _bounsEarnings;
            } else {
                for(uint256 player=1;player<=rInfoXrID[i].dayInfoXDay[winnerDay].playerNumber;player++) {
                    address useraddress = rInfoXrID[i].dayInfoXDay[winnerDay].addXIndex[player];
                    uint256 amount = rInfoXrID[i].dayInfoXDay[winnerDay].amountXIndex[player];
                    if(useraddress == _userAddress) {
                        myAmountInWinnerDay = myAmountInWinnerDay.add(amount);
                    }
                    totalAmountInWinnerDay = totalAmountInWinnerDay.add(amount);
                }
                uint256 bouns = getBounsWithRoundID(i).mul(14).div(25);
                _bounsEarnings = _bounsEarnings.add(bouns.mul(myAmountInWinnerDay).div(totalAmountInWinnerDay));
            }
        }
        return(_bounsEarnings);
    }

    function getHoldEarnings(address _userAddress) private view returns(uint256 _holdEarnings) {
        for(uint256 i=1;i<roundNumber;i++) {
            uint256 winnerDay = rInfoXrID[i].winnerDay;
            if(winnerDay == 0) {
                _holdEarnings = _holdEarnings;
            } else {  
                (uint256 totalMine,uint256 myMine,) = getMineInfoInDay(_userAddress,i,rInfoXrID[i].totalDay);
                uint256 bouns = getBounsWithRoundID(i).mul(7).div(50);
                _holdEarnings = _holdEarnings.add(bouns.mul(myMine).div(totalMine));    
            }
        }
        return(_holdEarnings);
    }
    
     //查询用户P3D分成金额
    function getUserP3DDivEarnings(address _userAddress) private view returns(uint256 _myP3DDivide) {
        if(rInfoXrID[roundNumber].totalDay <= 1) {
            return(0);
        }
        for(uint256 i=1;i<roundNumber;i++) {
            uint256 p3dDay = rInfoXrID[i].totalDay;
            uint256 myAmountInp3dDay=0;
            uint256 totalAmountInP3dDay=0;
            if(p3dDay == 0) {
                _myP3DDivide = _myP3DDivide;
            } else {
                for(uint256 player=1;player<=rInfoXrID[i].dayInfoXDay[p3dDay].playerNumber;player++) {
                    address useraddress = rInfoXrID[i].dayInfoXDay[p3dDay].addXIndex[player];
                    uint256 amount = rInfoXrID[i].dayInfoXDay[p3dDay].amountXIndex[player];
                    if(useraddress == _userAddress) {
                        myAmountInp3dDay = myAmountInp3dDay.add(amount);
                    }
                    totalAmountInP3dDay = totalAmountInP3dDay.add(amount);
                }
                uint256 p3dDividesInRound = p3dDividesXroundID[i];
                _myP3DDivide = _myP3DDivide.add(p3dDividesInRound.mul(myAmountInp3dDay).div(totalAmountInP3dDay));
            }
        }
        return(_myP3DDivide);
    }
    
    //*******************
    // UI 
    //*******************
    //查询防守方地址列表
    function getDefendPlayerList() public view returns(address[]) {
        if (rInfoXrID[roundNumber].dayInfoXDay[dayNumber-1].playerNumber == 0) {
            address[] memory playerListEmpty = new address[](0);
            return(playerListEmpty);
        }        
        address[] memory playerList = new address[](rInfoXrID[roundNumber].dayInfoXDay[dayNumber-1].playerNumber);
        for(uint256 i=0;i<rInfoXrID[roundNumber].dayInfoXDay[dayNumber-1].playerNumber;i++) {
            playerList[i] = rInfoXrID[roundNumber].dayInfoXDay[dayNumber-1].addXIndex[i+1];
        }
        return(playerList);
    }
    
    //查询攻占方地址列表
    function getAttackPlayerList() public view returns(address[]) {
        address[] memory playerList = new address[](rInfoXrID[roundNumber].dayInfoXDay[dayNumber].playerNumber);
        for(uint256 i=0;i<rInfoXrID[roundNumber].dayInfoXDay[dayNumber].playerNumber;i++) {
            playerList[i] = rInfoXrID[roundNumber].dayInfoXDay[dayNumber].addXIndex[i+1];
        }
        return(playerList);
    }
    
    //查询当前矿场收益及每日目标,返回结果依次为轮次、矿场收益,今天新增的投资额,今天的目标值
    function getCurrentFieldBalanceAndTarget() public view returns(uint256 day,uint256 bouns,uint256 todayBouns,uint256 dailyTarget) {
        uint256 fieldBalance = getBounsWithRoundID(roundNumber).mul(7).div(10);
        uint256 todayBalance = getIncreaseBalance(dayNumber,roundNumber) ;
        dailyTarget = getDailyTarget(roundNumber,dayNumber);
        return(dayNumber,fieldBalance,todayBalance,dailyTarget);
    }
    
    //查询用户ID及邀请奖励
    function getUserIDAndInviterEarnings() public view returns(uint256 userID,uint256 inviteEarning) {
        return(pIDXpAdd[msg.sender],pInfoXpAdd[msg.sender].inviteEarnings);
    }
    
    //查询当前局的信息 依次返回第几局、第几轮、当前的矿石总量、本局游戏的开始时间、最近一次结算的结算时
    function getCurrentRoundInfo() public view returns(uint256 _roundID,uint256 _dayNumber,uint256 _ethMineNumber,uint256 _startTime,uint256 _lastCalculateTime) {
        DataModal.RoundInfo memory roundInfo = rInfoXrID[roundNumber];
        (uint256 totalMine,,) = getMineInfoInDay(msg.sender,roundNumber,dayNumber);
        return(roundNumber,dayNumber,totalMine,roundInfo.startTime,roundInfo.lastCalculateTime);
    }
    
    //查询用户资产,依次返回用户持有矿石数量,额外收到的矿石,当前的转化率,eth余额,本轮已经转化的eth,今天可以转化的矿石,今天可以领取的eth,是否以及领取过转化矿石
    function getUserProperty() public view returns(uint256 ethMineNumber,uint256 holdEarning,uint256 transformRate,uint256 ethBalance,uint256 ethTranslated,uint256 ethMineCouldTranslateToday,uint256 ethCouldGetToday) {
        if(pIDXpAdd[msg.sender] <1) {
            return(0,0,0,0,0,0,0);        
        }
        (,uint256 myMine,uint256 additional) = getMineInfoInDay(msg.sender,roundNumber,dayNumber);
        ethMineNumber = myMine;
        holdEarning = additional;
        transformRate = getTransformRate(msg.sender,roundNumber,dayNumber);      
        ethBalance = getUserBalance(msg.sender);
        uint256 totalTransformed = 0;
        for(uint256 i=1;i<rInfoXrID[roundNumber].totalDay;i++) {
            totalTransformed = totalTransformed.add(getTransformMineInDay(msg.sender,roundNumber,i));
        }
        ethTranslated = totalTransformed;
        ethCouldGetToday = getTransformMineInDay(msg.sender,roundNumber,dayNumber);
        ethMineCouldTranslateToday = myMine.mul(transformRate).div(10000);
        return(
            ethMineNumber,
            holdEarning,
            transformRate,
            ethBalance,
            ethTranslated,
            ethMineCouldTranslateToday,
            ethCouldGetToday
            );
    }
    
    //查询创始团队收益
    function getPlatformBalance() public view returns(uint256 _platformBalance) {
        require(msg.sender == sysAdminAddress,"Ummmmm......Only admin could do this");
        return(platformBalance);
    }
    
    //创始团队提现
    function withdrawForAdmin(address _toAddress,uint256 _amount) public {
        require(msg.sender==sysAdminAddress,"You are not the admin");
        require(platformBalance>=_amount,"Lack of balance");
        _toAddress.transfer(_amount);
        platformBalance = platformBalance.sub(_amount);
    }
    
    //团队提取P3D
    function p3dWithdrawForAdmin(address _toAddress,uint256 _amount) public {
        require(msg.sender==sysAdminAddress,"You are not the admin");
        uint256 p3dToken = p3dContract.balanceOf(address(this));
        require(_amount<=p3dToken,"You don't have so much P3DToken");
        p3dContract.transfer(_toAddress,_amount);
    }
    
    //************
    //统计后台
    //************
    function getDataOfGame() public view returns(uint256 _playerNumber,uint256 _dailyIncreased,uint256 _dailyTransform,uint256 _contractBalance,uint256 _userBalanceLeft,uint256 _platformBalance,uint256 _mineBalance,uint256 _balanceOfMine) {
        for(uint256 i=1;i<=totalPlayerNumber;i++) {
            address userAddress = pAddXpID[i];
            _userBalanceLeft = _userBalanceLeft.add(getUserBalance(userAddress));
        }
        return(
            totalPlayerNumber,
            getIncreaseBalance(dayNumber,roundNumber),
            calculateTotalMinePay(roundNumber,dayNumber),
            address(this).balance,
            _userBalanceLeft,
            platformBalance,
            getBounsWithRoundID(roundNumber),
            getBounsWithRoundID(roundNumber).mul(7).div(10)
            );
    }
    
    //查询参与用户地址列表,根据ID升序
    function getUserAddressList() public view returns(address[]) {
        address[] memory addressList = new address[](totalPlayerNumber);
        for(uint256 i=0;i<totalPlayerNumber;i++) {
            addressList[i] = pAddXpID[i+1];
        }
        return(addressList);
    }
    
    //查询用户信息列表, 依次为持有矿石数量、转化率、额外矿石收益、eth收益余额、历史eth总收益、邀请奖励、累计转化的eth
    function getUsersInfo() public view returns(uint256[7][]){
        uint256[7][] memory infoList = new uint256[7][](totalPlayerNumber);
        for(uint256 i=0;i<totalPlayerNumber;i++) {
            address userAddress = pAddXpID[i+1];
            (,uint256 myMine,uint256 additional) = getMineInfoInDay(userAddress,roundNumber,dayNumber);
            uint256 totalTransformed = 0;
            for(uint256 j=1;j<=roundNumber;j++) {
                for(uint256 k=1;k<=rInfoXrID[j].totalDay;k++) {
                    totalTransformed = totalTransformed.add(getTransformMineInDay(userAddress,j,k));
                }
            }
            infoList[i][0] = myMine ;
            infoList[i][1] = getTransformRate(userAddress,roundNumber,dayNumber);
            infoList[i][2] = additional;
            infoList[i][3] = getUserBalance(userAddress);
            infoList[i][4] = getUserBalance(userAddress).add(pInfoXpAdd[userAddress].withDrawNumber);
            infoList[i][5] = pInfoXpAdd[userAddress].inviteEarnings;
            infoList[i][6] = totalTransformed;
        }        
        return(infoList);
    }
    
    function getP3DInfo() public view returns(uint256 _p3dTokenInContract,uint256 _p3dDivInRound) {
        _p3dTokenInContract = p3dContract.balanceOf(address(this));
        _p3dDivInRound = p3dDividesXroundID[roundNumber];
        return(_p3dTokenInContract,_p3dDivInRound);
    }
    
}

//P3D合约接口
interface HourglassInterface {
    function buy(address _playerAddress) payable external returns(uint256);
    function withdraw() external;
    function myDividends(bool _includeReferralBonus) external view returns(uint256);
    function balanceOf(address _customerAddress) external view returns(uint256);
    function transfer(address _toAddress, uint256 _amountOfTokens) external returns(bool);
}

library DataModal {
    struct PlayerInfo {
        uint256 inviteEarnings;
        address inviterAddress;
        uint256 withDrawNumber;
    }
    
    struct DayInfo {
        uint256 playerNumber;
        mapping(uint256=>address) addXIndex;
        mapping(uint256=>uint256) amountXIndex;
        mapping(address=>uint256) indexXAddress;
    }
    
    struct RoundInfo {
        uint256 startTime;
        uint256 lastCalculateTime;
        uint256 bounsInitNumber;
        uint256 totalDay;
        uint256 winnerDay;
        mapping(uint256=>DayInfo) dayInfoXDay;
        mapping(uint256=>address) addressXnumber;
        mapping(address=>uint256) numberXaddress;
        uint256 number;
    }
}

library SafeMath {
    /**
    * @dev Multiplies two numbers, throws on overflow.
    */
    function mul(uint256 a, uint256 b) 
        internal 
        pure 
        returns (uint256 c) 
    {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        require(c / a == b, "SafeMath mul failed");
        return c;
    }
    
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, "SafeMath div failed");
        uint256 c = a / b;
        return c;
    } 

    /**
    * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b)
        internal
        pure
        returns (uint256) 
    {
        require(b <= a, "SafeMath sub failed");
        return a - b;
    }

    /**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b)
        internal
        pure
        returns (uint256 c) 
    {
        c = a + b;
        require(c >= a, "SafeMath add failed");
        return c;
    }
    
    /**
     * @dev gives square root of given x.
     */
    function sqrt(uint256 x)
        internal
        pure
        returns (uint256 y) 
    {
        uint256 z = ((add(x,1)) / 2);
        y = x;
        while (z < y) 
        {
            y = z;
            z = ((add((x / z),z)) / 2);
        }
    }
    
    /**
     * @dev gives square. multiplies x by x
     */
    function sq(uint256 x)
        internal
        pure
        returns (uint256)
    {
        return (mul(x,x));
    }
    
    /**
     * @dev x to the power of y 
     */
    function pwr(uint256 x, uint256 y)
        internal 
        pure 
        returns (uint256)
    {
        if (x==0)
            return (0);
        else if (y==0)
            return (1);
        else 
        {
            uint256 z = x;
            for (uint256 i=1; i < y; i++)
                z = mul(z,x);
            return (z);
        }
    }
}

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_inviterID","type":"uint256"}],"name":"joinGameWithInviterID","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"calculateTarget","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getUserAddressList","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"playerWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentRoundInfo","outputs":[{"name":"_roundID","type":"uint256"},{"name":"_dayNumber","type":"uint256"},{"name":"_ethMineNumber","type":"uint256"},{"name":"_startTime","type":"uint256"},{"name":"_lastCalculateTime","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getP3DInfo","outputs":[{"name":"_p3dTokenInContract","type":"uint256"},{"name":"_p3dDivInRound","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getUserProperty","outputs":[{"name":"ethMineNumber","type":"uint256"},{"name":"holdEarning","type":"uint256"},{"name":"transformRate","type":"uint256"},{"name":"ethBalance","type":"uint256"},{"name":"ethTranslated","type":"uint256"},{"name":"ethMineCouldTranslateToday","type":"uint256"},{"name":"ethCouldGetToday","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getDefendPlayerList","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_toAddress","type":"address"},{"name":"_amount","type":"uint256"}],"name":"withdrawForAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAttackPlayerList","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getUsersInfo","outputs":[{"name":"","type":"uint256[7][]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getDataOfGame","outputs":[{"name":"_playerNumber","type":"uint256"},{"name":"_dailyIncreased","type":"uint256"},{"name":"_dailyTransform","type":"uint256"},{"name":"_contractBalance","type":"uint256"},{"name":"_userBalanceLeft","type":"uint256"},{"name":"_platformBalance","type":"uint256"},{"name":"_mineBalance","type":"uint256"},{"name":"_balanceOfMine","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPlatformBalance","outputs":[{"name":"_platformBalance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_toAddress","type":"address"},{"name":"_amount","type":"uint256"}],"name":"p3dWithdrawForAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"joinGameWithBalance","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"getUserIDAndInviterEarnings","outputs":[{"name":"userID","type":"uint256"},{"name":"inviteEarning","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentFieldBalanceAndTarget","outputs":[{"name":"day","type":"uint256"},{"name":"bouns","type":"uint256"},{"name":"todayBouns","type":"uint256"},{"name":"dailyTarget","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":"_address","type":"address"},{"indexed":true,"name":"_amount","type":"uint256"},{"indexed":true,"name":"_JoinWithEth","type":"bool"},{"indexed":false,"name":"_timestamp","type":"uint256"}],"name":"newPlayerJoinGameEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_roundID","type":"uint256"}],"name":"calculateTargetEvent","type":"event"}]

Contract Creation Code

608060405234801561001057600080fd5b5060018055612adc806100246000396000f3006080604052600436106101065763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461010857806317e22621146101925780631cfce3861461019d578063213f44ab146101b25780635629365b14610217578063747dff421461022f5780637800a9f61461026f5780637d5640561461029d5780637f4316ec146102ea5780638c9d8300146102ff57806395d89b411461032357806399c0058c14610338578063aaa3de261461034d578063ab4215cc146103d3578063ba9bf75714610429578063bd88a04f14610450578063eafe5eec14610474578063f3f4aef31461047f578063fd9b41ff14610494575b005b34801561011457600080fd5b5061011d6104cf565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015757818101518382015260200161013f565b50505050905090810190601f1680156101845780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610106600435610506565b3480156101a957600080fd5b5061010661068d565b3480156101be57600080fd5b506101c7610bb3565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102035781810151838201526020016101eb565b505050509050019250505060405180910390f35b34801561022357600080fd5b50610106600435610c48565b34801561023b57600080fd5b50610244610d15565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561027b57600080fd5b50610284610db8565b6040805192835260208301919091528051918290030190f35b3480156102a957600080fd5b506102b2610e6d565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b3480156102f657600080fd5b506101c7610f81565b34801561030b57600080fd5b50610106600160a060020a03600435166024356110c0565b34801561032f57600080fd5b5061011d6111d6565b34801561034457600080fd5b506101c761120d565b34801561035957600080fd5b506103626112f0565b60405180806020018281038252838181518152602001915080516000925b818410156103c25760208085028401015160e080838360005b838110156103b1578181015183820152602001610399565b505050509050019260010192610380565b925050509250505060405180910390f35b3480156103df57600080fd5b506103e8611535565b604080519889526020890197909752878701959095526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b34801561043557600080fd5b5061043e611600565b60408051918252519081900360200190f35b34801561045c57600080fd5b50610106600160a060020a0360043516602435611699565b6101066004356118a5565b34801561048b57600080fd5b50610284611af9565b3480156104a057600080fd5b506104a9611b19565b604080519485526020850193909352838301919091526060830152519081900360800190f35b60408051808201909152600881527f5269636865723344000000000000000000000000000000000000000000000000602082015281565b662386f26fc1000034101561058b576040805160e560020a62461bcd02815260206004820152602160248201527f596f75206e65656420746f2070617920302e303120657468206174206c65617360448201527f7400000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000805481526004602052604090206001015461012c906105b390429063ffffffff611b6716565b10610608576040805160e560020a62461bcd02815260206004820152601660248201527f57616974696e6720666f7220736574746c656d656e7400000000000000000000604482015290519081900360640190fd5b33600090815260066020526040902054600111156106295761062981611bcc565b3360009081526005602052604090206001015461064f90600160a060020a031634611c4f565b604080514281529051600191349133917f81b572186f5714544c1771925e95e44842341edc6b270a95a5cfce9265e2f236919081900360200190a450565b6000805481526004602052604081206001015481908190819061012c906106bb90429063ffffffff611b6716565b1015610737576040805160e560020a62461bcd02815260206004820152602860248201527f4c657373207468616e206379636c652054696d652066726f6d206c617374206f60448201527f7065726174696f6e000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b604080517f688abbf700000000000000000000000000000000000000000000000000000000815260016004820152905173ee8a59a44b61976413eff4ab544f664d3d0ca74a9163688abbf79160248083019260209291908290030181600087803b1580156107a457600080fd5b505af11580156107b8573d6000803e3d6000fd5b505050506040513d60208110156107ce57600080fd5b50519350600084111561088857600080548152600860205260409020546107fb908563ffffffff611e6616565b600080548152600860205260408082209290925581517f3ccfd60b000000000000000000000000000000000000000000000000000000008152915173ee8a59a44b61976413eff4ab544f664d3d0ca74a92633ccfd60b92600480830193919282900301818387803b15801561086f57600080fd5b505af1158015610883573d6000803e3d6000fd5b505050505b610896600154600054611ec1565b92506108a6600054600154611f51565b9150818310610a865760006108bf600154600054611ec1565b111561099d5773ee8a59a44b61976413eff4ab544f664d3d0ca74a600160a060020a031663f088d54761090760646108fb600154600054611ec1565b9063ffffffff61201216565b604080517c010000000000000000000000000000000000000000000000000000000063ffffffff85160281527382fc4514968b0c5fddfa97ed005a01843d0e117d60048201529051602480830192602092919082900301818588803b15801561096f57600080fd5b505af1158015610983573d6000803e3d6000fd5b50505050506040513d602081101561099a57600080fd5b50505b600180546109b09163ffffffff611e6616565b6001819055600080548152600460205260408082206003019290925580548152205415156109fc5760008054815260046020526040808220429081905582548352912060010155610a56565b610a42610a26610a1760018054611b6790919063ffffffff16565b61012c9063ffffffff61208016565b600080548152600460205260409020549063ffffffff611e6616565b600080548152600460205260409020600101555b6040516000907f425b24ddd6e59bf46cbd00a01aa7151a499bc4256559ab23cece018cc7141a28908290a2610bad565b60009050600180541115610aa357610a9f6000546120f7565b5060015b60018054610ab69163ffffffff611b6716565b6000805481526004602081905260408220019190915554610ade90600163ffffffff611e6616565b600055600180558015610b2657610b0e600a6108fb610b096001600054611b6790919063ffffffff16565b6121b1565b60008054815260046020526040902060020155610b52565b600054610b3e90610b0990600163ffffffff611b6716565b600080548152600460205260409020600201555b600080548152600460205260408082206001600390910181905582548352818320429081905583548452828420909101558154905190917f425b24ddd6e59bf46cbd00a01aa7151a499bc4256559ab23cece018cc7141a2891a25b50505050565b6060806000600254604051908082528060200260200182016040528015610be4578160200160208202803883390190505b509150600090505b600254811015610c4257600181016000908152600760205260409020548251600160a060020a0390911690839083908110610c2357fe5b600160a060020a03909216602092830290910190910152600101610bec565b50919050565b6000610c5333612326565b905081811015610cad576040805160e560020a62461bcd02815260206004820152601360248201527f616d6f756e74206f7574206f66206c696d697400000000000000000000000000604482015290519081900360640190fd5b604051339083156108fc029084906000818181858888f19350505050158015610cda573d6000803e3d6000fd5b5033600090815260056020526040902060020154610cfe908363ffffffff611e6616565b336000908152600560205260409020600201555050565b6000806000806000610d25612a5a565b6000600460008054815260200190815260200160002060c0604051908101604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016008820154815250509150610d9433600054600154612434565b50506000546001548451602090950151919a90995091975092955091935090915050565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600091829173ee8a59a44b61976413eff4ab544f664d3d0ca74a916370a0823191602480830192602092919082900301818787803b158015610e2857600080fd5b505af1158015610e3c573d6000803e3d6000fd5b505050506040513d6020811015610e5257600080fd5b50516000805481526008602052604090205490925090509091565b600080600080600080600080600080600060016006600033600160a060020a0316600160a060020a03168152602001908152602001600020541015610ec75760009a508a9950899850889750879650869550859450610f74565b610ed633600054600154612434565b9450945050839a50829950610ef033600054600154612604565b9850610efb33612326565b975060009150600190505b60008054815260046020526040902060030154811015610f4757610f3d610f30336000548461266d565b839063ffffffff611e6616565b9150600101610f06565b819650610f593360005460015461266d565b9450610f716127106108fb868c63ffffffff61208016565b95505b5050505090919293949596565b60008054815260046020908152604080832060015460001901845260050190915281205460609182918291901515610fcc5760408051600081526020810190915293508392506110ba565b6000805481526004602090815260408083206001546000190184526005018252918290205482518181528183028101909201909252908015611018578160200160208202803883390190505b509150600090505b6000805481526004602090815260408083206001546000190184526005019091529020548110156110b65760008054815260046020908152604080832060018054600019018552600590910183528184208582018552019091529020548251600160a060020a039091169083908390811061109757fe5b600160a060020a03909216602092830290910190910152600101611020565b8193505b50505090565b33734a3913ce9e8882b418a0be5a43d2c319c3f0a7bd1461112b576040805160e560020a62461bcd02815260206004820152601560248201527f596f7520617265206e6f74207468652061646d696e0000000000000000000000604482015290519081900360640190fd5b600354811115611185576040805160e560020a62461bcd02815260206004820152600f60248201527f4c61636b206f662062616c616e63650000000000000000000000000000000000604482015290519081900360640190fd5b604051600160a060020a0383169082156108fc029083906000818181858888f193505050501580156111bb573d6000803e3d6000fd5b506003546111cf908263ffffffff611b6716565b6003555050565b60408051808201909152600381527f5233440000000000000000000000000000000000000000000000000000000000602082015281565b60008054815260046020908152604080832060015484526005018252808320548151818152818402810190930190915260609283929091801561125a578160200160208202803883390190505b509150600090505b6000805481526004602090815260408083206001548452600501909152902054811015610c4257600080548152600460209081526040808320600180548552600590910183528184208582018552019091529020548251600160a060020a03909116908390839081106112d157fe5b600160a060020a03909216602092830290910190910152600101611262565b606080600080600080600080600060025460405190808252806020026020018201604052801561133a57816020015b611327612a91565b81526020019060019003908161131f5790505b509750600096505b60025487101561152857600180880160009081526007602052604081205490549154600160a060020a03909116975061137c918891612434565b955095505060009250600191505b60005482116113df575060015b60008281526004602052604090206003015481116113d4576113ca6113bd87848461266d565b849063ffffffff611e6616565b9250600101611397565b60019091019061138a565b8488888151811015156113ee57fe5b60209081029190910101515260005460015461140b918891612604565b888881518110151561141957fe5b60209081029190910181015101528751849089908990811061143757fe5b60209081029190910101516040015261144f86612326565b888881518110151561145d57fe5b60209081029190910181015160600191909152600160a060020a0387166000908152600590915260409020600201546114a59061149988612326565b9063ffffffff611e6616565b88888151811015156114b357fe5b60209081029190910181015160800191909152600160a060020a03871660009081526005909152604090205488518990899081106114ed57fe5b602090810291909101015160a001528751839089908990811061150c57fe5b6020908102909101015160066020020152600190960195611342565b5095979650505050505050565b6000808080808080806001815b600254821161158a5750600081815260076020526040902054600160a060020a031661157d61157082612326565b879063ffffffff611e6616565b9550600190910190611542565b60025461159b600154600054611ec1565b6115a96000546001546126ce565b30600160a060020a031631896003546115c36000546121b1565b6115e4600a6108fb60076115d86000546121b1565b9063ffffffff61208016565b9950995099509950995099509950995050509091929394959697565b600033734a3913ce9e8882b418a0be5a43d2c319c3f0a7bd14611692576040805160e560020a62461bcd028152602060048201526024808201527f556d6d6d6d6d2e2e2e2e2e2e4f6e6c792061646d696e20636f756c6420646f2060448201527f7468697300000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b5060035490565b600033734a3913ce9e8882b418a0be5a43d2c319c3f0a7bd14611706576040805160e560020a62461bcd02815260206004820152601560248201527f596f7520617265206e6f74207468652061646d696e0000000000000000000000604482015290519081900360640190fd5b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ee8a59a44b61976413eff4ab544f664d3d0ca74a916370a082319160248083019260209291908290030181600087803b15801561177257600080fd5b505af1158015611786573d6000803e3d6000fd5b505050506040513d602081101561179c57600080fd5b50519050808211156117f8576040805160e560020a62461bcd02815260206004820152601f60248201527f596f7520646f6e2774206861766520736f206d75636820503344546f6b656e00604482015290519081900360640190fd5b604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038516600482015260248101849052905173ee8a59a44b61976413eff4ab544f664d3d0ca74a9163a9059cbb9160448083019260209291908290030181600087803b15801561187457600080fd5b505af1158015611888573d6000803e3d6000fd5b505050506040513d602081101561189e57600080fd5b5050505050565b6000662386f26fc1000034101561192c576040805160e560020a62461bcd02815260206004820152602160248201527f596f75206e65656420746f2070617920302e303120657468206174206c65617360448201527f7400000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000805481526004602052604090206001015461012c9061195490429063ffffffff611b6716565b106119a9576040805160e560020a62461bcd02815260206004820152601660248201527f57616974696e6720666f7220736574746c656d656e7400000000000000000000604482015290519081900360640190fd5b6119b233612326565b90506119ca600a6108fb84600b63ffffffff61208016565b811015611a21576040805160e560020a62461bcd02815260206004820152601560248201527f62616c616e6365206973206e6f7420656e6f7567680000000000000000000000604482015290519081900360640190fd5b611a44611a3583600a63ffffffff61201216565b6003549063ffffffff611e6616565b60035533600090815260056020526040902060010154611a6d90600160a060020a031683611c4f565b611aa5611a86600a6108fb85600b63ffffffff61208016565b336000908152600560205260409020600201549063ffffffff611b6716565b336000818152600560209081526040808320600201949094558351428152935191938693927f81b572186f5714544c1771925e95e44842341edc6b270a95a5cfce9265e2f236929181900390910190a45050565b336000908152600660209081526040808320546005909252909120549091565b600080600080600080611b37600a6108fb60076115d86000546121b1565b9150611b47600154600054611ec1565b9050611b57600054600154611f51565b6001549792965090945092509050565b600082821115611bc1576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820737562206661696c656400000000000000000000000000604482015290519081900360640190fd5b508082035b92915050565b600254611be090600163ffffffff611e6616565b600281905533600081815260066020908152604080832085905593825260078152838220805473ffffffffffffffffffffffffffffffffffffffff1990811685179091559482528382205492825260059052919091206001018054909216600160a060020a0391909116179055565b6000600160a060020a0383161580611c6f5750600160a060020a03831633145b15611c8c57600354611c8490600a8404611e66565b600355611ccc565b600160a060020a038316600090815260056020526040902054611cb290600a8404611e66565b600160a060020a0384166000908152600560205260409020555b600080548152600460209081526040808320600180548552600590910190925290912054611cff9163ffffffff611e6616565b6000805481526004602090815260408083203384526007019091529020549091501515611db85760008054815260046020526040902060080154611d4a90600163ffffffff611e6616565b60008054815260046020818152604080842060089081019590955583548452808420808601543380875260079092018452828620558454855292825280842094850154845260069094019052919020805473ffffffffffffffffffffffffffffffffffffffff191690911790555b6000805481526004602081815260408084206001805486526005918201845282862087905585548652848452828620815487528201845282862087875281018452828620805473ffffffffffffffffffffffffffffffffffffffff191633908117909155865487528585528387208254885283018552838720908752600301845282862087905585548652938352818520935485529290920181528183209383526002909301909252205550565b81810182811015611bc6576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820616464206661696c656400000000000000000000000000604482015290519081900360640190fd5b60006001815b60008481526004602090815260408083208884526005019091529020548211611f30575060008381526004602090815260408083208784526005018252808320848452600201909152902054611f23838263ffffffff611e6616565b9250600190910190611ec7565b611f46600a6108fb85600963ffffffff61208016565b92505b505092915050565b6000806000611f6085856126ce565b9150600090506014841115611fb457611faa620f42406108fb846115d883611499611fa36064611f9760058e63ffffffff61208016565b9063ffffffff611b6716565b600361270c565b9050809250611f49565b611ff7620f42406108fb846115d8611fe7611fa3611fd960058c63ffffffff61208016565b60649063ffffffff611b6716565b620f42409063ffffffff611b6716565b905080151561200a5750661661d10e15c0005b809250611f49565b60008082151561206c576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820646976206661696c656400000000000000000000000000604482015290519081900360640190fd5b828481151561207757fe5b04949350505050565b600082151561209157506000611bc6565b508181028183828115156120a157fe5b0414611bc6576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d617468206d756c206661696c656400000000000000000000000000604482015290519081900360640190fd5b600061210760056108fb846121b1565b905073cf3a25b73a493f96c15c8198319f0218ae8caa4a6108fc61213283600263ffffffff61201216565b6040518115909202916000818181858888f1935050505015801561215a573d6000803e3d6000fd5b5073c5e41ec7fa56c0656bc6d7371a8706eb9dfcbf616108fc61218483600263ffffffff61201216565b6040518115909202916000818181858888f193505050501580156121ac573d6000803e3d6000fd5b505050565b600081815260046020526040812060020154819081908190819081906121de90829063ffffffff611e6616565b9550600194505b600087815260046020526040902060030154851161231c57600193505b600087815260046020908152604080832088845260050190915290205484116122775760008781526004602090815260408083208884526005018252808320878452600201909152902054925061226a6115706103e86108fb8661037b63ffffffff61208016565b9550600190930192612202565b600191505b600087815260046020526040902060080154821161231157506000868152600460209081526040808320848452600601909152902054600160a060020a0316600285106122f5576122ee6122e182896122dc89600163ffffffff611b6716565b61266d565b879063ffffffff611b6716565b9550612306565b6123036122e182898861266d565b95505b60019091019061227c565b6001909401936121e5565b5050505050919050565b600160a060020a038116600090815260066020526040812054819081908190819081901515612358576000955061231c565b600160a060020a03871660009081526005602052604081206002015495509350600192505b60005483116123d757600191505b6000838152600460205260409020600301548210156123cc576123bf6123b288858561266d565b859063ffffffff611e6616565b935060019091019061238b565b60019092019161237d565b50600160a060020a03861660009081526005602052604090205461242985611f976124018a61275b565b61149961240d8c6128ae565b6114996124198e612940565b6114998c8a63ffffffff611e6616565b979650505050505050565b600080806001818080805b8885116125f657600193505b60008a815260046020908152604080832088845260050190915290205484116125eb5760008a8152600460209081526040808320888452600501825280832087845260018101835281842054600290910190925290912054600160a060020a039091169350915087151561251f576124da6124cd83600563ffffffff61208016565b899063ffffffff611e6616565b97508a600160a060020a031683600160a060020a0316141561251a5761251761250a83600563ffffffff61208016565b889063ffffffff611e6616565b96505b6125e0565b8761254d88600261253786600563ffffffff61208016565b81151561254057fe5b049063ffffffff61208016565b81151561255657fe5b0490506125726124cd60026108fb85600f63ffffffff61208016565b97508a600160a060020a031683600160a060020a031614156125ba576125b3816114996125a685600563ffffffff61208016565b8a9063ffffffff611e6616565b96506125cd565b6125ca878263ffffffff611e6616565b96505b6125dd868263ffffffff611e6616565b95505b60019093019261244b565b60019094019361243f565b505050505093509350939050565b6000806000612614868686612434565b50925050600082111561265f576126436028611499670de0b6b3a76400006108fb86600463ffffffff61208016565b905060508111156126575760509250612664565b809250612664565b602892505b50509392505050565b6000808061268c868661268787600163ffffffff611b6716565b612434565b5092506126ac905086866126a787600163ffffffff611b6716565b612604565b90506126c46127106108fb848463ffffffff61208016565b9695505050505050565b6000806126e7338561268786600163ffffffff611b6716565b5090915061270490506103e86108fb83600863ffffffff61208016565b949350505050565b600080808415156127205760009250611f49565b8315156127305760019250611f49565b5083905060015b83811015612753576127498286612080565b9150600101612737565b819250611f49565b6000806000806000806000806000600160046000805481526020019081526020016000206003015411151561279357600098506128a1565b600197505b6000548810156128a157600088815260046020526040812060030154975095508594508615156127c757612896565b600193505b60008881526004602090815260408083208a8452600501909152902054841161286c5760008881526004602090815260408083208a8452600501825280832087845260018101835281842054600290910190925290912054600160a060020a03918216945092508a1683141561284f5761284c868363ffffffff611e6616565b95505b61285f858363ffffffff611e6616565b94506001909301926127cc565b506000878152600860205260409020546128936125a6866108fb848a63ffffffff61208016565b98505b600190970196612798565b5050505050505050919050565b60006001818080805b60005485101561231c576000858152600460208190526040909120015493508315156128e257612935565b6000858152600460205260409020600301546129019088908790612434565b509250925061291960326108fb60076115d8896121b1565b9050612932611570846108fb848663ffffffff61208016565b95505b6001909401936128b7565b60006001818080808080805b6000548810156128a1576000888152600460208190526040822001549750955085945086151561297b57612a4f565b600193505b60008881526004602090815260408083208a84526005019091529020548411612a205760008881526004602090815260408083208a8452600501825280832087845260018101835281842054600290910190925290912054600160a060020a03918216945092508a16831415612a0357612a00868363ffffffff611e6616565b95505b612a13858363ffffffff611e6616565b9450600190930192612980565b612a3360196108fb600e6115d88c6121b1565b9050612a4c6125a6866108fb848a63ffffffff61208016565b98505b60019097019661294c565b60c0604051908101604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60e06040519081016040528060079060208202803883395091929150505600a165627a7a72305820cb4466c69651a6ea90e8bc9c1f36c2b199825db6551f6957f8b76c9b2028e34c0029

Swarm Source

bzzr://cb4466c69651a6ea90e8bc9c1f36c2b199825db6551f6957f8b76c9b2028e34c
Block Age Transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward