x
76
{ parameter (nat %set_price) ; storage (pair (pair (nat %last_epoch) (address %oracle)) (pair (nat %price) (nat %validity_window_in_epochs))) ; code { UNPAIR ; PUSH nat 900 ; PUSH timestamp "1970-01-01T00:00:00Z" ; NOW ; SUB ; ISNAT ; IF_NONE { PUSH int 35 ; FAILWITH } {} ; EDIV ; IF_NONE { PUSH int 35 ; FAILWITH } { CAR } ; DUP 3 ; CAR ; CAR ; COMPARE ; LT ; IF {} { PUSH int 906 ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH int 504 ; FAILWITH } ; SWAP ; PUSH nat 1 ; DIG 2 ; MUL ; UPDATE 3 ; UNPAIR ; CDR ; PUSH nat 900 ; PUSH timestamp "1970-01-01T00:00:00Z" ; NOW ; SUB ; ISNAT ; IF_NONE { PUSH int 45 ; FAILWITH } {} ; EDIV ; IF_NONE { PUSH int 45 ; FAILWITH } { CAR } ; PAIR ; PAIR ; NIL operation ; PAIR } ; view "get_price" unit nat { CDR ; DUP ; GET 4 ; PUSH nat 900 ; PUSH timestamp "1970-01-01T00:00:00Z" ; NOW ; SUB ; ISNAT ; IF_NONE { PUSH int 51 ; FAILWITH } {} ; EDIV ; IF_NONE { PUSH int 51 ; FAILWITH } { CAR } ; SUB ; ISNAT ; IF_NONE { PUSH int 55 ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; COMPARE ; GT ; IF {} { PUSH int 900 ; FAILWITH } ; DUP ; GET 3 ; PUSH nat 0 ; COMPARE ; LT ; IF {} { PUSH int 905 ; FAILWITH } ; GET 3 } }