ETH Price: $3,157.28 (-3.85%)

Contract

0xE261B329EAA9a0ac456d09f8501fB0129B0C3797
 

Overview

ETH Balance

0.008274045628459601 ETH

Eth Value

$26.12 (@ $3,157.28/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer62084542018-08-25 2:05:472272 days ago1535162747IN
0xE261B329...29B0C3797
0.0008 ETH0.000910383
Award By Rnd No62084442018-08-25 2:03:122272 days ago1535162592IN
0xE261B329...29B0C3797
0 ETH0.000255843
Transfer62083802018-08-25 1:48:302272 days ago1535161710IN
0xE261B329...29B0C3797
0.0008 ETH0.000910413
Buy Key By Addr62078742018-08-24 23:45:402272 days ago1535154340IN
0xE261B329...29B0C3797
0.1 ETH0.0144886641
Transfer62077792018-08-24 23:19:502272 days ago1535152790IN
0xE261B329...29B0C3797
0.00075 ETH0.000489552
Start Game62077742018-08-24 23:18:492272 days ago1535152729IN
0xE261B329...29B0C3797
0 ETH0.000174472
0x6080604062065102018-08-24 18:21:532272 days ago1535134913IN
 Create: Plague
0 ETH0.005664342

Latest 2 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
62084442018-08-25 2:03:122272 days ago1535162592
0xE261B329...29B0C3797
0.00157673 ETH
62078742018-08-24 23:45:402272 days ago1535154340
0xE261B329...29B0C3797
0.09249922 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Plague

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-08-24
*/

pragma solidity ^0.4.24;

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
    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 sub(uint256 a, uint256 b)
        internal
        pure
        returns (uint256) 
    {
        require(b <= a, "SafeMath sub failed");
        return a - b;
    }
    
    function add(uint256 a, uint256 b)
        internal
        pure
        returns (uint256 c) 
    {
        c = a + b;
        require(c >= a, "SafeMath add failed");
        return c;
    }
    
    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);
        }
    }
    
    function sq(uint256 x)
        internal
        pure
        returns (uint256)
    {
        return (mul(x,x));
    }
    
    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 PlagueEvents {
	
	//infective person
    event onInfectiveStage
    (
        address indexed player,
        uint256 indexed rndNo,
        uint256 keys,
        uint256 eth,
        uint256 timeStamp,
		address indexed inveter
    );

    // become leader during second stage
    event onDevelopmentStage
    (
        address indexed player,
        uint256 indexed rndNo,
        uint256 eth,
        uint256 timeStamp,
		address indexed inveter
    );

    // award
    event onAward
    (
        address indexed player,
        uint256 indexed rndNo,
        uint256 eth,
        uint256 timeStamp
    );
}

