x
268
parameter (or (or (pair %createBox (mutez %price) (list %tokens (pair (nat %amount) (pair (address %cAddress) (nat %tokenId))))) (unit %getFunds)) (or (nat %openBox) (or (unit %sendTip) (address %update_admin))));storage (pair (pair (address %admin) (pair (nat %boxCounter) (big_map %boxes nat (pair (address %owner) (pair (mutez %price) (list %tokens (pair (nat %amount) (pair (address %cAddress) (nat %tokenId))))))))) (pair (nat %fee) (pair (nat %supporterCounter) (big_map %supporters nat (pair (mutez %amount) (address %supporter))))));code { UNPAIR ; IF_LEFT { IF_LEFT { DUP ; CDR ; NIL operation ; SWAP ; ITER { DUP ; DUG 2 ; GET 3 ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH int 80 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 5 ; DUP ; CAR ; SWAP ; GET 4 ; SELF_ADDRESS ; PAIR 3 ; CONS ; SENDER ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } ; SWAP ; UNPAIR ; SENDER ; PAIR 3 ; DUP 3 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; DIG 4 ; SOME ; DIG 6 ; CAR ; GET 3 ; UPDATE ; SWAP ; PUSH nat 1 ; ADD ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP } { DROP ; DUP ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "WrongCondition: sp.sender == self.data.admin" ; FAILWITH } ; DUP ; CAR ; CAR ; CONTRACT unit ; IF_NONE { PUSH int 113 ; FAILWITH } {} ; NIL operation ; SWAP ; BALANCE ; UNIT ; TRANSFER_TOKENS ; CONS } } { IF_LEFT { DUP ; DUP 3 ; CAR ; GET 3 ; COMPARE ; GT ; IF {} { PUSH string "WrongCondition: self.data.boxCounter > params" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CAR ; GET 4 ; SWAP ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 100 ; FAILWITH } {} ; GET 3 ; AMOUNT ; COMPARE ; GE ; IF {} { PUSH string "WrongCondition: sp.amount >= self.data.boxes[params].price" ; FAILWITH } ; NIL operation ; DUP 3 ; CAR ; GET 4 ; DUP 3 ; GET ; IF_NONE { PUSH int 102 ; FAILWITH } {} ; GET 4 ; ITER { DUP ; DUG 2 ; GET 3 ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH int 80 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 5 ; DUP ; CAR ; SWAP ; GET 4 ; SENDER ; PAIR 3 ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } ; DUP 3 ; CAR ; GET 4 ; DUP 3 ; GET ; IF_NONE { PUSH int 106 ; FAILWITH } {} ; CAR ; CONTRACT unit ; IF_NONE { PUSH int 106 ; FAILWITH } {} ; PUSH nat 100 ; DIG 4 ; DUP ; GET 3 ; SWAP ; DUP ; DUG 6 ; CAR ; GET 4 ; DUP 6 ; GET ; IF_NONE { PUSH int 106 ; FAILWITH } {} ; GET 3 ; MUL ; EDIV ; IF_NONE { PUSH int 106 ; FAILWITH } {} ; CAR ; DUP 5 ; CAR ; GET 4 ; DUP 5 ; GET ; IF_NONE { PUSH int 106 ; FAILWITH } {} ; GET 3 ; SUB_MUTEZ ; IF_NONE { PUSH int 106 ; FAILWITH } {} ; UNIT ; TRANSFER_TOKENS ; CONS ; DIG 2 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; NONE (pair address (pair mutez (list (pair nat (pair address nat))))) ; DIG 6 ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP } { IF_LEFT { DROP ; PUSH mutez 1 ; PUSH nat 100000 ; MUL ; AMOUNT ; COMPARE ; GE ; IF {} { PUSH string "WrongCondition: sp.amount >= sp.mul(sp.set_type_expr(100000, sp.TNat), sp.mutez(1))" ; FAILWITH } ; SENDER ; AMOUNT ; PAIR ; SWAP ; DUP ; DUG 2 ; DUP ; GET 6 ; DIG 2 ; SOME ; DIG 3 ; GET 5 ; UPDATE ; UPDATE 6 ; DUP ; GET 5 ; PUSH nat 1 ; ADD ; UPDATE 5 } { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "WrongCondition: sp.sender == self.data.admin" ; FAILWITH } ; SWAP ; UNPAIR ; CDR ; DIG 2 ; PAIR ; PAIR } ; NIL operation } } ; NIL operation ; SWAP ; ITER { CONS } ; PAIR }