Sponsored Link: Monaco VISA® - World’s Best Cryptocurrency CardICO LIVE NOW
Contract Overview | etherplay.io
ETH Balance: 0.272000000000000315 Ether
ETH USD Value: $54.10 (@ $198.89/ETH)
No Of Transactions: 10009 txns + 1251 internalTxns
  Latest 25 txns from a total Of 10009 transactions View All

TxHash Block Age From To Value [TxFee]
0x74f8542b7cc5f7de3b83104173fc77b6013ebdfc1fdd9ff162bc5888db445f8e37619718 hrs 35 mins ago0x65b03b824535d118d85ec01c0a03db347bd9d79c  IN   etherplay.io0 Ether0.00118237
0x4f75af40da49038fdf3d1bf3ea1c0cd638ae7e516ae1efaf685be92991deb8cb37619638 hrs 38 mins ago0x65b03b824535d118d85ec01c0a03db347bd9d79c  IN   etherplay.io0.008 Ether0.00084909
0x8bf89edace7f42a740229134278bf4873e0e3920f51e6f00f752f6addb550fb737571841 day 5 hrs ago0x26661f15f5a4bfab16529281aadec785b086151e  IN   etherplay.io0 Ether0.00106722
0x3344a14fabd5762e3229bee0b5d6af9ab3c97897a6d7de38ab3d7f26257cb4a037571701 day 5 hrs ago0x26661f15f5a4bfab16529281aadec785b086151e  IN   etherplay.io0.008 Ether0.0007664
0x5ee9ded1f3343f24be58e0253f3edbe1373ed2850a95582bcdd9cde743699e6137550731 day 14 hrs ago0x887425c514634716eb15ec18942fe67a1764bb5f  IN   etherplay.io0 Ether0.00166338
0x10ed4fedede0ee4aa5e9501c62003bc5b1005336a85b03e13e65fe10840dde1537550631 day 14 hrs ago0x887425c514634716eb15ec18942fe67a1764bb5f  IN   etherplay.io0.008 Ether0.00106256
0xa175d01452fbd5ed3d9cafb969b4594919e0566c5d708b72045ce454bc85117b37550531 day 14 hrs ago0x887425c514634716eb15ec18942fe67a1764bb5f  IN   etherplay.io0 Ether0.00083438
0x941ceef757a30054a41c8b2d00a76ed94c5f8aa4b7f1e3c3c5ea098ff778ee8737550391 day 15 hrs ago0x887425c514634716eb15ec18942fe67a1764bb5f  IN   etherplay.io0.008 Ether0.0007664
0x63a1906dd2e1e4f2da64e3f236579161be1fae2d7e6ea8a66f28e0870a43a4c137550351 day 15 hrs ago0x887425c514634716eb15ec18942fe67a1764bb5f  IN   etherplay.io0 Ether0.00166722
0x12ea44c6dd5d347c0a1c16b669d353faf72c16e8d7f252f0a6c048e6fbb6d2ec37550261 day 15 hrs ago0x887425c514634716eb15ec18942fe67a1764bb5f  IN   etherplay.io0.008 Ether0.0010664
0x6b27b0f4e5dbcf9ce0ad31829c93e20c7b7406178708536b2eeae00c9ab3916737548291 day 16 hrs ago0x0718197b9ac69127381ed0c4b5d0f724f857c4d1  IN   etherplay.io0 Ether0.00342525
0xeb0f9050ab9a1014851955ed2e157f13a731dece76bd4fa6c01e495700ed313037548201 day 16 hrs ago0x05a4307b87f9f6d22d3a47108cdd7f52087e37c0  IN   etherplay.io0 Ether0.0010685
0xdc1bc642e893fc2a3ab0f51f7236cab7b50acacf6ed1ac640efd03308cac60fa37547941 day 16 hrs ago0x05a4307b87f9f6d22d3a47108cdd7f52087e37c0  IN   etherplay.io0.008 Ether0.0007664
0xbe29a23c70a4a649d0bfe266bcade4528e826c984fe469c63ce08c9fb19ad64537546981 day 16 hrs ago0x0718197b9ac69127381ed0c4b5d0f724f857c4d1  IN   etherplay.io0.08 Ether0.01277732
0xca4559594d7d93d596d57c9201652db887f5fe0d15dc1557550041aff8bf855c37498452 days 14 hrs ago0x17b8568c9be9eca023537a0db2219429d2e97734  IN   etherplay.io0 Ether0.00106722
0xca91ac6f488c0827c05fbc4598ce22933d61af5a1b5fd6939a3b8473e89ba98c37498232 days 14 hrs ago0x17b8568c9be9eca023537a0db2219429d2e97734  IN   etherplay.io0.008 Ether0.00076512
0xe75e78b79058deaad72c0c09e569223193fa19ed8d5b085f79ec1086488daf3937498142 days 14 hrs ago0xd06d38c35480829084f32106b374865b3c1e096d  IN   etherplay.io0 Ether0.0010685
0x8ca8c0c233f1b5be2ab73b1879547cb8c9183685a3e3617f8969325f05e7467737497972 days 14 hrs ago0xd06d38c35480829084f32106b374865b3c1e096d  IN   etherplay.io0.008 Ether0.00076512
0x5b09f7b0146714159987872fe96e6fa92236778ad162cf879d32116f3fc693f537497742 days 14 hrs ago0xd06d38c35480829084f32106b374865b3c1e096d  IN   etherplay.io0 Ether0.00106338
0x0bf58e0809e3fa92cfaec5bb18ebbaf1cef51bd608a0543006bb3e82fa4d458037497672 days 14 hrs ago0xd06d38c35480829084f32106b374865b3c1e096d  IN   etherplay.io0.008 Ether0.00076256
0x60d0fe11532f6d08ed636e1afd2a6161b49ab388e79c5cf56fbbb9a82a2ee3b737486872 days 19 hrs ago0x05a4307b87f9f6d22d3a47108cdd7f52087e37c0  IN   etherplay.io0 Ether0.00106338
0xa590c795145a70f6608df2693522968505132c1fa0053b3ba72d2937370a87e137486782 days 19 hrs ago0x05a4307b87f9f6d22d3a47108cdd7f52087e37c0  IN   etherplay.io0.008 Ether0.00076256
0xcefaede11091f4679ceb7a4af23c055c87054c1122209ca48d08950bbb890bb937473153 days 1 hr ago0x05a4307b87f9f6d22d3a47108cdd7f52087e37c0  IN   etherplay.io0.008 Ether0.00076256
0x7182ed32a606c7a3993351bed1ae1a2c0b4b2cf47cfe77df416ad94bfb7a5f1237472513 days 1 hr ago0x05a4307b87f9f6d22d3a47108cdd7f52087e37c0  IN   etherplay.io0.008 Ether0.00080068
0x37c9e175d0300fd9b057ab05279220d649f20fdae36d8c81752de555a834dafd37451113 days 11 hrs ago0xd06d38c35480829084f32106b374865b3c1e096d  IN   etherplay.io0 Ether0.00058886