contract Plague is PlagueEvents{
    using SafeMath for *;
    using KeysCalc for uint256;

    struct Round {
        uint256 eth;                // total eth
        uint256 keys;               // total keys
        uint256 startTime;          // end time
        uint256 endTime;            // end time
        uint256 infectiveEndTime;   // infective end time
        address leader;             // leader
        address infectLastPlayer;   // the player will award 10% eth
        address [11] lastInfective;  // the lastest 11 infective
        address [4] loseInfective;  // the lose infective
        bool [11] infectiveAward_m; //
        uint256 totalInfective;     // the count of this round
        uint256 inveterAmount;      // remain inveter amount of this round
        uint256 lastRoundReward;    // last round remain eth 10% + eth 4% - inveterAmount + last remain award
        uint256 exAward;            // development award
    }

    struct PlayerRound {
        uint256 eth;        // eth player has added to round
        uint256 keys;       // keys
        uint256 withdraw;   // how many eth has been withdraw
        uint256 getInveterAmount; // inverter amount
        uint256 hasGetAwardAmount;  // player has get award amount
    }

    uint256 public rndNo = 1;                                   // current round number
    uint256 public totalEth = 0;                                // total eth in all round

    uint256 constant private rndInfectiveStage_ = 10 minutes;          // round timer at iinfective stage12 hours;
    uint256 constant private rndInfectiveReadyTime_ = 1 minutes;      // round timer at infective stage ready time
    uint256 constant private rndDevelopmentStage_ = 3 minutes;       // round timer at development stage 30 minutes; 
    uint256 constant private rndDevelopmentReadyTime_ = 1 minutes;       // round timer at development stage ready time 1 hours;
    uint256 constant private allKeys_ = 100 * (10 ** 18);   // all keys count
    uint256 constant private allEths_ = 7500773437500000; // all eths count
    uint256 constant private rndIncreaseTime_ = 3 minutes;       // increase time 3 hours
    uint256 constant private developmentAwardPercent = 1;   // 0.1% reduction every 3 hours

    mapping (uint256 => Round) public round_m;                  // (rndNo => Round)
    mapping (uint256 => mapping (address => PlayerRound)) public playerRound_m;   // (rndNo => addr => PlayerRound)

    address public owner;               // owner address
    address public receiver = address(0);            // receive eth address
    uint256 public ownerWithdraw = 0;   // how many eth has been withdraw by owner
    bool public isStartGame = false;    // start game flag

    constructor()
        public
    {
        owner = msg.sender;
    }

    /**
     * @dev prevents contracts from interacting
     */
    modifier onlyHuman() 
    {
        address _addr = msg.sender;
        uint256 _codeLength;
        
        assembly {_codeLength := extcodesize(_addr)}
        require(_codeLength == 0, "sorry humans only");
        _;
    }
    
    /**
     * @dev sets boundaries for incoming tx 
     */
    modifier isWithinLimits(uint256 _eth) 
    {
        require(_eth >= 1000000000, "pocket lint: not a valid currency");
        require(_eth <= 100000000000000000000000, "no vitalik, no");
        _;    
    }

    /**
     * @dev only owner
     */
    modifier onlyOwner() 
    {
        require(owner == msg.sender, "only owner can do it");
        _;    
    }
    
    /**
     * @dev It must be human beings to call the function.
     */
    function isHuman(address _addr) private view returns (bool)
    {
        uint256 _codeLength;
        
        assembly {_codeLength := extcodesize(_addr)}
        return _codeLength == 0;
    }
   
   /**
	 * @dev player infect a person at current round
	 * 
	 */
    function buyKeys(address _inveter) private
    {
        uint256 _eth = msg.value;
        uint256 _now = now;
        uint256 _rndNo = rndNo;
        uint256 _ethUse = msg.value;

        // start next round?
        if (_now > round_m[_rndNo].endTime)
        {
            require(round_m[_rndNo].endTime + rndDevelopmentReadyTime_ < _now, "we should wait some times");
            
            uint256 lastAwardEth = (round_m[_rndNo].eth.mul(14) / 100).sub(round_m[_rndNo].inveterAmount);
            
            if(round_m[_rndNo].totalInfective < round_m[_rndNo].lastInfective.length.sub(1))
            {
                uint256 nextPlayersAward = round_m[_rndNo].lastInfective.length.sub(1).sub(round_m[_rndNo].totalInfective);
                uint256 _totalAward = round_m[_rndNo].eth.mul(30) / 100;
                _totalAward = _totalAward.add(round_m[_rndNo].lastRoundReward);
                if(round_m[_rndNo].infectLastPlayer != address(0))
                {
                    lastAwardEth = lastAwardEth.add(nextPlayersAward.mul(_totalAward.mul(3)/100));
                }
                else
                {
                    lastAwardEth = lastAwardEth.add(nextPlayersAward.mul(_totalAward.mul(4)/100));
                }
            }
            
            _rndNo = _rndNo.add(1);
            rndNo = _rndNo;
            round_m[_rndNo].startTime = _now;
            round_m[_rndNo].endTime = _now + rndInfectiveStage_;
            round_m[_rndNo].totalInfective = 0;
            round_m[_rndNo].lastRoundReward = lastAwardEth;
        }

        // infective or second stage
        if (round_m[_rndNo].keys < allKeys_)
        {
            // infection stage
            uint256 _keys = (round_m[_rndNo].eth).keysRec(_eth);
            
            if (_keys.add(round_m[_rndNo].keys) >= allKeys_)
            {
                _keys = allKeys_.sub(round_m[_rndNo].keys);

                if (round_m[_rndNo].eth >= allEths_)
                {
                    _ethUse = 0;
                } 
                else {
                    _ethUse = (allEths_).sub(round_m[_rndNo].eth);
                }

                if (_eth > _ethUse)
                {
                    // refund
                    msg.sender.transfer(_eth.sub(_ethUse));
                } 
                else {
                    // fix
                    _ethUse = _eth;
                }
                // first stage is over, record current time
                round_m[_rndNo].infectiveEndTime = _now.add(rndInfectiveReadyTime_);
                round_m[_rndNo].endTime = _now.add(rndDevelopmentStage_).add(rndInfectiveReadyTime_);
                round_m[_rndNo].infectLastPlayer = msg.sender;
            }
            else
            {
                require (_keys >= 1 * 10 ** 19, "at least 10 thound people");
                round_m[_rndNo].endTime = _now + rndInfectiveStage_;
            }
            
            round_m[_rndNo].leader = msg.sender;

            // update playerRound
            playerRound_m[_rndNo][msg.sender].keys = _keys.add(playerRound_m[_rndNo][msg.sender].keys);
            playerRound_m[_rndNo][msg.sender].eth = _ethUse.add(playerRound_m[_rndNo][msg.sender].eth);

            // update round
            round_m[_rndNo].keys = _keys.add(round_m[_rndNo].keys);
            round_m[_rndNo].eth = _ethUse.add(round_m[_rndNo].eth);

            // update global variable
            totalEth = _ethUse.add(totalEth);

            // event
            emit PlagueEvents.onInfectiveStage
            (
                msg.sender,
                _rndNo,
                _keys,
                _ethUse,
                _now,
				_inveter
            );
        } else {
            // second stage
            require(round_m[_rndNo].infectiveEndTime < _now, "The virus is being prepared...");
            
            // increase 0.05 Ether every 3 hours
            _ethUse = (((_now.sub(round_m[_rndNo].infectiveEndTime)) / rndIncreaseTime_).mul(5 * 10 ** 16)).add((5 * 10 ** 16));
            
            require(_eth >= _ethUse, "Ether amount is wrong");
            
            if(_eth > _ethUse)
            {
                msg.sender.transfer(_eth.sub(_ethUse));
            }

            round_m[_rndNo].endTime = _now + rndDevelopmentStage_;
            round_m[_rndNo].leader = msg.sender;

            // update playerRound
            playerRound_m[_rndNo][msg.sender].eth = _ethUse.add(playerRound_m[_rndNo][msg.sender].eth);

            // update round
            round_m[_rndNo].eth = _ethUse.add(round_m[_rndNo].eth);

            // update global variable
            totalEth = _ethUse.add(totalEth);
            
            // update development award
            uint256 _exAwardPercent = ((_now.sub(round_m[_rndNo].infectiveEndTime)) / rndIncreaseTime_).mul(developmentAwardPercent).add(developmentAwardPercent);
            if(_exAwardPercent >= 410)
            {
                _exAwardPercent = 410;
            }
            round_m[_rndNo].exAward = (_exAwardPercent.mul(_ethUse) / 1000).add(round_m[_rndNo].exAward);

            // event
            emit PlagueEvents.onDevelopmentStage
            (
                msg.sender,
                _rndNo,
                _ethUse,
                _now,
				_inveter
            );
        }
        
        // caculate share inveter amount
        if(_inveter != address(0) && isHuman(_inveter)) 
        {
            playerRound_m[_rndNo][_inveter].getInveterAmount = playerRound_m[_rndNo][_inveter].getInveterAmount.add(_ethUse.mul(10) / 100);
            round_m[_rndNo].inveterAmount = round_m[_rndNo].inveterAmount.add(_ethUse.mul(10) / 100);
        }
        
        round_m[_rndNo].loseInfective[round_m[_rndNo].totalInfective % 4] = round_m[_rndNo].lastInfective[round_m[_rndNo].totalInfective % 11];
        round_m[_rndNo].lastInfective[round_m[_rndNo].totalInfective % 11] = msg.sender;
        
        round_m[_rndNo].totalInfective = round_m[_rndNo].totalInfective.add(1);
    }
    
	/**
	 * @dev recommend a player
	 */
    function buyKeyByAddr(address _inveter)
        onlyHuman()
        isWithinLimits(msg.value)
        public
        payable
    {
        require(isStartGame == true, "The game hasn't started yet.");
        buyKeys(_inveter);
    }

    /**
     * @dev play
     */
    function()
        onlyHuman()
        isWithinLimits(msg.value)
        public
        payable
    {
        require(isStartGame == true, "The game hasn't started yet.");
        buyKeys(address(0));
    }
    
    /**
     * @dev Award by rndNo.
     * 0x80ec35ff
     * 0x80ec35ff0000000000000000000000000000000000000000000000000000000000000001
     */
    function awardByRndNo(uint256 _rndNo)
        onlyHuman()
        public
    {
        require(isStartGame == true, "The game hasn't started yet.");
        require(_rndNo <= rndNo, "You're running too fast");
        
        uint256 _ethOut = 0;
        uint256 _totalAward = round_m[_rndNo].eth.mul(30) / 100;
        _totalAward = _totalAward.add(round_m[_rndNo].lastRoundReward);
        _totalAward = _totalAward.add(round_m[_rndNo].exAward);
        uint256 _getAward = 0;
        
        //withdraw award
        uint256 _totalWithdraw = round_m[_rndNo].eth.mul(51) / 100;
        _totalWithdraw = _totalWithdraw.sub(round_m[_rndNo].exAward);
        _totalWithdraw = (_totalWithdraw.mul(playerRound_m[_rndNo][msg.sender].keys));
        _totalWithdraw = _totalWithdraw / round_m[_rndNo].keys;
        
        uint256 _inveterAmount = playerRound_m[_rndNo][msg.sender].getInveterAmount;
        _totalWithdraw = _totalWithdraw.add(_inveterAmount);
        uint256 _withdrawed = playerRound_m[_rndNo][msg.sender].withdraw;
        if(_totalWithdraw > _withdrawed)
        {
            _ethOut = _ethOut.add(_totalWithdraw.sub(_withdrawed));
            playerRound_m[_rndNo][msg.sender].withdraw = _totalWithdraw;
        }
        
         //lastest infect player
        if(msg.sender == round_m[_rndNo].infectLastPlayer && round_m[_rndNo].infectLastPlayer != address(0) && round_m[_rndNo].infectiveEndTime != 0)
        {
            _getAward = _getAward.add(_totalAward.mul(10)/100);
        }
        
        if(now > round_m[_rndNo].endTime)
        {
            // finally award
            if(round_m[_rndNo].leader == msg.sender)
            {
                _getAward = _getAward.add(_totalAward.mul(60)/100);
            }
            
            //finally ten person award
            for(uint256 i = 0;i < round_m[_rndNo].lastInfective.length; i = i.add(1))
            {
                if(round_m[_rndNo].lastInfective[i] == msg.sender && (round_m[_rndNo].totalInfective.sub(1) % 11) != i){
                    if(round_m[_rndNo].infectiveAward_m[i])
                        continue;
                    if(round_m[_rndNo].infectLastPlayer != address(0))
                    {
                        _getAward = _getAward.add(_totalAward.mul(3)/100);
                    }
                    else{
                        _getAward = _getAward.add(_totalAward.mul(4)/100);
                    }
                        
                    round_m[_rndNo].infectiveAward_m[i] = true;
                }
            }
        }
        _ethOut = _ethOut.add(_getAward.sub(playerRound_m[_rndNo][msg.sender].hasGetAwardAmount));
        playerRound_m[_rndNo][msg.sender].hasGetAwardAmount = _getAward;
        
        if(_ethOut != 0)
        {
            msg.sender.transfer(_ethOut); 
        }
        
        // event
        emit PlagueEvents.onAward
        (
            msg.sender,
            _rndNo,
            _ethOut,
            now
        );
    }
    
    /**
     * @dev Get player bonus data
     * 0xd982466d
     * 0xd982466d0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000028f211f6c07d3b79e0aab886d56333e4027d4f59
     * @return player's award
     * @return player's can withdraw amount
     * @return player's inveter amount
     * @return player's has been withdraw
     */
    function getPlayerAwardByRndNo(uint256 _rndNo, address _playAddr)
        view
        public
        returns (uint256, uint256, uint256, uint256)
    {
        uint256 _ethPlayerAward = 0;
        
        //withdraw award
        uint256 _totalWithdraw = round_m[_rndNo].eth.mul(51) / 100;
        _totalWithdraw = _totalWithdraw.sub(round_m[_rndNo].exAward);
        _totalWithdraw = (_totalWithdraw.mul(playerRound_m[_rndNo][_playAddr].keys));
        _totalWithdraw = _totalWithdraw / round_m[_rndNo].keys;
        
        uint256 _totalAward = round_m[_rndNo].eth.mul(30) / 100;
        _totalAward = _totalAward.add(round_m[_rndNo].lastRoundReward);
        _totalAward = _totalAward.add(round_m[_rndNo].exAward);
        
        //lastest infect player
        if(_playAddr == round_m[_rndNo].infectLastPlayer && round_m[_rndNo].infectLastPlayer != address(0) && round_m[_rndNo].infectiveEndTime != 0)
        {
            _ethPlayerAward = _ethPlayerAward.add(_totalAward.mul(10)/100);
        }
        
        if(now > round_m[_rndNo].endTime)
        {
            // finally award
            if(round_m[_rndNo].leader == _playAddr)
            {
                _ethPlayerAward = _ethPlayerAward.add(_totalAward.mul(60)/100);
            }
            
            //finally ten person award
            for(uint256 i = 0;i < round_m[_rndNo].lastInfective.length; i = i.add(1))
            {
                if(round_m[_rndNo].lastInfective[i] == _playAddr && (round_m[_rndNo].totalInfective.sub(1) % 11) != i)
                {
                    if(round_m[_rndNo].infectLastPlayer != address(0))
                    {
                        _ethPlayerAward = _ethPlayerAward.add(_totalAward.mul(3)/100);
                    }
                    else{
                        _ethPlayerAward = _ethPlayerAward.add(_totalAward.mul(4)/100);
                    }
                }
            }
        }
        
        
        return
        (
            _ethPlayerAward,
            _totalWithdraw,
            playerRound_m[_rndNo][_playAddr].getInveterAmount,
            playerRound_m[_rndNo][_playAddr].hasGetAwardAmount + playerRound_m[_rndNo][_playAddr].withdraw
        );
    }
    
    /**
     * @dev fee withdraw to receiver, everyone can do it.
     * 0x6561e6ba
     */
    function feeWithdraw()
        onlyHuman()
        public 
    {
        require(isStartGame == true, "The game hasn't started yet.");
        require(receiver != address(0), "The receiver address has not been initialized.");
        
        uint256 _total = (totalEth.mul(5) / (100));
        uint256 _withdrawed = ownerWithdraw;
        require(_total > _withdrawed, "No need to withdraw");
        ownerWithdraw = _total;
        receiver.transfer(_total.sub(_withdrawed));
    }
    
    /**
     * @dev start game
     * 0xd65ab5f2
     */
    function startGame()
        onlyOwner()
        public
    {
        round_m[1].startTime = now;
        round_m[1].endTime = now + rndInfectiveStage_;
        round_m[1].lastRoundReward = 0;
        isStartGame = true;
    }

    /**
     * @dev change owner.
     * 0x547e3f06000000000000000000000000695c7a3c1a27de4bb32cd812a8c2677e25f0b9d5
     */
    function changeReceiver(address newReceiver)
        onlyOwner()
        public
    {
        receiver = newReceiver;
    }

    /**
     * @dev returns all current round info needed for front end
     * 0x747dff42
     */
    function getCurrentRoundInfo()
        public 
        view 
        returns(uint256, uint256[2], uint256[3], address[2], uint256[6], address[11],address[4])
    {
        uint256 _rndNo = rndNo;
        uint256 _totalAwardAtRound = round_m[_rndNo].lastRoundReward.add(round_m[_rndNo].exAward).add(round_m[_rndNo].eth.mul(30) / 100);
        
        return (
            _rndNo,
            [round_m[_rndNo].eth, round_m[_rndNo].keys],
            [round_m[_rndNo].startTime, round_m[_rndNo].endTime, round_m[_rndNo].infectiveEndTime],
            [round_m[_rndNo].leader, round_m[_rndNo].infectLastPlayer],
            [getBuyPrice(), round_m[_rndNo].lastRoundReward, _totalAwardAtRound, round_m[_rndNo].inveterAmount, round_m[_rndNo].totalInfective % 11, round_m[_rndNo].exAward],
            round_m[_rndNo].lastInfective,
            round_m[_rndNo].loseInfective
        );
    }

    /**
     * @dev return the price buyer will pay for next 1 individual key during first stage.
     * 0x018a25e8
     * @return price for next key bought (in wei format)
     */
    function getBuyPrice()
        public 
        view 
        returns(uint256)
    {
        uint256 _rndNo = rndNo;
        uint256 _now = now;
        
        // start next round?
        if (_now > round_m[_rndNo].endTime)
        {
            return (750007031250000);
        }
        if (round_m[_rndNo].keys < allKeys_)
        {
            return ((round_m[_rndNo].keys.add(10000000000000000000)).ethRec(10000000000000000000));
        }
        if(round_m[_rndNo].keys >= allKeys_ && 
            round_m[_rndNo].infectiveEndTime != 0 && 
            round_m[_rndNo].infectLastPlayer != address(0) &&
            _now < round_m[_rndNo].infectiveEndTime)
        {
            return 5 * 10 ** 16;
        }
        if(round_m[_rndNo].keys >= allKeys_ && _now > round_m[_rndNo].infectiveEndTime)
        {
            // increase 0.05 Ether every 3 hours
            uint256 currentPrice = (((_now.sub(round_m[_rndNo].infectiveEndTime)) / rndIncreaseTime_).mul(5 * 10 ** 16)).add((5 * 10 ** 16));
            return currentPrice;
        }
        //second stage
        return (0);
    }
}

library KeysCalc {
    using SafeMath for *;
    /**
     * @dev calculates number of keys received given X eth 
     * @param _curEth current amount of eth in contract 
     * @param _newEth eth being spent
     * @return amount of ticket purchased
     */
    function keysRec(uint256 _curEth, uint256 _newEth)
        internal
        pure
        returns (uint256)
    {
        return(keys((_curEth).add(_newEth)).sub(keys(_curEth)));
    }
    
    /**
     * @dev calculates amount of eth received if you sold X keys 
     * @param _curKeys current amount of keys that exist 
     * @param _sellKeys amount of keys you wish to sell
     * @return amount of eth received
     */
    function ethRec(uint256 _curKeys, uint256 _sellKeys)
        internal
        pure
        returns (uint256)
    {
        return((eth(_curKeys)).sub(eth(_curKeys.sub(_sellKeys))));
    }

    /**
     * @dev calculates how many keys would exist with given an amount of eth
     * @param _eth eth "in contract"
     * @return number of keys that would exist
     */
    function keys(uint256 _eth) 
        internal
        pure
        returns(uint256)
    {
        return ((((((_eth).mul(1000000000000000000)).mul(312500000000000000000000000)).add(5624988281256103515625000000000000000000000000000000000000000000)).sqrt()).sub(74999921875000000000000000000000)) / (156250000);
    }
    
    /**
     * @dev calculates how much eth would be in contract given a number of keys
     * @param _keys number of keys "in contract" 
     * @return eth that would exists
     */
    function eth(uint256 _keys) 
        internal
        pure
        returns(uint256)  
    {
        return ((78125000).mul(_keys.sq()).add(((149999843750000).mul(_keys.mul(1000000000000000000))) / (2))) / ((1000000000000000000).sq());
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"getBuyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rndNo","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalEth","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ownerWithdraw","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newReceiver","type":"address"}],"name":"changeReceiver","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"feeWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentRoundInfo","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256[2]"},{"name":"","type":"uint256[3]"},{"name":"","type":"address[2]"},{"name":"","type":"uint256[6]"},{"name":"","type":"address[11]"},{"name":"","type":"address[4]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"round_m","outputs":[{"name":"eth","type":"uint256"},{"name":"keys","type":"uint256"},{"name":"startTime","type":"uint256"},{"name":"endTime","type":"uint256"},{"name":"infectiveEndTime","type":"uint256"},{"name":"leader","type":"address"},{"name":"infectLastPlayer","type":"address"},{"name":"totalInfective","type":"uint256"},{"name":"inveterAmount","type":"uint256"},{"name":"lastRoundReward","type":"uint256"},{"name":"exAward","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_rndNo","type":"uint256"}],"name":"awardByRndNo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"playerRound_m","outputs":[{"name":"eth","type":"uint256"},{"name":"keys","type":"uint256"},{"name":"withdraw","type":"uint256"},{"name":"getInveterAmount","type":"uint256"},{"name":"hasGetAwardAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_inveter","type":"address"}],"name":"buyKeyByAddr","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"startGame","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_rndNo","type":"uint256"},{"name":"_playAddr","type":"address"}],"name":"getPlayerAwardByRndNo","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isStartGame","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"receiver","outputs":[{"name":"","type":"address"}],"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":"player","type":"address"},{"indexed":true,"name":"rndNo","type":"uint256"},{"indexed":false,"name":"keys","type":"uint256"},{"indexed":false,"name":"eth","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"},{"indexed":true,"name":"inveter","type":"address"}],"name":"onInfectiveStage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"player","type":"address"},{"indexed":true,"name":"rndNo","type":"uint256"},{"indexed":false,"name":"eth","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"},{"indexed":true,"name":"inveter","type":"address"}],"name":"onDevelopmentStage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"player","type":"address"},{"indexed":true,"name":"rndNo","type":"uint256"},{"indexed":false,"name":"eth","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onAward","type":"event"}]

6080604052600160008181559081905560058054600160a060020a03191690556006556007805460ff1916905534801561003857600080fd5b5060048054600160a060020a031916331790556127f98061005a6000396000f3006080604052600436106100e55763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663018a25e8811461026d5780633c28308a146102945780633c3c9c23146102a95780634311de8f146102be578063547e3f06146102d35780636561e6ba146102f6578063747dff421461030b5780637e8ac5901461043e57806380ec35ff146104b65780638da5cb5b146104ce578063a05ce940146104ff578063c5960c291461054e578063d65ab5f214610562578063d982466d14610577578063e3aae11b146105c1578063f7260d3e146105ea575b33803b801561012c576040805160e560020a62461bcd02815260206004820152601160248201526000805160206127ae833981519152604482015290519081900360640190fd5b34633b9aca008110156101af576040805160e560020a62461bcd02815260206004820152602160248201527f706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6360448201527f7900000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b69152d02c7e14af6800000811115610211576040805160e560020a62461bcd02815260206004820152600e60248201527f6e6f20766974616c696b2c206e6f000000000000000000000000000000000000604482015290519081900360640190fd5b60075460ff16151560011461025e576040805160e560020a62461bcd02815260206004820152601c602482015260008051602061278e833981519152604482015290519081900360640190fd5b61026860006105ff565b505050005b34801561027957600080fd5b50610282611136565b60408051918252519081900360200190f35b3480156102a057600080fd5b506102826112ed565b3480156102b557600080fd5b506102826112f3565b3480156102ca57600080fd5b506102826112f9565b3480156102df57600080fd5b506102f4600160a060020a03600435166112ff565b005b34801561030257600080fd5b506102f4611390565b34801561031757600080fd5b50610320611583565b6040518088815260200187600260200280838360005b8381101561034e578181015183820152602001610336565b5050505090500186600360200280838360005b83811015610379578181015183820152602001610361565b5050505090500185600260200280838360005b838110156103a457818101518382015260200161038c565b5050505090500184600660200280838360005b838110156103cf5781810151838201526020016103b7565b5050505090500183600b60200280838360005b838110156103fa5781810151838201526020016103e2565b5050505090500182600460200280838360005b8381101561042557818101518382015260200161040d565b5050505090500197505050505050505060405180910390f35b34801561044a57600080fd5b5061045660043561178b565b604080519b8c5260208c019a909a528a8a019890985260608a01969096526080890194909452600160a060020a0392831660a0890152911660c087015260e086015261010085015261012084015261014083015251908190036101600190f35b3480156104c257600080fd5b506102f46004356117f1565b3480156104da57600080fd5b506104e3611dd2565b60408051600160a060020a039092168252519081900360200190f35b34801561050b57600080fd5b50610523600435600160a060020a0360243516611de1565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b6102f4600160a060020a0360043516611e19565b34801561056e57600080fd5b506102f4611fa1565b34801561058357600080fd5b5061059b600435600160a060020a036024351661208b565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156105cd57600080fd5b506105d66123f6565b604080519115158252519081900360200190f35b3480156105f657600080fd5b506104e36123ff565b60008054808252600260205260408220600301543492429291849190819081908190819088111561086357600087815260026020526040902060030154603c018811610695576040805160e560020a62461bcd02815260206004820152601960248201527f77652073686f756c64207761697420736f6d652074696d657300000000000000604482015290519081900360640190fd5b6000878152600260205260409020601881015490546106d991906064906106c390600e63ffffffff61240e16565b8115156106cc57fe5b049063ffffffff61248b16565b6000889052600260205294506106f7600b600163ffffffff61248b16565b600088815260026020526040902060170154101561081e5760008781526002602052604090206017015461074390610737600b600163ffffffff61248b16565b9063ffffffff61248b16565b60008881526002602052604090205490945060649061076990601e63ffffffff61240e16565b81151561077257fe5b600089815260026020526040902060190154919004935061079a90849063ffffffff6124eb16565b600088815260026020526040902060060154909350600160a060020a031615610802576107fb6107ee60646107d686600363ffffffff61240e16565b8115156107df57fe5b8791900463ffffffff61240e16565b869063ffffffff6124eb16565b945061081e565b61081b6107ee60646107d686600463ffffffff61240e16565b94505b61082f87600163ffffffff6124eb16565b600081815581815260026020819052604082209081018b90556102588b016003820155601781019190915560190186905596505b60008781526002602052604090206001015468056bc75e2d631000001115610c02576000878152600260205260409020546108a4908a63ffffffff61254616565b60008881526002602052604090206001015490925068056bc75e2d63100000906108d590849063ffffffff6124eb16565b10610a26576000878152600260205260409020600101546109069068056bc75e2d631000009063ffffffff61248b16565b600088815260026020526040902054909250661aa5e9e8486a601161092e5760009550610958565b60008781526002602052604090205461095590661aa5e9e8486a609063ffffffff61248b16565b95505b858911156109a257336108fc6109748b8963ffffffff61248b16565b6040518115909202916000818181858888f1935050505015801561099c573d6000803e3d6000fd5b506109a6565b8895505b6109b788603c63ffffffff6124eb16565b6000888152600260205260409020600401556109eb603c6109df8a60b463ffffffff6124eb16565b9063ffffffff6124eb16565b60008881526002602052604090206003810191909155600601805473ffffffffffffffffffffffffffffffffffffffff191633179055610aa0565b678ac7230489e80000821015610a86576040805160e560020a62461bcd02815260206004820152601960248201527f6174206c656173742031302074686f756e642070656f706c6500000000000000604482015290519081900360640190fd5b600087815260026020526040902061025889016003909101555b6000878152600260209081526040808320600501805473ffffffffffffffffffffffffffffffffffffffff19163390811790915560038352818420908452909152902060010154610af890839063ffffffff6124eb16565b60008881526003602090815260408083203384529091529020600181019190915554610b259087906124eb565b6000888152600360209081526040808320338452825280832093909355898252600290522060010154610b5f90839063ffffffff6124eb16565b6000888152600260205260409020600181019190915554610b8790879063ffffffff6124eb16565b600088815260026020526040902055600154610baa90879063ffffffff6124eb16565b60015560408051838152602081018890528082018a90529051600160a060020a038c1691899133917f6ba72b77342d975bcfca91896da50e2306b21fa4b34dc71d1beb12dbd6afc33b919081900360600190a4610f03565b6000878152600260205260409020600401548811610c6a576040805160e560020a62461bcd02815260206004820152601e60248201527f546865207669727573206973206265696e672070726570617265642e2e2e0000604482015290519081900360640190fd5b610cc166b1a2bc2ec500006109df66b1a2bc2ec5000060b4610cab600260008e8152602001908152602001600020600401548e61248b90919063ffffffff16565b811515610cb457fe5b049063ffffffff61240e16565b955085891015610d1b576040805160e560020a62461bcd02815260206004820152601560248201527f457468657220616d6f756e742069732077726f6e670000000000000000000000604482015290519081900360640190fd5b85891115610d6157336108fc610d378b8963ffffffff61248b16565b6040518115909202916000818181858888f19350505050158015610d5f573d6000803e3d6000fd5b505b600087815260026020908152604080832060b48c016003808301919091556005909101805473ffffffffffffffffffffffffffffffffffffffff191633908117909155908352818420908452909152902054610dc490879063ffffffff6124eb16565b6000888152600360209081526040808320338452825280832093909355898252600290522054610dfb90879063ffffffff6124eb16565b600088815260026020526040902055600154610e1e90879063ffffffff6124eb16565b6001908155600088815260026020526040902060040154610e5491906109df90829060b490610cab908e9063ffffffff61248b16565b905061019a8110610e64575061019a5b6000878152600260205260409020601a0154610ea3906103e8610e8d848a63ffffffff61240e16565b811515610e9657fe5b049063ffffffff6124eb16565b600088815260026020908152604091829020601a019290925580518881529182018a90528051600160a060020a038d16928a9233927f7cfc1da3c0c40e1670d11d884a3776eb3a8949e87b844c6dac43b5c9c3dc5f7e9281900390910190a45b600160a060020a038a1615801590610f1f5750610f1f8a612573565b1561101e57610f8c6064610f3a88600a63ffffffff61240e16565b811515610f4357fe5b04600360008a815260200190815260200160002060008d600160a060020a0316600160a060020a03168152602001908152602001600020600301546124eb90919063ffffffff16565b6003600089815260200190815260200160002060008c600160a060020a0316600160a060020a031681526020019081526020016000206003018190555061100b6064610fe2600a8961240e90919063ffffffff16565b811515610feb57fe5b60008a81526002602052604090206018015491900463ffffffff6124eb16565b6000888152600260205260409020601801555b60008781526002602052604090206017810154600790910190600b9006600b811061104557fe5b015460008881526002602052604090206017810154600160a060020a03909216916012909101906003166004811061107957fe5b01805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905560008781526002602052604090206017810154339160070190600b9006600b81106110cc57fe5b01805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790556000878152600260205260409020601701546111159060016124eb565b60009788526002602052604090972060170196909655505050505050505050565b600080548082526002602052604082206003015442908390821115611164576602aa209ead3c5093506112e7565b60008381526002602052604090206001015468056bc75e2d6310000011156111c9576000838152600260205260409020600101546111c290678ac7230489e80000906111b6908263ffffffff6124eb16565b9063ffffffff61257f16565b93506112e7565b60008381526002602052604090206001015468056bc75e2d6310000011801590611203575060008381526002602052604090206004015415155b80156112285750600083815260026020526040902060060154600160a060020a031615155b8015611244575060008381526002602052604090206004015482105b156112585766b1a2bc2ec5000093506112e7565b60008381526002602052604090206001015468056bc75e2d6310000011801590611292575060008381526002602052604090206004015482115b156112e2576112d866b1a2bc2ec500006109df66b1a2bc2ec5000060b4610cab600260008a8152602001908152602001600020600401548861248b90919063ffffffff16565b90508093506112e7565b600093505b50505090565b60005481565b60015481565b60065481565b600454600160a060020a03163314611361576040805160e560020a62461bcd02815260206004820152601460248201527f6f6e6c79206f776e65722063616e20646f206974000000000000000000000000604482015290519081900360640190fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008033803b80156113da576040805160e560020a62461bcd02815260206004820152601160248201526000805160206127ae833981519152604482015290519081900360640190fd5b60075460ff161515600114611427576040805160e560020a62461bcd02815260206004820152601c602482015260008051602061278e833981519152604482015290519081900360640190fd5b600554600160a060020a031615156114af576040805160e560020a62461bcd02815260206004820152602e60248201527f546865207265636569766572206164647265737320686173206e6f742062656560448201527f6e20696e697469616c697a65642e000000000000000000000000000000000000606482015290519081900360840190fd5b6001546064906114c690600563ffffffff61240e16565b8115156114cf57fe5b04935060065492508284111515611530576040805160e560020a62461bcd02815260206004820152601360248201527f4e6f206e65656420746f20776974686472617700000000000000000000000000604482015290519081900360640190fd5b6006849055600554600160a060020a03166108fc611554868663ffffffff61248b16565b6040518115909202916000818181858888f1935050505015801561157c573d6000803e3d6000fd5b5050505050565b600061158d6126f5565b611595612710565b61159d6126f5565b6115a561272f565b6115ad61274e565b6115b561276e565b6000805480825260026020526040822054909190611617906064906115e190601e63ffffffff61240e16565b8115156115ea57fe5b6000858152600260205260409020601a81015460199091015492909104916109df9163ffffffff6124eb16565b604080518082018252600085815260026020818152848320805485526001810154828601528551606081018752818401548152600382015481840152600482015481880152865180880188526005830154600160a060020a039081168252958b905293835260069091015490931690820152835160c0810190945293945085939192909190806116a5611136565b815260008881526002602081815260408084206019810154838701528186018c9052601881015460608701526017810154600b908190066080880152601a82015460a090970196909652938c905291905280516101608101918290526007830193601290930192909184919082845b8154600160a060020a0316815260019091019060200180831161171457505060408051608081019182905294965085935060049250905082845b8154600160a060020a0316815260019091019060200180831161174e57505050505090509850985098509850985098509850505090919293949596565b600260208190526000918252604090912080546001820154928201546003830154600484015460058501546006860154601787015460188801546019890154601a90990154979998969795969495600160a060020a03948516959390941693919290918b565b600080808080808033803b8015611840576040805160e560020a62461bcd02815260206004820152601160248201526000805160206127ae833981519152604482015290519081900360640190fd5b60075460ff16151560011461188d576040805160e560020a62461bcd02815260206004820152601c602482015260008051602061278e833981519152604482015290519081900360640190fd5b6000548a11156118e7576040805160e560020a62461bcd02815260206004820152601760248201527f596f752772652072756e6e696e6720746f6f2066617374000000000000000000604482015290519081900360640190fd5b60008a81526002602052604081205490995060649061190d90601e63ffffffff61240e16565b81151561191657fe5b60008c815260026020526040902060190154919004985061193e90899063ffffffff6124eb16565b60008b8152600260205260409020601a015490985061196490899063ffffffff6124eb16565b60008b815260026020526040812054919950975060649061198c90603363ffffffff61240e16565b81151561199557fe5b60008c8152600260205260409020601a015491900496506119bd90879063ffffffff61248b16565b60008b81526003602090815260408083203384529091529020600101549096506119ee90879063ffffffff61240e16565b60008b81526002602052604090206001015490965086811515611a0d57fe5b60008c8152600360208181526040808420338552909152909120015491900496509450611a40868663ffffffff6124eb16565b60008b8152600360209081526040808320338452909152902060020154909650935083861115611aac57611a8a611a7d878663ffffffff61248b16565b8a9063ffffffff6124eb16565b60008b8152600360209081526040808320338452909152902060020187905598505b60008a815260026020526040902060060154600160a060020a031633148015611aee575060008a815260026020526040902060060154600160a060020a031615155b8015611b0a575060008a81526002602052604090206004015415155b15611b4057611b3d6064611b258a600a63ffffffff61240e16565b811515611b2e57fe5b8991900463ffffffff6124eb16565b96505b60008a815260026020526040902060030154421115611d005760008a815260026020526040902060050154600160a060020a0316331415611b9457611b916064611b258a603c63ffffffff61240e16565b96505b600092505b60008a90526002602052600b831015611d005760008a8152600260205260409020339060070184600b8110611bca57fe5b0154600160a060020a0316148015611c12575060008a8152600260205260409020601701548390600b90611c0590600163ffffffff61248b16565b811515611c0e57fe5b0614155b15611ce85760008a815260026020526040902060160183600b8110611c3357fe5b602081049091015460ff601f9092166101000a90041615611c5357611ce8565b60008a815260026020526040902060060154600160a060020a031615611c9057611c896064611b258a600363ffffffff61240e16565b9650611ca9565b611ca66064611b258a600463ffffffff61240e16565b96505b60008a815260026020526040902060019060160184600b8110611cc857fe5b602091828204019190066101000a81548160ff0219169083151502179055505b611cf983600163ffffffff6124eb16565b9250611b99565b60008a8152600360209081526040808320338452909152902060040154611d3290611a7d90899063ffffffff61248b16565b60008b8152600360209081526040808320338452909152902060040188905598508815611d885760405133908a156108fc02908b906000818181858888f19350505050158015611d86573d6000803e3d6000fd5b505b604080518a815242602082015281518c9233927f067aa1d7e7bd2c0daf878a68551cbd9e1a4dbaaa1510600154c71bffbe420d86929081900390910190a350505050505050505050565b600454600160a060020a031681565b600360208181526000938452604080852090915291835291208054600182015460028301549383015460049093015491939092909185565b33803b8015611e60576040805160e560020a62461bcd02815260206004820152601160248201526000805160206127ae833981519152604482015290519081900360640190fd5b34633b9aca00811015611ee3576040805160e560020a62461bcd02815260206004820152602160248201527f706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6360448201527f7900000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b69152d02c7e14af6800000811115611f45576040805160e560020a62461bcd02815260206004820152600e60248201527f6e6f20766974616c696b2c206e6f000000000000000000000000000000000000604482015290519081900360640190fd5b60075460ff161515600114611f92576040805160e560020a62461bcd02815260206004820152601c602482015260008051602061278e833981519152604482015290519081900360640190fd5b611f9b846105ff565b50505050565b600454600160a060020a03163314612003576040805160e560020a62461bcd02815260206004820152601460248201527f6f6e6c79206f776e65722063616e20646f206974000000000000000000000000604482015290519081900360640190fd5b600160008181526002602052427fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e2819055610258017fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e3557fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2f9556007805460ff19169091179055565b60008281526002602052604081205481908190819081908190819081906064906120bc90603363ffffffff61240e16565b8115156120c557fe5b60008c8152600260205260409020601a015491900493506120ed90849063ffffffff61248b16565b60008b8152600360209081526040808320600160a060020a038e16845290915290206001015490935061212790849063ffffffff61240e16565b60008b8152600260205260409020600101549093508381151561214657fe5b60008c815260026020526040902054919004935060649061216e90601e63ffffffff61240e16565b81151561217757fe5b60008c815260026020526040902060190154919004925061219f90839063ffffffff6124eb16565b60008b8152600260205260409020601a01549092506121c590839063ffffffff6124eb16565b60008b815260026020526040902060060154909250600160a060020a038a8116911614801561220d575060008a815260026020526040902060060154600160a060020a031615155b8015612229575060008a81526002602052604090206004015415155b1561225f5761225c606461224484600a63ffffffff61240e16565b81151561224d57fe5b8691900463ffffffff6124eb16565b93505b60008a8152600260205260409020600301544211156123af5760008a815260026020526040902060050154600160a060020a038a8116911614156122b6576122b3606461224484603c63ffffffff61240e16565b93505b5060005b60008a90526002602052600b8110156123af5760008a8152600260205260409020600160a060020a038a169060070182600b81106122f457fe5b0154600160a060020a031614801561233c575060008a8152600260205260409020601701548190600b9061232f90600163ffffffff61248b16565b81151561233857fe5b0614155b156123975760008a815260026020526040902060060154600160a060020a03161561237e57612377606461224484600363ffffffff61240e16565b9350612397565b612394606461224484600463ffffffff61240e16565b93505b6123a881600163ffffffff6124eb16565b90506122ba565b50506000978852600360208181526040808b20600160a060020a039a909a168b52989052969097209586015460028701546004909701549198909691909101945092505050565b60075460ff1681565b600554600160a060020a031681565b600082151561241f57506000612485565b5081810281838281151561242f57fe5b0414612485576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d617468206d756c206661696c656400000000000000000000000000604482015290519081900360640190fd5b92915050565b6000828211156124e5576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820737562206661696c656400000000000000000000000000604482015290519081900360640190fd5b50900390565b81810182811015612485576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820616464206661696c656400000000000000000000000000604482015290519081900360640190fd5b600061256c612554846125a5565b610737612567868663ffffffff6124eb16565b6125a5565b9392505050565b803b8015905b50919050565b600061256c61259c612597858563ffffffff61248b16565b612629565b61073785612629565b60006309502f906126196d03b2a1d15167e7c5699bfde000006107376126147a0dac7055469777a6122ee4310dd6c14410500f29048400000000006109df6b01027e72f1f12813088000006126088a670de0b6b3a764000063ffffffff61240e16565b9063ffffffff61240e16565b612696565b81151561262257fe5b0492915050565b600061263c670de0b6b3a76400006126e9565b612619600261266f61265c86670de0b6b3a764000063ffffffff61240e16565b65886c8f6730709063ffffffff61240e16565b81151561267857fe5b046109df612685866126e9565b6304a817c89063ffffffff61240e16565b60008060026126a68460016124eb565b8115156126af57fe5b0490508291505b818110156125795780915060026126d882858115156126d157fe5b04836124eb565b8115156126e157fe5b0490506126b6565b6000612485828361240e565b60408051808201825290600290829080388339509192915050565b6060604051908101604052806003906020820280388339509192915050565b60c0604051908101604052806006906020820280388339509192915050565b61016060405190810160405280600b906020820280388339509192915050565b608060405190810160405280600490602082028038833950919291505056005468652067616d65206861736e27742073746172746564207965742e00000000736f7272792068756d616e73206f6e6c79000000000000000000000000000000a165627a7a723058206840c5653671b9214d2a2d46ffefb10601ae6662bd6d23576c34c5cdce0ec0ea0029

Deployed Bytecode

0x6080604052600436106100e55763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663018a25e8811461026d5780633c28308a146102945780633c3c9c23146102a95780634311de8f146102be578063547e3f06146102d35780636561e6ba146102f6578063747dff421461030b5780637e8ac5901461043e57806380ec35ff146104b65780638da5cb5b146104ce578063a05ce940146104ff578063c5960c291461054e578063d65ab5f214610562578063d982466d14610577578063e3aae11b146105c1578063f7260d3e146105ea575b33803b801561012c576040805160e560020a62461bcd02815260206004820152601160248201526000805160206127ae833981519152604482015290519081900360640190fd5b34633b9aca008110156101af576040805160e560020a62461bcd02815260206004820152602160248201527f706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6360448201527f7900000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b69152d02c7e14af6800000811115610211576040805160e560020a62461bcd02815260206004820152600e60248201527f6e6f20766974616c696b2c206e6f000000000000000000000000000000000000604482015290519081900360640190fd5b60075460ff16151560011461025e576040805160e560020a62461bcd02815260206004820152601c602482015260008051602061278e833981519152604482015290519081900360640190fd5b61026860006105ff565b505050005b34801561027957600080fd5b50610282611136565b60408051918252519081900360200190f35b3480156102a057600080fd5b506102826112ed565b3480156102b557600080fd5b506102826112f3565b3480156102ca57600080fd5b506102826112f9565b3480156102df57600080fd5b506102f4600160a060020a03600435166112ff565b005b34801561030257600080fd5b506102f4611390565b34801561031757600080fd5b50610320611583565b6040518088815260200187600260200280838360005b8381101561034e578181015183820152602001610336565b5050505090500186600360200280838360005b83811015610379578181015183820152602001610361565b5050505090500185600260200280838360005b838110156103a457818101518382015260200161038c565b5050505090500184600660200280838360005b838110156103cf5781810151838201526020016103b7565b5050505090500183600b60200280838360005b838110156103fa5781810151838201526020016103e2565b5050505090500182600460200280838360005b8381101561042557818101518382015260200161040d565b5050505090500197505050505050505060405180910390f35b34801561044a57600080fd5b5061045660043561178b565b604080519b8c5260208c019a909a528a8a019890985260608a01969096526080890194909452600160a060020a0392831660a0890152911660c087015260e086015261010085015261012084015261014083015251908190036101600190f35b3480156104c257600080fd5b506102f46004356117f1565b3480156104da57600080fd5b506104e3611dd2565b60408051600160a060020a039092168252519081900360200190f35b34801561050b57600080fd5b50610523600435600160a060020a0360243516611de1565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b6102f4600160a060020a0360043516611e19565b34801561056e57600080fd5b506102f4611fa1565b34801561058357600080fd5b5061059b600435600160a060020a036024351661208b565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156105cd57600080fd5b506105d66123f6565b604080519115158252519081900360200190f35b3480156105f657600080fd5b506104e36123ff565b60008054808252600260205260408220600301543492429291849190819081908190819088111561086357600087815260026020526040902060030154603c018811610695576040805160e560020a62461bcd02815260206004820152601960248201527f77652073686f756c64207761697420736f6d652074696d657300000000000000604482015290519081900360640190fd5b6000878152600260205260409020601881015490546106d991906064906106c390600e63ffffffff61240e16565b8115156106cc57fe5b049063ffffffff61248b16565b6000889052600260205294506106f7600b600163ffffffff61248b16565b600088815260026020526040902060170154101561081e5760008781526002602052604090206017015461074390610737600b600163ffffffff61248b16565b9063ffffffff61248b16565b60008881526002602052604090205490945060649061076990601e63ffffffff61240e16565b81151561077257fe5b600089815260026020526040902060190154919004935061079a90849063ffffffff6124eb16565b600088815260026020526040902060060154909350600160a060020a031615610802576107fb6107ee60646107d686600363ffffffff61240e16565b8115156107df57fe5b8791900463ffffffff61240e16565b869063ffffffff6124eb16565b945061081e565b61081b6107ee60646107d686600463ffffffff61240e16565b94505b61082f87600163ffffffff6124eb16565b600081815581815260026020819052604082209081018b90556102588b016003820155601781019190915560190186905596505b60008781526002602052604090206001015468056bc75e2d631000001115610c02576000878152600260205260409020546108a4908a63ffffffff61254616565b60008881526002602052604090206001015490925068056bc75e2d63100000906108d590849063ffffffff6124eb16565b10610a26576000878152600260205260409020600101546109069068056bc75e2d631000009063ffffffff61248b16565b600088815260026020526040902054909250661aa5e9e8486a601161092e5760009550610958565b60008781526002602052604090205461095590661aa5e9e8486a609063ffffffff61248b16565b95505b858911156109a257336108fc6109748b8963ffffffff61248b16565b6040518115909202916000818181858888f1935050505015801561099c573d6000803e3d6000fd5b506109a6565b8895505b6109b788603c63ffffffff6124eb16565b6000888152600260205260409020600401556109eb603c6109df8a60b463ffffffff6124eb16565b9063ffffffff6124eb16565b60008881526002602052604090206003810191909155600601805473ffffffffffffffffffffffffffffffffffffffff191633179055610aa0565b678ac7230489e80000821015610a86576040805160e560020a62461bcd02815260206004820152601960248201527f6174206c656173742031302074686f756e642070656f706c6500000000000000604482015290519081900360640190fd5b600087815260026020526040902061025889016003909101555b6000878152600260209081526040808320600501805473ffffffffffffffffffffffffffffffffffffffff19163390811790915560038352818420908452909152902060010154610af890839063ffffffff6124eb16565b60008881526003602090815260408083203384529091529020600181019190915554610b259087906124eb565b6000888152600360209081526040808320338452825280832093909355898252600290522060010154610b5f90839063ffffffff6124eb16565b6000888152600260205260409020600181019190915554610b8790879063ffffffff6124eb16565b600088815260026020526040902055600154610baa90879063ffffffff6124eb16565b60015560408051838152602081018890528082018a90529051600160a060020a038c1691899133917f6ba72b77342d975bcfca91896da50e2306b21fa4b34dc71d1beb12dbd6afc33b919081900360600190a4610f03565b6000878152600260205260409020600401548811610c6a576040805160e560020a62461bcd02815260206004820152601e60248201527f546865207669727573206973206265696e672070726570617265642e2e2e0000604482015290519081900360640190fd5b610cc166b1a2bc2ec500006109df66b1a2bc2ec5000060b4610cab600260008e8152602001908152602001600020600401548e61248b90919063ffffffff16565b811515610cb457fe5b049063ffffffff61240e16565b955085891015610d1b576040805160e560020a62461bcd02815260206004820152601560248201527f457468657220616d6f756e742069732077726f6e670000000000000000000000604482015290519081900360640190fd5b85891115610d6157336108fc610d378b8963ffffffff61248b16565b6040518115909202916000818181858888f19350505050158015610d5f573d6000803e3d6000fd5b505b600087815260026020908152604080832060b48c016003808301919091556005909101805473ffffffffffffffffffffffffffffffffffffffff191633908117909155908352818420908452909152902054610dc490879063ffffffff6124eb16565b6000888152600360209081526040808320338452825280832093909355898252600290522054610dfb90879063ffffffff6124eb16565b600088815260026020526040902055600154610e1e90879063ffffffff6124eb16565b6001908155600088815260026020526040902060040154610e5491906109df90829060b490610cab908e9063ffffffff61248b16565b905061019a8110610e64575061019a5b6000878152600260205260409020601a0154610ea3906103e8610e8d848a63ffffffff61240e16565b811515610e9657fe5b049063ffffffff6124eb16565b600088815260026020908152604091829020601a019290925580518881529182018a90528051600160a060020a038d16928a9233927f7cfc1da3c0c40e1670d11d884a3776eb3a8949e87b844c6dac43b5c9c3dc5f7e9281900390910190a45b600160a060020a038a1615801590610f1f5750610f1f8a612573565b1561101e57610f8c6064610f3a88600a63ffffffff61240e16565b811515610f4357fe5b04600360008a815260200190815260200160002060008d600160a060020a0316600160a060020a03168152602001908152602001600020600301546124eb90919063ffffffff16565b6003600089815260200190815260200160002060008c600160a060020a0316600160a060020a031681526020019081526020016000206003018190555061100b6064610fe2600a8961240e90919063ffffffff16565b811515610feb57fe5b60008a81526002602052604090206018015491900463ffffffff6124eb16565b6000888152600260205260409020601801555b60008781526002602052604090206017810154600790910190600b9006600b811061104557fe5b015460008881526002602052604090206017810154600160a060020a03909216916012909101906003166004811061107957fe5b01805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905560008781526002602052604090206017810154339160070190600b9006600b81106110cc57fe5b01805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790556000878152600260205260409020601701546111159060016124eb565b60009788526002602052604090972060170196909655505050505050505050565b600080548082526002602052604082206003015442908390821115611164576602aa209ead3c5093506112e7565b60008381526002602052604090206001015468056bc75e2d6310000011156111c9576000838152600260205260409020600101546111c290678ac7230489e80000906111b6908263ffffffff6124eb16565b9063ffffffff61257f16565b93506112e7565b60008381526002602052604090206001015468056bc75e2d6310000011801590611203575060008381526002602052604090206004015415155b80156112285750600083815260026020526040902060060154600160a060020a031615155b8015611244575060008381526002602052604090206004015482105b156112585766b1a2bc2ec5000093506112e7565b60008381526002602052604090206001015468056bc75e2d6310000011801590611292575060008381526002602052604090206004015482115b156112e2576112d866b1a2bc2ec500006109df66b1a2bc2ec5000060b4610cab600260008a8152602001908152602001600020600401548861248b90919063ffffffff16565b90508093506112e7565b600093505b50505090565b60005481565b60015481565b60065481565b600454600160a060020a03163314611361576040805160e560020a62461bcd02815260206004820152601460248201527f6f6e6c79206f776e65722063616e20646f206974000000000000000000000000604482015290519081900360640190fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008033803b80156113da576040805160e560020a62461bcd02815260206004820152601160248201526000805160206127ae833981519152604482015290519081900360640190fd5b60075460ff161515600114611427576040805160e560020a62461bcd02815260206004820152601c602482015260008051602061278e833981519152604482015290519081900360640190fd5b600554600160a060020a031615156114af576040805160e560020a62461bcd02815260206004820152602e60248201527f546865207265636569766572206164647265737320686173206e6f742062656560448201527f6e20696e697469616c697a65642e000000000000000000000000000000000000606482015290519081900360840190fd5b6001546064906114c690600563ffffffff61240e16565b8115156114cf57fe5b04935060065492508284111515611530576040805160e560020a62461bcd02815260206004820152601360248201527f4e6f206e65656420746f20776974686472617700000000000000000000000000604482015290519081900360640190fd5b6006849055600554600160a060020a03166108fc611554868663ffffffff61248b16565b6040518115909202916000818181858888f1935050505015801561157c573d6000803e3d6000fd5b5050505050565b600061158d6126f5565b611595612710565b61159d6126f5565b6115a561272f565b6115ad61274e565b6115b561276e565b6000805480825260026020526040822054909190611617906064906115e190601e63ffffffff61240e16565b8115156115ea57fe5b6000858152600260205260409020601a81015460199091015492909104916109df9163ffffffff6124eb16565b604080518082018252600085815260026020818152848320805485526001810154828601528551606081018752818401548152600382015481840152600482015481880152865180880188526005830154600160a060020a039081168252958b905293835260069091015490931690820152835160c0810190945293945085939192909190806116a5611136565b815260008881526002602081815260408084206019810154838701528186018c9052601881015460608701526017810154600b908190066080880152601a82015460a090970196909652938c905291905280516101608101918290526007830193601290930192909184919082845b8154600160a060020a0316815260019091019060200180831161171457505060408051608081019182905294965085935060049250905082845b8154600160a060020a0316815260019091019060200180831161174e57505050505090509850985098509850985098509850505090919293949596565b600260208190526000918252604090912080546001820154928201546003830154600484015460058501546006860154601787015460188801546019890154601a90990154979998969795969495600160a060020a03948516959390941693919290918b565b600080808080808033803b8015611840576040805160e560020a62461bcd02815260206004820152601160248201526000805160206127ae833981519152604482015290519081900360640190fd5b60075460ff16151560011461188d576040805160e560020a62461bcd02815260206004820152601c602482015260008051602061278e833981519152604482015290519081900360640190fd5b6000548a11156118e7576040805160e560020a62461bcd02815260206004820152601760248201527f596f752772652072756e6e696e6720746f6f2066617374000000000000000000604482015290519081900360640190fd5b60008a81526002602052604081205490995060649061190d90601e63ffffffff61240e16565b81151561191657fe5b60008c815260026020526040902060190154919004985061193e90899063ffffffff6124eb16565b60008b8152600260205260409020601a015490985061196490899063ffffffff6124eb16565b60008b815260026020526040812054919950975060649061198c90603363ffffffff61240e16565b81151561199557fe5b60008c8152600260205260409020601a015491900496506119bd90879063ffffffff61248b16565b60008b81526003602090815260408083203384529091529020600101549096506119ee90879063ffffffff61240e16565b60008b81526002602052604090206001015490965086811515611a0d57fe5b60008c8152600360208181526040808420338552909152909120015491900496509450611a40868663ffffffff6124eb16565b60008b8152600360209081526040808320338452909152902060020154909650935083861115611aac57611a8a611a7d878663ffffffff61248b16565b8a9063ffffffff6124eb16565b60008b8152600360209081526040808320338452909152902060020187905598505b60008a815260026020526040902060060154600160a060020a031633148015611aee575060008a815260026020526040902060060154600160a060020a031615155b8015611b0a575060008a81526002602052604090206004015415155b15611b4057611b3d6064611b258a600a63ffffffff61240e16565b811515611b2e57fe5b8991900463ffffffff6124eb16565b96505b60008a815260026020526040902060030154421115611d005760008a815260026020526040902060050154600160a060020a0316331415611b9457611b916064611b258a603c63ffffffff61240e16565b96505b600092505b60008a90526002602052600b831015611d005760008a8152600260205260409020339060070184600b8110611bca57fe5b0154600160a060020a0316148015611c12575060008a8152600260205260409020601701548390600b90611c0590600163ffffffff61248b16565b811515611c0e57fe5b0614155b15611ce85760008a815260026020526040902060160183600b8110611c3357fe5b602081049091015460ff601f9092166101000a90041615611c5357611ce8565b60008a815260026020526040902060060154600160a060020a031615611c9057611c896064611b258a600363ffffffff61240e16565b9650611ca9565b611ca66064611b258a600463ffffffff61240e16565b96505b60008a815260026020526040902060019060160184600b8110611cc857fe5b602091828204019190066101000a81548160ff0219169083151502179055505b611cf983600163ffffffff6124eb16565b9250611b99565b60008a8152600360209081526040808320338452909152902060040154611d3290611a7d90899063ffffffff61248b16565b60008b8152600360209081526040808320338452909152902060040188905598508815611d885760405133908a156108fc02908b906000818181858888f19350505050158015611d86573d6000803e3d6000fd5b505b604080518a815242602082015281518c9233927f067aa1d7e7bd2c0daf878a68551cbd9e1a4dbaaa1510600154c71bffbe420d86929081900390910190a350505050505050505050565b600454600160a060020a031681565b600360208181526000938452604080852090915291835291208054600182015460028301549383015460049093015491939092909185565b33803b8015611e60576040805160e560020a62461bcd02815260206004820152601160248201526000805160206127ae833981519152604482015290519081900360640190fd5b34633b9aca00811015611ee3576040805160e560020a62461bcd02815260206004820152602160248201527f706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6360448201527f7900000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b69152d02c7e14af6800000811115611f45576040805160e560020a62461bcd02815260206004820152600e60248201527f6e6f20766974616c696b2c206e6f000000000000000000000000000000000000604482015290519081900360640190fd5b60075460ff161515600114611f92576040805160e560020a62461bcd02815260206004820152601c602482015260008051602061278e833981519152604482015290519081900360640190fd5b611f9b846105ff565b50505050565b600454600160a060020a03163314612003576040805160e560020a62461bcd02815260206004820152601460248201527f6f6e6c79206f776e65722063616e20646f206974000000000000000000000000604482015290519081900360640190fd5b600160008181526002602052427fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e2819055610258017fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e3557fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2f9556007805460ff19169091179055565b60008281526002602052604081205481908190819081908190819081906064906120bc90603363ffffffff61240e16565b8115156120c557fe5b60008c8152600260205260409020601a015491900493506120ed90849063ffffffff61248b16565b60008b8152600360209081526040808320600160a060020a038e16845290915290206001015490935061212790849063ffffffff61240e16565b60008b8152600260205260409020600101549093508381151561214657fe5b60008c815260026020526040902054919004935060649061216e90601e63ffffffff61240e16565b81151561217757fe5b60008c815260026020526040902060190154919004925061219f90839063ffffffff6124eb16565b60008b8152600260205260409020601a01549092506121c590839063ffffffff6124eb16565b60008b815260026020526040902060060154909250600160a060020a038a8116911614801561220d575060008a815260026020526040902060060154600160a060020a031615155b8015612229575060008a81526002602052604090206004015415155b1561225f5761225c606461224484600a63ffffffff61240e16565b81151561224d57fe5b8691900463ffffffff6124eb16565b93505b60008a8152600260205260409020600301544211156123af5760008a815260026020526040902060050154600160a060020a038a8116911614156122b6576122b3606461224484603c63ffffffff61240e16565b93505b5060005b60008a90526002602052600b8110156123af5760008a8152600260205260409020600160a060020a038a169060070182600b81106122f457fe5b0154600160a060020a031614801561233c575060008a8152600260205260409020601701548190600b9061232f90600163ffffffff61248b16565b81151561233857fe5b0614155b156123975760008a815260026020526040902060060154600160a060020a03161561237e57612377606461224484600363ffffffff61240e16565b9350612397565b612394606461224484600463ffffffff61240e16565b93505b6123a881600163ffffffff6124eb16565b90506122ba565b50506000978852600360208181526040808b20600160a060020a039a909a168b52989052969097209586015460028701546004909701549198909691909101945092505050565b60075460ff1681565b600554600160a060020a031681565b600082151561241f57506000612485565b5081810281838281151561242f57fe5b0414612485576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d617468206d756c206661696c656400000000000000000000000000604482015290519081900360640190fd5b92915050565b6000828211156124e5576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820737562206661696c656400000000000000000000000000604482015290519081900360640190fd5b50900390565b81810182811015612485576040805160e560020a62461bcd02815260206004820152601360248201527f536166654d61746820616464206661696c656400000000000000000000000000604482015290519081900360640190fd5b600061256c612554846125a5565b610737612567868663ffffffff6124eb16565b6125a5565b9392505050565b803b8015905b50919050565b600061256c61259c612597858563ffffffff61248b16565b612629565b61073785612629565b60006309502f906126196d03b2a1d15167e7c5699bfde000006107376126147a0dac7055469777a6122ee4310dd6c14410500f29048400000000006109df6b01027e72f1f12813088000006126088a670de0b6b3a764000063ffffffff61240e16565b9063ffffffff61240e16565b612696565b81151561262257fe5b0492915050565b600061263c670de0b6b3a76400006126e9565b612619600261266f61265c86670de0b6b3a764000063ffffffff61240e16565b65886c8f6730709063ffffffff61240e16565b81151561267857fe5b046109df612685866126e9565b6304a817c89063ffffffff61240e16565b60008060026126a68460016124eb565b8115156126af57fe5b0490508291505b818110156125795780915060026126d882858115156126d157fe5b04836124eb565b8115156126e157fe5b0490506126b6565b6000612485828361240e565b60408051808201825290600290829080388339509192915050565b6060604051908101604052806003906020820280388339509192915050565b60c0604051908101604052806006906020820280388339509192915050565b61016060405190810160405280600b906020820280388339509192915050565b608060405190810160405280600490602082028038833950919291505056005468652067616d65206861736e27742073746172746564207965742e00000000736f7272792068756d616e73206f6e6c79000000000000000000000000000000a165627a7a723058206840c5653671b9214d2a2d46ffefb10601ae6662bd6d23576c34c5cdce0ec0ea0029

Swarm Source

bzzr://6840c5653671b9214d2a2d46ffefb10601ae6662bd6d23576c34c5cdce0ec0ea

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  ]
[ 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.