Contract Overview
ETH Balance: 0.3 Ether
Mined:  0
No Of Transactions: 2494 txns + 38 internalTxns
  Latest 25 txns from a total Of 2494 transactions View All

TxHash Block Age From To Value [TxFee]
0xf79b3536ab201ab63cba701b608ca1e33433575f638281a7dc0702f1d0cd635c25758455 days 21 hrs ago0x0718197b9ac69127381ed0c4b5d0f724f857c4d1  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310.1 Ether0.01165657
0xf351c651cfdf7b2efed774c03d0633148b874413b61aea951ac6f682c3b1deb725734655 days 22 hrs ago0x0718197b9ac69127381ed0c4b5d0f724f857c4d1  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310.1 Ether0.01278157
0x3d1a823b6d6011beb24b628e4f76a326ed6f0ef04d620079da96ed9ccb81a21925714455 days 23 hrs ago0x0718197b9ac69127381ed0c4b5d0f724f857c4d1  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310 Ether0.00106125
0x51d2612ccb63065f46c5cd950fb188dd3e26a113c78655509e7a1a706aa1868225707455 days 23 hrs ago0x0718197b9ac69127381ed0c4b5d0f724f857c4d1  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310.1 Ether0.01203157
0xb60514a86b2684f5ea81087d90e2082afac90926bc89af494fafed38b6fcfdee25702855 days 23 hrs ago0x11baf1ecfdf84328e7af9970b8a2575a5da2557e  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310.01333333 Ether0.00106969
0xe945a0178052be431298fc2b04fa44a2f72443a8f6a7c0d948708c6b51c4da2525701755 days 23 hrs ago0x11baf1ecfdf84328e7af9970b8a2575a5da2557e  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310.01333333 Ether0.00095636
0x596d0f146087e2b5e4dcb98b71ac7f10f5b1815d51489667349ead5574dd0bbc25700255 days 23 hrs ago0x11baf1ecfdf84328e7af9970b8a2575a5da2557e  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310.01333333 Ether0.00106969
0x89ce9b0b7c263222a9581ca5e8b770e88dbdc4656eb31760d479d70062ef262d25699255 days 23 hrs ago0x11baf1ecfdf84328e7af9970b8a2575a5da2557e  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310 Ether0.00132478
0xe6752c474417d8c9bd315799e518b1d6c99a302e7e630cd6c6672031b5bab91725696055 days 23 hrs ago0x11baf1ecfdf84328e7af9970b8a2575a5da2557e  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310.01333333 Ether0.00106969
0xf5f4eba6ef8088272807877a2c4beb27e38c9112f9c9ed8c5ec8ab448f6ae05825694455 days 23 hrs ago0x11baf1ecfdf84328e7af9970b8a2575a5da2557e  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310.01333333 Ether0.00106969
0xa85ae599ebc42b2f6dce3bc511b64152e86a807fa6f7bc529ae4ba0dff9194c425694155 days 23 hrs ago0x11baf1ecfdf84328e7af9970b8a2575a5da2557e  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310 Ether0.00132478
0xab268731826fb2537ea46e4be1e18994c0d4694e3c11b3fb1d858a4f0e38101525691956 days ago0x11baf1ecfdf84328e7af9970b8a2575a5da2557e  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310.01333333 Ether0.00106969
0x35b3f79d50cefba21567826aaf2d8d7bb358e4e6cba59e6018becf5533251c2f25691956 days ago0x11baf1ecfdf84328e7af9970b8a2575a5da2557e  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310 Ether0.00132126
0xb5d7692efcd3d057f2300374959bdf79b4bad2ee92a0500c408045ba99fbe81025689656 days 4 mins ago0x11baf1ecfdf84328e7af9970b8a2575a5da2557e  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310.01333333 Ether0.00106969
0xaeac3f8a0df83c7a78c5d1d7742c65d9d0f7cb14d47a31f12466adab6a05179825689356 days 5 mins ago0x11baf1ecfdf84328e7af9970b8a2575a5da2557e  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310 Ether0.00132126
0x819387acdafeab6624a1db02011d836a6f86758c4b11a1f2e194811f0cebbb5a25687656 days 8 mins ago0x11baf1ecfdf84328e7af9970b8a2575a5da2557e  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310.01333333 Ether0.00106969
0x8f1005636565ffe9e629dd6e9d933e0667d79dc9358352d12131076144d1b0f325687356 days 9 mins ago0x11baf1ecfdf84328e7af9970b8a2575a5da2557e  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310.01333333 Ether0.00106969
0xfbe1ef30fcc75dbe757c70a02dce109f1d83eea93e2f7a65b85c000a313ce74425687256 days 10 mins ago0x11baf1ecfdf84328e7af9970b8a2575a5da2557e  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310 Ether0.00132302
0x86408b4447ce9c0860c4df21986935104d76372c14719031e98975f902bb4f1225686156 days 12 mins ago0x0718197b9ac69127381ed0c4b5d0f724f857c4d1  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310 Ether0.00105965
0x9260d952be818176496b5c0dfe676d6f22381692d82ede6d535ac3a60bfb16e825686056 days 12 mins ago0x11baf1ecfdf84328e7af9970b8a2575a5da2557e  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310.01333333 Ether0.00106969
0x32375c3d27cdff0365e116cd554fd2c38b748bb99f2936e609cf1b2d19425d9325685856 days 13 mins ago0x11baf1ecfdf84328e7af9970b8a2575a5da2557e  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310 Ether0.00343978
0x8ec9c96d45c9c94adeaa10eb660bf3a980a987c9f80c38956c66c84c9f424e5225685056 days 15 mins ago0x11baf1ecfdf84328e7af9970b8a2575a5da2557e  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310.01333333 Ether0.00106969
0xf7fa9592f12443c548e41be37db6210aedb57b8c37ccdd85cd07f9900ef4b89225680356 days 26 mins ago0x11baf1ecfdf84328e7af9970b8a2575a5da2557e  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310 Ether0.00132302
0x619f4ad7848bf4947de5acc3d25e478bf01a8c919b1ce4018ca5bbd5a53fb9b225679456 days 28 mins ago0x0718197b9ac69127381ed0c4b5d0f724f857c4d1  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310.1 Ether0.01240657
0xe3d37d656e34ae072078eca24b9ca0d4835af18b9461ca9f42d96d87d9f1dc8125678856 days 29 mins ago0x11baf1ecfdf84328e7af9970b8a2575a5da2557e  IN   0x615de466db4ee23b204e01ee9b3ff74bff289b310.01333333 Ether0.00106793
 Internal Transactions as a result of Contract Execution
  Latest 25 Internal Txns from a total of 38 View All
