x
78
parameter (or (contract %get_price nat) (or (contract %internal_get_price nat) (nat %set_tzbtc_sirs_price)));storage (pair (pair (address %generic_oracle_address) (string %generic_oracle_symbol)) (pair (address %tzbtc_sirs_oracle_address) (nat %tzbtc_sirs_price)));code { UNPAIR ; IF_LEFT { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; NIL operation ; DUP 3 ; GET 3 ; CONTRACT %get_price (contract nat) ; IF_NONE { PUSH int 165 ; FAILWITH } {} ; PUSH mutez 0 ; SELF %set_tzbtc_sirs_price ; TRANSFER_TOKENS ; CONS ; SELF %internal_get_price ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } { IF_LEFT { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SELF_ADDRESS ; SENDER ; COMPARE ; EQ ; IF {} { PUSH int 400 ; FAILWITH } ; SWAP ; DUP ; CAR ; CAR ; SWAP ; DUP ; DUG 3 ; CAR ; CDR ; VIEW "get_price" nat ; IF_NONE { PUSH int 502 ; FAILWITH } {} ; PUSH nat 1000000 ; DUP 4 ; GET 4 ; MUL ; EDIV ; IF_NONE { PUSH int 191 ; FAILWITH } { CAR } ; NIL operation ; DIG 2 ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 3 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH int 504 ; FAILWITH } ; UPDATE 4 ; NIL operation } } ; NIL operation ; SWAP ; ITER { CONS } ; PAIR }