x
106
{ parameter (or (or (address %propose_administrator) (address %remove_administrator)) (or (unit %set_administrator) (address %update_oracle_address))) ; storage (pair (big_map %administrators address nat) (pair (big_map %metadata string bytes) (address %oracle))) ; code { LAMBDA (pair unit (pair (big_map address nat) (pair (big_map string bytes) address))) (pair unit (pair (big_map address nat) (pair (big_map string bytes) address))) { CDR ; DUP ; CAR ; PUSH nat 1 ; SWAP ; 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 { DROP ; SWAP ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DUP ; CAR ; PUSH nat 0 ; SWAP ; 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 ; SWAP ; UPDATE 4 } } ; NIL operation ; PAIR } ; view "get_price" string nat { UNPAIR ; SWAP ; GET 4 ; SWAP ; VIEW "get_price" nat ; IF_NONE { PUSH string "Invalid view" ; FAILWITH } {} } ; view "get_price_with_timestamp" string (pair (nat %price) (timestamp %last_update_timestamp)) { UNPAIR ; SWAP ; GET 4 ; SWAP ; VIEW "get_price_with_timestamp" (pair (nat %price) (timestamp %last_update_timestamp)) ; IF_NONE { PUSH string "Invalid view" ; FAILWITH } {} } }