ParentTxHash Block Age From To Value
0x3d1a823b6d6011beb24b628e4f76a326ed6f0ef04d620079da96ed9ccb81a21925714455 days 23 hrs ago0x615de466db4ee23b204e01ee9b3ff74bff289b310x11baf1ecfdf84328e7af9970b8a2575a5da2557e0.634999999999999998 Ether
0x3d1a823b6d6011beb24b628e4f76a326ed6f0ef04d620079da96ed9ccb81a21925714455 days 23 hrs ago0x615de466db4ee23b204e01ee9b3ff74bff289b310x0718197b9ac69127381ed0c4b5d0f724f857c4d10.211666666666666665 Ether
0xe945a0178052be431298fc2b04fa44a2f72443a8f6a7c0d948708c6b51c4da2525701755 days 23 hrs ago0x615de466db4ee23b204e01ee9b3ff74bff289b310x11baf1ecfdf84328e7af9970b8a2575a5da2557e0.013333333333333333 Ether
0x86408b4447ce9c0860c4df21986935104d76372c14719031e98975f902bb4f1225686156 days 12 mins ago0x615de466db4ee23b204e01ee9b3ff74bff289b310x11baf1ecfdf84328e7af9970b8a2575a5da2557e0.499999999999999999 Ether
0x86408b4447ce9c0860c4df21986935104d76372c14719031e98975f902bb4f1225686156 days 12 mins ago0x615de466db4ee23b204e01ee9b3ff74bff289b310x0718197b9ac69127381ed0c4b5d0f724f857c4d10.166666666666666666 Ether
0xd54b3585e40a66d7c58ebfc31cc7a5aff177cc68bbd57630b2c4847eab1fe51b12061678 days 20 hrs ago0x615de466db4ee23b204e01ee9b3ff74bff289b310x3fb74c04631df17effbf7cd5e29cb6cbda2960895 Ether
0xd54b3585e40a66d7c58ebfc31cc7a5aff177cc68bbd57630b2c4847eab1fe51b12061678 days 20 hrs ago0x615de466db4ee23b204e01ee9b3ff74bff289b310x006cddce7ab438dd7f4ab5d9dd20a95933acc7dc1.7779541015625 Ether
0xd54b3585e40a66d7c58ebfc31cc7a5aff177cc68bbd57630b2c4847eab1fe51b12061678 days 20 hrs ago0x615de466db4ee23b204e01ee9b3ff74bff289b310x3f8ffa33329bd25033bf4a5e4814f18e802229df0.8843994140625 Ether
0xd54b3585e40a66d7c58ebfc31cc7a5aff177cc68bbd57630b2c4847eab1fe51b12061678 days 20 hrs ago0x615de466db4ee23b204e01ee9b3ff74bff289b310xf9c3b28e6cebb71a28068c02d945c9c878b07ed40.5303955078125 Ether
0xd54b3585e40a66d7c58ebfc31cc7a5aff177cc68bbd57630b2c4847eab1fe51b12061678 days 20 hrs ago0x615de466db4ee23b204e01ee9b3ff74bff289b310x649a433deb579a13a471d502ab1d5d01a12ab83b0.3533935546875 Ether
0xd54b3585e40a66d7c58ebfc31cc7a5aff177cc68bbd57630b2c4847eab1fe51b12061678 days 20 hrs ago0x615de466db4ee23b204e01ee9b3ff74bff289b310x0b511dbe504f3da120f711f9ae0c2190539498980.252685546875 Ether
0xd54b3585e40a66d7c58ebfc31cc7a5aff177cc68bbd57630b2c4847eab1fe51b12061678 days 20 hrs ago0x615de466db4ee23b204e01ee9b3ff74bff289b310x8bb50680974e63d3622f7bfc983fad436e4ea2670.189208984375 Ether
0xd54b3585e40a66d7c58ebfc31cc7a5aff177cc68bbd57630b2c4847eab1fe51b12061678 days 20 hrs ago0x615de466db4ee23b204e01ee9b3ff74bff289b310xef3897c1482847e8557181b7b3c5d9f9312da6a80.1470947265625 Ether
0xd54b3585e40a66d7c58ebfc31cc7a5aff177cc68bbd57630b2c4847eab1fe51b12061678 days 20 hrs ago0x615de466db4ee23b204e01ee9b3ff74bff289b310x405f2655f6dee2ba78921a8e0c97a32e21b889340.1177978515625 Ether
0xd54b3585e40a66d7c58ebfc31cc7a5aff177cc68bbd57630b2c4847eab1fe51b12061678 days 20 hrs ago0x615de466db4ee23b204e01ee9b3ff74bff289b310x0ac7eb140818bab2ef87cb41161af1cabad094010.096435546875 Ether
0xd54b3585e40a66d7c58ebfc31cc7a5aff177cc68bbd57630b2c4847eab1fe51b12061678 days 20 hrs ago0x615de466db4ee23b204e01ee9b3ff74bff289b310xbd79672153ca146a2788995dcc561fa67d5adb9d0.0799560546875 Ether
0xd54b3585e40a66d7c58ebfc31cc7a5aff177cc68bbd57630b2c4847eab1fe51b12061678 days 20 hrs ago0x615de466db4ee23b204e01ee9b3ff74bff289b310xdab588c5a041e091fd2fef85b335f42763292bec0.0677490234375 Ether
0xd54b3585e40a66d7c58ebfc31cc7a5aff177cc68bbd57630b2c4847eab1fe51b12061678 days 20 hrs ago0x615de466db4ee23b204e01ee9b3ff74bff289b310x698e798986fdb14e9432d419825b4457630605620.0579833984375 Ether
0xd54b3585e40a66d7c58ebfc31cc7a5aff177cc68bbd57630b2c4847eab1fe51b12061678 days 20 hrs ago0x615de466db4ee23b204e01ee9b3ff74bff289b310x82434dfde57cb5dc870f14e96b55f4df058978c40.0506591796875 Ether
0xd54b3585e40a66d7c58ebfc31cc7a5aff177cc68bbd57630b2c4847eab1fe51b12061678 days 20 hrs ago0x615de466db4ee23b204e01ee9b3ff74bff289b310x2ece2c453aa371c6569163e08a85f9ab011d59d10.0439453125 Ether
0xd54b3585e40a66d7c58ebfc31cc7a5aff177cc68bbd57630b2c4847eab1fe51b12061678 days 20 hrs ago0x615de466db4ee23b204e01ee9b3ff74bff289b310x66a75345c94cc5d9d6799419357439f3ebe9a4450.0384521484375 Ether
0xd54b3585e40a66d7c58ebfc31cc7a5aff177cc68bbd57630b2c4847eab1fe51b12061678 days 20 hrs ago0x615de466db4ee23b204e01ee9b3ff74bff289b310x24b5ceaaf348a0442ebc9f2e56baa65cba5726200.0341796875 Ether
0xd54b3585e40a66d7c58ebfc31cc7a5aff177cc68bbd57630b2c4847eab1fe51b12061678 days 20 hrs ago0x615de466db4ee23b204e01ee9b3ff74bff289b310xf7701abd90974b12495a194f97c23cddb31a28140.0311279296875 Ether
0xd54b3585e40a66d7c58ebfc31cc7a5aff177cc68bbd57630b2c4847eab1fe51b12061678 days 20 hrs ago0x615de466db4ee23b204e01ee9b3ff74bff289b310x5c88e7b2abf4fc6af93747593ee4f1a82f3e7af40.0274658203125 Ether
0xd54b3585e40a66d7c58ebfc31cc7a5aff177cc68bbd57630b2c4847eab1fe51b12061678 days 20 hrs ago0x615de466db4ee23b204e01ee9b3ff74bff289b310x8a9150220864aefce9495b17a946b43d660093c60.0250244140625 Ether
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 <[email protected]> - 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),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;
		}
		
		//no start found
		if(gameStart.time == 0){
			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
		});
		
		gameStart.time = 0; //reset to force the need to start
		
	}
	
	/*
		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 _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":"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
6060604052600180546c0100000000000000000000000033810204600160a060020a03199182168117909255600280549091169091179055611f75806100456000396000f3606060405236156100a35760e060020a600035046304029f2381146100a85780631f9ea25d1461012057806349593f5314610148578063569aa0d81461025257806359a4669f14610384578063656104f51461047357806370de8c6e1461049b57806371bde8521461057b5780638d909ad9146106455780638f30435d14610730578063916dbc1714610787578063c91540f6146108c0578063fedc2a2814610b95575b610002565b3461000257610c6c6004808035906020019082018035906020019191908080601f01602080910402602001604051908101604052809392919081815260200183838082843750949650509335935050604435915050606435600154600090819033600160a060020a03908116911614610f7957610002565b3461000257610c6c600435600254600160a060020a0390811633919091161461102857610002565b3461000257610c6c6004808035906020019082018035906020019191908080601f0160208091040260200160405190810160405280939291908181526020018383808284375094965050933593505060443591505060643560843560006000600060006000600060006000508b604051808280519060200190808383829060006004602084601f0104600302600f01f1509050019150509081526020016040518091039020600050955085600001600050600033600160a060020a0316815260200190815260200160002060005094508967ffffffffffffffff168560000160059054906101000a900467ffffffffffffffff1667ffffffffffffffff161415156111fd576111f0565b3461000257610c6e6004808035906020019082018035906020019191908080601f01602080910402602001604051908101604052809392919081815260200183838082843750949650509335935050604435915050600060006000600060006000600060006000508a604051808280519060200190808383829060006004602084601f0104600302600f01f15090500191505090815260200160405180910390206000506001016000508960ff1660028110156100025760060201600050600160a060020a0389166000908152600491909101602052604090208054600182015463ffffffff8083169a5067ffffffffffffffff606060020a840481169a50640100000000840482169950919750604060020a830416955060a060020a90910416925090505093975093979195509350565b610c6c6004808035906020019082018035906020019191908080601f016020809104026020016040519081016040528093929190818152602001838380828437509496505050505050506000600060005082604051808280519060200190808383829060006004602084601f0104600302600f01f15090500191505090815260200160405180910390206000509050348160010160005082600d0160009054906101000a900460ff1660ff16600281101561000257600602016000506002018054608060020a6001608060020a0382169093018302929092046001608060020a03199092169190911790555050565b3461000257610c6c600435600154600160a060020a039081163391909116146113c657610002565b610c6c6004808035906020019082018035906020019191908080601f0160208091040260200160405190810160405280939291908181526020018383808284375094965050933593505060443591505060643560006000600060005086604051808280519060200190808383829060006004602084601f0104600302600f01f15090500191505090815260200160405180910390206000509150816001016000508460ff16600281101561000257600602016000506001810154909150346affffffffffffffffffffff608060020a90920491909116146113e557610002565b610c6c6004808035906020019082018035906020019191908080601f01602080910402602001604051908101604052809392919081815260200183838082843750506040805161012435808a013560208181028481018201909552818452989a8a359a6044359a6064359a50608435995060a435985060c435975060e4359661010435969395610144959301929182919085019084908082843750949650505050505050600154600090819081908190819033600160a060020a0390811691161461160d57610002565b3461000257610cb86004808035906020019082018035906020019191908080601f0160208091040260200160405190810160405280939291908181526020018383808284375094965050933593505050506000600060006000600060006000600060006000600060006000508d604051808280519060200190808383829060006004602084601f0104600302600f01f1509050019150509081526020016040518091039020600050915081600d0160009054906101000a900460ff1698508850816001016000508960ff1660028110156100025743600019019b50600602019050611b298a8d611517565b3461000257610d2a6004808035906020019082018035906020019191908080601f01602080910402602001604051908101604052809392919081815260200183838082843750949650509335935061099092505050565b3461000257610e0a6004808035906020019082018035906020019191908080601f016020809104026020016040519081016040528093929190818152602001838380828437509496505093359350505050602060405190810160405280600081526020015060006000600060005085604051808280519060200190808383829060006004602084601f0104600302600f01f15090500191505090815260200160405180910390206000506001016000508460ff1660028110156100025760060201600050600581018054604080516020808402820181019092528281529394508301828280156108a057602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610882575b505093549298604060020a90930463ffffffff1697509195505050505050565b3461000257610d2a6004808035906020019082018035906020019191908080601f01602080910402602001604051908101604052809392919081815260200183838082843750949650505050505050600060006000600060006000602060405190810160405280600081526020015060006000600060006000611c098d60006000508f604051808280519060200190808383829060006004602084601f0104600302600f01f1509050019150509081526020016040518091039020600050600d0160009054906101000a900460ff165b600060006000600060006000602060405190810160405280600081526020015060006000600060006000600060006000508f604051808280519060200190808383829060006004602084601f0104600302600f01f15090500191505090815260200160405180910390206000506001016000508e60ff166002811015610002576006020160005090508060020160009054906101000a90046001608060020a03169c508c508060010160109054906101000a90046affffffffffffffffffffff169b508b5080600001600c9054906101000a900463ffffffff169a508a508060000160009054906101000a900460ff16995089508060010160009054906101000a900467ffffffffffffffff16985088508060000160089054906101000a900463ffffffff169750875080600301600050805480602002602001604051908101604052809291908181526020018280548015610b3157602002820191906000526020600020906000905b82829054906101000a900463ffffffff1681526020019060040190602082600301049283019260010382029150808411610afa5790505b505084546001860154949b5060ff6101008204169a5061ffff62010000820416995067ffffffffffffffff604060020a9095049490941697505063ffffffff6401000000009093049290921694508f93505050509295989b509295989b509295989b565b3461000257610c6c6004808035906020019082018035906020019191908080601f016020809104026020016040519081016040528093929190818152602001838380828437505060408051604435808a013560208181028481018201909552818452989a8a359a9099606499509397509190910194509250829190850190849080828437509496505050505050506000600060006000600060006000600060006000600160009054906101000a9004600160a060020a0316600160a060020a031633600160a060020a0316141515611c3057610002565b005b6040805163ffffffff978816815267ffffffffffffffff9687166020820152948716858201526060850193909352941660808301529290911660a082015290519081900360c00190f35b6040805167ffffffffffffffff9a8b168152988a1660208a015260ff9097168888015263ffffffff958616606089015293881660808801526affffffffffffffffffffff90921660a087015290921660c085015290841660e08401529092166101008201529051908190036101200190f35b604051808d6001608060020a031681526020018c6affffffffffffffffffffff1681526020018b63ffffffff1681526020018a60ff1681526020018967ffffffffffffffff1681526020018863ffffffff168152602001806020018760ff1681526020018661ffff1681526020018567ffffffffffffffff1681526020018463ffffffff1681526020018360ff1681526020018281038252888181518152602001915080519060200190602002808383829060006004602084601f0104600302600f01f1509050019d505050505050505050505050505060405180910390f35b60405180806020018363ffffffff1681526020018281038252848181518152602001915080519060200190602002808383829060006004602084601f0104600302600f01f150905001935050505060405180910390f35b805473ffffffff00000000000000000000000000000000198116608060020a60e060020a606060020a9384900463ffffffff908116820282900492909202929092177bffffffffffffffff0000000000000000000000000000000000000000191660a060020a60c060020a888416430181020402176fffffffff000000000000000000000000191688830292909204929092021782556040518751918716918891908190602080850191908190849082908590600090600490601f850104600302600f01f15090500191505060405180910390207fa2f4a4124ab7224b7753e37c4d34f853613a576f8e812e4f6186a6f1e80d014786604051808260001916815260200191505060405180910390a35b505050505050565b600060005086604051808280519060200190808383829060006004602084601f0104600302600f01f150905001915050908152602001604051809103902060005091508160010160005082600d0160009054906101000a900460ff1660ff16600281101561000257600602018054909150606060020a900463ffffffff9081169086161161100657610002565b600181015442604060020a90910467ffffffffffffffff1611610e6157610f71565b60028054606060020a80840204600160a060020a031990911617905550565b33828263ffffffff1681548110156100025760009182526020909120018054600160a060020a031916606060020a928302929092049190911790555b83546bffffffff00000000000000001916604060020a60e060020a60018401810204021784555b6040805160c0810182528a815260208082018b81528854610100810463ffffffff168486019081526501000000000090910467ffffffffffffffff1660608501908152436080860190815260a086018e815233600160a060020a0316600090815260048d019096529690942094518554935192519151945163ffffffff1990941660e060020a9182028290041767ffffffff00000000191664010000000093820282900493909302929092176bffffffff00000000000000001916604060020a91830292909204021773ffffffffffffffff0000000000000000000000001916606060020a60c060020a93840284900402177bffffffffffffffff0000000000000000000000000000000000000000191660a060020a91830292909204021781559051600190910155845474ffffffffffffffff00000000000000000000000000191685555b5050505050505050505050565b8454606860020a900467ffffffffffffffff16151561121b576111f0565b8454600187019060ff16600281101561000257600602018054865491955062010000900461ffff16890163ffffffff16606860020a90910467ffffffffffffffff164203111561126a576111f0565b8354600185015464010000000090910463ffffffff16604060020a90910467ffffffffffffffff908116919091011642106112a4576111f0565b600160a060020a033316600090815260048501602052604090206001850154815491945067ffffffffffffffff90811660a060020a9092041610156112fe57835463ffffffff604060020a909104811610611315576111f0565b825463ffffffff908116908a1611611315576111f0565b6001840154835460058601935067ffffffffffffffff91821660a060020a90910490911610156110aa575082548154604060020a90910463ffffffff1690811061104757818054806001018281815481835581811511611396576000838152602090206113969181019083015b808211156113c25760008155600101611382565b5050506000928352506020909120018054600160a060020a031916606060020a33810204179055611083565b5090565b60018054606060020a80840204600160a060020a031990911617905550565b600181015442604060020a90910467ffffffffffffffff161115806114145750600d82015460ff858116911614155b806114675750805463ffffffff848116606060020a90920416148015906114675750805463ffffffff848116608060020a909204161415806114675750805460a060020a900467ffffffffffffffff1643115b806114925750805460ff1643108015906114925750805467ffffffffffffffff861660ff9091164303115b156114d15734158015906114c75750604051600160a060020a033316903480156108fc02916000818181858888f19350505050155b1561154f57610002565b600281018054608060020a6001608060020a03821634018102046001608060020a0319909116179055604080516080810182528581526020810185905290810161155487335b6040805167ffffffffffffffff8416408152606060020a600160a060020a038416026020820152905190819003603401902092915050565b610f71565b81524260209182015233600160a060020a0316600090815293815260409384902082518154928401519584015160609094015160ff1990931660f860020a918202919091041764ffffffff00191661010060e060020a9687029690960495909502949094176cffffffffffffffff000000000019166501000000000060c060020a938402849004021774ffffffffffffffff000000000000000000000000001916606860020a9183029290920402179091555050505050565b60006000508f604051808280519060200190808383829060006004602084601f0104600302600f01f150905001915050908152602001604051809103902060005094508460010160005085600d0160009054906101000a900460ff1660010360ff1660028110156100025760060201600050600d860154909450600186019060ff166002811015610002576006020160005060018101549093504267ffffffffffffffff604060020a90920491909116106116c757610002565b83546000604060020a90910463ffffffff1611156116e457610002565b60ff8b1615156116f357610002565b60018c60ff16101561170457610002565b85511580611713575060408651115b1561171d57610002565b5060009050805b85518160ff16101561179857858160ff168151811015610002579060200190602002015163ffffffff166000148061178e575063ffffffff82161580159061178e57508163ffffffff16868260ff168151811015610002579060200190602002015163ffffffff16115b156119e157610002565b825463ffffffff8f8116606060020a9092041614611826578d63ffffffff168f604051808280519060200190808383829060006004602084601f0104600302600f01f15090500191505060405180910390207fa2f4a4124ab7224b7753e37c4d34f853613a576f8e812e4f6186a6f1e80d014789604051808260001916815260200191505060405180910390a35b84600d0160009054906101000a900460ff1660010385600d0160006101000a81548160ff021916908360f860020a908102040217905550438460010160006101000a81548167ffffffffffffffff021916908360c060020a90810204021790555060008460000160106101000a81548163ffffffff021916908360e060020a90810204021790555060008460000160146101000a81548167ffffffffffffffff021916908360c060020a9081020402179055508d84600001600c6101000a81548163ffffffff021916908360e060020a9081020402179055508c8460010160106101000a8154816affffffffffffffffffffff021916908375010000000000000000000000000000000000000000009081020402179055508b8460000160006101000a81548160ff021916908360f860020a9081020402179055508584600301600050908051906020019082805482825590600052602060002090600701600890048101928215611a055791602002820160005b83821115611a2857835183826101000a81548163ffffffff021916908360e060020a908102040217905550926020019260040160208160030104928301926001030261199a565b858160ff16815181101561000257602090810290910101519150600101611724565b505b50611a589291505b808211156113c257805463ffffffff19168155600101611a0d565b8015611a035782816101000a81549063ffffffff0219169055600401602081600301049283019260010302611a28565b50508354600285018054608060020a6001608060020a03821634018102046001608060020a031990911617905560018501805460c060020a42909c018c029b909b04604060020a026fffffffffffffffff000000000000000019909b169a909a1790995550505060e060020a948502949094046401000000000267ffffffff000000001960f060020a97880297909704620100000263ffff00001960f860020a998a02999099046101000261ff00199097169690961797909716949094179490941694909417905550505050505050565b81546001830154600160a060020a038f166000908152600485016020526040902054929d50606060020a90910463ffffffff169950604060020a810467ffffffffffffffff9081169950608060020a82046affffffffffffffffffffff169850908116955060a060020a90910416849010611bc657600160a060020a038c16600090815260048201602052604090205463ffffffff169450611bcb565b600094505b600160a060020a038c1660009081526020839052604090205467ffffffffffffffff6501000000000090910416925050509295985092959850929598565b9b509b509b509b509b509b509b509b509b509b509b509b5091939597999b5091939597999b565b60006000508d604051808280519060200190808383829060006004602084601f0104600302600f01f15090500191505090815260200160405180910390206000506001016000508c60ff166002811015610002576006020180546001820154919b50640100000000900463ffffffff16604060020a90910467ffffffffffffffff1642031215611cbf57610002565b60028a015460006001608060020a039091161115611e8b5760038a0180548c51919a50985060ff9081169089161115611cf7578a5197505b60028a01546001608060020a03169650600060ff8916118015611d2457508954600161010090910460ff16115b15611db7578954610100900460ff166001608060020a03881681156100025760028c015491900497506001608060020a03168790039550600094508493505b8760ff168460ff161015611ead57888460ff168154811015610002579060005260206000209060089182820401919006600402905463ffffffff6101009290920a9004169490940193600190930192611d63565b600254604051600160a060020a03909116906001608060020a03891680156108fc02916000818181858888f193505050501515611e785760006000508d604051808280519060200190808383829060006004602084601f0104600302600f01f15090500191505090815260200160405180910390206000506001016000508c60010360ff1660028110156100025760060201600050600281018054608060020a6001608060020a0382168b018102046001608060020a031990911617905590505b60028a0180546001608060020a03191690555b89546bffffffff000000000000000019168a5550505050505050505050505050565b600092505b8760ff168360ff161015611db7578467ffffffffffffffff16898460ff1681548110156100025790600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff1687026001608060020a03168115610002570491508a8360ff1681518110156100025760209081029091010151604051600160a060020a03909116906001608060020a03841680156108fc02916000818181858888f193505050501515611f6a57958101955b600190920191611eb256
View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward