Skip to content

Instantly share code, notes, and snippets.

@sesameJar
Created July 26, 2019 00:34
Show Gist options
  • Save sesameJar/f72e404852a266b865236b224b00416c to your computer and use it in GitHub Desktop.
Save sesameJar/f72e404852a266b865236b224b00416c to your computer and use it in GitHub Desktop.
struct Player:
id : uint256
playerAddress : address
wager : wei_value
GameBegan : event({_firstPlayer : address, _amount : wei_value})
wager : public(wei_value)
winner : public(uint256)
players: public(map(uint256, Player))
tmp : public(timestamp)
@public
def generateRandomBit() -> bool:
if((block.timestamp - self.tmp) % 2 == 0):
return True
else:
return False
@public
@payable
def beginGame():
assert(msg.value > 0)
self.players[1] = Player({id:1, playerAddress:msg.sender, wager:msg.value})
self.wager = msg.value
log.GameBegan(msg.sender, msg.value)
@public
@payable
def acceptChallenge():
assert(
msg.sender != self.players[1].playerAddress and
msg.value == self.wager
)
self.players[2] = Player({id:2, playerAddress:msg.sender, wager:msg.value})
if(self.generateRandomBit()):
self.winner = 1
self.players[1].wager += self.wager
self.players[2].wager -= self.wager
else:
self.winner =2
self.players[2].wager += self.wager
self.players[1].wager -= self.wager
@public
def withdrawPrize() :
assert(msg.sender == self.players[self.winner].playerAddress)
prizeAmount : wei_value = self.players[self.winner].wager
send(self.players[self.winner].playerAddress, prizeAmount)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment