x
423
{ parameter (or
(or (address %add_valid_source)
(pair %fulfill (bytes %script) (bytes %payload)))
(or (address %remove_valid_source)
(or (address %set_administrator) (bytes %set_valid_script)))) ;
storage (pair
(pair
(pair (address %administrator)
(pair (nat %last_epoch) (big_map %prices string nat)))
(pair (nat %response_threshold)
(pair (nat %valid_btc_price) (nat %valid_defi_price))))
(pair
(pair (nat %valid_epoch)
(pair (set %valid_respondants address) (bytes %valid_script)))
(pair (set %valid_sources address)
(pair (nat %valid_xtz_price) (nat %validity_window_in_epochs))))) ;
code { LAMBDA
(pair nat nat)
nat
{ UNPAIR ;
PUSH nat 0 ;
DUP 3 ;
COMPARE ;
GT ;
IF {} { PUSH int 501 ; FAILWITH } ;
DUP ;
PUSH nat 0 ;
COMPARE ;
EQ ;
IF
{ PUSH bool True }
{ SWAP ; DUP ; DUG 2 ; SWAP ; DUP ; DUG 2 ; SUB ; ABS ; PUSH nat 4 ; DUP 3 ; LSR ; COMPARE ; GT } ;
IF
{ DROP }
{ PUSH int 0 ;
DUG 2 ;
DUP ;
DUG 3 ;
SUB ;
COMPARE ;
GT ;
IF
{ DUP ;
PUSH nat 4 ;
SWAP ;
LSR ;
SWAP ;
SUB ;
ISNAT ;
IF_NONE { PUSH int 77 ; FAILWITH } {} }
{ DUP ; PUSH nat 4 ; SWAP ; LSR ; ADD } } } ;
SWAP ;
UNPAIR ;
IF_LEFT
{ IF_LEFT
{ DIG 2 ;
DROP ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH int 401 ; FAILWITH } ;
SWAP ;
DUP ;
GET 5 ;
PUSH bool True ;
DIG 3 ;
UPDATE ;
UPDATE 5 }
{ DUP ;
CAR ;
DUP 3 ;
GET 3 ;
GET 4 ;
COMPARE ;
EQ ;
IF {} { PUSH int 430 ; FAILWITH } ;
SWAP ;
DUP ;
DUG 2 ;
GET 5 ;
SOURCE ;
MEM ;
IF {} { PUSH int 431 ; FAILWITH } ;
DUP ;
CDR ;
UNPACK (pair nat (pair nat (pair nat nat))) ;
IF_NONE { PUSH int 94 ; FAILWITH } {} ;
DUP ;
CAR ;
PUSH nat 900 ;
SWAP ;
EDIV ;
IF_NONE { PUSH int 96 ; FAILWITH } { CAR } ;
DUP 4 ;
GET 3 ;
CAR ;
SWAP ;
DUP ;
DUG 2 ;
COMPARE ;
NEQ ;
IF
{ DIG 3 ;
UNPAIR ;
SWAP ;
UNPAIR ;
GET 4 ;
EMPTY_SET address ;
PAIR ;
DUP 4 ;
PAIR ;
PAIR ;
SWAP ;
UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
CAR ;
DUP 6 ;
GET 3 ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
DUP 3 ;
GET 5 ;
UPDATE 7 ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
CDR ;
DUP 6 ;
GET 6 ;
PAIR ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
DUG 3 }
{} ;
DIG 3 ;
DUP ;
CAR ;
GET 3 ;
SWAP ;
DUP ;
DUG 5 ;
GET 3 ;
GET 3 ;
SIZE ;
COMPARE ;
LT ;
IF
{ DUP 4 ;
CAR ;
GET 6 ;
DUP 3 ;
GET 3 ;
SUB ;
ABS ;
PUSH nat 12 ;
DUP 6 ;
CAR ;
GET 6 ;
LSR ;
COMPARE ;
GE ;
IF
{ DUP 4 ; GET 7 ; DUP 3 ; GET 5 ; SUB ; ABS ; PUSH nat 12 ; DUP 6 ; GET 7 ; LSR ; COMPARE ; GE }
{ PUSH bool False } ;
IF
{ DUP 4 ;
CAR ;
GET 5 ;
DUP 3 ;
GET 6 ;
SUB ;
ABS ;
PUSH nat 12 ;
DUP 6 ;
CAR ;
GET 5 ;
LSR ;
COMPARE ;
GE }
{ PUSH bool False } ;
IF
{ DIG 3 ;
UNPAIR ;
SWAP ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
PUSH bool True ;
SOURCE ;
UPDATE ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
SWAP ;
PAIR ;
DUP ;
CAR ;
GET 3 ;
SWAP ;
DUP ;
DUG 5 ;
GET 3 ;
GET 3 ;
SIZE ;
COMPARE ;
GE ;
IF
{ SWAP ;
DROP ;
SWAP ;
DROP ;
SWAP ;
DUP ;
DUG 2 ;
UNPAIR ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
DUP 8 ;
DIG 7 ;
DUP ;
CAR ;
GET 6 ;
SWAP ;
CAR ;
CAR ;
GET 4 ;
PUSH string "DEFI" ;
GET ;
IF_NONE { PUSH nat 0 } {} ;
PAIR ;
EXEC ;
SOME ;
PUSH string "DEFI" ;
UPDATE ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
PAIR ;
DUP ;
DUG 2 ;
UNPAIR ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
DUP 8 ;
DIG 7 ;
DUP ;
GET 7 ;
SWAP ;
CAR ;
CAR ;
GET 4 ;
PUSH string "XTZ" ;
GET ;
IF_NONE { PUSH nat 0 } {} ;
PAIR ;
EXEC ;
SOME ;
PUSH string "XTZ" ;
UPDATE ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
PAIR ;
DUP ;
DUG 2 ;
UNPAIR ;
UNPAIR ;
UNPAIR ;
SWAP ;
CDR ;
DIG 6 ;
DIG 6 ;
DUP ;
CAR ;
GET 5 ;
SWAP ;
CAR ;
CAR ;
GET 4 ;
PUSH string "BTC" ;
GET ;
IF_NONE { PUSH nat 0 } {} ;
PAIR ;
EXEC ;
SOME ;
PUSH string "BTC" ;
UPDATE ;
DIG 4 ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
PAIR }
{ DROP 3 ; SWAP ; DROP } }
{ DROP 3 ; SWAP ; DROP } }
{ DROP 3 ; SWAP ; DROP } } }
{ DIG 2 ;
DROP ;
IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH int 401 ; FAILWITH } ;
SWAP ;
DUP ;
GET 5 ;
PUSH bool False ;
DIG 3 ;
UPDATE ;
UPDATE 5 }
{ IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH int 401 ; FAILWITH } ;
SWAP ;
UNPAIR ;
UNPAIR ;
CDR ;
DIG 3 ;
PAIR ;
PAIR ;
PAIR }
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH int 401 ; FAILWITH } ;
SWAP ;
UNPAIR ;
SWAP ;
UNPAIR ;
UNPAIR ;
SWAP ;
CAR ;
DIG 4 ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
SWAP ;
PAIR } } } ;
NIL operation ;
PAIR } ;
view "get_price" string nat
{ UNPAIR ;
SWAP ;
DUP ;
DUG 2 ;
GET 8 ;
PUSH nat 900 ;
PUSH timestamp "1970-01-01T00:00:00Z" ;
NOW ;
SUB ;
ISNAT ;
IF_NONE { PUSH int 122 ; FAILWITH } {} ;
EDIV ;
IF_NONE { PUSH int 122 ; FAILWITH } { CAR } ;
SUB ;
ISNAT ;
IF_NONE { PUSH int 123 ; FAILWITH } {} ;
DUP 3 ;
CAR ;
CAR ;
GET 3 ;
COMPARE ;
GT ;
IF {} { PUSH int 900 ; FAILWITH } ;
SWAP ;
CAR ;
CAR ;
GET 4 ;
SWAP ;
GET ;
IF_NONE { PUSH int 124 ; FAILWITH } {} } }