Sponsored Link:   Buy your 1st Ethereum in 5 minutes. Trusted by more than 100k buyers.
Contract Overview | etherplay.io
ETH Balance: 0.040000000000000346 Ether
ETH USD Value: $16.74 (@ $418.47/ETH)
No Of Transactions: 12730 txns
  Latest 25 txns from a total Of 12730 transactions View All

TxHash Age From To Value [TxFee]
0x3830606da1415463493f4728a9eb239568ea97120c389782ae3c65ce1ba074f011 hrs 45 mins ago0x65b03b824535d118d85ec01c0a03db347bd9d79c  IN   etherplay.io0 Ether0.000213444
0x5b759896a9b630672afd06c1fdd41f219d5ca21d3a11a01752e336be477cca5911 hrs 48 mins ago0x65b03b824535d118d85ec01c0a03db347bd9d79c  IN   etherplay.io0.002 Ether0.00015328
0x28a26252e196b53af6e56621f85438455f514e20990f097b761af9f607b4f48d1 day 23 hrs ago0x8ebca52a17e37866676ee0b020f0bcc22405e36b  IN   etherplay.io0.002 Ether0.00015328
0xe7da78942cd888449027cc0a88eacc7574d2ad54eddbe25ee173f6e93611aba82 days 2 hrs ago0x26661f15f5a4bfab16529281aadec785b086151e  IN   etherplay.io0 Ether0.000213444
0x0ae8a1bd63e4f68db536fbf3ea1e6554bb9a7cce0741a1212620cfad592e4f1c2 days 2 hrs ago0x26661f15f5a4bfab16529281aadec785b086151e  IN   etherplay.io0.002 Ether0.00015328
0x1a3d433ee7ab41c17189c9ca37844b8b7a835b7256e5c3f7b7c4db3d626995b62 days 13 hrs ago0x8ebca52a17e37866676ee0b020f0bcc22405e36b  IN   etherplay.io0 Ether0.00010685
0x9919188b58bab6d0ddd2671b90e878af9dd1dfed5ad040747c6d5ac05a4c2e8c2 days 13 hrs ago0x8ebca52a17e37866676ee0b020f0bcc22405e36b  IN   etherplay.io0.002 Ether0.00007664
0x410e4c27d5596e5ffb809f8ede621c7a01fc605d5824d27b2cf1ad09e6fb4d912 days 13 hrs ago0x8ebca52a17e37866676ee0b020f0bcc22405e36b  IN   etherplay.io0.002 Ether0.00007664
0xbb85233cbc77e2de35fddad8e93f704027733cd53eea636e458bdf127fe239b62 days 19 hrs ago0x0718197b9ac69127381ed0c4b5d0f724f857c4d1  IN   etherplay.io0 Ether0.00062809
0x3b79d04e45df15ed765f4465d2ee37932e65dbf0a120de5070344f9e002a246a2 days 19 hrs ago0x0718197b9ac69127381ed0c4b5d0f724f857c4d1  IN   etherplay.io0.01 Ether0.00165257
0x0457576e2038d7146e2e17ce154db8604e4ab4ead8884194101b4152cdb04bf52 days 20 hrs ago0x05a4307b87f9f6d22d3a47108cdd7f52087e37c0  IN   etherplay.io0 Ether0.000167132
0xe42aa0bf6dd54ac3aa31e55c77617caadb203b6de48c52e46fabd0dde1d4bb5f2 days 20 hrs ago0x05a4307b87f9f6d22d3a47108cdd7f52087e37c0  IN   etherplay.io0.002 Ether0.000153024
0xc61e29b94e69bc53868d75943ca46fd8eb7314fb7829984aa47327ddd0415aaf3 days 11 hrs ago0xc76fb5995f9d9c45293f422e61842af1e603c5d4  IN   etherplay.io0.002 Ether0.000213024
0x3f710ecfbc3bda123b76f54db7f3e985e9199dd3335e6e9b8bee115c0ebb7e5b6 days 17 hrs ago0x8ebca52a17e37866676ee0b020f0bcc22405e36b  IN   etherplay.io0 Ether0.00010685
0xcdc52db47316d2f2c8fbe0c5408ff0a7ea5b64a37a2670eb06e5a79d9bb4857d6 days 17 hrs ago0x8ebca52a17e37866676ee0b020f0bcc22405e36b  IN   etherplay.io0.002 Ether0.000076512
0xdeab5c385a5cafda02bee9961189d2e6bae87a99de652c9043f5779d1607a2387 days 19 hrs ago0xcaf6a42ec6e3574de56c690bbbc42aa898058bf2  IN   etherplay.io0 Ether0.000166876
0x0a648a6e9a2b581290c49d288fe9b7ec4556d273643f6988618d2eac70bc31697 days 19 hrs ago0xcaf6a42ec6e3574de56c690bbbc42aa898058bf2  IN   etherplay.io0.002 Ether0.000153024
0xa7a3b2f7a5b947868eecee50b670721cdfe76267b33002ec7aa448833af6dd0e7 days 19 hrs ago0xcaf6a42ec6e3574de56c690bbbc42aa898058bf2  IN   etherplay.io0 Ether0.000333444
0x6634a14f9404483f37943a8f498823096bf582ba67c981a303ed6f977b4a57927 days 19 hrs ago0xcaf6a42ec6e3574de56c690bbbc42aa898058bf2  IN   etherplay.io0.002 Ether0.000213024
0x84aaecb4d943fe177a3e47da8c03abb014c6f17882f1f08947788f26051992558 days 4 hrs ago0x3e3ddf1bc030645d61b5f082a19ff049bc93b29e  IN   etherplay.io0.002 Ether0.000213024
0x5b5368afe75c5d5cdcf8a81b7583b83704fa3522292460473eb7cf3b3f2265df8 days 18 hrs ago0x26661f15f5a4bfab16529281aadec785b086151e  IN   etherplay.io0 Ether0.000213444
0x254ff9326f5d9b0e5602338d152b1d588cd18a4a8c5b546c5ab6f0fdea58daee8 days 18 hrs ago0x26661f15f5a4bfab16529281aadec785b086151e  IN   etherplay.io0.002 Ether0.000153024
0x8bf3492a8b48418d0afd918df766ae4d230e449e11615584accb87247134aa9f9 days 2 hrs ago0x05a4307b87f9f6d22d3a47108cdd7f52087e37c0  IN   etherplay.io0 Ether0.000213444
0x63b999aa2e4b1d697721794a9628aed1bee8fe56db6ef956ca06ea76fa145f6e9 days 2 hrs ago0x05a4307b87f9f6d22d3a47108cdd7f52087e37c0  IN   etherplay.io0.002 Ether0.000153024
0x78e4588230bc4de81effd4ba45858b16c2b5cd8d3142dbde899bdff4806650fb9 days 19 hrs ago0x0718197b9ac69127381ed0c4b5d0f724f857c4d1  IN   etherplay.io0 Ether0.00062873
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
  Latest 25 Internal Txns, Click here to View More View All
ParentTxHash Block Age From To Value
0xbb85233cbc77e2de35fddad8e93f704027733cd53eea636e458bdf127fe239b645954332 days 19 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xbdb7be5d2640c46faf111ae18a84485b9a2565bd0.0065 Ether
0xbb85233cbc77e2de35fddad8e93f704027733cd53eea636e458bdf127fe239b645954332 days 19 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x26661f15f5a4bfab16529281aadec785b086151e0.0026 Ether
0xbb85233cbc77e2de35fddad8e93f704027733cd53eea636e458bdf127fe239b645954332 days 19 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x8ebca52a17e37866676ee0b020f0bcc22405e36b0.0039 Ether
0xbb85233cbc77e2de35fddad8e93f704027733cd53eea636e458bdf127fe239b645954332 days 19 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x05a4307b87f9f6d22d3a47108cdd7f52087e37c00.013 Ether
0x78e4588230bc4de81effd4ba45858b16c2b5cd8d3142dbde899bdff4806650fb45519729 days 19 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xbdb7be5d2640c46faf111ae18a84485b9a2565bd0.0075 Ether
0x78e4588230bc4de81effd4ba45858b16c2b5cd8d3142dbde899bdff4806650fb45519729 days 19 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xf7e030f36007caa5612f8a2adf8fac0d518411ac0.003 Ether
0x78e4588230bc4de81effd4ba45858b16c2b5cd8d3142dbde899bdff4806650fb45519729 days 19 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x05a4307b87f9f6d22d3a47108cdd7f52087e37c00.0045 Ether
0x78e4588230bc4de81effd4ba45858b16c2b5cd8d3142dbde899bdff4806650fb45519729 days 19 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x8ebca52a17e37866676ee0b020f0bcc22405e36b0.015 Ether
0x1c94dc0a694c2dde66a95ccd901288f99aef4324b7b2833be0bc4a60108f800e450795316 days 20 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xbdb7be5d2640c46faf111ae18a84485b9a2565bd0.0425 Ether
0x1c94dc0a694c2dde66a95ccd901288f99aef4324b7b2833be0bc4a60108f800e450795316 days 20 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xa5e55bb02582a43f251b1c867acc7e19fff78c370.017 Ether
0x1c94dc0a694c2dde66a95ccd901288f99aef4324b7b2833be0bc4a60108f800e450795316 days 20 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x05a4307b87f9f6d22d3a47108cdd7f52087e37c00.0255 Ether
0x1c94dc0a694c2dde66a95ccd901288f99aef4324b7b2833be0bc4a60108f800e450795316 days 20 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x8ebca52a17e37866676ee0b020f0bcc22405e36b0.085 Ether
0xb01ee0dabb443b469d5f2fc1ba0d8a75f5630da7dcf344baecd241aed01644f0450714616 days 23 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x56929337d9cf7f308114be718d0ae52dc58273530.002 Ether
0x878b8db20909266796e32c7003b90b06f8c166958c0ba967e5287412ead79bc4446449923 days 20 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xbdb7be5d2640c46faf111ae18a84485b9a2565bd0.0045 Ether
0x878b8db20909266796e32c7003b90b06f8c166958c0ba967e5287412ead79bc4446449923 days 20 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x231bb6f31c1a98e12fa069e60f5b04bbd15f778e0.0018 Ether
0x878b8db20909266796e32c7003b90b06f8c166958c0ba967e5287412ead79bc4446449923 days 20 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xf7e030f36007caa5612f8a2adf8fac0d518411ac0.0027 Ether
0x878b8db20909266796e32c7003b90b06f8c166958c0ba967e5287412ead79bc4446449923 days 20 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x1066d59930a78fb9c3eb6d733107f7ee76504e550.009 Ether
0x0e0e2d0e79009ae54eaa7fa398fb7895f8328c4ebbef6cb06388797176b601ff442116130 days 20 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xbdb7be5d2640c46faf111ae18a84485b9a2565bd0.01 Ether
0x0e0e2d0e79009ae54eaa7fa398fb7895f8328c4ebbef6cb06388797176b601ff442116130 days 20 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x6299dbe5be8ed5d5df9ff5a21b485c7da0cf34760.004 Ether
0x0e0e2d0e79009ae54eaa7fa398fb7895f8328c4ebbef6cb06388797176b601ff442116130 days 20 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xf7e030f36007caa5612f8a2adf8fac0d518411ac0.006 Ether
0x0e0e2d0e79009ae54eaa7fa398fb7895f8328c4ebbef6cb06388797176b601ff442116130 days 20 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x1066d59930a78fb9c3eb6d733107f7ee76504e550.02 Ether
0x097e947d3c9f2e5654a1f876e5fc0699a66c3cf6886b174d113cd6673a8efa76441374632 days 1 hr ago0x5f742383b6d1298980030d6af943b76cdd9021430xfe2b331c25c09b763140b17eb9f331db2841723a0.002 Ether
0x1b747efd442f25840b081475fc2e7d942071311e592711c5e392af2843f85803437749337 days 20 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xbdb7be5d2640c46faf111ae18a84485b9a2565bd0.0075 Ether
0x1b747efd442f25840b081475fc2e7d942071311e592711c5e392af2843f85803437749337 days 20 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x1066d59930a78fb9c3eb6d733107f7ee76504e550.003 Ether
0x1b747efd442f25840b081475fc2e7d942071311e592711c5e392af2843f85803437749337 days 20 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xf7e030f36007caa5612f8a2adf8fac0d518411ac0.0045 Ether
[ Download CSV Export  ] 
Contract Name: CompetitionStore
Compiler Version: v0.4.4+commit.4633f3de
Optimization Enabled: Yes
Runs (Optimiser):  200



  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),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
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.