x
163
{ parameter (or (or (address %propose_administrator) (address %remove_administrator)) (or (or %remove_price_fetching_data (address %fa1) (or (pair %fa2 (address %address) (nat %token_id)) (unit %tez))) (or (unit %set_administrator) (pair %update_price_fetching_data (or %key (address %fa1) (or (pair %fa2 (address %address) (nat %token_id)) (unit %tez))) (lambda %value unit (pair nat nat)))))) ; storage (pair (big_map %administrators address nat) (big_map %price_fetching_lambdas (or (address %fa1) (or (pair %fa2 (address %address) (nat %token_id)) (unit %tez))) (lambda unit (pair nat nat)))) ; code { LAMBDA (pair unit (pair (big_map address nat) (big_map (or address (or (pair address nat) unit)) (lambda unit (pair nat nat))))) (pair unit (pair (big_map address nat) (big_map (or address (or (pair address nat) unit)) (lambda unit (pair nat nat))))) { CDR ; PUSH nat 1 ; DUP 2 ; CAR ; SENDER ; GET ; IF_NONE { PUSH int 21 ; FAILWITH } {} ; COMPARE ; EQ ; IF {} { PUSH int 401 ; FAILWITH } ; UNIT ; PAIR } ; SWAP ; UNPAIR ; IF_LEFT { IF_LEFT { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUP ; CAR ; PUSH (option nat) (Some 0) ; DIG 3 ; UPDATE ; UPDATE 1 } { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUP ; CAR ; NONE nat ; DIG 3 ; UPDATE ; UPDATE 1 } } { IF_LEFT { DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; SWAP ; DUP 2 ; CDR ; DUP 2 ; MEM ; IF {} { PUSH string "Invalid key" ; FAILWITH } ; SWAP ; DUP ; CDR ; NONE (lambda unit (pair nat nat)) ; DIG 3 ; UPDATE ; UPDATE 2 } { IF_LEFT { DROP ; SWAP ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; PUSH nat 0 ; DUP 2 ; CAR ; SENDER ; GET ; IF_NONE { PUSH int 46 ; FAILWITH } {} ; COMPARE ; EQ ; IF {} { PUSH int 405 ; FAILWITH } ; DUP ; CAR ; PUSH (option nat) (Some 1) ; SENDER ; UPDATE ; UPDATE 1 } { DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUP ; CDR ; DUP 3 ; CDR ; SOME ; DIG 3 ; CAR ; UPDATE ; UPDATE 2 } } } ; NIL operation ; PAIR } ; view "get_token_price" (or (address %fa1) (or (pair %fa2 (address %address) (nat %token_id)) (unit %tez))) (pair nat nat) { UNPAIR ; DUP 2 ; CDR ; DUP 2 ; MEM ; IF {} { PUSH string "Invalid key" ; FAILWITH } ; SWAP ; CDR ; SWAP ; GET ; IF_NONE { PUSH int 50 ; FAILWITH } {} ; UNIT ; EXEC } }