x
154
parameter (or (or (pair %add_fa2_token (string %ipfs_hash) (pair (map %metadata string string) (address %nft_contract))) (string %remove_fa2_token)) (or (address %set_administrator) (address %set_dex_contract)));storage (pair (address %administrator) (pair (big_map %ipfs_registry string (pair (map %metadata string string) (address %nft_contract))) (address %nft_dex_contract)));code { DUP ; CDR ; SWAP ; CAR ; IF_LEFT { IF_LEFT { SWAP ; DUP ; DUG 2 ; CAR ; SENDER ; COMPARE ; EQ ; IF { PUSH bool True } { SWAP ; DUP ; DUG 2 ; CDR ; CDR ; SENDER ; COMPARE ; EQ } ; IF {} { PUSH string "admin or dex_contract can only add_fa2_token " ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CDR ; CAR ; SWAP ; DUP ; DUG 2 ; CAR ; MEM ; IF { PUSH string "WrongCondition: ~ (self.data.ipfs_registry.contains(params.ipfs_hash))" ; FAILWITH } {} ; SWAP ; DUP ; CAR ; SWAP ; CDR ; DUP ; CDR ; SWAP ; CAR ; DIG 3 ; DUP ; CDR ; CDR ; SWAP ; DUP ; DUG 5 ; CDR ; CAR ; PAIR %metadata %nft_contract ; SOME ; DIG 4 ; CAR ; UPDATE ; PAIR ; SWAP ; PAIR } { SWAP ; DUP ; DUG 2 ; CAR ; SENDER ; COMPARE ; EQ ; IF { PUSH bool True } { SWAP ; DUP ; DUG 2 ; CDR ; CDR ; SENDER ; COMPARE ; EQ } ; IF {} { PUSH string "admin or dex_contract can only delete fa2_token " ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CDR ; CAR ; SWAP ; DUP ; DUG 2 ; MEM ; IF {} { PUSH string "ipfs_hash does not exist in NFT registry" ; FAILWITH } ; SWAP ; DUP ; CAR ; SWAP ; CDR ; DUP ; CDR ; SWAP ; CAR ; NONE (pair (map %metadata string string) (address %nft_contract)) ; DIG 4 ; UPDATE ; PAIR ; SWAP ; PAIR } } { IF_LEFT { SWAP ; DUP ; DUG 2 ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "WrongCondition: sp.sender == self.data.administrator" ; FAILWITH } ; SWAP ; CDR ; SWAP ; PAIR } { SWAP ; DUP ; DUG 2 ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "WrongCondition: sp.sender == self.data.administrator" ; FAILWITH } ; SWAP ; DUP ; CAR ; SWAP ; CDR ; CAR ; DIG 2 ; SWAP ; PAIR ; SWAP ; PAIR } } ; NIL operation ; PAIR }