x
1088
parameter (or (or (or (or (pair %ban address bool) (nat %cancel)) (or (unit %confirmAdmin) (unit %default))) (or (or (nat %p1) (nat %p2)) (or (nat %reveal) (option %setAdmin address)))) (or (or (option %setArbiter address) (pair %setLimits (mutez %incentive) (mutez %maxStake) (mutez %minStake) (nat %permille))) (or (address %setOracle) (bool %setPause))));storage (pair (pair (pair (pair (address %admin) (option %arbiter address)) (pair (big_map %banned address unit) (address %communityWallet))) (pair (pair (mutez %flipped) (big_map %games nat (pair (address %p1) (mutez %amount) (nat %status) (nat %dice) (nat %epoch) (option %p2 address) (timestamp %ts)))) (pair (nat %gamesTotal) (mutez %incentive)))) (pair (pair (pair (mutez %maxStake) (mutez %minStake)) (pair (address %oracle) (bool %paused))) (pair (pair (option %pending address) (nat %permille)) (big_map %players address nat))));code { PUSH nat 0 ; PUSH nat 3 ; NIL operation ; PUSH string "Robot, huh?" ; PUSH string "Couldn't call oracle view" ; PUSH string "Access denied" ; LAMBDA nat nat { PUSH nat 0 ; PUSH nat 0 ; PUSH nat 1 ; DUP 4 ; AND ; COMPARE ; EQ ; IF {} { PUSH nat 1 ; ADD } ; PUSH nat 0 ; PUSH nat 2 ; DUP 4 ; AND ; COMPARE ; EQ ; IF {} { PUSH nat 1 ; ADD } ; PUSH nat 0 ; PUSH nat 4 ; DUP 4 ; AND ; COMPARE ; EQ ; IF {} { PUSH nat 1 ; ADD } ; PUSH nat 0 ; PUSH nat 8 ; DUP 4 ; AND ; COMPARE ; EQ ; IF {} { PUSH nat 1 ; ADD } ; PUSH nat 0 ; PUSH nat 16 ; DUP 4 ; AND ; COMPARE ; EQ ; IF {} { PUSH nat 1 ; ADD } ; PUSH nat 0 ; PUSH nat 32 ; DIG 3 ; AND ; COMPARE ; EQ ; IF {} { PUSH nat 1 ; ADD } } ; DIG 7 ; UNPAIR ; IF_LEFT { IF_LEFT { DIG 2 ; DIG 4 ; DIG 5 ; DIG 7 ; DROP 4 ; IF_LEFT { IF_LEFT { DIG 4 ; DROP ; DUG 2 ; DUP ; DUG 3 ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; SWAP ; DUP ; DUG 2 ; CDR ; DUP 3 ; CAR ; CDR ; DUP 4 ; CAR ; CAR ; CDR ; CDR ; DUP 4 ; CDR ; IF { DUP 5 ; CAR ; CAR ; CDR ; CAR ; UNIT ; DIG 5 ; CAR ; SWAP ; SOME ; SWAP ; UPDATE } { DUP 5 ; CAR ; CAR ; CDR ; CAR ; DIG 4 ; CAR ; NONE unit ; SWAP ; UPDATE } ; PAIR ; DIG 3 ; CAR ; CAR ; CAR ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR } { DIG 2 ; DROP ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; CAR ; CDR ; SWAP ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 2 ; FAILWITH } {} ; PUSH string "Can't touch this" ; DUP 4 ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; SENDER ; DUP 4 ; CAR ; COMPARE ; EQ ; OR ; IF { DROP } { FAILWITH } ; PUSH string "Game status is wrong" ; DIG 5 ; DUP 3 ; GET 5 ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; DUP 3 ; CDR ; DUP 4 ; CAR ; CDR ; CDR ; DUP 5 ; CAR ; CDR ; CAR ; CDR ; DIG 4 ; NONE (pair address mutez nat nat nat (option address) timestamp) ; SWAP ; UPDATE ; DUP 5 ; CAR ; CDR ; CAR ; CAR ; PAIR ; 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 { DIG 2 ; SWAP ; CONTRACT unit ; IF_NONE { PUSH string "Destination not found" ; FAILWITH } {} ; DIG 2 ; UNIT ; TRANSFER_TOKENS ; CONS } { DROP 2 } ; PAIR } } { DIG 2 ; DIG 4 ; DROP 2 ; IF_LEFT { DROP ; DUP ; CDR ; CDR ; CAR ; CAR ; SENDER ; SOME ; COMPARE ; EQ ; IF {} { PUSH string "failed assertion" ; 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 } { DROP ; SWAP ; PAIR } } } { IF_LEFT { DIG 3 ; DROP ; IF_LEFT { DIG 6 ; DROP ; PUSH string "Address is banned" ; PUSH bool False ; DUP 4 ; CAR ; CAR ; CDR ; CAR ; SENDER ; MEM ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; PUSH string "Contract is paused" ; PUSH bool False ; DUP 4 ; CDR ; CAR ; CDR ; CDR ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; PUSH string "Failed" ; SOURCE ; SENDER ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; SWAP ; DUP ; DUG 2 ; CDR ; CDR ; CDR ; SENDER ; GET ; IF_NONE { DIG 4 ; DROP ; UNIT } { LEVEL ; SWAP ; COMPARE ; EQ ; IF { DIG 4 ; FAILWITH } { DIG 4 ; DROP ; UNIT } } ; DROP ; PUSH string "Stake is too low" ; DUP 3 ; CDR ; CAR ; CAR ; CDR ; AMOUNT ; COMPARE ; GE ; IF { DROP } { FAILWITH } ; PUSH string "Stake is too high" ; DUP 3 ; 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 ; DIG 3 ; SWAP ; EXEC ; PUSH string "Impossible dice combination" ; PUSH nat 0 ; DUP 3 ; COMPARE ; GT ; PUSH nat 6 ; DIG 3 ; COMPARE ; LT ; AND ; IF { DROP } { FAILWITH } ; SWAP ; DUP ; DUG 2 ; CDR ; CDR ; CDR ; LEVEL ; SOME ; SENDER ; UPDATE ; DUP 3 ; CDR ; CDR ; CAR ; PAIR ; DUP 3 ; CDR ; CAR ; PAIR ; DIG 2 ; CAR ; PAIR ; DUP ; CDR ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; CDR ; DUP 3 ; CAR ; CDR ; CAR ; CDR ; NOW ; NONE address ; DUP 6 ; CDR ; CAR ; CDR ; CAR ; UNIT ; VIEW "get_epoch" nat ; IF_NONE { DIG 7 ; FAILWITH } { DIG 8 ; DROP } ; DIG 7 ; DIG 9 ; AMOUNT ; SENDER ; PAIR 7 ; DUP 5 ; CAR ; CDR ; CDR ; CAR ; SWAP ; SOME ; SWAP ; UPDATE ; DUP 4 ; CAR ; CDR ; CAR ; CAR ; PAIR ; PAIR ; DIG 2 ; CAR ; CAR ; PAIR ; PAIR ; DUP ; CDR ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; CDR ; CDR ; PUSH nat 1 ; DUP 4 ; CAR ; CDR ; CDR ; CAR ; ADD ; PAIR ; DUP 3 ; CAR ; CDR ; CAR ; PAIR ; DIG 2 ; CAR ; CAR ; PAIR ; PAIR ; SWAP ; PAIR } { PUSH string "Address is banned" ; PUSH bool False ; DUP 4 ; CAR ; CAR ; CDR ; CAR ; SENDER ; MEM ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; CAR ; CDR ; SWAP ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 2 ; FAILWITH } {} ; DUP 3 ; CDR ; CDR ; CDR ; SENDER ; GET ; IF_NONE { DIG 5 ; DROP ; UNIT } { LEVEL ; SWAP ; COMPARE ; EQ ; IF { DIG 5 ; FAILWITH } { DIG 5 ; DROP ; UNIT } } ; DROP ; PUSH string "Game status is wrong" ; DIG 8 ; DUP 3 ; GET 5 ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; PUSH string "Playing with yourself?" ; SENDER ; DUP 3 ; CAR ; COMPARE ; NEQ ; IF { DROP } { FAILWITH } ; DUP ; GET 7 ; DIG 4 ; SWAP ; EXEC ; PUSH nat 6 ; DUP 3 ; GET 3 ; MUL ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; PUSH string "Wrong bet amount" ; DUP 3 ; GET 3 ; DIG 2 ; SUB_MUTEZ ; IF_NONE { PUSH string "option is None" ; FAILWITH } {} ; AMOUNT ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; DUP 3 ; CDR ; CAR ; CDR ; CAR ; UNIT ; VIEW "get_epoch" nat ; IF_NONE { DIG 3 ; FAILWITH } { DIG 4 ; DROP } ; UPDATE 9 ; DUP ; AMOUNT ; DIG 2 ; GET 3 ; ADD ; UPDATE 3 ; SENDER ; SOME ; UPDATE 11 ; DIG 4 ; UPDATE 5 ; DUP 3 ; CDR ; DUP 4 ; CAR ; CDR ; CDR ; DUP 5 ; CAR ; CDR ; CAR ; CDR ; DUP 4 ; DIG 5 ; SWAP ; SOME ; SWAP ; UPDATE ; DUP 5 ; CAR ; CDR ; CAR ; CAR ; PAIR ; PAIR ; DIG 3 ; CAR ; CAR ; PAIR ; PAIR ; DUP ; CDR ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; CDR ; DUP 3 ; CAR ; CDR ; CAR ; CDR ; DIG 4 ; GET 3 ; DUP 5 ; CAR ; CDR ; CAR ; CAR ; ADD ; PAIR ; PAIR ; DIG 2 ; CAR ; CAR ; PAIR ; PAIR ; SWAP ; PAIR } } { DIG 2 ; DIG 5 ; DIG 8 ; DROP 3 ; IF_LEFT { DIG 2 ; DROP ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CDR ; IF_NONE { UNIT } { PUSH string "Unknown source" ; SENDER ; DIG 2 ; COMPARE ; EQ ; IF { DROP ; UNIT } { FAILWITH } } ; DROP ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; CAR ; CDR ; SWAP ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 2 ; FAILWITH } {} ; PUSH string "Game status is wrong" ; DIG 6 ; DUP 3 ; GET 5 ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; DUP 3 ; PUSH nat 2 ; DUP 3 ; GET 9 ; ADD ; SWAP ; CDR ; CAR ; CDR ; CAR ; SWAP ; VIEW "get_seed" nat ; IF_NONE { DIG 3 ; FAILWITH } { DIG 4 ; DROP ; PUSH int 6 ; SWAP ; EDIV ; IF_NONE { PUSH string "MOD by 0" ; FAILWITH } {} ; CDR ; PUSH nat 1 ; LSL } ; DIG 4 ; DUP 5 ; CAR ; CDR ; CDR ; CDR ; SENDER ; PUSH mutez 0 ; DUP 3 ; COMPARE ; GT ; IF { DIG 2 ; SWAP ; CONTRACT unit ; IF_NONE { PUSH string "Destination not found" ; FAILWITH } {} ; DIG 2 ; UNIT ; TRANSFER_TOKENS ; CONS } { DROP 2 } ; PUSH nat 0 ; DUP 4 ; GET 7 ; DIG 3 ; AND ; COMPARE ; GT ; IF { SWAP ; DUP ; DUG 2 ; CAR ; DIG 2 ; PUSH nat 1 ; UPDATE 5 ; PAIR } { SWAP ; DUP ; DUG 2 ; GET 11 ; IF_NONE { PUSH string "option is None" ; FAILWITH } {} ; DIG 2 ; PUSH nat 2 ; UPDATE 5 ; PAIR } ; DUP ; CAR ; DUP 5 ; CDR ; CDR ; CAR ; CDR ; PUSH nat 1000 ; DUP 3 ; GET 3 ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; MUL ; DIG 3 ; SWAP ; DUP ; DUG 2 ; DUP 4 ; GET 3 ; SUB_MUTEZ ; IF_NONE { PUSH string "option is None" ; FAILWITH } {} ; DIG 4 ; CDR ; PUSH mutez 0 ; DUP 3 ; COMPARE ; GT ; IF { DIG 2 ; SWAP ; CONTRACT unit ; IF_NONE { PUSH string "Destination not found" ; FAILWITH } {} ; DIG 2 ; UNIT ; TRANSFER_TOKENS ; CONS } { DROP 2 } ; DUP 5 ; CAR ; CDR ; CDR ; CDR ; DIG 2 ; SUB_MUTEZ ; IF_NONE { PUSH string "option is None" ; FAILWITH } {} ; DUP 5 ; CAR ; CAR ; CDR ; CDR ; PUSH mutez 0 ; DUP 3 ; COMPARE ; GT ; IF { DIG 2 ; SWAP ; CONTRACT unit ; IF_NONE { PUSH string "Destination not found" ; FAILWITH } {} ; DIG 2 ; UNIT ; TRANSFER_TOKENS ; CONS } { DROP 2 } ; DUP 4 ; CDR ; DUP 5 ; CAR ; CDR ; CDR ; DUP 6 ; CAR ; CDR ; CAR ; CDR ; DIG 4 ; DIG 5 ; SWAP ; SOME ; SWAP ; UPDATE ; DUP 5 ; CAR ; CDR ; CAR ; CAR ; PAIR ; PAIR ; DIG 3 ; CAR ; CAR ; PAIR ; PAIR ; SWAP ; PAIR } { DIG 3 ; DIG 5 ; DROP 2 ; DUG 2 ; DUP ; DUG 3 ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF { DROP } { 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 } } } } { DIG 2 ; DIG 4 ; DIG 5 ; DIG 7 ; DIG 8 ; DROP 5 ; IF_LEFT { IF_LEFT { DUG 2 ; DUP ; DUG 3 ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF { DROP } { 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 } { DUG 2 ; DUP ; DUG 3 ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; SWAP ; DUP ; DUG 2 ; CDR ; SWAP ; DUP ; DUG 2 ; CAR ; DUP 4 ; CAR ; CDR ; CDR ; CAR ; PAIR ; DUP 4 ; CAR ; CDR ; CAR ; PAIR ; DIG 3 ; CAR ; CAR ; PAIR ; PAIR ; DUP ; CDR ; CDR ; SWAP ; DUP ; DUG 2 ; CDR ; CAR ; CDR ; DUP 3 ; CDR ; CAR ; CAR ; CDR ; DUP 5 ; GET 3 ; PAIR ; PAIR ; PAIR ; SWAP ; CAR ; PAIR ; DUP ; CDR ; CDR ; SWAP ; DUP ; DUG 2 ; CDR ; CAR ; CDR ; DUP 4 ; GET 5 ; DUP 4 ; CDR ; CAR ; CAR ; CAR ; 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 } } { IF_LEFT { DUG 2 ; DUP ; DUG 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 } { DUG 2 ; DUP ; DUG 3 ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF { DROP } { 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 } } } }