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 } } }