x
72
parameter (or (contract %get_price nat) (or (contract %internal_get_price nat) (pair %set_reserves nat nat)));storage (pair (address %dex_contract) (nat %price));code { CAST (pair (or (contract nat) (or (contract nat) (pair nat nat))) (pair address nat)) ; LAMBDA (pair unit (pair address nat)) (pair (list operation) (pair unit (pair address nat))) { NIL operation ; SWAP ; CDR ; SELF_ADDRESS ; SENDER ; COMPARE ; EQ ; IF {} { PUSH int 400 ; FAILWITH } ; UNIT ; DIG 2 ; PAIR 3 } ; SWAP ; UNPAIR ; IF_LEFT { DIG 2 ; DROP ; NIL operation ; DUP 3 ; CAR ; CONTRACT %get_reserves (contract (pair nat nat)) ; IF_NONE { PUSH int 50 ; FAILWITH } {} ; PUSH mutez 0 ; SELF_ADDRESS ; CONTRACT %set_reserves (pair nat nat) ; IF_NONE { PUSH int 52 ; FAILWITH } {} ; TRANSFER_TOKENS ; CONS ; SELF %internal_get_price ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } { IF_LEFT { DUG 2 ; UNIT ; PAIR ; EXEC ; DUP ; GET 4 ; DUG 2 ; CAR ; SWAP ; PUSH mutez 0 ; DUP 4 ; CDR ; TRANSFER_TOKENS ; CONS } { DIG 2 ; DROP ; DUP ; DUG 2 ; CDR ; PUSH nat 1000000000000 ; DIG 3 ; CAR ; MUL ; EDIV ; IF_NONE { PUSH int 138 ; FAILWITH } { CAR } ; UPDATE 2 ; NIL operation } } ; NIL operation ; SWAP ; ITER { CONS } ; PAIR }