Sponsored:   Ubex.com - Additional 17% of tokens are available for purchase! Trading on exchanges already started.
Contract Overview | etherplay.io
Balance: 0.020000000000000346 Ether
Ether Value: $5.51 (@ $275.31/ETH)
Transactions: 12742 txns
 Latest 25 txns from a total Of 12742 transactions

TxHash Age From To Value [TxFee]
0xb5dae52ffc95f46fe81359542fd5da76ce6c27070d6e32d88ff787c5e7ed4dc9259 days 7 hrs ago0x0718197b9ac69127381ed0c4b5d0f724f857c4d1  IN   etherplay.io0 Ether0.00062873
0x30d74e3e1352ada0d7a6ba9af205149028aafbbed690b441b9229757d6426161260 days 3 hrs ago0x8ebca52a17e37866676ee0b020f0bcc22405e36b  IN   etherplay.io0.002 Ether0.00007664
0xcfcddbbd2292c9ec41be6bc092072c39f34c00a49e156db16b0faba9e77f884f260 days 3 hrs ago0x8ebca52a17e37866676ee0b020f0bcc22405e36b  IN   etherplay.io0.002 Ether0.00007664
0x9ee1d785183b96556e8ca8e089fa14aa28b1f3bfffce3a4cbaf0350a6446f9b0260 days 3 hrs ago0x8ebca52a17e37866676ee0b020f0bcc22405e36b  IN   etherplay.io0.002 Ether0.00007664
0x6cff19fea0cb8ad107c6bf4a047bc28a73e24c377d379480743a852ab999fedb262 days 4 hrs ago0x8ebca52a17e37866676ee0b020f0bcc22405e36b  IN   etherplay.io0.002 Ether0.00007664
0xea926193e1cd74888181fc38640f7c2c77e96cb243ba07b7d877440cce5a4c8f262 days 4 hrs ago0x8ebca52a17e37866676ee0b020f0bcc22405e36b  IN   etherplay.io0.002 Ether0.00007664
0x710065966a5b076972d1c63d3b57cf08711d3e8755104e035653426a789f9942262 days 4 hrs ago0x8ebca52a17e37866676ee0b020f0bcc22405e36b  IN   etherplay.io0 Ether0.000083566
0x0c110974281e001f043ed1fa52429c3499cac0584b4accdf15f3b4b100ef37f0262 days 4 hrs ago0x8ebca52a17e37866676ee0b020f0bcc22405e36b  IN   etherplay.io0.002 Ether0.00007664
0x6614458b1518025ab8543442fb263353fa0880e0331558410272d5a1affef452262 days 4 hrs ago0x8ebca52a17e37866676ee0b020f0bcc22405e36b  IN   etherplay.io0.002 Ether0.00007664
0x192f357552c7bd2ab1423be7f6f6f64817789ba5a3e72c7598b3b1178bc8a353262 days 4 hrs ago0x8ebca52a17e37866676ee0b020f0bcc22405e36b  IN   etherplay.io0.002 Ether0.00007664
0x7cae509fa6f0239b47c5395d5af1be6137d0cd459f66ade6f90f8b179e4770ba262 days 4 hrs ago0x8ebca52a17e37866676ee0b020f0bcc22405e36b  IN   etherplay.io0 Ether0.000056848
0xe1a72c7efadae894b6992b6913291ab14be4330bda35f19f65ac7b245f8f4120262 days 4 hrs ago0x8ebca52a17e37866676ee0b020f0bcc22405e36b  IN   etherplay.io0.002 Ether0.00007664
0x3830606da1415463493f4728a9eb239568ea97120c389782ae3c65ce1ba074f0264 days 25 mins ago0x65b03b824535d118d85ec01c0a03db347bd9d79c  IN   etherplay.io0 Ether0.000213444
0x5b759896a9b630672afd06c1fdd41f219d5ca21d3a11a01752e336be477cca59264 days 27 mins ago0x65b03b824535d118d85ec01c0a03db347bd9d79c  IN   etherplay.io0.002 Ether0.00015328
0x28a26252e196b53af6e56621f85438455f514e20990f097b761af9f607b4f48d265 days 12 hrs ago0x8ebca52a17e37866676ee0b020f0bcc22405e36b  IN   etherplay.io0.002 Ether0.00015328
0xe7da78942cd888449027cc0a88eacc7574d2ad54eddbe25ee173f6e93611aba8265 days 15 hrs ago0x26661f15f5a4bfab16529281aadec785b086151e  IN   etherplay.io0 Ether0.000213444
0x0ae8a1bd63e4f68db536fbf3ea1e6554bb9a7cce0741a1212620cfad592e4f1c265 days 15 hrs ago0x26661f15f5a4bfab16529281aadec785b086151e  IN   etherplay.io0.002 Ether0.00015328
0x1a3d433ee7ab41c17189c9ca37844b8b7a835b7256e5c3f7b7c4db3d626995b6266 days 2 hrs ago0x8ebca52a17e37866676ee0b020f0bcc22405e36b  IN   etherplay.io0 Ether0.00010685
0x9919188b58bab6d0ddd2671b90e878af9dd1dfed5ad040747c6d5ac05a4c2e8c266 days 2 hrs ago0x8ebca52a17e37866676ee0b020f0bcc22405e36b  IN   etherplay.io0.002 Ether0.00007664
0x410e4c27d5596e5ffb809f8ede621c7a01fc605d5824d27b2cf1ad09e6fb4d91266 days 2 hrs ago0x8ebca52a17e37866676ee0b020f0bcc22405e36b  IN   etherplay.io0.002 Ether0.00007664
0xbb85233cbc77e2de35fddad8e93f704027733cd53eea636e458bdf127fe239b6266 days 7 hrs ago0x0718197b9ac69127381ed0c4b5d0f724f857c4d1  IN   etherplay.io0 Ether0.00062809
0x3b79d04e45df15ed765f4465d2ee37932e65dbf0a120de5070344f9e002a246a266 days 8 hrs ago0x0718197b9ac69127381ed0c4b5d0f724f857c4d1  IN   etherplay.io0.01 Ether0.00165257
0x0457576e2038d7146e2e17ce154db8604e4ab4ead8884194101b4152cdb04bf5266 days 8 hrs ago0x05a4307b87f9f6d22d3a47108cdd7f52087e37c0  IN   etherplay.io0 Ether0.000167132
0xe42aa0bf6dd54ac3aa31e55c77617caadb203b6de48c52e46fabd0dde1d4bb5f266 days 8 hrs ago0x05a4307b87f9f6d22d3a47108cdd7f52087e37c0  IN   etherplay.io0.002 Ether0.000153024
0xc61e29b94e69bc53868d75943ca46fd8eb7314fb7829984aa47327ddd0415aaf267 days 1 min ago0xc76fb5995f9d9c45293f422e61842af1e603c5d4  IN   etherplay.io0.002 Ether0.000213024
[ 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
0xb5dae52ffc95f46fe81359542fd5da76ce6c27070d6e32d88ff787c5e7ed4dc94638714259 days 7 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xbdb7be5d2640c46faf111ae18a84485b9a2565bd0.0095 Ether
0xb5dae52ffc95f46fe81359542fd5da76ce6c27070d6e32d88ff787c5e7ed4dc94638714259 days 7 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x26661f15f5a4bfab16529281aadec785b086151e0.0038 Ether
0xb5dae52ffc95f46fe81359542fd5da76ce6c27070d6e32d88ff787c5e7ed4dc94638714259 days 7 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x65b03b824535d118d85ec01c0a03db347bd9d79c0.0057 Ether
0xb5dae52ffc95f46fe81359542fd5da76ce6c27070d6e32d88ff787c5e7ed4dc94638714259 days 7 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x8ebca52a17e37866676ee0b020f0bcc22405e36b0.019 Ether
0xbb85233cbc77e2de35fddad8e93f704027733cd53eea636e458bdf127fe239b64595433266 days 7 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xbdb7be5d2640c46faf111ae18a84485b9a2565bd0.0065 Ether
0xbb85233cbc77e2de35fddad8e93f704027733cd53eea636e458bdf127fe239b64595433266 days 7 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x26661f15f5a4bfab16529281aadec785b086151e0.0026 Ether
0xbb85233cbc77e2de35fddad8e93f704027733cd53eea636e458bdf127fe239b64595433266 days 7 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x8ebca52a17e37866676ee0b020f0bcc22405e36b0.0039 Ether
0xbb85233cbc77e2de35fddad8e93f704027733cd53eea636e458bdf127fe239b64595433266 days 7 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x05a4307b87f9f6d22d3a47108cdd7f52087e37c00.013 Ether
0x78e4588230bc4de81effd4ba45858b16c2b5cd8d3142dbde899bdff4806650fb4551972273 days 7 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xbdb7be5d2640c46faf111ae18a84485b9a2565bd0.0075 Ether
0x78e4588230bc4de81effd4ba45858b16c2b5cd8d3142dbde899bdff4806650fb4551972273 days 7 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xf7e030f36007caa5612f8a2adf8fac0d518411ac0.003 Ether
0x78e4588230bc4de81effd4ba45858b16c2b5cd8d3142dbde899bdff4806650fb4551972273 days 7 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x05a4307b87f9f6d22d3a47108cdd7f52087e37c00.0045 Ether
0x78e4588230bc4de81effd4ba45858b16c2b5cd8d3142dbde899bdff4806650fb4551972273 days 7 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x8ebca52a17e37866676ee0b020f0bcc22405e36b0.015 Ether
0x1c94dc0a694c2dde66a95ccd901288f99aef4324b7b2833be0bc4a60108f800e4507953280 days 9 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xbdb7be5d2640c46faf111ae18a84485b9a2565bd0.0425 Ether
0x1c94dc0a694c2dde66a95ccd901288f99aef4324b7b2833be0bc4a60108f800e4507953280 days 9 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xa5e55bb02582a43f251b1c867acc7e19fff78c370.017 Ether
0x1c94dc0a694c2dde66a95ccd901288f99aef4324b7b2833be0bc4a60108f800e4507953280 days 9 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x05a4307b87f9f6d22d3a47108cdd7f52087e37c00.0255 Ether
0x1c94dc0a694c2dde66a95ccd901288f99aef4324b7b2833be0bc4a60108f800e4507953280 days 9 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x8ebca52a17e37866676ee0b020f0bcc22405e36b0.085 Ether
0xb01ee0dabb443b469d5f2fc1ba0d8a75f5630da7dcf344baecd241aed01644f04507146280 days 12 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x56929337d9cf7f308114be718d0ae52dc58273530.002 Ether
0x878b8db20909266796e32c7003b90b06f8c166958c0ba967e5287412ead79bc44464499287 days 9 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xbdb7be5d2640c46faf111ae18a84485b9a2565bd0.0045 Ether
0x878b8db20909266796e32c7003b90b06f8c166958c0ba967e5287412ead79bc44464499287 days 9 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x231bb6f31c1a98e12fa069e60f5b04bbd15f778e0.0018 Ether
0x878b8db20909266796e32c7003b90b06f8c166958c0ba967e5287412ead79bc44464499287 days 9 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xf7e030f36007caa5612f8a2adf8fac0d518411ac0.0027 Ether
0x878b8db20909266796e32c7003b90b06f8c166958c0ba967e5287412ead79bc44464499287 days 9 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x1066d59930a78fb9c3eb6d733107f7ee76504e550.009 Ether
0x0e0e2d0e79009ae54eaa7fa398fb7895f8328c4ebbef6cb06388797176b601ff4421161294 days 9 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xbdb7be5d2640c46faf111ae18a84485b9a2565bd0.01 Ether
0x0e0e2d0e79009ae54eaa7fa398fb7895f8328c4ebbef6cb06388797176b601ff4421161294 days 9 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x6299dbe5be8ed5d5df9ff5a21b485c7da0cf34760.004 Ether
0x0e0e2d0e79009ae54eaa7fa398fb7895f8328c4ebbef6cb06388797176b601ff4421161294 days 9 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430xf7e030f36007caa5612f8a2adf8fac0d518411ac0.006 Ether
0x0e0e2d0e79009ae54eaa7fa398fb7895f8328c4ebbef6cb06388797176b601ff4421161294 days 9 hrs ago0x5f742383b6d1298980030d6af943b76cdd9021430x1066d59930a78fb9c3eb6d733107f7ee76504e550.02 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.