ETH Price: $2,233.15 (+6.31%)

Contract

0xDeF439cB500CFbA0b66D29592776cB2df40c1Cf1
 

Overview

ETH Balance

0.192403154120942446 ETH

Eth Value

$429.67 (@ $2,233.15/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw Gains71033242019-01-21 10:41:222235 days ago1548067282IN
0xDeF439cB...df40c1Cf1
0 ETH0.000151643
Init Campaign71024522019-01-21 6:22:592235 days ago1548051779IN
0xDeF439cB...df40c1Cf1
0 ETH0.000847966
Close Entry70995702019-01-20 17:37:082235 days ago1548005828IN
0xDeF439cB...df40c1Cf1
0 ETH0.0024053815
Buy Torpedo70951742019-01-19 22:40:162236 days ago1547937616IN
0xDeF439cB...df40c1Cf1
0.01 ETH0.000530652
Withdraw Gains70938392019-01-19 16:52:022236 days ago1547916722IN
0xDeF439cB...df40c1Cf1
0 ETH0.000202515
Buy Torpedo With...70938182019-01-19 16:46:352236 days ago1547916395IN
0xDeF439cB...df40c1Cf1
0 ETH0.001134416
Valid Torpedo Sc...70938072019-01-19 16:44:562236 days ago1547916296IN
0xDeF439cB...df40c1Cf1
0 ETH0.000578286
Withdraw Gains70938042019-01-19 16:44:172236 days ago1547916257IN
0xDeF439cB...df40c1Cf1
0 ETH0.00016653
Buy Torpedo With...70937792019-01-19 16:35:492236 days ago1547915749IN
0xDeF439cB...df40c1Cf1
0 ETH0.0034381510.4
Init Campaign70109392019-01-04 21:26:282251 days ago1546637188IN
0xDeF439cB...df40c1Cf1
0 ETH0.0026852319
Close Entry70080572019-01-04 8:49:142252 days ago1546591754IN
0xDeF439cB...df40c1Cf1
0 ETH0.0025657416
Withdraw Gains70064682019-01-04 1:51:492252 days ago1546566709IN
0xDeF439cB...df40c1Cf1
0 ETH0.000327995
Valid Torpedo Sc...70022942019-01-03 8:05:562253 days ago1546502756IN
0xDeF439cB...df40c1Cf1
0 ETH0.000385524
Buy Torpedo With...70022792019-01-03 8:00:052253 days ago1546502405IN
0xDeF439cB...df40c1Cf1
0 ETH0.002002766
Withdraw Gains69980492019-01-02 14:29:312253 days ago1546439371IN
0xDeF439cB...df40c1Cf1
0 ETH0.000151643
Init Campaign69979352019-01-02 14:00:432253 days ago1546437643IN
0xDeF439cB...df40c1Cf1
0 ETH0.0029678821
Withdraw Gains69976052019-01-02 12:36:172253 days ago1546432577IN
0xDeF439cB...df40c1Cf1
0 ETH0.000268175.3
Close Entry69950582019-01-02 2:16:272254 days ago1546395387IN
0xDeF439cB...df40c1Cf1
0 ETH0.0030468219
Withdraw Gains69892962019-01-01 2:36:482255 days ago1546310208IN
0xDeF439cB...df40c1Cf1
0 ETH0.0000812
Valid Torpedo Sc...69892912019-01-01 2:35:592255 days ago1546310159IN
0xDeF439cB...df40c1Cf1
0 ETH0.00013312
Buy Torpedo69891372019-01-01 2:03:222255 days ago1546308202IN
0xDeF439cB...df40c1Cf1
0.01 ETH0.000804743
Withdraw Gains69853462018-12-31 10:47:212256 days ago1546253241IN
0xDeF439cB...df40c1Cf1
0 ETH0.00012153
Valid Torpedo Sc...69853232018-12-31 10:41:022256 days ago1546252862IN
0xDeF439cB...df40c1Cf1
0 ETH0.000385524
Buy Torpedo69853052018-12-31 10:35:512256 days ago1546252551IN
0xDeF439cB...df40c1Cf1
0.01 ETH0.000894893
Init Campaign69798882018-12-30 12:43:312256 days ago1546173811IN
0xDeF439cB...df40c1Cf1
0 ETH0.0029678821
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
71033242019-01-21 10:41:222235 days ago1548067282
0xDeF439cB...df40c1Cf1
0.06819428 ETH
70995702019-01-20 17:37:082235 days ago1548005828
0xDeF439cB...df40c1Cf1
0.02336367 ETH
70995702019-01-20 17:37:082235 days ago1548005828
0xDeF439cB...df40c1Cf1
0.00467273 ETH
70951742019-01-19 22:40:162236 days ago1547937616
0xDeF439cB...df40c1Cf1
0.0005 ETH
70938392019-01-19 16:52:022236 days ago1547916722
0xDeF439cB...df40c1Cf1
0.02343463 ETH
70938182019-01-19 16:46:352236 days ago1547916395
0xDeF439cB...df40c1Cf1
0.00499999 ETH
70938182019-01-19 16:46:352236 days ago1547916395
0xDeF439cB...df40c1Cf1
0.09999999 ETH
70938042019-01-19 16:44:172236 days ago1547916257
0xDeF439cB...df40c1Cf1
0.00219443 ETH
70937792019-01-19 16:35:492236 days ago1547915749
0xDeF439cB...df40c1Cf1
0.00049999 ETH
70937792019-01-19 16:35:492236 days ago1547915749
0xDeF439cB...df40c1Cf1
0.00999999 ETH
70080572019-01-04 8:49:142252 days ago1546591754
0xDeF439cB...df40c1Cf1
0.01857332 ETH
70080572019-01-04 8:49:142252 days ago1546591754
0xDeF439cB...df40c1Cf1
0.00371466 ETH
70064682019-01-04 1:51:492252 days ago1546566709
0xDeF439cB...df40c1Cf1
0.0287068 ETH
70022792019-01-03 8:00:052253 days ago1546502405
0xDeF439cB...df40c1Cf1
0.00499999 ETH
70022792019-01-03 8:00:052253 days ago1546502405
0xDeF439cB...df40c1Cf1
0.09999999 ETH
69980492019-01-02 14:29:312253 days ago1546439371
0xDeF439cB...df40c1Cf1
0.00713688 ETH
69976052019-01-02 12:36:172253 days ago1546432577
0xDeF439cB...df40c1Cf1
0.01043294 ETH
69950582019-01-02 2:16:272254 days ago1546395387
0xDeF439cB...df40c1Cf1
0.00727901 ETH
69950582019-01-02 2:16:272254 days ago1546395387
0xDeF439cB...df40c1Cf1
0.0014558 ETH
69892962019-01-01 2:36:482255 days ago1546310208
0xDeF439cB...df40c1Cf1
0.00209391 ETH
69891372019-01-01 2:03:222255 days ago1546308202
0xDeF439cB...df40c1Cf1
0.0005 ETH
69853462018-12-31 10:47:212256 days ago1546253241
0xDeF439cB...df40c1Cf1
0.00213366 ETH
69853052018-12-31 10:35:512256 days ago1546252551
0xDeF439cB...df40c1Cf1
0.0005 ETH
69778392018-12-30 4:16:212257 days ago1546143381
0xDeF439cB...df40c1Cf1
0.00546756 ETH
69777842018-12-30 4:01:302257 days ago1546142490
0xDeF439cB...df40c1Cf1
0.01630441 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TorpedoLaunchGame

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-11-28
*/

/*

Introducing "TORPEDO LAUNCH" our second HDX20 POWERED GAME running on the Ethereum Blockchain 
"TORPEDO LAUNCH" is playable @ https://torpedolaunch.io

About the game :

TORPEDO LAUNCH is a Submarine Arcade action game where the player is launching torpedoes to sink enemies boats 


How to play TORPEDO LAUNCH:

The Campaign will start after at least 1 player has played and submitted a score to the worldwide leaderboard then,
for every new highscore registered, a 24H countdown will reset.
At the end of the countdown, the 8 best players ranked on the leaderboard will share the Treasure proportionally to their scores
and everybody will receive their payout.
Every time you buy new torpedoes, 5% of the price will buy you HDX20 Token earning you Ethereum from the volume
of any HDX20 POWERED GAMES (visit https://hdx20.io for details) while 20% of the price will buy you new shares of the game.
Please remember, at every new buy, the price of the share is increasing a little and so will be your payout even if you are not
a winner therefore buying shares at the beginning of the campaign is highly advised.
You can withdraw any owned amount at all time during the game.

Play for the big WIN, Play for the TREASURE, Play for staking HDX20 TOKEN or Play for all at once...Your Choice!

We wish you Good Luck!

PAYOUTS DISTRIBUTION:
.60% to the winners of the race distributed proportionally to their score if ranked from 1st to 8th.
.25% to the community of HDX20 gamers/holders distributed as price appreciation.
.5% to developer for running, developing and expanding the platform.
.10% for provisioning the TREASURE for the next Campaign.




This product is copyrighted. Any unauthorized copy, modification, or use without express written consent from HyperDevbox is prohibited.

Copyright 2018 HyperDevbox

*/

pragma solidity ^0.4.25;


interface HDX20Interface
{
    function() payable external;
    
    
    function buyTokenFromGame( address _customerAddress , address _referrer_address ) payable external returns(uint256);
  
    function payWithToken( uint256 _eth , address _player_address ) external returns(uint256);
  
    function appreciateTokenPrice() payable external;
   
    function totalSupply() external view returns(uint256); 
    
    function ethBalanceOf(address _customerAddress) external view returns(uint256);
  
    function balanceOf(address _playerAddress) external view returns(uint256);
    
    function sellingPrice( bool includeFees) external view returns(uint256);
  
}


contract TorpedoLaunchGame
{
     HDX20Interface private HDXcontract = HDX20Interface(0x8942a5995bd168f347f7ec58f25a54a9a064f882);
     
     using SafeMath for uint256;
     using SafeMath128 for uint128;
     
     /*==============================
    =            EVENTS            =
    ==============================*/
    event OwnershipTransferred(
        
         address previousOwner,
         address nextOwner,
          uint256 timeStamp
         );
         
    event HDXcontractChanged(
        
         address previous,
         address next,
         uint256 timeStamp
         );
 
   
    
     event onWithdrawGains(
        address customerAddress,
        uint256 ethereumWithdrawn,
        uint256 timeStamp
    );
    
    event onNewScore(
        uint256       gRND,
        uint256       blockNumberTimeout,
        uint256       score,
        address       customerAddress,
        bool          newHighScore,
        bool          highscoreChanged    
        
    );
    
    
    event onNewCampaign(
        
        uint256 gRND,
        uint256  blockNumber
        
        );
        
    event onBuyTorpedo(
        address     customerAddress,
        uint256     gRND,
        uint256     torpedoBatchID,
        uint256     torpedoBatchBlockTimeout,  
        uint256     nbToken,
        uint32      torpedoBatchMultiplier  //x1, x10, x100
        );    
        
        
     event onMaintenance(
        bool        mode,
        uint256     timeStamp

        );    
        
 
        
    event onCloseEntry(
        
         uint256 gRND
         
        );    
        
    event onChangeBlockTimeAverage(
        
         uint256 blocktimeavg
         
        );    
        
    event onChangeMinimumPrice(
        
         uint256 minimum,
         uint256 timeStamp
         );
         
    event onNewName(
        
         address     customerAddress,
         bytes32     name,
         uint256     timeStamp
         );
        
    /*==============================
    =            MODIFIERS         =
    ==============================*/
    modifier onlyOwner
    {
        require (msg.sender == owner );
        _;
    }
    
    modifier onlyFromHDXToken
    {
        require (msg.sender == address( HDXcontract ));
        _;
    }
   
     modifier onlyDirectTransaction
    {
        require (msg.sender == tx.origin);
        _;
    }
   
   
     modifier isPlayer
    {
        require (PlayerData[ msg.sender].gRND !=0);
        _;
    }
    
    modifier isMaintenance
    {
        require (maintenanceMode==true);
        _;
    }
    
     modifier isNotMaintenance
    {
        require (maintenanceMode==false);
        _;
    }
   
  
    address public owner;
  
  
    address public signerAuthority = 0xf77444cE64f3F46ba6b63F6b9411dF9c589E3319;
   
    
    

    constructor () public
    {
        owner = msg.sender;
       
        
        if ( address(this).balance > 0)
        {
            owner.transfer( address(this).balance );
        }
    }
    
    function changeOwner(address _nextOwner) public
    onlyOwner
    {
        require (_nextOwner != owner);
        require(_nextOwner != address(0));
         
        emit OwnershipTransferred(owner, _nextOwner , now);
         
        owner = _nextOwner;
    }
    
    function changeSigner(address _nextSigner) public
    onlyOwner
    {
        require (_nextSigner != signerAuthority);
        require(_nextSigner != address(0));
      
        signerAuthority = _nextSigner;
    }
    
    function changeHDXcontract(address _next) public
    onlyOwner
    {
        require (_next != address( HDXcontract ));
        require( _next != address(0));
         
        emit HDXcontractChanged(address(HDXcontract), _next , now);
         
        HDXcontract  = HDX20Interface( _next);
    }
  
  
    
    function changeBlockTimeAverage( uint256 blocktimeavg) public
    onlyOwner
    {
        require ( blocktimeavg>0 );
        
       
        blockTimeAverage = blocktimeavg;
        
        emit onChangeBlockTimeAverage( blockTimeAverage );
         
    }
    
    function enableMaintenance() public
    onlyOwner
    {
        maintenanceMode = true;
        
        emit onMaintenance( maintenanceMode , now);
        
    }

    function disableMaintenance() public
    onlyOwner
    {
      
        maintenanceMode = false;
        
        emit onMaintenance( maintenanceMode , now);
        
      
        initCampaign();
    }
    
  
    function changeMinimumPrice( uint256 newmini) public
    onlyOwner
    {
      
      if (newmini>0)
      {
          minimumSharePrice = newmini;
      }
       
      emit onChangeMinimumPrice( newmini , now ); 
    }
    
    
     /*================================
    =       GAMES VARIABLES         =
    ================================*/
    
    struct PlayerData_s
    {
   
        uint256 chest;  
        uint256 payoutsTo;
        uint256 gRND;  
      
       
    }
    
    struct PlayerGameRound_s
    {
        uint256         shares;
       
        uint256         torpedoBatchID;         //0==no torpedo, otherwise 
        uint256         torpedoBatchBlockTimeout;    
        
        bytes           data;
        
        uint128         token;
        uint32[3]       packedData;         //[0] = torpedomultiplier
                                            //[1] = playerID
                                            //[2]=score
    }
    
    struct GameRoundData_s
    {
       uint256              blockNumber;
       uint256              blockNumberTimeout;
       uint256              sharePrice;
       uint256              sharePots;
       uint256              shareEthBalance;
       uint256              shareSupply;
       uint256              treasureSupply;
       
       mapping (uint32 => address)   IDtoAddress;
     
      
     
       uint256              hdx20AppreciationPayout;
       uint256              devAppreciationPayout;
       //********************************************************************************************
       uint32[16]           highscorePool;     //[0-7]  == uint32 score
                                               //[8-15] == uint32 playerID    
    
       uint32[2]            extraData;//[0]==this_TurnRound , [1]== totalPlayers
  
    }
    
  
   
    mapping (address => PlayerData_s)   private PlayerData;
    
   
    mapping (address => mapping (uint256 => PlayerGameRound_s)) private PlayerGameRound;
    
   
    mapping (uint256 => GameRoundData_s)   private GameRoundData;
    
    mapping( address => bytes32) private registeredNames;
    
    
   
    bool        private maintenanceMode=false;     
   
    uint256     private this_gRND =0;
 
  
    //85 , missing 15% for shares appreciation eg:share price increase
    uint8 constant private HDX20BuyFees = 5;
    uint8 constant private TREASUREBuyFees = 60;
    uint8 constant private BUYPercentage = 20;
    
   
    uint8 constant private DevFees = 5;
    uint8 constant private TreasureFees = 10;
    uint8 constant private AppreciationFees = 25;
  
   
    uint256 constant internal magnitude = 1e18;
  
    uint256 private genTreasure = 0;
   
    uint256 private minimumSharePrice = 0.01 ether;
    
    uint256 private blockTimeAverage = 15;  //seconds per block                          
    
 
      
    /*================================
    =       PUBLIC FUNCTIONS         =
    ================================*/
    
    //fallback will be called only from the HDX token contract to fund the game from customers's HDX20
    
     function()
     payable
     public
     onlyFromHDXToken 
    {
       
      
      
          
    }
    
    
    function ChargeTreasure() public payable
    {
        genTreasure = SafeMath.add( genTreasure , msg.value);     
    }
    
    
    function buyTreasureShares(GameRoundData_s storage  _GameRoundData , uint256 _eth ) private
    returns( uint256)
    {
        uint256 _nbshares = (_eth.mul( magnitude)) / _GameRoundData.sharePrice;
       
        _GameRoundData.treasureSupply = _GameRoundData.treasureSupply.add( _nbshares );
        
        _GameRoundData.shareSupply =   _GameRoundData.shareSupply.add( _nbshares );
        
        return( _nbshares);
    }
   
    
    function initCampaign() public
    onlyOwner
    isNotMaintenance
    {
 
        
        this_gRND++;
        
        GameRoundData_s storage _GameRoundData = GameRoundData[ this_gRND ];
      
       
        _GameRoundData.blockNumber = block.number;
        
        _GameRoundData.blockNumberTimeout = block.number + (360*10*24*3600); 
        
        uint256 _sharePrice = minimumSharePrice;
        
        _GameRoundData.sharePrice = _sharePrice;
        
        uint256 _nbshares = buyTreasureShares(_GameRoundData, genTreasure );
     
        //convert into ETH
        _nbshares = _nbshares.mul( _sharePrice ) / magnitude;
        
        //start balance   
        _GameRoundData.shareEthBalance = _nbshares;
        
        genTreasure = genTreasure.sub( _nbshares);
     
       
        emit onNewCampaign( this_gRND , block.number);
        
    }
    
    
   
    function get_TotalPayout(  GameRoundData_s storage  _GameRoundData ) private view
    returns( uint256)
    {
      
       uint256 _payout = 0;
        
       uint256 _sharePrice = _GameRoundData.sharePrice;
     
       uint256 _bet = _GameRoundData.sharePots;
           
       _payout = _payout.add( _bet.mul (_sharePrice) / magnitude );
                  
         
       uint256 _potValue = ((_GameRoundData.treasureSupply.mul( _sharePrice ) / magnitude).mul(100-DevFees-TreasureFees-AppreciationFees)) / 100;
       
       _payout = _payout.add( _potValue );
       
   
       return( _payout );
        
    }
    
    
  
    function get_PendingGains( address _player_address , uint256 _gRND) private view
    returns( uint256)
    {
       
        //did not play 
        if (PlayerData[ _player_address].gRND != _gRND || _gRND==0) return( 0 );
       
        GameRoundData_s storage  _GameRoundData = GameRoundData[ _gRND ];
       
       // uint32 _winner = _GameRoundData.extraData[1];
       
        uint256 _gains = 0;
       
        uint256 _sharePrice = _GameRoundData.sharePrice;
        uint256 _shares;
       
        PlayerGameRound_s storage  _PlayerGameRound = PlayerGameRound[ _player_address][_gRND];
       
        _shares = _PlayerGameRound.shares;
            
        _gains = _gains.add( _shares.mul( _sharePrice) / magnitude );
        
        
        //if the race payment is made (race is over) then we add also the winner prize
        if (_GameRoundData.extraData[0] >= (1<<30))
        {
            uint256 _score = 0;
            uint256 _totalscore = 0;       
            
            uint256  _treasure = ((_GameRoundData.treasureSupply.mul( _sharePrice ) / magnitude).mul(100-DevFees-TreasureFees-AppreciationFees)) / 100;
       
            for( uint i=0;i<8;i++)
            {
                _totalscore = _totalscore.add( uint256(_GameRoundData.highscorePool[i]));
                
                if (_GameRoundData.highscorePool[8+i]==_PlayerGameRound.packedData[1])
                {
                    _score =  uint256(_GameRoundData.highscorePool[i]);
                }
                
            }
          
            if (_totalscore>0) _gains = _gains.add( _treasure.mul( _score) / _totalscore );
           
        }
       
     
       
        return( _gains );
        
    }
    
    
    //only for the Result Data Screen on the game not used for the payout
    
    function get_PendingGainsAll( address _player_address , uint256 _gRND) private view
    returns( uint256)
    {
       
        //did not play 
        if (PlayerData[ _player_address].gRND != _gRND || _gRND==0) return( 0 );
       
        GameRoundData_s storage  _GameRoundData = GameRoundData[ _gRND ];
       
     
        // uint32 _winner = _GameRoundData.extraData[1];
       
        uint256 _gains = 0;
     
        uint256 _sharePrice = _GameRoundData.sharePrice;
        uint256 _shares;
       
        PlayerGameRound_s storage  _PlayerGameRound = PlayerGameRound[ _player_address][_gRND];
       
        _shares = _PlayerGameRound.shares;
            
        _gains = _gains.add( _shares.mul( _sharePrice) / magnitude );
        
       
        {
            uint256 _score = 0;
            uint256 _totalscore = 0;       
            
            uint256  _treasure = ((_GameRoundData.treasureSupply.mul( _sharePrice ) / magnitude).mul(100-DevFees-TreasureFees-AppreciationFees)) / 100;
       
            for( uint i=0;i<8;i++)
            {
                _totalscore = _totalscore.add( uint256(_GameRoundData.highscorePool[i]));
                
                if (_GameRoundData.highscorePool[8+i]==_PlayerGameRound.packedData[1])
                {
                    _score =  uint256(_GameRoundData.highscorePool[i]);
                }
                
            }
          
            if (_totalscore>0)    _gains = _gains.add( _treasure.mul( _score) / _totalscore );
           
        }
        
        return( _gains );
        
    }
    
    //process streaming HDX20 appreciation and dev fees appreciation
    function process_sub_Taxes(  GameRoundData_s storage _GameRoundData , uint256 minimum) private
    {
        uint256 _sharePrice = _GameRoundData.sharePrice;
             
        uint256 _potValue = _GameRoundData.treasureSupply.mul( _sharePrice ) / magnitude;
            
        uint256 _appreciation = SafeMath.mul( _potValue , AppreciationFees) / 100; 
          
        uint256 _dev = SafeMath.mul( _potValue , DevFees) / 100;   
        
        if (_dev > _GameRoundData.devAppreciationPayout)
        {
            _dev -= _GameRoundData.devAppreciationPayout;
            
            if (_dev>minimum)
            {
              _GameRoundData.devAppreciationPayout = _GameRoundData.devAppreciationPayout.add( _dev );
              
               HDXcontract.buyTokenFromGame.value( _dev )( owner , address(0));
              
            }
        }
        
        if (_appreciation> _GameRoundData.hdx20AppreciationPayout)
        {
            _appreciation -= _GameRoundData.hdx20AppreciationPayout;
            
            if (_appreciation>minimum)
            {
                _GameRoundData.hdx20AppreciationPayout = _GameRoundData.hdx20AppreciationPayout.add( _appreciation );
                
                 HDXcontract.appreciateTokenPrice.value( _appreciation )();
                
            }
        }
        
    }
    
    //process the fees, hdx20 appreciation, calcul results at the end of the race
    function process_Taxes(  GameRoundData_s storage _GameRoundData ) private
    {
        uint32 turnround = _GameRoundData.extraData[0];
        
        if (turnround>0 && turnround<(1<<30))
        {  
            _GameRoundData.extraData[0] = turnround | (1<<30);
            
            uint256 _sharePrice = _GameRoundData.sharePrice;
             
            uint256 _potValue = _GameRoundData.treasureSupply.mul( _sharePrice ) / magnitude;
     
           
            uint256 _treasure = SafeMath.mul( _potValue , TreasureFees) / 100; 
         
           
            genTreasure = genTreasure.add( _treasure );
            
            //take care of any left over
            process_sub_Taxes( _GameRoundData , 0);
            
          
            
        }
     
    }
    
    function ValidTorpedoScore( int256 score, uint256 torpedoBatchID , bytes32 r , bytes32 s , uint8 v) public
    onlyDirectTransaction
    {
        address _customer_address = msg.sender;
         
        require( maintenanceMode==false  && this_gRND>0 && (block.number <GameRoundData[ this_gRND ].blockNumberTimeout) && (PlayerData[ _customer_address].gRND == this_gRND));
  
        GameVar_s memory gamevar;
        gamevar.score = score;
        gamevar.torpedoBatchID = torpedoBatchID;
        gamevar.r = r;
        gamevar.s = s;
        gamevar.v = v;
   
        coreValidTorpedoScore( _customer_address , gamevar  );
    }
    
    
    struct GameVar_s
    {
     
        bool madehigh;
        bool highscoreChanged;
      
        uint    max_score;
        uint    min_score;
        uint    min_score_index;
        uint    max_score_index;
        uint    our_score_index;
        uint32  max_score_pid;
        uint32  multiplier;
        
        uint256  torpedoBatchID;
        int256   score;
        bytes32  r;
        bytes32  s;
        uint8    v;
    }
    
  
    
    function coreValidTorpedoScore( address _player_address , GameVar_s gamevar) private
    {
    
        PlayerGameRound_s storage  _PlayerGameRound = PlayerGameRound[ _player_address][ this_gRND];
        
        GameRoundData_s storage  _GameRoundData = GameRoundData[ this_gRND ];
        
        require((gamevar.torpedoBatchID != 0) && (gamevar.torpedoBatchID== _PlayerGameRound.torpedoBatchID));
       
         
        gamevar.madehigh = false;
        gamevar.highscoreChanged = false;
       
      //  gamevar.max_score = 0;
        gamevar.min_score = 0xffffffff;
    //    gamevar.min_score_index = 0;
     //   gamevar.max_score_index = 0;
      //  gamevar.our_score_index = 0;
      
        
       
        if (block.number>=_PlayerGameRound.torpedoBatchBlockTimeout || (ecrecover(keccak256(abi.encodePacked( gamevar.score,gamevar.torpedoBatchID )) , gamevar.v, gamevar.r, gamevar.s) != signerAuthority))
        {
            gamevar.score = 0;
        }
        
        
       
        
        int256 tempo = int256(_PlayerGameRound.packedData[2]) + (gamevar.score * int256(_PlayerGameRound.packedData[0]));
        if (tempo<0) tempo = 0;
        if (tempo>0xffffffff) tempo = 0xffffffff;
        
        uint256 p_score = uint256( tempo );
        
        //store the player score
        _PlayerGameRound.packedData[2] = uint32(p_score);
        
       
        for(uint i=0;i<8;i++)
        {
            uint ss = _GameRoundData.highscorePool[i];
            if (ss>gamevar.max_score)
            {
                gamevar.max_score = ss;
                gamevar.max_score_index =i; 
            }
            if (ss<gamevar.min_score)
            {
                gamevar.min_score = ss;
                gamevar.min_score_index = i;
            }
            
            //are we in the pool already
            if (_GameRoundData.highscorePool[8+i]==_PlayerGameRound.packedData[1]) gamevar.our_score_index=1+i;
        }
        
        
        //grab current player id highscore before we potentially overwrite it
        gamevar.max_score_pid = _GameRoundData.highscorePool[ 8+gamevar.max_score_index];
        
        //at first if we are in the pool simply update our score
        
        if (gamevar.our_score_index>0)
        {
           _GameRoundData.highscorePool[ gamevar.our_score_index -1] = uint32(p_score); 
           
           gamevar.highscoreChanged = true;
          
        }
        else
        {
            //we were not in the pool, are we more than the minimum score
            
            if (p_score > gamevar.min_score)
            {
                //yes the minimum should go away and we should replace it in the pool
                _GameRoundData.highscorePool[ gamevar.min_score_index ] =uint32(p_score);
                _GameRoundData.highscorePool[ 8+gamevar.min_score_index] = _PlayerGameRound.packedData[1]; //put our playerID
                
                gamevar.highscoreChanged = true;
   
            }
            
        }
        
        //new highscore ?
        if (p_score>gamevar.max_score)
        {
            //yes
           
            //same person 
            
             if (  gamevar.max_score_pid != _PlayerGameRound.packedData[1] )
             {
                 //no so reset the counter
                  _GameRoundData.blockNumberTimeout = block.number + ((24*60*60) / blockTimeAverage);
                  _GameRoundData.extraData[0]++; // new turn
                   gamevar.madehigh = true;
             }
            
        }
   
        //ok reset it so we can get a new one
        _PlayerGameRound.torpedoBatchID = 0;
        
        emit onNewScore( this_gRND , _GameRoundData.blockNumberTimeout , p_score , _player_address , gamevar.madehigh , gamevar.highscoreChanged );


    }
    
    
    function BuyTorpedoWithDividends( uint256 eth , int256 score, uint256 torpedoBatchID,  address _referrer_address , bytes32 r , bytes32 s , uint8 v) public
    onlyDirectTransaction
    {
        
        require( maintenanceMode==false  && this_gRND>0 && (eth==minimumSharePrice || eth==minimumSharePrice*10 || eth==minimumSharePrice*100) && (block.number <GameRoundData[ this_gRND ].blockNumberTimeout) );
  
        address _customer_address = msg.sender;
        
        GameVar_s memory gamevar;
        gamevar.score = score;
        gamevar.torpedoBatchID = torpedoBatchID;
        gamevar.r = r;
        gamevar.s = s;
        gamevar.v = v;
        
       
        gamevar.multiplier =uint32( eth / minimumSharePrice);
        
        eth = HDXcontract.payWithToken( eth , _customer_address );
       
        require( eth>0 );
        
         
        CoreBuyTorpedo( _customer_address , eth , _referrer_address , gamevar );
        
       
    }
    
    function BuyName( bytes32 name ) public payable
    {
        address _customer_address = msg.sender;
        uint256 eth = msg.value; 
        
        require( maintenanceMode==false  && (eth==minimumSharePrice*10));
        
        //50% for the community
        //50% for the developer account
        
        eth /= 2;
        
        HDXcontract.buyTokenFromGame.value( eth )( owner , address(0));
       
        HDXcontract.appreciateTokenPrice.value( eth )();
        
        registeredNames[ _customer_address ] = name;
        
        emit onNewName( _customer_address , name , now );
    }
    
    function BuyTorpedo( int256 score, uint256 torpedoBatchID, address _referrer_address , bytes32 r , bytes32 s , uint8 v ) public payable
    onlyDirectTransaction
    {
     
        address _customer_address = msg.sender;
        uint256 eth = msg.value;
        
        require( maintenanceMode==false  && this_gRND>0 && (eth==minimumSharePrice || eth==minimumSharePrice*10 || eth==minimumSharePrice*100) && (block.number <GameRoundData[ this_gRND ].blockNumberTimeout));
   
        GameVar_s memory gamevar;
        gamevar.score = score;
        gamevar.torpedoBatchID = torpedoBatchID;
        gamevar.r = r;
        gamevar.s = s;
        gamevar.v = v;
        
       
        gamevar.multiplier =uint32( eth / minimumSharePrice);
   
        CoreBuyTorpedo( _customer_address , eth , _referrer_address, gamevar);
     
    }
    
    /*================================
    =       CORE BUY FUNCTIONS       =
    ================================*/
    
    function CoreBuyTorpedo( address _player_address , uint256 eth ,  address _referrer_address , GameVar_s gamevar) private
    {
    
        PlayerGameRound_s storage  _PlayerGameRound = PlayerGameRound[ _player_address][ this_gRND];
        
        GameRoundData_s storage  _GameRoundData = GameRoundData[ this_gRND ];
        
      
        if (PlayerData[ _player_address].gRND != this_gRND)
        {
           
            if (PlayerData[_player_address].gRND !=0)
            {
                uint256 _gains = get_PendingGains( _player_address , PlayerData[ _player_address].gRND  );
            
                 PlayerData[ _player_address].chest = PlayerData[ _player_address].chest.add( _gains);
            }
          
          
            PlayerData[ _player_address ].gRND = this_gRND;
           
             //player++
             _GameRoundData.extraData[ 1 ]++; 
             
             //a crude playerID
             _PlayerGameRound.packedData[1] = _GameRoundData.extraData[ 1 ];
             
             //only to display the highscore table on the client
             _GameRoundData.IDtoAddress[  _GameRoundData.extraData[1] ] = _player_address;
        }
        
        //we need to validate the score before buying a torpedo batch
        if (gamevar.torpedoBatchID !=0 || _PlayerGameRound.torpedoBatchID !=0)
        {
             coreValidTorpedoScore( _player_address , gamevar);
        }
        
        
       
        
        _PlayerGameRound.packedData[0] = gamevar.multiplier;
        _PlayerGameRound.torpedoBatchBlockTimeout = block.number + ((4*3600) / blockTimeAverage);
        _PlayerGameRound.torpedoBatchID = uint256((keccak256(abi.encodePacked( block.number, _player_address , address(this)))));
        
        
        //HDX20BuyFees
        uint256 _tempo = (eth.mul(HDX20BuyFees)) / 100;
        
        _GameRoundData.shareEthBalance =  _GameRoundData.shareEthBalance.add( eth-_tempo );  //minus the hdx20 fees
        
        uint256 _nb_token =   HDXcontract.buyTokenFromGame.value( _tempo )( _player_address , _referrer_address);
        
      
        _PlayerGameRound.token += uint128(_nb_token);
        
       
        buyTreasureShares(_GameRoundData , (eth.mul(TREASUREBuyFees)) / 100 );
   
        
        eth = eth.mul( BUYPercentage) / 100;
        
        uint256 _nbshare =  (eth.mul( magnitude)) / _GameRoundData.sharePrice;
        
        _GameRoundData.shareSupply =  _GameRoundData.shareSupply.add( _nbshare );
        _GameRoundData.sharePots   =  _GameRoundData.sharePots.add( _nbshare);
      
        _PlayerGameRound.shares =  _PlayerGameRound.shares.add( _nbshare);
   
      
        if (_GameRoundData.shareSupply>magnitude)
        {
            _GameRoundData.sharePrice = (_GameRoundData.shareEthBalance.mul( magnitude)) / _GameRoundData.shareSupply;
        }
       
        //HDX20 streaming appreciation
        process_sub_Taxes( _GameRoundData , 0.1 ether);
        
        emit onBuyTorpedo( _player_address, this_gRND, _PlayerGameRound.torpedoBatchID , _PlayerGameRound.torpedoBatchBlockTimeout, _nb_token,  _PlayerGameRound.packedData[0]);
      
      
        
    }
    
   
    
    function get_Gains(address _player_address) private view
    returns( uint256)
    {
       
        uint256 _gains = PlayerData[ _player_address ].chest.add( get_PendingGains( _player_address , PlayerData[ _player_address].gRND ) );
        
        if (_gains > PlayerData[ _player_address].payoutsTo)
        {
            _gains -= PlayerData[ _player_address].payoutsTo;
        }
        else _gains = 0;
     
    
        return( _gains );
        
    }
    
    
    function WithdrawGains() public 
    isPlayer
    {
        address _customer_address = msg.sender;
        
        uint256 _gains = get_Gains( _customer_address );
        
        require( _gains>0);
        
        PlayerData[ _customer_address ].payoutsTo = PlayerData[ _customer_address ].payoutsTo.add( _gains );
        
      
        emit onWithdrawGains( _customer_address , _gains , now);
        
        _customer_address.transfer( _gains );
        
        
    }
    
   
    
    function CloseEntry() public
    onlyOwner
    isNotMaintenance
    {
    
        GameRoundData_s storage  _GameRoundData = GameRoundData[ this_gRND ];
         
        process_Taxes( _GameRoundData);
          
        emit onCloseEntry( this_gRND );
      
    }
    
   
  
  
    
     /*================================
    =  VIEW AND HELPERS FUNCTIONS    =
    ================================*/
  
    
    function view_get_Treasure() public
    view
    returns(uint256)
    {
      
      return( genTreasure);  
    }
 
    function view_get_gameData() public
    view
    returns( uint256 sharePrice, uint256 sharePots, uint256 shareSupply , uint256 shareEthBalance, uint32 totalPlayers , uint256 shares ,uint256 treasureSupply , uint256 torpedoBatchID , uint32 torpedoBatchMultiplier , uint256 torpedoBatchBlockTimeout , uint256 score   )
    {
        address _player_address = msg.sender;
         
        sharePrice = GameRoundData[ this_gRND].sharePrice;
        sharePots = GameRoundData[ this_gRND].sharePots;
        shareSupply = GameRoundData[ this_gRND].shareSupply;
        shareEthBalance = GameRoundData[ this_gRND].shareEthBalance;
        treasureSupply = GameRoundData[ this_gRND].treasureSupply;
      
        totalPlayers =  GameRoundData[ this_gRND].extraData[1];
      
        shares = PlayerGameRound[_player_address][this_gRND].shares;
      
        torpedoBatchID = PlayerGameRound[_player_address][this_gRND].torpedoBatchID;
        torpedoBatchMultiplier = PlayerGameRound[_player_address][this_gRND].packedData[0];
        torpedoBatchBlockTimeout = PlayerGameRound[_player_address][this_gRND].torpedoBatchBlockTimeout;
        score = PlayerGameRound[_player_address][this_gRND].packedData[2];
    }
  
    function view_get_gameTorpedoData() public
    view
    returns( uint256 torpedoBatchID , uint32 torpedoBatchMultiplier , uint256 torpedoBatchBlockTimeout  , uint256 score )
    {
        address _player_address = msg.sender;
         
     
      
        torpedoBatchID = PlayerGameRound[_player_address][this_gRND].torpedoBatchID;
        torpedoBatchMultiplier = PlayerGameRound[_player_address][this_gRND].packedData[0];
        torpedoBatchBlockTimeout = PlayerGameRound[_player_address][this_gRND].torpedoBatchBlockTimeout;
        
        score = PlayerGameRound[_player_address][this_gRND].packedData[2];
    }
    
    function view_get_gameHighScores() public
    view
    returns( uint32[8] highscores , address[8] addresses , bytes32[8] names )
    {
        address _player_address = msg.sender;
         
        uint32[8] memory highscoresm;
        address[8] memory addressesm;
        bytes32[8] memory namesm;
        
        for(uint i =0;i<8;i++)
        {
            highscoresm[i] = GameRoundData[ this_gRND].highscorePool[i];
            
            uint32 id = GameRoundData[ this_gRND].highscorePool[8+i];
            
            addressesm[i] = GameRoundData[ this_gRND ].IDtoAddress[ id ];
            
            namesm[i] = view_get_registeredNames( addressesm[i ]);
        }
     
     
     highscores = highscoresm;
     addresses = addressesm;
     names = namesm;
      
     
    }
    
    function view_get_Gains()
    public
    view
    returns( uint256 gains)
    {
        
        address _player_address = msg.sender;
   
      
        uint256 _gains = PlayerData[ _player_address ].chest.add( get_PendingGains( _player_address , PlayerData[ _player_address].gRND) );
        
        if (_gains > PlayerData[ _player_address].payoutsTo)
        {
            _gains -= PlayerData[ _player_address].payoutsTo;
        }
        else _gains = 0;
     
    
        return( _gains );
        
    }
  
  
    
    function view_get_gameStates() public 
    view
    returns(uint256 grnd, uint32 turnround, uint256 minimumshare , uint256 blockNumber , uint256 blockNumberTimeout, uint256 blockNumberCurrent , uint256 blockTimeAvg , uint32[8] highscores , address[8] addresses , bytes32[8] names , bytes32 myname)
    {
        uint32[8] memory highscoresm;
        address[8] memory addressesm;
        bytes32[8] memory namesm;
        
        for(uint i =0;i<8;i++)
        {
            highscoresm[i] = GameRoundData[ this_gRND].highscorePool[i];
            
            uint32 id = GameRoundData[ this_gRND].highscorePool[8+i];
            
            addressesm[i] = GameRoundData[ this_gRND ].IDtoAddress[ id ];
            
            namesm[i] = view_get_registeredNames( addressesm[i ]);
        }
        
        return( this_gRND , GameRoundData[ this_gRND].extraData[0] , minimumSharePrice , GameRoundData[ this_gRND].blockNumber,GameRoundData[ this_gRND].blockNumberTimeout, block.number , blockTimeAverage , highscoresm , addressesm , namesm , view_get_registeredNames(msg.sender));
    }
    
    function view_get_ResultData() public
    view
    returns(uint32 TotalPlayer, uint256 TotalPayout ,uint256 MyTokenValue, uint256 MyToken, uint256 MyGains , uint256 MyScore)
    {
        address _player_address = msg.sender;
        
        GameRoundData_s storage  _GameRoundData = GameRoundData[ this_gRND ];
        
        TotalPlayer = _GameRoundData.extraData[1];
     
        TotalPayout = get_TotalPayout( _GameRoundData );
      
        MyToken =  PlayerGameRound[ _player_address][ this_gRND].token;
          
        MyTokenValue = MyToken * HDXcontract.sellingPrice( true );
        MyTokenValue /= magnitude;
      
        MyGains = 0;
     
        
        if (PlayerData[ _player_address].gRND == this_gRND)
        {
       
           MyGains =  get_PendingGainsAll( _player_address , this_gRND ); //just here for the view function so not used for any payout
        }
        
        MyScore = PlayerGameRound[_player_address][this_gRND].packedData[2];
    }    
 
 
    function totalEthereumBalance()
    public
    view
    returns(uint256)
    {
        return address(this).balance;
    }
    
    function view_get_maintenanceMode()
    public
    view
    returns(bool)
    {
        return( maintenanceMode);
    }
    
    function view_get_blockNumbers()
    public
    view
    returns( uint256 b1 , uint256 b2 )
    {
        return( block.number , GameRoundData[ this_gRND ].blockNumberTimeout);
        
    }
    
    function view_get_registeredNames(address _player)
    public
    view
    returns( bytes32)
    {
        
        return( registeredNames[ _player ]);
    }
    
   
}


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);
        return c;
    }

   
    function sub(uint256 a, uint256 b)
        internal
        pure
        returns (uint256) 
    {
        require(b <= a);
        return a - b;
    }

   
    function add(uint256 a, uint256 b)
        internal
        pure
        returns (uint256 c) 
    {
        c = a + b;
        require(c >= a);
        return c;
    }
    
   
    
  
    
   
}


library SafeMath128 {
    
   
    function mul(uint128 a, uint128 b) 
        internal 
        pure 
        returns (uint128 c) 
    {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        require(c / a == b);
        return c;
    }

   
    function sub(uint128 a, uint128 b)
        internal
        pure
        returns (uint128) 
    {
        require(b <= a);
        return a - b;
    }

   
    function add(uint128 a, uint128 b)
        internal
        pure
        returns (uint128 c) 
    {
        c = a + b;
        require(c >= a);
        return c;
    }
    
   
    
  
    
   
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"view_get_Treasure","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"score","type":"int256"},{"name":"torpedoBatchID","type":"uint256"},{"name":"_referrer_address","type":"address"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"},{"name":"v","type":"uint8"}],"name":"BuyTorpedo","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"newmini","type":"uint256"}],"name":"changeMinimumPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"view_get_maintenanceMode","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"view_get_gameStates","outputs":[{"name":"grnd","type":"uint256"},{"name":"turnround","type":"uint32"},{"name":"minimumshare","type":"uint256"},{"name":"blockNumber","type":"uint256"},{"name":"blockNumberTimeout","type":"uint256"},{"name":"blockNumberCurrent","type":"uint256"},{"name":"blockTimeAvg","type":"uint256"},{"name":"highscores","type":"uint32[8]"},{"name":"addresses","type":"address[8]"},{"name":"names","type":"bytes32[8]"},{"name":"myname","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"CloseEntry","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"blocktimeavg","type":"uint256"}],"name":"changeBlockTimeAverage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_player","type":"address"}],"name":"view_get_registeredNames","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"score","type":"int256"},{"name":"torpedoBatchID","type":"uint256"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"},{"name":"v","type":"uint8"}],"name":"ValidTorpedoScore","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"bytes32"}],"name":"BuyName","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_next","type":"address"}],"name":"changeHDXcontract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"signerAuthority","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalEthereumBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"view_get_gameHighScores","outputs":[{"name":"highscores","type":"uint32[8]"},{"name":"addresses","type":"address[8]"},{"name":"names","type":"bytes32[8]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"view_get_Gains","outputs":[{"name":"gains","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"view_get_gameData","outputs":[{"name":"sharePrice","type":"uint256"},{"name":"sharePots","type":"uint256"},{"name":"shareSupply","type":"uint256"},{"name":"shareEthBalance","type":"uint256"},{"name":"totalPlayers","type":"uint32"},{"name":"shares","type":"uint256"},{"name":"treasureSupply","type":"uint256"},{"name":"torpedoBatchID","type":"uint256"},{"name":"torpedoBatchMultiplier","type":"uint32"},{"name":"torpedoBatchBlockTimeout","type":"uint256"},{"name":"score","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_nextOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_nextSigner","type":"address"}],"name":"changeSigner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"view_get_ResultData","outputs":[{"name":"TotalPlayer","type":"uint32"},{"name":"TotalPayout","type":"uint256"},{"name":"MyTokenValue","type":"uint256"},{"name":"MyToken","type":"uint256"},{"name":"MyGains","type":"uint256"},{"name":"MyScore","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"view_get_blockNumbers","outputs":[{"name":"b1","type":"uint256"},{"name":"b2","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"WithdrawGains","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"disableMaintenance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"enableMaintenance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"eth","type":"uint256"},{"name":"score","type":"int256"},{"name":"torpedoBatchID","type":"uint256"},{"name":"_referrer_address","type":"address"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"},{"name":"v","type":"uint8"}],"name":"BuyTorpedoWithDividends","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"initCampaign","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"view_get_gameTorpedoData","outputs":[{"name":"torpedoBatchID","type":"uint256"},{"name":"torpedoBatchMultiplier","type":"uint32"},{"name":"torpedoBatchBlockTimeout","type":"uint256"},{"name":"score","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"ChargeTreasure","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"previousOwner","type":"address"},{"indexed":false,"name":"nextOwner","type":"address"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"previous","type":"address"},{"indexed":false,"name":"next","type":"address"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"HDXcontractChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumWithdrawn","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onWithdrawGains","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"gRND","type":"uint256"},{"indexed":false,"name":"blockNumberTimeout","type":"uint256"},{"indexed":false,"name":"score","type":"uint256"},{"indexed":false,"name":"customerAddress","type":"address"},{"indexed":false,"name":"newHighScore","type":"bool"},{"indexed":false,"name":"highscoreChanged","type":"bool"}],"name":"onNewScore","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"gRND","type":"uint256"},{"indexed":false,"name":"blockNumber","type":"uint256"}],"name":"onNewCampaign","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"customerAddress","type":"address"},{"indexed":false,"name":"gRND","type":"uint256"},{"indexed":false,"name":"torpedoBatchID","type":"uint256"},{"indexed":false,"name":"torpedoBatchBlockTimeout","type":"uint256"},{"indexed":false,"name":"nbToken","type":"uint256"},{"indexed":false,"name":"torpedoBatchMultiplier","type":"uint32"}],"name":"onBuyTorpedo","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"mode","type":"bool"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onMaintenance","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"gRND","type":"uint256"}],"name":"onCloseEntry","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"blocktimeavg","type":"uint256"}],"name":"onChangeBlockTimeAverage","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"minimum","type":"uint256"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onChangeMinimumPrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"customerAddress","type":"address"},{"indexed":false,"name":"name","type":"bytes32"},{"indexed":false,"name":"timeStamp","type":"uint256"}],"name":"onNewName","type":"event"}]

608060405260008054600160a060020a0319908116738942a5995bd168f347f7ec58f25a54a9a064f8821782556002805490911673f77444ce64f3f46ba6b63f6b9411df9c589e33191790556007805460ff191690556008819055600955662386f26fc10000600a55600f600b5534801561007957600080fd5b5060018054600160a060020a031916331790556000303111156100d257600154604051600160a060020a0390911690303180156108fc02916000818181858888f193505050501580156100d0573d6000803e3d6000fd5b505b612c50806100e16000396000f3006080604052600436106101695763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630149eea081146101825780630908c7fa146101a95780630f666426146101cf57806310b7d9ae146101e75780631449c32114610210578063212a6fd3146102fe57806332dc04aa1461031357806333791ddc1461032b5780634af0616a1461034c578063576bcd3f146103735780635b3660961461037e57806361c959261461039f5780636b2f4632146103d05780636ddd183a146103e5578063844d38ee1461048b57806388037e1c146104a05780638da5cb5b14610514578063a6f9dae114610529578063aad2b7231461054a578063ae5dbd431461056b578063b395f278146105ba578063bd679ab2146105e8578063bdc0ba8e146105fd578063cc0e13e214610612578063d925312814610627578063ea27e8451461065d578063f0b2653614610672578063fee13823146106b2575b600054600160a060020a0316331461018057600080fd5b005b34801561018e57600080fd5b506101976106ba565b60408051918252519081900360200190f35b610180600435602435600160a060020a036044351660643560843560ff60a435166106c0565b3480156101db57600080fd5b506101806004356107a1565b3480156101f357600080fd5b506101fc610804565b604080519115158252519081900360200190f35b34801561021c57600080fd5b5061022561080d565b604051808c81526020018b63ffffffff1663ffffffff1681526020018a815260200189815260200188815260200187815260200186815260200185600860200280838360005b8381101561028357818101518382015260200161026b565b5050505090500184600860200280838360005b838110156102ae578181015183820152602001610296565b5050505090500183600860200280838360005b838110156102d95781810151838201526020016102c1565b50505050919091019283525050604051908190036020019a5098505050505050505050f35b34801561030a57600080fd5b506101806109d8565b34801561031f57600080fd5b50610180600435610a55565b34801561033757600080fd5b50610197600160a060020a0360043516610ab4565b34801561035857600080fd5b5061018060043560243560443560643560ff60843516610acf565b610180600435610b8c565b34801561038a57600080fd5b50610180600160a060020a0360043516610d2e565b3480156103ab57600080fd5b506103b4610df0565b60408051600160a060020a039092168252519081900360200190f35b3480156103dc57600080fd5b50610197610dff565b3480156103f157600080fd5b506103fa610e04565b604051808461010080838360005b83811015610420578181015183820152602001610408565b5050505090500183600860200280838360005b8381101561044b578181015183820152602001610433565b5050505090500182600860200280838360005b8381101561047657818101518382015260200161045e565b50505050905001935050505060405180910390f35b34801561049757600080fd5b50610197610f66565b3480156104ac57600080fd5b506104b5611005565b604080519b8c5260208c019a909a528a8a019890985260608a019690965263ffffffff94851660808a015260a089019390935260c088019190915260e08701521661010085015261012084015261014083015251908190036101600190f35b34801561052057600080fd5b506103b461108f565b34801561053557600080fd5b50610180600160a060020a036004351661109e565b34801561055657600080fd5b50610180600160a060020a0360043516611160565b34801561057757600080fd5b506105806111d6565b6040805163ffffffff90971687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b3480156105c657600080fd5b506105cf611368565b6040805192835260208301919091528051918290030190f35b3480156105f457600080fd5b50610180611381565b34801561060957600080fd5b50610180611482565b34801561061e57600080fd5b506101806114e8565b34801561063357600080fd5b50610180600435602435604435600160a060020a036064351660843560a43560ff60c43516611550565b34801561066957600080fd5b506101806116cf565b34801561067e57600080fd5b506106876117cd565b6040805194855263ffffffff9093166020850152838301919091526060830152519081900360800190f35b610180611814565b60095490565b6000806106cb612b90565b3332146106d757600080fd5b60075433935034925060ff161580156106f257506000600854115b801561071c5750600a5482148061070d5750600a54600a0282145b8061071c5750600a5460640282145b801561073b575060085460009081526005602052604090206001015443105b151561074657600080fd5b610140810189905261012081018890526101608101869052610180810185905260ff84166101a0820152600a548281151561077d57fe5b0463ffffffff1661010082015261079683838984611825565b505050505050505050565b600154600160a060020a031633146107b857600080fd5b60008111156107c757600a8190555b6040805182815242602082015281517f96aff3d0ee4748c300128c53ba5612b8363232b00ab841ce27937cd52c8e0f28929181900390910190a150565b60075460ff1690565b6000806000806000806000610820612c04565b610828612c04565b610830612c04565b600061083a612c04565b610842612c04565b61084a612c04565b6000805b6008821015610973576008546000908152600560205260409020600a01826010811061087657fe5b600891828204019190066004029054906101000a900463ffffffff1685836008811015156108a057fe5b63ffffffff9092166020928302919091015260088054600090815260059092526040909120600a01908301601081106108d557fe5b600880820492909201548254600090815260056020908152604080832060079586166004026101000a90940463ffffffff168084529490930190522054909250600160a060020a03169085908490811061092b57fe5b600160a060020a03909216602092909202015261095784836008811061094d57fe5b6020020151610ab4565b83836008811061096357fe5b602002015260019091019061084e565b6008546000818152600560205260409020600c810154600a548254600190930154600b5463ffffffff90931693919243908b8b8b6109b033610ab4565b9f509f509f509f509f509f509f509f509f509f509f505050505050909192939495969798999a565b600154600090600160a060020a031633146109f257600080fd5b60075460ff1615610a0257600080fd5b506008546000908152600560205260409020610a1d81611d67565b60085460408051918252517f4eb04f9aed2df935e25cbec04051b51a0d2dedf786d3ef9ef4cfcb717ff8115f9181900360200190a150565b600154600160a060020a03163314610a6c57600080fd5b60008111610a7957600080fd5b600b8190556040805182815290517f6c1cf48245a0a91e114596b04dfcbe443303e5f72fab6771794891112fe4395f9181900360200190a150565b600160a060020a031660009081526006602052604090205490565b6000610ad9612b90565b333214610ae557600080fd5b60075433925060ff16158015610afd57506000600854115b8015610b1c575060085460009081526005602052604090206001015443105b8015610b445750600854600160a060020a038316600090815260036020526040902060020154145b1515610b4f57600080fd5b610140810187905261012081018690526101608101859052610180810184905260ff83166101a0820152610b838282611e29565b50505050505050565b6007543390349060ff16158015610ba75750600a54600a0281145b1515610bb257600080fd5b60008054600154604080517fc671b934000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015260248101949094525160029094049391169163c671b93491849160448082019260209290919082900301818588803b158015610c2b57600080fd5b505af1158015610c3f573d6000803e3d6000fd5b50505050506040513d6020811015610c5657600080fd5b505060008054604080517f16ff1c760000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926316ff1c76928592600480820193929182900301818588803b158015610cb657600080fd5b505af1158015610cca573d6000803e3d6000fd5b505050600160a060020a038416600081815260066020908152604091829020889055815192835282018790524282820152517fcf9e039b89f14b39579de014cbb7196367b18bd199b38836c8f1177d72de3f109350908190036060019150a1505050565b600154600160a060020a03163314610d4557600080fd5b600054600160a060020a0382811691161415610d6057600080fd5b600160a060020a0381161515610d7557600080fd5b60005460408051600160a060020a03928316815291831660208301524282820152517f87ab77b91a9a6a5a04a748607e0ee38d580963c4e21fe45d2e79ffeef26bc55e9181900360600190a16000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600254600160a060020a031681565b303190565b610e0c612c04565b610e14612c04565b610e1c612c04565b6000610e26612c04565b610e2e612c04565b610e36612c04565b3393506000805b6008821015610f58576008546000908152600560205260409020600a018260108110610e6557fe5b600891828204019190066004029054906101000a900463ffffffff168583600881101515610e8f57fe5b63ffffffff9092166020928302919091015260088054600090815260059092526040909120600a0190830160108110610ec457fe5b600880820492909201548254600090815260056020908152604080832060079586166004026101000a90940463ffffffff168084529490930190522054909250600160a060020a031690859084908110610f1a57fe5b600160a060020a039092166020929092020152610f3c84836008811061094d57fe5b838360088110610f4857fe5b6020020152600190910190610e3d565b509297919650945092505050565b336000818152600360205260408120600201549091908290610fb290610f8d90849061238d565b600160a060020a0384166000908152600360205260409020549063ffffffff6125f116565b600160a060020a038316600090815260036020526040902060010154909150811115610ffb57600160a060020a0382166000908152600360205260409020600101549003610fff565b5060005b92915050565b60085460008181526005602081815260408084206002808201546003830154838701546004808601546006870154600c90970154338c52918952878b209b8b529a9097529490972080546001820154978201549190930154919997989497949663ffffffff6401000000009097048716969395909380831693926801000000000000000090041690565b600154600160a060020a031681565b600154600160a060020a031633146110b557600080fd5b600154600160a060020a03828116911614156110d057600080fd5b600160a060020a03811615156110e557600080fd5b60015460408051600160a060020a03928316815291831660208301524282820152517fc13a1166d81cd3b0b352a367aebab95f3a6f6bc695fdab8e9a9d335239c3861b9181900360600190a16001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154600160a060020a0316331461117757600080fd5b600254600160a060020a038281169116141561119257600080fd5b600160a060020a03811615156111a757600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6008546000908152600560205260408120600c810154640100000000900463ffffffff1691908190819081908190339061120f81612601565b600160a060020a03808416600090815260046020818152604080842060085485528252808420830154845482517f1097b9ee0000000000000000000000000000000000000000000000000000000081526001958101959095529151969d506fffffffffffffffffffffffffffffffff169a5090931693631097b9ee9360248084019491938390030190829087803b1580156112a957600080fd5b505af11580156112bd573d6000803e3d6000fd5b505050506040513d60208110156112d357600080fd5b5051600854600160a060020a038416600090815260036020526040812060020154670de0b6b3a76400009389029390930498509550141561131d5761131a82600854612697565b93505b50600160a060020a031660009081526004602090815260408083206008548452909152902060050154959694959394929391926801000000000000000090920463ffffffff16919050565b6008546000908152600560205260409020600101544391565b33600090815260036020526040812060020154819015156113a157600080fd5b3391506113ad82612852565b9050600081116113bc57600080fd5b600160a060020a0382166000908152600360205260409020600101546113e8908263ffffffff6125f116565b600160a060020a038316600081815260036020908152604091829020600101939093558051918252918101839052428183015290517f8ea11b70a47e5aaa4024df0985799a384faaaf34e6da0aadbadcae0fbfca45ac9181900360600190a1604051600160a060020a0383169082156108fc029083906000818181858888f1935050505015801561147d573d6000803e3d6000fd5b505050565b600154600160a060020a0316331461149957600080fd5b6007805460ff19169055604080516000815242602082015281517fb04e455982e111d37c1d6ff02f82a465d673bb8931f9595e16b3aaf421001e56929181900390910190a16114e66116cf565b565b600154600160a060020a031633146114ff57600080fd5b6007805460ff1916600117908190556040805160ff929092161515825242602083015280517fb04e455982e111d37c1d6ff02f82a465d673bb8931f9595e16b3aaf421001e569281900390910190a1565b600061155a612b90565b33321461156657600080fd5b60075460ff1615801561157b57506000600854115b80156115a55750600a548914806115965750600a54600a0289145b806115a55750600a5460640289145b80156115c4575060085460009081526005602052604090206001015443105b15156115cf57600080fd5b610140810188905261012081018790526101608101859052610180810184905260ff83166101a0820152600a543392508981151561160957fe5b0463ffffffff1661010082015260008054604080517f52dde1c3000000000000000000000000000000000000000000000000000000008152600481018d9052600160a060020a038681166024830152915191909216926352dde1c392604480820193602093909283900390910190829087803b15801561168857600080fd5b505af115801561169c573d6000803e3d6000fd5b505050506040513d60208110156116b257600080fd5b50519850600089116116c357600080fd5b610796828a8884611825565b60015460009081908190600160a060020a031633146116ed57600080fd5b60075460ff16156116fd57600080fd5b600880546001908101918290556000918252600560205260409091204380825563128a18000191810191909155600a546002820181905560095491945092506117479084906128ed565b9050670de0b6b3a7640000611762828463ffffffff61295916565b81151561176b57fe5b0460048401819055600954909150611789908263ffffffff61298516565b6009556008546040805191825243602083015280517fae4bf3465111e7661119cb02fb9f8d726b606da9622ebcd75cabb5d611a0d04b9281900390910190a1505050565b3360009081526004602090815260408083206008548452909152902060018101546005820154600290920154909263ffffffff808416936801000000000000000090041690565b611820600954346125f1565b600955565b600160a060020a038416600081815260046020908152604080832060085480855290835281842060058452828520958552600390935290832060020154919392918291829182911461199c57600160a060020a038a16600090815260036020526040902060020154156118ff57600160a060020a038a166000908152600360205260409020600201546118b9908b9061238d565b600160a060020a038b166000908152600360205260409020549094506118e5908563ffffffff6125f116565b600160a060020a038b166000908152600360205260409020555b600854600160a060020a038b16600081815260036020908152604080832060020194909455600c8901805467ffffffff00000000198082166401000000009283900463ffffffff908116600101811684029190911780855560058f0180549185900483168502919093161790915591540416825260078901905291909120805473ffffffffffffffffffffffffffffffffffffffff191690911790555b6101208701511515806119b25750600186015415155b156119c1576119c18a88611e29565b61010087015160058701805463ffffffff191663ffffffff909216919091179055600b546138408115156119f157fe5b4391900481016002880155604080516020808201939093526c01000000000000000000000000600160a060020a038e168102828401523002605482015281516048818303018152606890910191829052805190928291908401908083835b60208310611a6e5780518252601f199092019160209182019101611a4f565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912060018a01555060649150611aae90508a6005612959565b811515611ab757fe5b049250611ad3838a0386600401546125f190919063ffffffff16565b600480870191909155600054604080517fc671b934000000000000000000000000000000000000000000000000000000008152600160a060020a038e8116948201949094528b841660248201529051929091169163c671b934918691604480830192602092919082900301818588803b158015611b4f57600080fd5b505af1158015611b63573d6000803e3d6000fd5b50505050506040513d6020811015611b7a57600080fd5b50516004870180546fffffffffffffffffffffffffffffffff8082168401166fffffffffffffffffffffffffffffffff199091161790559150611bd9856064611bca8c603c63ffffffff61295916565b811515611bd357fe5b046128ed565b506064611bed8a601463ffffffff61295916565b811515611bf657fe5b60028701549190049950611c188a670de0b6b3a764000063ffffffff61295916565b811515611c2157fe5b049050611c3b8186600501546125f190919063ffffffff16565b60058601556003850154611c55908263ffffffff6125f116565b60038601558554611c6c908263ffffffff6125f116565b86556005850154670de0b6b3a76400001015611cb45760058501546004860154611ca490670de0b6b3a764000063ffffffff61295916565b811515611cad57fe5b0460028601555b611cc68567016345785d8a000061299a565b600854600187015460028801547f5ac0b4edd12a08f65800ba1acbf27d7c2be5f7c546be8a7406ac44db6a2cc29f928d9290918660058c01600060088104919091015460408051600160a060020a03989098168852602088019690965286860194909452606086019290925260808501526007166004026101000a900463ffffffff1660a08301525160c0918190039190910190a150505050505050505050565b600c81015463ffffffff16600080808084118015611d8e575063400000008463ffffffff16105b15611e2257600c8501805463ffffffff19166340000000861763ffffffff9081169190911790915560028601546006870154909450670de0b6b3a764000091611dda9190869061295916565b811515611de357fe5b0491506064611df383600a612959565b811515611dfc57fe5b049050611e14816009546125f190919063ffffffff16565b600955611e2285600061299a565b5050505050565b600160a060020a038216600090815260046020908152604080832060085484528252808320600590925282206101208401519192909181908190819015801590611e7b57508560010154876101200151145b1515611e8657600080fd5b6000808852602088015263ffffffff6060880152600286015443101580611fdd575060025461014088015161012089015160408051602080820194909452808201929092528051808303820181526060909201908190528151600160a060020a03909416936001938291908401908083835b60208310611f175780518252601f199092019160209182019101611ef8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020896101a001518a61016001518b6101800151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015611fc7573d6000803e3d6000fd5b50505060206040510351600160a060020a031614155b15611feb5760006101408801525b600586015461014088015168010000000000000000820463ffffffff908116921602019350600084121561201e57600093505b63ffffffff8413156120325763ffffffff93505b6005860180546bffffffff000000000000000019166801000000000000000063ffffffff871602179055839250600091505b600882101561213857600a8501826010811061207c57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16905086604001518111156120bb576040870181905260a087018290525b86606001518110156120d65760608701819052608087018290525b6005860154640100000000900463ffffffff16600a860160088401601081106120fb57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16141561212d576001820160c08801525b600190910190612064565b60a0870151600a8601906008016010811061214f57fe5b60088104919091015460079091166004026101000a900463ffffffff1660e088015260c0870151600010156121d6578285600a0160018960c001510360108110151561219757fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff16021790555060018760200190151590811515815250506122a2565b86606001518311156122a2578285600a0188608001516010811015156121f857fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff16021790555085600501600160038110151561223357fe5b600891828204019190066004029054906101000a900463ffffffff1685600a01886080015160080160108110151561226757fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff16021790555060018760200190151590811515815250505b866040015183111561230b57600586015460e088015163ffffffff908116640100000000909204161461230b57600b54620151808115156122df57fe5b044301600186810191909155600c8601805463ffffffff80821684011663ffffffff1990911617905587525b60006001808801919091556008549086015488516020808b01516040805195865291850193909352838101879052600160a060020a038c166060850152901515608084015290151560a0830152517f2628150fa1da4e0b851fdaa0287546130f9fd453be51323b489a81f6c4bf00679181900360c00190a15050505050505050565b6000806000806000806000806000808a600360008e600160a060020a0316600160a060020a03168152602001908152602001600020600201541415806123d157508a155b156123df57600099506125e2565b600560008c815260200190815260200160002098506000975088600201549650600460008d600160a060020a0316600160a060020a0316815260200190815260200160002060008c8152602001908152602001600020945084600001549550612475670de0b6b3a764000061245d898961295990919063ffffffff16565b81151561246657fe5b8a91900463ffffffff6125f116565b600c8a0154909850634000000063ffffffff909116106125de576006890154600094508493506064906124d590603c90670de0b6b3a7640000906124bf908c63ffffffff61295916565b8115156124c857fe5b049063ffffffff61295916565b8115156124de57fe5b049150600090505b60088110156125be57612532600a8a01826010811061250157fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16846125f190919063ffffffff16565b6005860154909350640100000000900463ffffffff16600a8a01600883016010811061255a57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff1614156125b657600a8901816010811061259157fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff1693505b6001016124e6565b60008311156125de576125db8361245d848763ffffffff61295916565b97505b8799505b50505050505050505092915050565b81810182811015610fff57600080fd5b60028101546003820154600091829182612645670de0b6b3a764000061262d848663ffffffff61295916565b81151561263657fe5b8691900463ffffffff6125f116565b600687015490945060649061267190603c90670de0b6b3a7640000906124bf908863ffffffff61295916565b81151561267a57fe5b04905061268d848263ffffffff6125f116565b9695505050505050565b6000806000806000806000806000808a600360008e600160a060020a0316600160a060020a03168152602001908152602001600020600201541415806126db57508a155b156126e957600099506125e2565b600560008c815260200190815260200160002098506000975088600201549650600460008d600160a060020a0316600160a060020a0316815260200190815260200160002060008c8152602001908152602001600020945084600001549550612767670de0b6b3a764000061245d898961295990919063ffffffff16565b60068a01549098506000945084935060649061279a90603c90670de0b6b3a7640000906124bf908c63ffffffff61295916565b8115156127a357fe5b049150600090505b60088110156125be576127c6600a8a01826010811061250157fe5b6005860154909350640100000000900463ffffffff16600a8a0160088301601081106127ee57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16141561284a57600a8901816010811061282557fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff1693505b6001016127ab565b600160a060020a03811660009081526003602052604081206002015481906128a49061287f90859061238d565b600160a060020a0385166000908152600360205260409020549063ffffffff6125f116565b600160a060020a038416600090815260036020526040902060010154909150811115610ffb57600160a060020a0383166000908152600360205260409020600101549003610fff565b6002820154600090819061290f84670de0b6b3a764000063ffffffff61295916565b81151561291857fe5b0490506129328185600601546125f190919063ffffffff16565b6006850155600584015461294c908263ffffffff6125f116565b6005850155905092915050565b600082151561296a57506000610fff565b5081810281838281151561297a57fe5b0414610fff57600080fd5b60008282111561299457600080fd5b50900390565b6002820154600683015460009081908190670de0b6b3a7640000906129c5908663ffffffff61295916565b8115156129ce57fe5b04925060646129de846019612959565b8115156129e757fe5b04915060646129f7846005612959565b811515612a0057fe5b0490508560090154811115612ad9576009860154900384811115612ad9576009860154612a33908263ffffffff6125f116565b600987015560008054600154604080517fc671b934000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015260248101949094525191169163c671b93491849160448082019260209290919082900301818588803b158015612aab57600080fd5b505af1158015612abf573d6000803e3d6000fd5b50505050506040513d6020811015612ad657600080fd5b50505b8560080154821115612b885785600801548203915084821115612b88576008860154612b0b908363ffffffff6125f116565b600887015560008054604080517f16ff1c760000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926316ff1c76928692600480820193929182900301818588803b158015612b6e57600080fd5b505af1158015612b82573d6000803e3d6000fd5b50505050505b505050505050565b604080516101c081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081019190915290565b6101006040519081016040528060089060208202803883395091929150505600a165627a7a72305820b6c67ad01a9ffbfe57f423cb641607c78fbf19eb22cf8db028083a48718a6dea0029

Deployed Bytecode

0x6080604052600436106101695763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630149eea081146101825780630908c7fa146101a95780630f666426146101cf57806310b7d9ae146101e75780631449c32114610210578063212a6fd3146102fe57806332dc04aa1461031357806333791ddc1461032b5780634af0616a1461034c578063576bcd3f146103735780635b3660961461037e57806361c959261461039f5780636b2f4632146103d05780636ddd183a146103e5578063844d38ee1461048b57806388037e1c146104a05780638da5cb5b14610514578063a6f9dae114610529578063aad2b7231461054a578063ae5dbd431461056b578063b395f278146105ba578063bd679ab2146105e8578063bdc0ba8e146105fd578063cc0e13e214610612578063d925312814610627578063ea27e8451461065d578063f0b2653614610672578063fee13823146106b2575b600054600160a060020a0316331461018057600080fd5b005b34801561018e57600080fd5b506101976106ba565b60408051918252519081900360200190f35b610180600435602435600160a060020a036044351660643560843560ff60a435166106c0565b3480156101db57600080fd5b506101806004356107a1565b3480156101f357600080fd5b506101fc610804565b604080519115158252519081900360200190f35b34801561021c57600080fd5b5061022561080d565b604051808c81526020018b63ffffffff1663ffffffff1681526020018a815260200189815260200188815260200187815260200186815260200185600860200280838360005b8381101561028357818101518382015260200161026b565b5050505090500184600860200280838360005b838110156102ae578181015183820152602001610296565b5050505090500183600860200280838360005b838110156102d95781810151838201526020016102c1565b50505050919091019283525050604051908190036020019a5098505050505050505050f35b34801561030a57600080fd5b506101806109d8565b34801561031f57600080fd5b50610180600435610a55565b34801561033757600080fd5b50610197600160a060020a0360043516610ab4565b34801561035857600080fd5b5061018060043560243560443560643560ff60843516610acf565b610180600435610b8c565b34801561038a57600080fd5b50610180600160a060020a0360043516610d2e565b3480156103ab57600080fd5b506103b4610df0565b60408051600160a060020a039092168252519081900360200190f35b3480156103dc57600080fd5b50610197610dff565b3480156103f157600080fd5b506103fa610e04565b604051808461010080838360005b83811015610420578181015183820152602001610408565b5050505090500183600860200280838360005b8381101561044b578181015183820152602001610433565b5050505090500182600860200280838360005b8381101561047657818101518382015260200161045e565b50505050905001935050505060405180910390f35b34801561049757600080fd5b50610197610f66565b3480156104ac57600080fd5b506104b5611005565b604080519b8c5260208c019a909a528a8a019890985260608a019690965263ffffffff94851660808a015260a089019390935260c088019190915260e08701521661010085015261012084015261014083015251908190036101600190f35b34801561052057600080fd5b506103b461108f565b34801561053557600080fd5b50610180600160a060020a036004351661109e565b34801561055657600080fd5b50610180600160a060020a0360043516611160565b34801561057757600080fd5b506105806111d6565b6040805163ffffffff90971687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b3480156105c657600080fd5b506105cf611368565b6040805192835260208301919091528051918290030190f35b3480156105f457600080fd5b50610180611381565b34801561060957600080fd5b50610180611482565b34801561061e57600080fd5b506101806114e8565b34801561063357600080fd5b50610180600435602435604435600160a060020a036064351660843560a43560ff60c43516611550565b34801561066957600080fd5b506101806116cf565b34801561067e57600080fd5b506106876117cd565b6040805194855263ffffffff9093166020850152838301919091526060830152519081900360800190f35b610180611814565b60095490565b6000806106cb612b90565b3332146106d757600080fd5b60075433935034925060ff161580156106f257506000600854115b801561071c5750600a5482148061070d5750600a54600a0282145b8061071c5750600a5460640282145b801561073b575060085460009081526005602052604090206001015443105b151561074657600080fd5b610140810189905261012081018890526101608101869052610180810185905260ff84166101a0820152600a548281151561077d57fe5b0463ffffffff1661010082015261079683838984611825565b505050505050505050565b600154600160a060020a031633146107b857600080fd5b60008111156107c757600a8190555b6040805182815242602082015281517f96aff3d0ee4748c300128c53ba5612b8363232b00ab841ce27937cd52c8e0f28929181900390910190a150565b60075460ff1690565b6000806000806000806000610820612c04565b610828612c04565b610830612c04565b600061083a612c04565b610842612c04565b61084a612c04565b6000805b6008821015610973576008546000908152600560205260409020600a01826010811061087657fe5b600891828204019190066004029054906101000a900463ffffffff1685836008811015156108a057fe5b63ffffffff9092166020928302919091015260088054600090815260059092526040909120600a01908301601081106108d557fe5b600880820492909201548254600090815260056020908152604080832060079586166004026101000a90940463ffffffff168084529490930190522054909250600160a060020a03169085908490811061092b57fe5b600160a060020a03909216602092909202015261095784836008811061094d57fe5b6020020151610ab4565b83836008811061096357fe5b602002015260019091019061084e565b6008546000818152600560205260409020600c810154600a548254600190930154600b5463ffffffff90931693919243908b8b8b6109b033610ab4565b9f509f509f509f509f509f509f509f509f509f509f505050505050909192939495969798999a565b600154600090600160a060020a031633146109f257600080fd5b60075460ff1615610a0257600080fd5b506008546000908152600560205260409020610a1d81611d67565b60085460408051918252517f4eb04f9aed2df935e25cbec04051b51a0d2dedf786d3ef9ef4cfcb717ff8115f9181900360200190a150565b600154600160a060020a03163314610a6c57600080fd5b60008111610a7957600080fd5b600b8190556040805182815290517f6c1cf48245a0a91e114596b04dfcbe443303e5f72fab6771794891112fe4395f9181900360200190a150565b600160a060020a031660009081526006602052604090205490565b6000610ad9612b90565b333214610ae557600080fd5b60075433925060ff16158015610afd57506000600854115b8015610b1c575060085460009081526005602052604090206001015443105b8015610b445750600854600160a060020a038316600090815260036020526040902060020154145b1515610b4f57600080fd5b610140810187905261012081018690526101608101859052610180810184905260ff83166101a0820152610b838282611e29565b50505050505050565b6007543390349060ff16158015610ba75750600a54600a0281145b1515610bb257600080fd5b60008054600154604080517fc671b934000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015260248101949094525160029094049391169163c671b93491849160448082019260209290919082900301818588803b158015610c2b57600080fd5b505af1158015610c3f573d6000803e3d6000fd5b50505050506040513d6020811015610c5657600080fd5b505060008054604080517f16ff1c760000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926316ff1c76928592600480820193929182900301818588803b158015610cb657600080fd5b505af1158015610cca573d6000803e3d6000fd5b505050600160a060020a038416600081815260066020908152604091829020889055815192835282018790524282820152517fcf9e039b89f14b39579de014cbb7196367b18bd199b38836c8f1177d72de3f109350908190036060019150a1505050565b600154600160a060020a03163314610d4557600080fd5b600054600160a060020a0382811691161415610d6057600080fd5b600160a060020a0381161515610d7557600080fd5b60005460408051600160a060020a03928316815291831660208301524282820152517f87ab77b91a9a6a5a04a748607e0ee38d580963c4e21fe45d2e79ffeef26bc55e9181900360600190a16000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600254600160a060020a031681565b303190565b610e0c612c04565b610e14612c04565b610e1c612c04565b6000610e26612c04565b610e2e612c04565b610e36612c04565b3393506000805b6008821015610f58576008546000908152600560205260409020600a018260108110610e6557fe5b600891828204019190066004029054906101000a900463ffffffff168583600881101515610e8f57fe5b63ffffffff9092166020928302919091015260088054600090815260059092526040909120600a0190830160108110610ec457fe5b600880820492909201548254600090815260056020908152604080832060079586166004026101000a90940463ffffffff168084529490930190522054909250600160a060020a031690859084908110610f1a57fe5b600160a060020a039092166020929092020152610f3c84836008811061094d57fe5b838360088110610f4857fe5b6020020152600190910190610e3d565b509297919650945092505050565b336000818152600360205260408120600201549091908290610fb290610f8d90849061238d565b600160a060020a0384166000908152600360205260409020549063ffffffff6125f116565b600160a060020a038316600090815260036020526040902060010154909150811115610ffb57600160a060020a0382166000908152600360205260409020600101549003610fff565b5060005b92915050565b60085460008181526005602081815260408084206002808201546003830154838701546004808601546006870154600c90970154338c52918952878b209b8b529a9097529490972080546001820154978201549190930154919997989497949663ffffffff6401000000009097048716969395909380831693926801000000000000000090041690565b600154600160a060020a031681565b600154600160a060020a031633146110b557600080fd5b600154600160a060020a03828116911614156110d057600080fd5b600160a060020a03811615156110e557600080fd5b60015460408051600160a060020a03928316815291831660208301524282820152517fc13a1166d81cd3b0b352a367aebab95f3a6f6bc695fdab8e9a9d335239c3861b9181900360600190a16001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154600160a060020a0316331461117757600080fd5b600254600160a060020a038281169116141561119257600080fd5b600160a060020a03811615156111a757600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6008546000908152600560205260408120600c810154640100000000900463ffffffff1691908190819081908190339061120f81612601565b600160a060020a03808416600090815260046020818152604080842060085485528252808420830154845482517f1097b9ee0000000000000000000000000000000000000000000000000000000081526001958101959095529151969d506fffffffffffffffffffffffffffffffff169a5090931693631097b9ee9360248084019491938390030190829087803b1580156112a957600080fd5b505af11580156112bd573d6000803e3d6000fd5b505050506040513d60208110156112d357600080fd5b5051600854600160a060020a038416600090815260036020526040812060020154670de0b6b3a76400009389029390930498509550141561131d5761131a82600854612697565b93505b50600160a060020a031660009081526004602090815260408083206008548452909152902060050154959694959394929391926801000000000000000090920463ffffffff16919050565b6008546000908152600560205260409020600101544391565b33600090815260036020526040812060020154819015156113a157600080fd5b3391506113ad82612852565b9050600081116113bc57600080fd5b600160a060020a0382166000908152600360205260409020600101546113e8908263ffffffff6125f116565b600160a060020a038316600081815260036020908152604091829020600101939093558051918252918101839052428183015290517f8ea11b70a47e5aaa4024df0985799a384faaaf34e6da0aadbadcae0fbfca45ac9181900360600190a1604051600160a060020a0383169082156108fc029083906000818181858888f1935050505015801561147d573d6000803e3d6000fd5b505050565b600154600160a060020a0316331461149957600080fd5b6007805460ff19169055604080516000815242602082015281517fb04e455982e111d37c1d6ff02f82a465d673bb8931f9595e16b3aaf421001e56929181900390910190a16114e66116cf565b565b600154600160a060020a031633146114ff57600080fd5b6007805460ff1916600117908190556040805160ff929092161515825242602083015280517fb04e455982e111d37c1d6ff02f82a465d673bb8931f9595e16b3aaf421001e569281900390910190a1565b600061155a612b90565b33321461156657600080fd5b60075460ff1615801561157b57506000600854115b80156115a55750600a548914806115965750600a54600a0289145b806115a55750600a5460640289145b80156115c4575060085460009081526005602052604090206001015443105b15156115cf57600080fd5b610140810188905261012081018790526101608101859052610180810184905260ff83166101a0820152600a543392508981151561160957fe5b0463ffffffff1661010082015260008054604080517f52dde1c3000000000000000000000000000000000000000000000000000000008152600481018d9052600160a060020a038681166024830152915191909216926352dde1c392604480820193602093909283900390910190829087803b15801561168857600080fd5b505af115801561169c573d6000803e3d6000fd5b505050506040513d60208110156116b257600080fd5b50519850600089116116c357600080fd5b610796828a8884611825565b60015460009081908190600160a060020a031633146116ed57600080fd5b60075460ff16156116fd57600080fd5b600880546001908101918290556000918252600560205260409091204380825563128a18000191810191909155600a546002820181905560095491945092506117479084906128ed565b9050670de0b6b3a7640000611762828463ffffffff61295916565b81151561176b57fe5b0460048401819055600954909150611789908263ffffffff61298516565b6009556008546040805191825243602083015280517fae4bf3465111e7661119cb02fb9f8d726b606da9622ebcd75cabb5d611a0d04b9281900390910190a1505050565b3360009081526004602090815260408083206008548452909152902060018101546005820154600290920154909263ffffffff808416936801000000000000000090041690565b611820600954346125f1565b600955565b600160a060020a038416600081815260046020908152604080832060085480855290835281842060058452828520958552600390935290832060020154919392918291829182911461199c57600160a060020a038a16600090815260036020526040902060020154156118ff57600160a060020a038a166000908152600360205260409020600201546118b9908b9061238d565b600160a060020a038b166000908152600360205260409020549094506118e5908563ffffffff6125f116565b600160a060020a038b166000908152600360205260409020555b600854600160a060020a038b16600081815260036020908152604080832060020194909455600c8901805467ffffffff00000000198082166401000000009283900463ffffffff908116600101811684029190911780855560058f0180549185900483168502919093161790915591540416825260078901905291909120805473ffffffffffffffffffffffffffffffffffffffff191690911790555b6101208701511515806119b25750600186015415155b156119c1576119c18a88611e29565b61010087015160058701805463ffffffff191663ffffffff909216919091179055600b546138408115156119f157fe5b4391900481016002880155604080516020808201939093526c01000000000000000000000000600160a060020a038e168102828401523002605482015281516048818303018152606890910191829052805190928291908401908083835b60208310611a6e5780518252601f199092019160209182019101611a4f565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912060018a01555060649150611aae90508a6005612959565b811515611ab757fe5b049250611ad3838a0386600401546125f190919063ffffffff16565b600480870191909155600054604080517fc671b934000000000000000000000000000000000000000000000000000000008152600160a060020a038e8116948201949094528b841660248201529051929091169163c671b934918691604480830192602092919082900301818588803b158015611b4f57600080fd5b505af1158015611b63573d6000803e3d6000fd5b50505050506040513d6020811015611b7a57600080fd5b50516004870180546fffffffffffffffffffffffffffffffff8082168401166fffffffffffffffffffffffffffffffff199091161790559150611bd9856064611bca8c603c63ffffffff61295916565b811515611bd357fe5b046128ed565b506064611bed8a601463ffffffff61295916565b811515611bf657fe5b60028701549190049950611c188a670de0b6b3a764000063ffffffff61295916565b811515611c2157fe5b049050611c3b8186600501546125f190919063ffffffff16565b60058601556003850154611c55908263ffffffff6125f116565b60038601558554611c6c908263ffffffff6125f116565b86556005850154670de0b6b3a76400001015611cb45760058501546004860154611ca490670de0b6b3a764000063ffffffff61295916565b811515611cad57fe5b0460028601555b611cc68567016345785d8a000061299a565b600854600187015460028801547f5ac0b4edd12a08f65800ba1acbf27d7c2be5f7c546be8a7406ac44db6a2cc29f928d9290918660058c01600060088104919091015460408051600160a060020a03989098168852602088019690965286860194909452606086019290925260808501526007166004026101000a900463ffffffff1660a08301525160c0918190039190910190a150505050505050505050565b600c81015463ffffffff16600080808084118015611d8e575063400000008463ffffffff16105b15611e2257600c8501805463ffffffff19166340000000861763ffffffff9081169190911790915560028601546006870154909450670de0b6b3a764000091611dda9190869061295916565b811515611de357fe5b0491506064611df383600a612959565b811515611dfc57fe5b049050611e14816009546125f190919063ffffffff16565b600955611e2285600061299a565b5050505050565b600160a060020a038216600090815260046020908152604080832060085484528252808320600590925282206101208401519192909181908190819015801590611e7b57508560010154876101200151145b1515611e8657600080fd5b6000808852602088015263ffffffff6060880152600286015443101580611fdd575060025461014088015161012089015160408051602080820194909452808201929092528051808303820181526060909201908190528151600160a060020a03909416936001938291908401908083835b60208310611f175780518252601f199092019160209182019101611ef8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020896101a001518a61016001518b6101800151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015611fc7573d6000803e3d6000fd5b50505060206040510351600160a060020a031614155b15611feb5760006101408801525b600586015461014088015168010000000000000000820463ffffffff908116921602019350600084121561201e57600093505b63ffffffff8413156120325763ffffffff93505b6005860180546bffffffff000000000000000019166801000000000000000063ffffffff871602179055839250600091505b600882101561213857600a8501826010811061207c57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16905086604001518111156120bb576040870181905260a087018290525b86606001518110156120d65760608701819052608087018290525b6005860154640100000000900463ffffffff16600a860160088401601081106120fb57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16141561212d576001820160c08801525b600190910190612064565b60a0870151600a8601906008016010811061214f57fe5b60088104919091015460079091166004026101000a900463ffffffff1660e088015260c0870151600010156121d6578285600a0160018960c001510360108110151561219757fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff16021790555060018760200190151590811515815250506122a2565b86606001518311156122a2578285600a0188608001516010811015156121f857fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff16021790555085600501600160038110151561223357fe5b600891828204019190066004029054906101000a900463ffffffff1685600a01886080015160080160108110151561226757fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff16021790555060018760200190151590811515815250505b866040015183111561230b57600586015460e088015163ffffffff908116640100000000909204161461230b57600b54620151808115156122df57fe5b044301600186810191909155600c8601805463ffffffff80821684011663ffffffff1990911617905587525b60006001808801919091556008549086015488516020808b01516040805195865291850193909352838101879052600160a060020a038c166060850152901515608084015290151560a0830152517f2628150fa1da4e0b851fdaa0287546130f9fd453be51323b489a81f6c4bf00679181900360c00190a15050505050505050565b6000806000806000806000806000808a600360008e600160a060020a0316600160a060020a03168152602001908152602001600020600201541415806123d157508a155b156123df57600099506125e2565b600560008c815260200190815260200160002098506000975088600201549650600460008d600160a060020a0316600160a060020a0316815260200190815260200160002060008c8152602001908152602001600020945084600001549550612475670de0b6b3a764000061245d898961295990919063ffffffff16565b81151561246657fe5b8a91900463ffffffff6125f116565b600c8a0154909850634000000063ffffffff909116106125de576006890154600094508493506064906124d590603c90670de0b6b3a7640000906124bf908c63ffffffff61295916565b8115156124c857fe5b049063ffffffff61295916565b8115156124de57fe5b049150600090505b60088110156125be57612532600a8a01826010811061250157fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16846125f190919063ffffffff16565b6005860154909350640100000000900463ffffffff16600a8a01600883016010811061255a57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff1614156125b657600a8901816010811061259157fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff1693505b6001016124e6565b60008311156125de576125db8361245d848763ffffffff61295916565b97505b8799505b50505050505050505092915050565b81810182811015610fff57600080fd5b60028101546003820154600091829182612645670de0b6b3a764000061262d848663ffffffff61295916565b81151561263657fe5b8691900463ffffffff6125f116565b600687015490945060649061267190603c90670de0b6b3a7640000906124bf908863ffffffff61295916565b81151561267a57fe5b04905061268d848263ffffffff6125f116565b9695505050505050565b6000806000806000806000806000808a600360008e600160a060020a0316600160a060020a03168152602001908152602001600020600201541415806126db57508a155b156126e957600099506125e2565b600560008c815260200190815260200160002098506000975088600201549650600460008d600160a060020a0316600160a060020a0316815260200190815260200160002060008c8152602001908152602001600020945084600001549550612767670de0b6b3a764000061245d898961295990919063ffffffff16565b60068a01549098506000945084935060649061279a90603c90670de0b6b3a7640000906124bf908c63ffffffff61295916565b8115156127a357fe5b049150600090505b60088110156125be576127c6600a8a01826010811061250157fe5b6005860154909350640100000000900463ffffffff16600a8a0160088301601081106127ee57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16141561284a57600a8901816010811061282557fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff1693505b6001016127ab565b600160a060020a03811660009081526003602052604081206002015481906128a49061287f90859061238d565b600160a060020a0385166000908152600360205260409020549063ffffffff6125f116565b600160a060020a038416600090815260036020526040902060010154909150811115610ffb57600160a060020a0383166000908152600360205260409020600101549003610fff565b6002820154600090819061290f84670de0b6b3a764000063ffffffff61295916565b81151561291857fe5b0490506129328185600601546125f190919063ffffffff16565b6006850155600584015461294c908263ffffffff6125f116565b6005850155905092915050565b600082151561296a57506000610fff565b5081810281838281151561297a57fe5b0414610fff57600080fd5b60008282111561299457600080fd5b50900390565b6002820154600683015460009081908190670de0b6b3a7640000906129c5908663ffffffff61295916565b8115156129ce57fe5b04925060646129de846019612959565b8115156129e757fe5b04915060646129f7846005612959565b811515612a0057fe5b0490508560090154811115612ad9576009860154900384811115612ad9576009860154612a33908263ffffffff6125f116565b600987015560008054600154604080517fc671b934000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015260248101949094525191169163c671b93491849160448082019260209290919082900301818588803b158015612aab57600080fd5b505af1158015612abf573d6000803e3d6000fd5b50505050506040513d6020811015612ad657600080fd5b50505b8560080154821115612b885785600801548203915084821115612b88576008860154612b0b908363ffffffff6125f116565b600887015560008054604080517f16ff1c760000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926316ff1c76928692600480820193929182900301818588803b158015612b6e57600080fd5b505af1158015612b82573d6000803e3d6000fd5b50505050505b505050505050565b604080516101c081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081019190915290565b6101006040519081016040528060089060208202803883395091929150505600a165627a7a72305820b6c67ad01a9ffbfe57f423cb641607c78fbf19eb22cf8db028083a48718a6dea0029

Swarm Source

bzzr://b6c67ad01a9ffbfe57f423cb641607c78fbf19eb22cf8db028083a48718a6dea

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.