x
91
{ parameter (or (or (address %addAuthorizedCaller) (pair %redeem (address %contractAddress) (nat %tokenId))) (or (address %removeAuthorizedCaller) (list %setRedemptions (pair (address %address) (pair (bool %state) (nat %tokenId)))))) ; storage (pair (address %administrator) (pair (big_map %authorizedCallers address bool) (big_map %redemptions (pair address nat) bool))) ; code { UNPAIR ; IF_LEFT { IF_LEFT { SOURCE ; DUP 3 ; CAR ; COMPARE ; EQ ; IF {} { PUSH string "NOT_ADMIN" ; FAILWITH } ; SWAP ; DUP ; GET 3 ; PUSH (option bool) (Some True) ; DIG 3 ; UPDATE ; UPDATE 3 } { SWAP ; DUP ; DUG 2 ; GET 3 ; SENDER ; GET ; IF_NONE { PUSH int 25 ; FAILWITH } {} ; IF {} { PUSH string "NOT_AUTHORIZED_CALLER" ; FAILWITH } ; SWAP ; DUP ; GET 4 ; PUSH (option bool) (Some True) ; DIG 3 ; UPDATE ; UPDATE 4 } } { IF_LEFT { SOURCE ; DUP 3 ; CAR ; COMPARE ; EQ ; IF {} { PUSH string "NOT_ADMIN" ; FAILWITH } ; SWAP ; DUP ; GET 3 ; PUSH (option bool) (Some False) ; DIG 3 ; UPDATE ; UPDATE 3 } { SOURCE ; DUP 3 ; CAR ; COMPARE ; EQ ; IF {} { PUSH string "NOT_ADMIN" ; FAILWITH } ; DUP ; ITER { DIG 2 ; DUP ; GET 4 ; DUP 3 ; GET 3 ; SOME ; DIG 3 ; DUP ; GET 4 ; SWAP ; CAR ; PAIR ; UPDATE ; UPDATE 4 ; SWAP } ; DROP } } ; NIL operation ; PAIR } ; view "isRedeemed" (pair address nat) bool { UNPAIR ; PUSH bool True ; DUP 3 ; GET 4 ; DUP 3 ; MEM ; COMPARE ; EQ ; IF { SWAP ; GET 4 ; SWAP ; GET ; IF_NONE { PUSH int 56 ; FAILWITH } {} } { DROP 2 ; PUSH bool False } } }