x
1085
parameter (or
(or
(or (or (nat %cancelGame) (unit %confirmAdmin))
(or (unit %createGame) (unit %default)))
(or (or (nat %match) (nat %push))
(or (option %setAdmin address) (option %setArbiter address))))
(or
(or
(pair %setLimits (mutez %checkLimit) (mutez %minStake) (mutez %maxStake)
(nat %permille))
(address %setOracle))
(bool %setPause)));
storage (pair
(pair
(pair (pair (address %admin) (option %arbiter address))
(pair (mutez %checkLimit) (address %communityWallet)))
(pair (pair (nat %epoch) (mutez %flipped))
(pair
(big_map %games nat
(pair (address %p1) (mutez %amount) (nat %status)
(option %p2 address)
(nat %epoch)
(option %ts timestamp)
(nat %seed)))
(nat %gamesTotal))))
(pair
(pair (pair (mutez %maxStake) (mutez %minStake))
(pair (address %oracle) (bool %paused)))
(pair (pair (option %pending address) (nat %permille))
(pair (big_map %players address nat) (nat %seed)))));
code { PUSH nat 0 ;
NIL operation ;
PUSH string "Robot, huh?" ;
PUSH string "Couldn't call oracle view" ;
PUSH string "Contract is paused" ;
DIG 5 ;
UNPAIR ;
IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ DIG 2 ;
DIG 3 ;
DIG 6 ;
DROP 3 ;
IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
CDR ;
CAR ;
SENDER ;
GET ;
IF_NONE
{ DIG 2 ; DROP ; UNIT }
{ LEVEL ;
SWAP ;
COMPARE ;
EQ ;
IF { DIG 2 ; FAILWITH } { DIG 2 ; DROP ; UNIT } } ;
DROP ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
CDR ;
CDR ;
CAR ;
SWAP ;
DUP ;
DUG 2 ;
GET ;
IF_NONE
{ PUSH int 1 ; FAILWITH }
{ DUP 3 ;
CAR ;
CAR ;
CAR ;
CAR ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
COMPARE ;
EQ ;
SENDER ;
DUP 3 ;
CAR ;
COMPARE ;
EQ ;
OR ;
IF
{}
{ DROP ;
PUSH string "This game isn't yours to cancel!" ;
FAILWITH } } ;
PUSH string "Can't cancel this" ;
NONE address ;
DUP 3 ;
GET 7 ;
COMPARE ;
EQ ;
IF { DROP } { FAILWITH } ;
DUP 3 ;
CDR ;
CDR ;
CDR ;
CDR ;
DUP 4 ;
CDR ;
CDR ;
CDR ;
CAR ;
LEVEL ;
SOME ;
SENDER ;
UPDATE ;
PAIR ;
DUP 4 ;
CDR ;
CDR ;
CAR ;
PAIR ;
DUP 4 ;
CDR ;
CAR ;
PAIR ;
DIG 3 ;
CAR ;
PAIR ;
SWAP ;
PUSH nat 3 ;
UPDATE 5 ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
DUP 3 ;
CAR ;
CDR ;
CDR ;
CDR ;
DUP 4 ;
CAR ;
CDR ;
CDR ;
CAR ;
DUP 4 ;
DIG 6 ;
SWAP ;
SOME ;
SWAP ;
UPDATE ;
PAIR ;
DUP 4 ;
CAR ;
CDR ;
CAR ;
PAIR ;
DIG 3 ;
CAR ;
CAR ;
PAIR ;
PAIR ;
DUG 2 ;
DUP ;
DUG 3 ;
GET 3 ;
DIG 3 ;
CAR ;
PUSH mutez 0 ;
DUP 3 ;
COMPARE ;
GT ;
IF
{ CONTRACT unit ;
IF_NONE
{ PUSH string "Destination not found" ; FAILWITH }
{} ;
DIG 2 ;
SWAP ;
DIG 2 ;
UNIT ;
TRANSFER_TOKENS ;
CONS }
{ DROP 2 } ;
PAIR }
{ DIG 2 ;
DROP 2 ;
DUP ;
CDR ;
CDR ;
CAR ;
CAR ;
SENDER ;
SOME ;
COMPARE ;
NEQ ;
IF { PUSH int 1 ; FAILWITH } {} ;
DUP ;
CDR ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
CDR ;
DUP 3 ;
CAR ;
CAR ;
CDR ;
DIG 3 ;
CAR ;
CAR ;
CAR ;
CDR ;
SENDER ;
PAIR ;
PAIR ;
PAIR ;
PAIR ;
DUP ;
CDR ;
CDR ;
CDR ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
CAR ;
CDR ;
NONE address ;
PAIR ;
PAIR ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CAR ;
PAIR ;
SWAP ;
CAR ;
PAIR ;
SWAP ;
PAIR } }
{ IF_LEFT
{ DROP ;
SWAP ;
PUSH bool False ;
DUP 3 ;
CDR ;
CAR ;
CDR ;
CDR ;
COMPARE ;
EQ ;
IF { DROP } { FAILWITH } ;
PUSH string "Failed" ;
SOURCE ;
SENDER ;
COMPARE ;
EQ ;
IF { DROP } { FAILWITH } ;
PUSH string "Stake is too low" ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CAR ;
CAR ;
CDR ;
AMOUNT ;
COMPARE ;
GE ;
IF { DROP } { FAILWITH } ;
PUSH string "Stake is too high" ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CAR ;
CAR ;
CAR ;
AMOUNT ;
COMPARE ;
LE ;
IF { DROP } { FAILWITH } ;
PUSH string "Stake should be rounded to the nearest integer value" ;
PUSH mutez 0 ;
PUSH mutez 1000000 ;
AMOUNT ;
EDIV ;
IF_NONE { PUSH string "MOD by 0" ; FAILWITH } {} ;
CDR ;
COMPARE ;
EQ ;
IF { DROP } { FAILWITH } ;
DUP ;
CDR ;
CDR ;
CDR ;
CAR ;
SENDER ;
GET ;
IF_NONE
{ DIG 2 ; DROP ; UNIT }
{ LEVEL ;
SWAP ;
COMPARE ;
EQ ;
IF { DIG 2 ; FAILWITH } { DIG 2 ; DROP ; UNIT } } ;
DROP ;
DUP ;
CDR ;
CDR ;
CDR ;
CDR ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
CDR ;
CAR ;
LEVEL ;
SOME ;
SENDER ;
UPDATE ;
PAIR ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
CAR ;
PAIR ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CAR ;
PAIR ;
SWAP ;
CAR ;
PAIR ;
DUP ;
CDR ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
CDR ;
CDR ;
DUP 3 ;
CAR ;
CDR ;
CAR ;
CDR ;
DUP 4 ;
CDR ;
CAR ;
CDR ;
CAR ;
UNIT ;
VIEW "get_epoch" nat ;
IF_NONE { DIG 4 ; FAILWITH } { DIG 5 ; DROP } ;
PAIR ;
PAIR ;
DIG 2 ;
CAR ;
CAR ;
PAIR ;
PAIR ;
DUP ;
CDR ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
CDR ;
CDR ;
CDR ;
DUP 3 ;
CAR ;
CDR ;
CDR ;
CAR ;
PUSH nat 0 ;
NONE timestamp ;
DUP 6 ;
CAR ;
CDR ;
CAR ;
CAR ;
NONE address ;
DIG 9 ;
AMOUNT ;
SENDER ;
PAIR 7 ;
DUP 5 ;
CAR ;
CDR ;
CDR ;
CDR ;
SWAP ;
SOME ;
SWAP ;
UPDATE ;
PAIR ;
DUP 3 ;
CAR ;
CDR ;
CAR ;
PAIR ;
DIG 2 ;
CAR ;
CAR ;
PAIR ;
PAIR ;
DUP ;
CDR ;
PUSH nat 1 ;
DUP 3 ;
CAR ;
CDR ;
CDR ;
CDR ;
ADD ;
DUP 3 ;
CAR ;
CDR ;
CDR ;
CAR ;
PAIR ;
DUP 3 ;
CAR ;
CDR ;
CAR ;
PAIR ;
DIG 2 ;
CAR ;
CAR ;
PAIR ;
PAIR ;
SWAP ;
PAIR }
{ DIG 2 ; DIG 3 ; DIG 4 ; DIG 6 ; DROP 5 ; SWAP ; PAIR } } }
{ IF_LEFT
{ IF_LEFT
{ DIG 2 ;
PUSH bool False ;
DUP 4 ;
CDR ;
CAR ;
CDR ;
CDR ;
COMPARE ;
EQ ;
IF { DROP } { FAILWITH } ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
CDR ;
CAR ;
SENDER ;
GET ;
IF_NONE
{ DIG 3 ; DROP ; UNIT }
{ LEVEL ;
SWAP ;
COMPARE ;
EQ ;
IF { DIG 3 ; FAILWITH } { DIG 3 ; DROP ; UNIT } } ;
DROP ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
CDR ;
CDR ;
CAR ;
SWAP ;
DUP ;
DUG 2 ;
GET ;
IF_NONE { PUSH int 1 ; FAILWITH } {} ;
PUSH string "Can't touch this" ;
DIG 6 ;
DUP 3 ;
GET 5 ;
COMPARE ;
EQ ;
IF { DROP } { FAILWITH } ;
PUSH string "Stake mismatch" ;
AMOUNT ;
DUP 3 ;
GET 3 ;
COMPARE ;
EQ ;
IF { DROP } { FAILWITH } ;
DUP ;
GET 7 ;
IF_NONE {} { DROP ; PUSH int 2 ; FAILWITH } ;
DUP 3 ;
CDR ;
CDR ;
CDR ;
CDR ;
DUP 4 ;
CDR ;
CDR ;
CDR ;
CAR ;
LEVEL ;
SOME ;
SENDER ;
UPDATE ;
PAIR ;
DUP 4 ;
CDR ;
CDR ;
CAR ;
PAIR ;
DUP 4 ;
CDR ;
CAR ;
PAIR ;
DIG 3 ;
CAR ;
PAIR ;
DUP ;
DUG 2 ;
CDR ;
CAR ;
CDR ;
CAR ;
UNIT ;
VIEW "get_epoch" nat ;
IF_NONE { DUP 4 ; FAILWITH } {} ;
UPDATE 9 ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
CDR ;
CDR ;
PUSH nat 13 ;
SWAP ;
DUP ;
DUG 2 ;
LSL ;
XOR ;
PUSH nat 17 ;
SWAP ;
DUP ;
DUG 2 ;
LSR ;
XOR ;
PUSH nat 5 ;
SWAP ;
DUP ;
DUG 2 ;
LSL ;
XOR ;
PUSH nat 4294967295 ;
AND ;
DUP 3 ;
DUP 3 ;
GET 9 ;
SWAP ;
CDR ;
CAR ;
CDR ;
CAR ;
SWAP ;
VIEW "get_seed" nat ;
IF_NONE { DIG 4 ; FAILWITH } { DIG 5 ; DROP } ;
XOR ;
DUP 3 ;
CDR ;
CDR ;
CDR ;
CAR ;
PAIR ;
DUP 3 ;
CDR ;
CDR ;
CAR ;
PAIR ;
DUP 3 ;
CDR ;
CAR ;
PAIR ;
DIG 2 ;
CAR ;
PAIR ;
SWAP ;
SENDER ;
SOME ;
UPDATE 7 ;
NOW ;
SOME ;
UPDATE 11 ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
CDR ;
CDR ;
UPDATE 12 ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
DUP 3 ;
CAR ;
CDR ;
CDR ;
CDR ;
DUP 4 ;
CAR ;
CDR ;
CDR ;
CAR ;
DUP 4 ;
DIG 6 ;
SWAP ;
SOME ;
SWAP ;
UPDATE ;
PAIR ;
DUP 4 ;
CAR ;
CDR ;
CAR ;
PAIR ;
DIG 3 ;
CAR ;
CAR ;
PAIR ;
PAIR ;
DUP ;
CDR ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
CDR ;
CDR ;
DIG 3 ;
GET 3 ;
DUP 4 ;
CAR ;
CDR ;
CAR ;
CDR ;
ADD ;
DUP 4 ;
CAR ;
CDR ;
CAR ;
CAR ;
PAIR ;
PAIR ;
DIG 2 ;
CAR ;
CAR ;
PAIR ;
PAIR ;
SWAP ;
PAIR }
{ DIG 2 ;
DROP ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
CAR ;
CDR ;
IF_NONE
{ SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
CDR ;
CAR ;
SENDER ;
GET ;
IF_NONE
{ DIG 3 ; DROP ; SENDER }
{ LEVEL ;
SWAP ;
COMPARE ;
EQ ;
IF { DIG 3 ; FAILWITH } { DIG 3 ; DROP ; SENDER } } }
{ DIG 4 ; DROP } ;
PUSH string "Unknown source" ;
SENDER ;
DUP 3 ;
COMPARE ;
EQ ;
IF { DROP } { FAILWITH } ;
DUP 3 ;
CAR ;
CDR ;
CDR ;
CAR ;
DUP 3 ;
GET ;
IF_NONE { PUSH int 2 ; FAILWITH } {} ;
PUSH string "Game status is wrong" ;
DIG 7 ;
DUP 3 ;
GET 5 ;
COMPARE ;
EQ ;
IF { DROP } { FAILWITH } ;
DUP ;
GET 7 ;
IF_NONE { PUSH string "No address found" ; FAILWITH } {} ;
SWAP ;
DUP ;
DUG 2 ;
GET 12 ;
DUP 6 ;
PUSH nat 2 ;
DUP 5 ;
GET 9 ;
ADD ;
SWAP ;
CDR ;
CAR ;
CDR ;
CAR ;
SWAP ;
VIEW "get_seed" nat ;
IF_NONE { DIG 6 ; FAILWITH } { DIG 7 ; DROP } ;
ADD ;
PUSH nat 13 ;
SWAP ;
DUP ;
DUG 2 ;
LSL ;
XOR ;
PUSH nat 17 ;
SWAP ;
DUP ;
DUG 2 ;
LSR ;
XOR ;
PUSH nat 5 ;
SWAP ;
DUP ;
DUG 2 ;
LSL ;
XOR ;
PUSH nat 4294967295 ;
AND ;
PUSH nat 0 ;
PUSH nat 4 ;
DUP 3 ;
AND ;
COMPARE ;
EQ ;
IF
{ SWAP ; DROP ; SWAP ; PUSH nat 1 ; UPDATE 5 ; DUP ; CAR ; SWAP ; PAIR }
{ SWAP ; DIG 2 ; PUSH nat 2 ; UPDATE 5 ; PAIR } ;
DUP ;
CAR ;
DIG 2 ;
UPDATE 12 ;
NOW ;
SOME ;
UPDATE 11 ;
DUP 5 ;
CDR ;
DUP 6 ;
CAR ;
CDR ;
CDR ;
CDR ;
DUP 7 ;
CAR ;
CDR ;
CDR ;
CAR ;
DUP 4 ;
DIG 7 ;
SWAP ;
SOME ;
SWAP ;
UPDATE ;
PAIR ;
DUP 6 ;
CAR ;
CDR ;
CAR ;
PAIR ;
DIG 5 ;
CAR ;
CAR ;
PAIR ;
PAIR ;
PUSH nat 1000 ;
DIG 2 ;
GET 3 ;
EDIV ;
IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
CAR ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
CAR ;
CDR ;
SWAP ;
DUP ;
DUG 2 ;
MUL ;
DUP 3 ;
CDR ;
CDR ;
CAR ;
CDR ;
PUSH nat 1000 ;
SUB ;
ABS ;
DIG 2 ;
MUL ;
DIG 5 ;
PUSH nat 2 ;
DIG 2 ;
MUL ;
DIG 4 ;
CDR ;
PUSH mutez 0 ;
DUP 3 ;
COMPARE ;
GT ;
IF
{ CONTRACT unit ;
IF_NONE
{ PUSH string "Destination not found" ; FAILWITH }
{} ;
DIG 2 ;
SWAP ;
DIG 2 ;
UNIT ;
TRANSFER_TOKENS ;
CONS }
{ DROP 2 } ;
DUP 3 ;
CAR ;
CAR ;
CDR ;
CAR ;
PUSH nat 2 ;
DIG 3 ;
MUL ;
SUB_MUTEZ ;
IF_NONE { PUSH string "option is None" ; FAILWITH } {} ;
DUP 3 ;
CAR ;
CAR ;
CDR ;
CDR ;
PUSH mutez 0 ;
DUP 3 ;
COMPARE ;
GT ;
IF
{ CONTRACT unit ;
IF_NONE
{ PUSH string "Destination not found" ; FAILWITH }
{} ;
DIG 2 ;
SWAP ;
DIG 2 ;
UNIT ;
TRANSFER_TOKENS ;
CONS }
{ DROP 2 } ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
CDR ;
CAR ;
DIG 3 ;
PUSH mutez 0 ;
DUP 3 ;
COMPARE ;
GT ;
IF
{ CONTRACT unit ;
IF_NONE
{ PUSH string "Destination not found" ; FAILWITH }
{} ;
DIG 2 ;
SWAP ;
DIG 2 ;
UNIT ;
TRANSFER_TOKENS ;
CONS }
{ DROP 2 } ;
PAIR } }
{ DIG 2 ;
DIG 3 ;
DIG 4 ;
DIG 6 ;
DROP 4 ;
IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
NEQ ;
IF { PUSH int 1 ; FAILWITH } {} ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
CDR ;
DUP 3 ;
CDR ;
CDR ;
CAR ;
CDR ;
DIG 2 ;
PAIR ;
PAIR ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CAR ;
PAIR ;
SWAP ;
CAR ;
PAIR ;
SWAP ;
PAIR }
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
NEQ ;
IF { PUSH int 1 ; FAILWITH } {} ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
DUP 3 ;
CAR ;
CDR ;
DUP 4 ;
CAR ;
CAR ;
CDR ;
DIG 3 ;
DIG 4 ;
CAR ;
CAR ;
CAR ;
CAR ;
PAIR ;
PAIR ;
PAIR ;
PAIR ;
SWAP ;
PAIR } } } }
{ DIG 2 ;
DIG 3 ;
DIG 4 ;
DIG 6 ;
DROP 4 ;
IF_LEFT
{ IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
NEQ ;
IF { PUSH int 1 ; FAILWITH } {} ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
DUP 3 ;
CAR ;
CDR ;
DUP 4 ;
CAR ;
CAR ;
CDR ;
CDR ;
DUP 4 ;
CAR ;
PAIR ;
DIG 4 ;
CAR ;
CAR ;
CAR ;
PAIR ;
PAIR ;
PAIR ;
DUP ;
CDR ;
CDR ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CAR ;
CDR ;
DUP 4 ;
GET 3 ;
DUP 4 ;
CDR ;
CAR ;
CAR ;
CAR ;
PAIR ;
PAIR ;
PAIR ;
SWAP ;
CAR ;
PAIR ;
DUP ;
CDR ;
CDR ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CAR ;
CDR ;
DUP 3 ;
CDR ;
CAR ;
CAR ;
CDR ;
DUP 5 ;
GET 5 ;
PAIR ;
PAIR ;
PAIR ;
SWAP ;
CAR ;
PAIR ;
DUP ;
CDR ;
CDR ;
CDR ;
DIG 2 ;
GET 6 ;
DUP 3 ;
CDR ;
CDR ;
CAR ;
CAR ;
PAIR ;
PAIR ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CAR ;
PAIR ;
SWAP ;
CAR ;
PAIR ;
SWAP ;
PAIR }
{ PUSH string "You are not administrator" ;
DUP 3 ;
CAR ;
CAR ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF { DROP } { FAILWITH } ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
DUP 3 ;
CDR ;
CAR ;
CDR ;
CDR ;
DIG 2 ;
PAIR ;
DUP 3 ;
CDR ;
CAR ;
CAR ;
PAIR ;
PAIR ;
SWAP ;
CAR ;
PAIR ;
SWAP ;
PAIR } }
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
NEQ ;
IF { PUSH int 1 ; FAILWITH } {} ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
SWAP ;
DUP 3 ;
CDR ;
CAR ;
CDR ;
CAR ;
PAIR ;
DUP 3 ;
CDR ;
CAR ;
CAR ;
PAIR ;
PAIR ;
SWAP ;
CAR ;
PAIR ;
SWAP ;
PAIR } } }