[Download: CSV Export ]    
 Internal Transactions as a result of Contract Execution
  Latest 25 Internal Txns from a total of 1251 View All
ParentTxHash Block Age From To Value
0x6b27b0f4e5dbcf9ce0ad31829c93e20c7b7406178708536b2eeae00c9ab3916737548291 day 16 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xbdb7be5d2640c46faf111ae18a84485b9a2565bd0.068 Ether
0x6b27b0f4e5dbcf9ce0ad31829c93e20c7b7406178708536b2eeae00c9ab3916737548291 day 16 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xcedf8ebb5ee36636816b0cc979a22efde57015d60.003708947810067612 Ether
0x6b27b0f4e5dbcf9ce0ad31829c93e20c7b7406178708536b2eeae00c9ab3916737548291 day 16 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x26661f15f5a4bfab16529281aadec785b086151e0.004450737372081135 Ether
0x6b27b0f4e5dbcf9ce0ad31829c93e20c7b7406178708536b2eeae00c9ab3916737548291 day 16 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xa0cc61400dace95f71b8b3142b42a02c61b25c5f0.005439790121432498 Ether
0x6b27b0f4e5dbcf9ce0ad31829c93e20c7b7406178708536b2eeae00c9ab3916737548291 day 16 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x7e80fe9593f550002c13e1775b79dbe153d060ef0.006800065587052344 Ether
0x6b27b0f4e5dbcf9ce0ad31829c93e20c7b7406178708536b2eeae00c9ab3916737548291 day 16 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x65b03b824535d118d85ec01c0a03db347bd9d79c0.008742754077489173 Ether
0x6b27b0f4e5dbcf9ce0ad31829c93e20c7b7406178708536b2eeae00c9ab3916737548291 day 16 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x8604190b0925eb27c21528f2fba85921ecab98440.011656786813144416 Ether
0x6b27b0f4e5dbcf9ce0ad31829c93e20c7b7406178708536b2eeae00c9ab3916737548291 day 16 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x05a4307b87f9f6d22d3a47108cdd7f52087e37c00.016320026234820937 Ether
0x6b27b0f4e5dbcf9ce0ad31829c93e20c7b7406178708536b2eeae00c9ab3916737548291 day 16 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x8ebca52a17e37866676ee0b020f0bcc22405e36b0.024479711416969685 Ether
0x6b27b0f4e5dbcf9ce0ad31829c93e20c7b7406178708536b2eeae00c9ab3916737548291 day 16 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xd06d38c35480829084f32106b374865b3c1e096d0.040800393522314065 Ether
0x6b27b0f4e5dbcf9ce0ad31829c93e20c7b7406178708536b2eeae00c9ab3916737548291 day 16 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x17b8568c9be9eca023537a0db2219429d2e977340.081600787044628131 Ether
0x37cd439b9fbc850f50f4e6e48ccc3949142bd68a1db8be9cd4b905e11dfce92d37345485 days 9 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x2e6ada74ba7c69aabb45988ea7f5c74314c7568d0.008 Ether
0x353ac5ad6d5a237a37e7e8e7b25fa2187eb8c59c8c0542b6e8511e8947eeed5c37328755 days 16 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xbdb7be5d2640c46faf111ae18a84485b9a2565bd0.226 Ether
0x353ac5ad6d5a237a37e7e8e7b25fa2187eb8c59c8c0542b6e8511e8947eeed5c37328755 days 16 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xc114f48b3f9828e68bf253f0b9cfb713fc54eb440.001911978749727094 Ether
0x353ac5ad6d5a237a37e7e8e7b25fa2187eb8c59c8c0542b6e8511e8947eeed5c37328755 days 16 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xb48035e79426beb7e339cdec787bac375b3c24cf0.004658649297722145 Ether
0x353ac5ad6d5a237a37e7e8e7b25fa2187eb8c59c8c0542b6e8511e8947eeed5c37328755 days 16 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x289afc7b63bb1f186c3a75dc80b24b840d4b35e70.006393821410377701 Ether
0x353ac5ad6d5a237a37e7e8e7b25fa2187eb8c59c8c0542b6e8511e8947eeed5c37328755 days 16 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x6c1edfde912eeaf43142ba8733689f30b06492ea0.007308692962666472 Ether
0x353ac5ad6d5a237a37e7e8e7b25fa2187eb8c59c8c0542b6e8511e8947eeed5c37328755 days 16 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x1841dc738e2e8977f659d5e3caa8c4d9133dd9530.008431209518957863 Ether
0x353ac5ad6d5a237a37e7e8e7b25fa2187eb8c59c8c0542b6e8511e8947eeed5c37328755 days 16 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xebae28f1e0c61d5f1469f6b02a23a3f9efb0e5700.009837439051015209 Ether
0x353ac5ad6d5a237a37e7e8e7b25fa2187eb8c59c8c0542b6e8511e8947eeed5c37328755 days 16 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xffd329be207de40c0406800195e475accd5550d80.011626064333017975 Ether
0x353ac5ad6d5a237a37e7e8e7b25fa2187eb8c59c8c0542b6e8511e8947eeed5c37328755 days 16 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x264693e85f244955e5ba3d4a54412b6b68a851ce0.01395127719962157 Ether
0x353ac5ad6d5a237a37e7e8e7b25fa2187eb8c59c8c0542b6e8511e8947eeed5c37328755 days 16 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x3472769b92ddd87c4147cfad6a156286a59f50750.017051561021759697 Ether
0x353ac5ad6d5a237a37e7e8e7b25fa2187eb8c59c8c0542b6e8511e8947eeed5c37328755 days 16 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x623167a1d36bf7377efd89dbf347efedd05a1d230.02131547922276399 Ether
0x353ac5ad6d5a237a37e7e8e7b25fa2187eb8c59c8c0542b6e8511e8947eeed5c37328755 days 16 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x9b7179b03b55966d6d02fd577e2c4be14af3c3d60.027405028746088348 Ether
0x353ac5ad6d5a237a37e7e8e7b25fa2187eb8c59c8c0542b6e8511e8947eeed5c37328755 days 16 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x05a4307b87f9f6d22d3a47108cdd7f52087e37c00.036539353031074885 Ether

[Download: CSV Export ]    
Warning: The compiled contract might be susceptible to ConstantOptimizerSubtraction (low-severity), IdentityPrecompileReturnIgnored (low-severity) Solidity compiler bugs.

Contract Source Code Verified
Contract Name: CompetitionStore
Compiler Version: v0.4.4+commit.4633f3de
Optimization Enabled: Yes
Online Solidity Editor:  Click To View



  Contract Source Code   Find Similiar Contracts
/* Copyright (C) Etherplay <contact@etherplay.io> - All Rights Reserved */
pragma solidity 0.4.4;

contract CompetitionStore {
	
/////////////////////////////////////////////////////////////////// DATA /////////////////////////////////////////////////////////////
	
	//player's submission store the info required to verify its accuracy
	struct Submission{
		uint32 score; 
		uint32 durationRoundedDown; // duration in second of the game session
		uint32 version; // version of the game used
		uint64 seed; //seed used
		uint64 submitBlockNumber; // blockNumber at which the submission is processed
		bytes32 proofHash;//sha256 of proof : to save gas, the proof is not saved directly in the contract. Instead its hash is saved. The actual proof will be saved on a server. The player could potentially save it too. 
	}
	
	//player start game parameter
	struct Start{
		uint8 competitionIndex; //competition index (0 or 1) there is only 2 current competition per game, one is active, the other one being the older one which might have pending verification
		uint32 version;  //version of the game that the player score is based on
		uint64 seed; // the seed used for the game session
		uint64 time; // start time , used to check if the player is not taking too long to submit its score
	}
	
	// the values representing each competition
	struct Competition{
		uint8 numPastBlocks;// number of past block allowed, 1 is the minimum since you can only get the hash of a past block. Allow player to start play instantunously
		uint8 houseDivider; // how much the house takes : 4 means house take 1/4 (25%)
		uint16 lag; // define how much extra time is allowed to submit a score (to accomodate block time and delays)
		uint32 verificationWaitTime;// wait time allowed for submission past competition's end time 
		uint32 numPlayers;//current number of player that submited a score
		uint32 version; //the version of the game used for that competition, a hash of the code is published in the log upon changing
		uint32 previousVersion; // previousVersion to allow smooth update upon version change
		uint64 versionChangeBlockNumber; 
		uint64 switchBlockNumber; // the blockNumber at which the competition started
		uint64 endTime;//The time at which the competition is set to finish. No start can happen after that and the competition cannot be aborted before that
		uint88 price;  // the price for that competition, do not change 
		uint128 jackpot; // the current jackpot for that competition, this jackpot is then shared among the developer (in the deposit account for  funding development) and the winners (see houseDivider))
		uint32[] rewardsDistribution; // the length of it define how many winners there is and the distribution of the reward is the value for each index divided by the total
		mapping (address => Submission) submissions;  //only one submission per player per competition
		address[] players; // contain the list of players that submited a score for that competition
	}
		
	struct Game{
		mapping (address => Start) starts; // only 1 start per player, further override the current
		Competition[2] competitions; // 2 competitions only to save gas, overrite each other upon going to next competition
		uint8 currentCompetitionIndex; //can only be 1 or 0 (switch operation : 1 - currentCompetitionIndex)
	}

	mapping (string => Game) games;
	
	address organiser; // admin having control of the reward 
	address depositAccount;	 // is the receiver of the house part of the jackpot (see houseDivider) Can only be changed by the depositAccount.

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



///////////////////////////////////////////////////////// EVENTS /////////////////////////////////////////////////////////////

	//event logging the hash of the game code for a particular version
	event VersionChange(
		string indexed gameID,
		uint32 indexed version,
		bytes32 codeHash // the sha256 of the game code as used by the player
	);

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////




//////////////////////////////////////////////////////// PLAYERS ACTIONS /////////////////////////////////////////////////////////////
	
	/*
	The seed is computed from the block hash and the sender address
	While the seed can be predicted for few block away (see : numPastBlocks) this is has no much relevance since a game session have a bigger duration,
	Remember this is not gambling game, this is a skill game, seed is only a small part of the game outcome
	*/
	function computeSeed(uint64 blockNumber, address player) internal constant returns(uint64 seed){ 
		return uint64(sha3(block.blockhash(blockNumber),block.blockhash(blockNumber-1),block.blockhash(blockNumber-2),block.blockhash(blockNumber-3),block.blockhash(blockNumber-4),block.blockhash(blockNumber-5),player)); 
	}
	
	/*
		probe the current state of the competition so player can start playing right away (need to commit a tx too to ensure its play will be considered though)
	*/
	function getSeedAndState(string gameID, address player) constant returns(uint64 seed, uint64 blockNumber, uint8 competitionIndex, uint32 version, uint64 endTime, uint88 price, uint32 myBestScore, uint64 competitionBlockNumber, uint64 registeredSeed){
		var game = games[gameID];

		competitionIndex = game.currentCompetitionIndex;
		var competition = game.competitions[competitionIndex];

		blockNumber = uint64(block.number-1);
		seed = computeSeed(blockNumber, player);
		version = competition.version;
		endTime = competition.endTime;
		price = competition.price;
		competitionBlockNumber = competition.switchBlockNumber;
		
		if (competition.submissions[player].submitBlockNumber >= competition.switchBlockNumber){
			myBestScore = competition.submissions[player].score;
		}else{
			myBestScore = 0;
		}
		
		registeredSeed = game.starts[player].seed;
	}
	
	
		
	function start(string gameID, uint64 blockNumber,uint8 competitionIndex, uint32 version) payable {
		var game = games[gameID];
		var competition = game.competitions[competitionIndex];

		if(msg.value != competition.price){
			throw;
		}

		if(
			competition.endTime <= now || //block play when time is up 
			competitionIndex != game.currentCompetitionIndex || //start happen just after a switch // should not be possible since endTime already ensure that a new competition cannot start before the end of the first
			version != competition.version && (version != competition.previousVersion || block.number > competition.versionChangeBlockNumber) || //ensure version is same as current (or previous if versionChangeBlockNumber is recent)
			block.number >= competition.numPastBlocks && block.number - competition.numPastBlocks > blockNumber //ensure start is not too old   
			){
				//if ether was sent, send it back if possible, else throw
				if(msg.value != 0 && !msg.sender.send(msg.value)){
					throw;
				}
				return;
		}
		
		competition.jackpot += uint128(msg.value); //increase the jackpot
		
		//save the start params
		game.starts[msg.sender] = Start({
			seed: computeSeed(blockNumber,msg.sender)
			, time : uint64(now)
			, competitionIndex : competitionIndex
			, version : version
		}); 
	}
		
	function submit(string gameID, uint64 seed, uint32 score, uint32 durationRoundedDown, bytes32 proofHash){ 
		var game = games[gameID];

		var gameStart = game.starts[msg.sender];
			
		//seed should be same, else it means double start and this one executing is from the old one 
		if(gameStart.seed != seed){
			return;
		}
		
		var competition = game.competitions[gameStart.competitionIndex];
		
		// game should not take too long to be submited
		if(now - gameStart.time > durationRoundedDown + competition.lag){ 
			return;
		}

		if(now >= competition.endTime + competition.verificationWaitTime){
			return; //this ensure verifier to get all the score at that time (should never be there though as game should ensure a maximumTime < verificationWaitTime)
		}
		
		var submission = competition.submissions[msg.sender];
		if(submission.submitBlockNumber < competition.switchBlockNumber){
			if(competition.numPlayers >= 4294967295){ //unlikely but if that happen this is for now the best place to stop
				return;
			}
		}else if (score <= submission.score){
			return;
		}
		
		var players = competition.players;
		//if player did not submit score yet => add player to list
		if(submission.submitBlockNumber < competition.switchBlockNumber){
			var currentNumPlayer = competition.numPlayers;
			if(currentNumPlayer >= players.length){
				players.push(msg.sender);
			}else{
				players[currentNumPlayer] = msg.sender;
			}
			competition.numPlayers = currentNumPlayer + 1;
		}
		
		competition.submissions[msg.sender] = Submission({
			proofHash:proofHash,
			seed:gameStart.seed,
			score:score,
			durationRoundedDown:durationRoundedDown,
			submitBlockNumber:uint64(block.number),
			version:gameStart.version
		});
		
	}
	
	/*
		accept donation payment : this increase the jackpot of the currentCompetition of the specified game
	*/
	function increaseJackpot(string gameID) payable{
		var game = games[gameID];
		game.competitions[game.currentCompetitionIndex].jackpot += uint128(msg.value); //extra ether is lost but this is not going to happen :)
	}

//////////////////////////////////////////////////////////////////////////////////////////

	
/////////////////////////////////////// PRIVATE ///////////////////////////////////////////
		
	function CompetitionStore(){
		organiser = msg.sender;
		depositAccount = msg.sender;
	}

	
	//give a starting jackpot by sending ether to the transaction
	function _startNextCompetition(string gameID, uint32 version, uint88 price, uint8 numPastBlocks, uint8 houseDivider, uint16 lag, uint64 duration, uint32 verificationWaitTime, bytes32 codeHash, uint32[] rewardsDistribution) payable{
		if(msg.sender != organiser){
			throw;
		}
		var game = games[gameID];
		var newCompetition = game.competitions[1 - game.currentCompetitionIndex]; 
		var currentCompetition = game.competitions[game.currentCompetitionIndex];
		//do not allow to switch if endTime is not over
		if(currentCompetition.endTime >= now){
			throw;
		}

		//block switch if reward was not called (numPlayers > 0)
		if(newCompetition.numPlayers > 0){
			throw;
		}
		
		if(houseDivider == 0){ 
			throw;
		}
		
		if(numPastBlocks < 1){
			throw;
		}
		
		if(rewardsDistribution.length == 0 || rewardsDistribution.length > 64){ // do not risk gas shortage on reward
			throw;
		}
		//ensure rewardsDistribution give always something and do not give more to a lower scoring player
		uint32 prev = 0;
		for(uint8 i = 0; i < rewardsDistribution.length; i++){
			if(rewardsDistribution[i] == 0 ||  (prev != 0 && rewardsDistribution[i] > prev)){
				throw;
			}
			prev = rewardsDistribution[i];
		}

		if(version != currentCompetition.version){
			VersionChange(gameID,version,codeHash); 
		}
		
		game.currentCompetitionIndex = 1 - game.currentCompetitionIndex;
		
		newCompetition.switchBlockNumber = uint64(block.number);
		newCompetition.previousVersion = 0;
		newCompetition.versionChangeBlockNumber = 0;
		newCompetition.version = version;
		newCompetition.price = price; 
		newCompetition.numPastBlocks = numPastBlocks;
		newCompetition.rewardsDistribution = rewardsDistribution;
		newCompetition.houseDivider = houseDivider;
		newCompetition.lag = lag;
		newCompetition.jackpot += uint128(msg.value); //extra ether is lost but this is not going to happen :)
		newCompetition.endTime = uint64(now) + duration;
		newCompetition.verificationWaitTime = verificationWaitTime;
	}
	
	
	
	function _setBugFixVersion(string gameID, uint32 version, bytes32 codeHash, uint32 numBlockAllowedForPastVersion){
		if(msg.sender != organiser){
			throw;
		}

		var game = games[gameID];
		var competition = game.competitions[game.currentCompetitionIndex];
		
		if(version <= competition.version){ // a bug fix should be a new version (greater than previous version)
			throw;
		}
		
		if(competition.endTime <= now){ // cannot bugFix a competition that already ended
			return;
		}
		
		competition.previousVersion = competition.version;
		competition.versionChangeBlockNumber = uint64(block.number + numBlockAllowedForPastVersion);
		competition.version = version;
		VersionChange(gameID,version,codeHash);
	}

	function _setLagParams(string gameID, uint16 lag, uint8 numPastBlocks){
		if(msg.sender != organiser){
			throw;
		}
		
		if(numPastBlocks < 1){
			throw;
		}

		var game = games[gameID];
		var competition = game.competitions[game.currentCompetitionIndex];
		competition.numPastBlocks = numPastBlocks;
		competition.lag = lag;
	}

	function _rewardWinners(string gameID, uint8 competitionIndex, address[] winners){
		if(msg.sender != organiser){
			throw;
		}
		
		var competition = games[gameID].competitions[competitionIndex];

		//ensure time has passed so that players who started near the end can finish their session 
		//game should be made to ensure termination before verificationWaitTime, it is the game responsability
		if(int(now) - competition.endTime < competition.verificationWaitTime){
			throw;
		}

		
		if( competition.jackpot > 0){ // if there is no jackpot skip

			
			var rewardsDistribution = competition.rewardsDistribution;

			uint8 numWinners = uint8(rewardsDistribution.length);

			if(numWinners > uint8(winners.length)){
				numWinners = uint8(winners.length);
			}

			uint128 forHouse = competition.jackpot;
			if(numWinners > 0 && competition.houseDivider > 1){ //in case there is no winners (no players or only cheaters), the house takes all
				forHouse = forHouse / competition.houseDivider;
				uint128 forWinners = competition.jackpot - forHouse;

				uint64 total = 0;
				for(uint8 i=0; i<numWinners; i++){ // distribute all the winning even if there is not all the winners
					total += rewardsDistribution[i];
				}
				for(uint8 j=0; j<numWinners; j++){
					uint128 value = (forWinners * rewardsDistribution[j]) / total;
					if(!winners[j].send(value)){ // if fail give to house
						forHouse = forHouse + value;
					}
				}
			}
			
			if(!depositAccount.send(forHouse)){
				//in case sending to house failed 
				var nextCompetition = games[gameID].competitions[1 - competitionIndex];
				nextCompetition.jackpot = nextCompetition.jackpot + forHouse;	
			}

			
			competition.jackpot = 0;
		}
		
		
		competition.numPlayers = 0;
	}

	
	/*
		allow to change the depositAccount of the house share, only the depositAccount can change it, depositAccount == organizer at creation
	*/
	function _setDepositAccount(address newDepositAccount){
		if(depositAccount != msg.sender){
			throw;
		}
		depositAccount = newDepositAccount;
	}
	
	/*
		allow to change the organiser, in case this need be 
	*/
	function _setOrganiser(address newOrganiser){
		if(organiser != msg.sender){
			throw;
		}
		organiser = newOrganiser;
	}
	
	
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////// OTHER CONSTANT CALLS TO PROBE VALUES ////////////////////////////////////////////////////

	function getPlayerSubmissionFromCompetition(string gameID, uint8 competitionIndex, address playerAddress) constant returns(uint32 score, uint64 seed, uint32 duration, bytes32 proofHash, uint32 version, uint64 submitBlockNumber){
		var submission = games[gameID].competitions[competitionIndex].submissions[playerAddress];
		score = submission.score;
		seed = submission.seed;		
		duration = submission.durationRoundedDown;
		proofHash = submission.proofHash;
		version = submission.version;
		submitBlockNumber =submission.submitBlockNumber;
	}
	
	function getPlayersFromCompetition(string gameID, uint8 competitionIndex) constant returns(address[] playerAddresses, uint32 num){
		var competition = games[gameID].competitions[competitionIndex];
		playerAddresses = competition.players;
		num = competition.numPlayers;
	}

	function getCompetitionValues(string gameID, uint8 competitionIndex) constant returns (
		uint128 jackpot,
		uint88 price,
		uint32 version,
		uint8 numPastBlocks,
		uint64 switchBlockNumber,
		uint32 numPlayers,
		uint32[] rewardsDistribution,
		uint8 houseDivider,
		uint16 lag,
		uint64 endTime,
		uint32 verificationWaitTime,
		uint8 _competitionIndex
	){
		var competition = games[gameID].competitions[competitionIndex];
		jackpot = competition.jackpot;
		price = competition.price;
		version = competition.version;
		numPastBlocks = competition.numPastBlocks;
		switchBlockNumber = competition.switchBlockNumber;
		numPlayers = competition.numPlayers;
		rewardsDistribution = competition.rewardsDistribution;
		houseDivider = competition.houseDivider;
		lag = competition.lag;
		endTime = competition.endTime;
		verificationWaitTime = competition.verificationWaitTime;
		_competitionIndex = competitionIndex;
	}
	
	function getCurrentCompetitionValues(string gameID) constant returns (
		uint128 jackpot,
		uint88 price,
		uint32 version,
		uint8 numPastBlocks,
		uint64 switchBlockNumber,
		uint32 numPlayers,
		uint32[] rewardsDistribution,
		uint8 houseDivider,
		uint16 lag,
		uint64 endTime,
		uint32 verificationWaitTime,
		uint8 _competitionIndex
	)
	{
		return getCompetitionValues(gameID,games[gameID].currentCompetitionIndex);
	}
}

  Contract ABI  
[{"constant":false,"inputs":[{"name":"gameID","type":"string"},{"name":"version","type":"uint32"},{"name":"codeHash","type":"bytes32"},{"name":"numBlockAllowedForPastVersion","type":"uint32"}],"name":"_setBugFixVersion","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newDepositAccount","type":"address"}],"name":"_setDepositAccount","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"gameID","type":"string"},{"name":"lag","type":"uint16"},{"name":"numPastBlocks","type":"uint8"}],"name":"_setLagParams","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"gameID","type":"string"},{"name":"seed","type":"uint64"},{"name":"score","type":"uint32"},{"name":"durationRoundedDown","type":"uint32"},{"name":"proofHash","type":"bytes32"}],"name":"submit","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"gameID","type":"string"},{"name":"competitionIndex","type":"uint8"},{"name":"playerAddress","type":"address"}],"name":"getPlayerSubmissionFromCompetition","outputs":[{"name":"score","type":"uint32"},{"name":"seed","type":"uint64"},{"name":"duration","type":"uint32"},{"name":"proofHash","type":"bytes32"},{"name":"version","type":"uint32"},{"name":"submitBlockNumber","type":"uint64"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"gameID","type":"string"}],"name":"increaseJackpot","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"newOrganiser","type":"address"}],"name":"_setOrganiser","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"gameID","type":"string"},{"name":"blockNumber","type":"uint64"},{"name":"competitionIndex","type":"uint8"},{"name":"version","type":"uint32"}],"name":"start","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"gameID","type":"string"},{"name":"version","type":"uint32"},{"name":"price","type":"uint88"},{"name":"numPastBlocks","type":"uint8"},{"name":"houseDivider","type":"uint8"},{"name":"lag","type":"uint16"},{"name":"duration","type":"uint64"},{"name":"verificationWaitTime","type":"uint32"},{"name":"codeHash","type":"bytes32"},{"name":"rewardsDistribution","type":"uint32[]"}],"name":"_startNextCompetition","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[{"name":"gameID","type":"string"},{"name":"player","type":"address"}],"name":"getSeedAndState","outputs":[{"name":"seed","type":"uint64"},{"name":"blockNumber","type":"uint64"},{"name":"competitionIndex","type":"uint8"},{"name":"version","type":"uint32"},{"name":"endTime","type":"uint64"},{"name":"price","type":"uint88"},{"name":"myBestScore","type":"uint32"},{"name":"competitionBlockNumber","type":"uint64"},{"name":"registeredSeed","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"gameID","type":"string"},{"name":"competitionIndex","type":"uint8"}],"name":"getCompetitionValues","outputs":[{"name":"jackpot","type":"uint128"},{"name":"price","type":"uint88"},{"name":"version","type":"uint32"},{"name":"numPastBlocks","type":"uint8"},{"name":"switchBlockNumber","type":"uint64"},{"name":"numPlayers","type":"uint32"},{"name":"rewardsDistribution","type":"uint32[]"},{"name":"houseDivider","type":"uint8"},{"name":"lag","type":"uint16"},{"name":"endTime","type":"uint64"},{"name":"verificationWaitTime","type":"uint32"},{"name":"_competitionIndex","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"gameID","type":"string"},{"name":"competitionIndex","type":"uint8"}],"name":"getPlayersFromCompetition","outputs":[{"name":"playerAddresses","type":"address[]"},{"name":"num","type":"uint32"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"gameID","type":"string"}],"name":"getCurrentCompetitionValues","outputs":[{"name":"jackpot","type":"uint128"},{"name":"price","type":"uint88"},{"name":"version","type":"uint32"},{"name":"numPastBlocks","type":"uint8"},{"name":"switchBlockNumber","type":"uint64"},{"name":"numPlayers","type":"uint32"},{"name":"rewardsDistribution","type":"uint32[]"},{"name":"houseDivider","type":"uint8"},{"name":"lag","type":"uint16"},{"name":"endTime","type":"uint64"},{"name":"verificationWaitTime","type":"uint32"},{"name":"_competitionIndex","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"gameID","type":"string"},{"name":"competitionIndex","type":"uint8"},{"name":"winners","type":"address[]"}],"name":"_rewardWinners","outputs":[],"payable":false,"type":"function"},{"inputs":[],"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"gameID","type":"string"},{"indexed":true,"name":"version","type":"uint32"},{"indexed":false,"name":"codeHash","type":"bytes32"}],"name":"VersionChange","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6060604052600180546c0100000000000000000000000033810204600160a060020a031991821681179092556002805490911690911790556120c8806100456000396000f3606060405236156100ae5760e060020a600035046304029f2381146100b35780631f9ea25d1461012b578063263c0a8d1461015357806349593f53146101c8578063569aa0d8146102d257806359a4669f14610404578063656104f5146104f357806370de8c6e1461051b57806371bde852146105fb5780638d909ad9146106c55780638f30435d146107b0578063916dbc1714610807578063c91540f614610940578063fedc2a2814610c15575b610002565b3461000257610cec6004808035906020019082018035906020019191908080601f01602080910402602001604051908101604052809392919081815260200183838082843750949650509335935050604435915050606435600154600090819033600160a060020a03908116911614610ff957610002565b3461000257610cec600435600254600160a060020a039081163391909116146110a857610002565b3461000257610cec6004808035906020019082018035906020019191908080601f01602080910402602001604051908101604052809392919081815260200183838082843750949650509335935050604435915050600154600090819033600160a060020a039081169116146110c757610002565b3461000257610cec6004808035906020019082018035906020019191908080601f0160208091040260200160405190810160405280939291908181526020018383808284375094965050933593505060443591505060643560843560006000600060006000600060006000508b604051808280519060200190808383829060006004602084601f0104600302600f01f1509050019150509081526020016040518091039020600050955085600001600050600033600160a060020a0316815260200190815260200160002060005094508967ffffffffffffffff168560000160059054906101000a900467ffffffffffffffff1667ffffffffffffffff1614151561131a5761130d565b3461000257610cee6004808035906020019082018035906020019191908080601f01602080910402602001604051908101604052809392919081815260200183838082843750949650509335935050604435915050600060006000600060006000600060006000508a604051808280519060200190808383829060006004602084601f0104600302600f01f15090500191505090815260200160405180910390206000506001016000508960ff1660028110156100025760060201600050600160a060020a0389166000908152600491909101602052604090208054600182015463ffffffff8083169a5067ffffffffffffffff606060020a840481169a50640100000000840482169950919750604060020a830416955060a060020a90910416925090505093975093979195509350565b610cec6004808035906020019082018035906020019191908080601f016020809104026020016040519081016040528093929190818152602001838380828437509496505050505050506000600060005082604051808280519060200190808383829060006004602084601f0104600302600f01f15090500191505090815260200160405180910390206000509050348160010160005082600d0160009054906101000a900460ff1660ff16600281101561000257600602016000506002018054608060020a6001608060020a0382169093018302929092046001608060020a03199092169190911790555050565b3461000257610cec600435600154600160a060020a039081163391909116146114cf57610002565b610cec6004808035906020019082018035906020019191908080601f0160208091040260200160405190810160405280939291908181526020018383808284375094965050933593505060443591505060643560006000600060005086604051808280519060200190808383829060006004602084601f0104600302600f01f15090500191505090815260200160405180910390206000509150816001016000508460ff16600281101561000257600602016000506001810154909150346affffffffffffffffffffff608060020a90920491909116146114ee57610002565b610cec6004808035906020019082018035906020019191908080601f01602080910402602001604051908101604052809392919081815260200183838082843750506040805161012435808a013560208181028481018201909552818452989a8a359a6044359a6064359a50608435995060a435985060c435975060e4359661010435969395610144959301929182919085019084908082843750949650505050505050600154600090819081908190819033600160a060020a0390811691161461176057610002565b3461000257610d386004808035906020019082018035906020019191908080601f0160208091040260200160405190810160405280939291908181526020018383808284375094965050933593505050506000600060006000600060006000600060006000600060006000508d604051808280519060200190808383829060006004602084601f0104600302600f01f1509050019150509081526020016040518091039020600050915081600d0160009054906101000a900460ff1698508850816001016000508960ff1660028110156100025743600019019b50600602019050611c7c8a8d611620565b3461000257610daa6004808035906020019082018035906020019191908080601f016020809104026020016040519081016040528093929190818152602001838380828437509496505093359350610a1092505050565b3461000257610e8a6004808035906020019082018035906020019191908080601f016020809104026020016040519081016040528093929190818152602001838380828437509496505093359350505050602060405190810160405280600081526020015060006000600060005085604051808280519060200190808383829060006004602084601f0104600302600f01f15090500191505090815260200160405180910390206000506001016000508460ff16600281101561000257600602016000506005810180546040805160208084028201810190925282815293945083018282801561092057602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610902575b505093549298604060020a90930463ffffffff1697509195505050505050565b3461000257610daa6004808035906020019082018035906020019191908080601f01602080910402602001604051908101604052809392919081815260200183838082843750949650505050505050600060006000600060006000602060405190810160405280600081526020015060006000600060006000611d5c8d60006000508f604051808280519060200190808383829060006004602084601f0104600302600f01f1509050019150509081526020016040518091039020600050600d0160009054906101000a900460ff165b600060006000600060006000602060405190810160405280600081526020015060006000600060006000600060006000508f604051808280519060200190808383829060006004602084601f0104600302600f01f15090500191505090815260200160405180910390206000506001016000508e60ff166002811015610002576006020160005090508060020160009054906101000a90046001608060020a03169c508c508060010160109054906101000a90046affffffffffffffffffffff169b508b5080600001600c9054906101000a900463ffffffff169a508a508060000160009054906101000a900460ff16995089508060010160009054906101000a900467ffffffffffffffff16985088508060000160089054906101000a900463ffffffff169750875080600301600050805480602002602001604051908101604052809291908181526020018280548015610bb157602002820191906000526020600020906000905b82829054906101000a900463ffffffff1681526020019060040190602082600301049283019260010382029150808411610b7a5790505b505084546001860154949b5060ff6101008204169a5061ffff62010000820416995067ffffffffffffffff604060020a9095049490941697505063ffffffff6401000000009093049290921694508f93505050509295989b509295989b509295989b565b3461000257610cec6004808035906020019082018035906020019191908080601f016020809104026020016040519081016040528093929190818152602001838380828437505060408051604435808a013560208181028481018201909552818452989a8a359a9099606499509397509190910194509250829190850190849080828437509496505050505050506000600060006000600060006000600060006000600160009054906101000a9004600160a060020a0316600160a060020a031633600160a060020a0316141515611d8357610002565b005b6040805163ffffffff978816815267ffffffffffffffff9687166020820152948716858201526060850193909352941660808301529290911660a082015290519081900360c00190f35b6040805167ffffffffffffffff9a8b168152988a1660208a015260ff9097168888015263ffffffff958616606089015293881660808801526affffffffffffffffffffff90921660a087015290921660c085015290841660e08401529092166101008201529051908190036101200190f35b604051808d6001608060020a031681526020018c6affffffffffffffffffffff1681526020018b63ffffffff1681526020018a60ff1681526020018967ffffffffffffffff1681526020018863ffffffff168152602001806020018760ff1681526020018661ffff1681526020018567ffffffffffffffff1681526020018463ffffffff1681526020018360ff1681526020018281038252888181518152602001915080519060200190602002808383829060006004602084601f0104600302600f01f1509050019d505050505050505050505050505060405180910390f35b60405180806020018363ffffffff1681526020018281038252848181518152602001915080519060200190602002808383829060006004602084601f0104600302600f01f150905001935050505060405180910390f35b805473ffffffff00000000000000000000000000000000198116608060020a60e060020a606060020a9384900463ffffffff908116820282900492909202929092177bffffffffffffffff0000000000000000000000000000000000000000191660a060020a60c060020a888416430181020402176fffffffff000000000000000000000000191688830292909204929092021782556040518751918716918891908190602080850191908190849082908590600090600490601f850104600302600f01f15090500191505060405180910390207fa2f4a4124ab7224b7753e37c4d34f853613a576f8e812e4f6186a6f1e80d014786604051808260001916815260200191505060405180910390a35b505050505050565b600060005086604051808280519060200190808383829060006004602084601f0104600302600f01f150905001915050908152602001604051809103902060005091508160010160005082600d0160009054906101000a900460ff1660ff16600281101561000257600602018054909150606060020a900463ffffffff9081169086161161108657610002565b600181015442604060020a90910467ffffffffffffffff1611610ee157610ff1565b60028054606060020a80840204600160a060020a031990911617905550565b60018360ff1610156110d857610002565b600060005085604051808280519060200190808383829060006004602084601f0104600302600f01f150905001915050908152602001604051809103902060005091508160010160005082600d0160009054906101000a900460ff1660ff1660028110156100025760060201600050805460f060020a80870204620100000263ffff00001960f860020a8088020460ff19909316929092179190911617815590505050505050565b33828263ffffffff1681548110156100025760009182526020909120018054600160a060020a031916606060020a928302929092049190911790555b83546bffffffff00000000000000001916604060020a60e060020a60018401810204021784555b6040805160c0810182528a815260208082018b81528854610100810463ffffffff168486019081526501000000000090910467ffffffffffffffff1660608501908152436080860190815260a086018e815233600160a060020a0316600090815260048d019096529690942094518554935192519151945163ffffffff1990941660e060020a9182028290041767ffffffff00000000191664010000000093820282900493909302929092176bffffffff00000000000000001916604060020a91830292909204021773ffffffffffffffff0000000000000000000000001916606060020a60c060020a93840284900402177bffffffffffffffff0000000000000000000000000000000000000000191660a060020a918302929092040217815590516001909101555b5050505050505050505050565b8454600187019060ff16600281101561000257600602018054865491955062010000900461ffff16890163ffffffff166d010000000000000000000000000090910467ffffffffffffffff16420311156113735761130d565b8354600185015464010000000090910463ffffffff16604060020a90910467ffffffffffffffff908116919091011642106113ad5761130d565b600160a060020a033316600090815260048501602052604090206001850154815491945067ffffffffffffffff90811660a060020a90920416101561140757835463ffffffff604060020a90910481161061141e5761130d565b825463ffffffff908116908a161161141e5761130d565b6001840154835460058601935067ffffffffffffffff91821660a060020a90910490911610156111e3575082548154604060020a90910463ffffffff169081106111805781805480600101828181548183558181151161149f5760008381526020902061149f9181019083015b808211156114cb576000815560010161148b565b5050506000928352506020909120018054600160a060020a031916606060020a338102041790556111bc565b5090565b60018054606060020a80840204600160a060020a031990911617905550565b600181015442604060020a90910467ffffffffffffffff1611158061151d5750600d82015460ff858116911614155b806115705750805463ffffffff848116606060020a90920416148015906115705750805463ffffffff848116608060020a909204161415806115705750805460a060020a900467ffffffffffffffff1643115b8061159b5750805460ff16431080159061159b5750805467ffffffffffffffff861660ff9091164303115b156115da5734158015906115d05750604051600160a060020a033316903480156108fc02916000818181858888f19350505050155b1561169857610002565b600281018054608060020a6001608060020a03821634018102046001608060020a0319909116179055604080516080810182528581526020810185905290810161169d87335b6040805167ffffffffffffffff8085164082526000198501811640602083015260011985018116408284015260021985018116406060830152600319850181164060808301526004198501164060a0820152606060020a600160a060020a0384160260c082015290519081900360d401902092915050565b610ff1565b81524260209182015233600160a060020a0316600090815293815260409384902082518154928401519584015160609094015160ff1990931660f860020a918202919091041764ffffffff00191661010060e060020a9687029690960495909502949094176cffffffffffffffff000000000019166501000000000060c060020a938402849004021774ffffffffffffffff0000000000000000000000000019166d01000000000000000000000000009183029290920402179091555050505050565b60006000508f604051808280519060200190808383829060006004602084601f0104600302600f01f150905001915050908152602001604051809103902060005094508460010160005085600d0160009054906101000a900460ff1660010360ff1660028110156100025760060201600050600d860154909450600186019060ff166002811015610002576006020160005060018101549093504267ffffffffffffffff604060020a909204919091161061181a57610002565b83546000604060020a90910463ffffffff16111561183757610002565b60ff8b16151561184657610002565b60018c60ff16101561185757610002565b85511580611866575060408651115b1561187057610002565b5060009050805b85518160ff1610156118eb57858160ff168151811015610002579060200190602002015163ffffffff16600014806118e1575063ffffffff8216158015906118e157508163ffffffff16868260ff168151811015610002579060200190602002015163ffffffff16115b15611b3457610002565b825463ffffffff8f8116606060020a9092041614611979578d63ffffffff168f604051808280519060200190808383829060006004602084601f0104600302600f01f15090500191505060405180910390207fa2f4a4124ab7224b7753e37c4d34f853613a576f8e812e4f6186a6f1e80d014789604051808260001916815260200191505060405180910390a35b84600d0160009054906101000a900460ff1660010385600d0160006101000a81548160ff021916908360f860020a908102040217905550438460010160006101000a81548167ffffffffffffffff021916908360c060020a90810204021790555060008460000160106101000a81548163ffffffff021916908360e060020a90810204021790555060008460000160146101000a81548167ffffffffffffffff021916908360c060020a9081020402179055508d84600001600c6101000a81548163ffffffff021916908360e060020a9081020402179055508c8460010160106101000a8154816affffffffffffffffffffff021916908375010000000000000000000000000000000000000000009081020402179055508b8460000160006101000a81548160ff021916908360f860020a9081020402179055508584600301600050908051906020019082805482825590600052602060002090600701600890048101928215611b585791602002820160005b83821115611b7b57835183826101000a81548163ffffffff021916908360e060020a9081020402179055509260200192600401602081600301049283019260010302611aed565b858160ff16815181101561000257602090810290910101519150600101611877565b505b50611bab9291505b808211156114cb57805463ffffffff19168155600101611b60565b8015611b565782816101000a81549063ffffffff0219169055600401602081600301049283019260010302611b7b565b50508354600285018054608060020a6001608060020a03821634018102046001608060020a031990911617905560018501805460c060020a42909c018c029b909b04604060020a026fffffffffffffffff000000000000000019909b169a909a1790995550505060e060020a948502949094046401000000000267ffffffff000000001960f060020a97880297909704620100000263ffff00001960f860020a998a02999099046101000261ff00199097169690961797909716949094179490941694909417905550505050505050565b81546001830154600160a060020a038f166000908152600485016020526040902054929d50606060020a90910463ffffffff169950604060020a810467ffffffffffffffff9081169950608060020a82046affffffffffffffffffffff169850908116955060a060020a90910416849010611d1957600160a060020a038c16600090815260048201602052604090205463ffffffff169450611d1e565b600094505b600160a060020a038c1660009081526020839052604090205467ffffffffffffffff6501000000000090910416925050509295985092959850929598565b9b509b509b509b509b509b509b509b509b509b509b509b5091939597999b5091939597999b565b60006000508d604051808280519060200190808383829060006004602084601f0104600302600f01f15090500191505090815260200160405180910390206000506001016000508c60ff166002811015610002576006020180546001820154919b50640100000000900463ffffffff16604060020a90910467ffffffffffffffff1642031215611e1257610002565b60028a015460006001608060020a039091161115611fde5760038a0180548c51919a50985060ff9081169089161115611e4a578a5197505b60028a01546001608060020a03169650600060ff8916118015611e7757508954600161010090910460ff16115b15611f0a578954610100900460ff166001608060020a03881681156100025760028c015491900497506001608060020a03168790039550600094508493505b8760ff168460ff16101561200057888460ff168154811015610002579060005260206000209060089182820401919006600402905463ffffffff6101009290920a9004169490940193600190930192611eb6565b600254604051600160a060020a03909116906001608060020a03891680156108fc02916000818181858888f193505050501515611fcb5760006000508d604051808280519060200190808383829060006004602084601f0104600302600f01f15090500191505090815260200160405180910390206000506001016000508c60010360ff1660028110156100025760060201600050600281018054608060020a6001608060020a0382168b018102046001608060020a031990911617905590505b60028a0180546001608060020a03191690555b89546bffffffff000000000000000019168a5550505050505050505050505050565b600092505b8760ff168360ff161015611f0a578467ffffffffffffffff16898460ff1681548110156100025790600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff1687026001608060020a03168115610002570491508a8360ff1681518110156100025760209081029091010151604051600160a060020a03909116906001608060020a03841680156108fc02916000818181858888f1935050505015156120bd57958101955b60019092019161200556
View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward