x
804
parameter (or
(or
(or (pair %cfmm_price nat nat)
(pair %create (nat %id)
(pair (option %delegate key_hash)
(or %depositors (unit %any)
(set %whitelist address)))))
(or (contract %get_target nat)
(pair %liquidate (pair %handle (nat %id) (address %owner))
(pair (nat %quantity) (contract %to unit)))))
(or
(or (pair %mint_or_burn (nat %id) (int %quantity))
(pair %register_deposit (pair %handle (nat %id) (address %owner))
(mutez %amount)))
(or
(pair %set_addresses (address %cfmm_address)
(address %ctez_fa12_address))
(pair %withdraw (nat %id) (pair (mutez %amount) (contract %to unit))))));
storage (pair
(pair (pair (address %cfmm_address) (address %ctez_fa12_address))
(pair (int %drift) (timestamp %last_drift_update)))
(pair
(pair (big_map %metadata string bytes)
(big_map %ovens (pair (nat %id) (address %owner))
(pair
(pair (address %address) (nat %ctez_outstanding))
(mutez %tez_balance))))
(nat %target)));
code { LAMBDA
(pair (pair nat address)
(pair (pair (pair address address) (pair int timestamp))
(pair
(pair (big_map string bytes)
(big_map (pair nat address) (pair (pair address nat) mutez)))
nat)))
(pair (pair address nat) mutez)
{ UNPAIR ; SWAP ; CDR ; CAR ; CDR ; SWAP ; GET ; IF_NONE { PUSH nat 4 ; FAILWITH } {} } ;
LAMBDA
(pair (pair (pair address nat) mutez) nat)
bool
{ UNPAIR ;
PUSH mutez 1 ;
PUSH nat 44 ;
DIG 3 ;
DUP 4 ;
CAR ;
CDR ;
MUL ;
LSR ;
MUL ;
SWAP ;
CDR ;
PUSH nat 15 ;
MUL ;
COMPARE ;
LT } ;
LAMBDA
address
(contract (pair mutez (contract unit)))
{ CONTRACT %oven_withdraw (pair mutez (contract unit)) ;
IF_NONE { PUSH nat 5 ; FAILWITH } {} } ;
LAMBDA
address
(contract (pair int address))
{ CONTRACT %mintOrBurn (pair int address) ;
IF_NONE { PUSH nat 9 ; FAILWITH } {} } ;
DIG 4 ;
UNPAIR ;
IF_LEFT
{ IF_LEFT
{ DIG 2 ;
DIG 3 ;
DIG 4 ;
DIG 5 ;
DROP 4 ;
IF_LEFT
{ UNPAIR ;
DIG 2 ;
DUP ;
CAR ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
NEQ ;
IF
{ DROP 3 ; PUSH nat 13 ; FAILWITH }
{ DUP ;
CAR ;
CDR ;
CDR ;
NOW ;
SUB ;
ABS ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
PUSH nat 48 ;
DUP 3 ;
DUP 5 ;
CAR ;
CDR ;
CAR ;
ABS ;
DUP 4 ;
MUL ;
MUL ;
LSR ;
PUSH int 0 ;
DUP 5 ;
CAR ;
CDR ;
CAR ;
COMPARE ;
LT ;
IF { SWAP ; SUB ; ABS } { ADD } ;
DIG 4 ;
PUSH nat 48 ;
DIG 5 ;
LSL ;
EDIV ;
IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
CAR ;
DUP ;
DUP 3 ;
SUB ;
PUSH nat 10 ;
SWAP ;
DUP ;
DUP ;
DUG 3 ;
MUL ;
ABS ;
LSL ;
DIG 2 ;
DUP ;
MUL ;
DUP ;
DUP 3 ;
COMPARE ;
GT ;
IF
{ DROP 2 ; DIG 2 }
{ DIG 4 ;
DIG 2 ;
MUL ;
EDIV ;
IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
CAR } ;
PUSH int 0 ;
DIG 2 ;
COMPARE ;
GT ;
IF
{ DUP 3 ; CAR ; CDR ; CAR ; ADD }
{ DUP 3 ; CAR ; CDR ; CAR ; SUB } ;
DUP 3 ;
CDR ;
DUP 4 ;
CAR ;
CDR ;
CDR ;
DIG 2 ;
PAIR ;
DIG 3 ;
CAR ;
CAR ;
PAIR ;
PAIR ;
DUP ;
CDR ;
NOW ;
DUP 3 ;
CAR ;
CDR ;
CAR ;
PAIR ;
DIG 2 ;
CAR ;
CAR ;
PAIR ;
PAIR ;
DUP ;
DUG 2 ;
CDR ;
CAR ;
PAIR ;
SWAP ;
CAR ;
PAIR ;
NIL operation ;
PAIR } }
{ DUP ;
CAR ;
SENDER ;
SWAP ;
PAIR ;
DUP 3 ;
CDR ;
CAR ;
CDR ;
SWAP ;
DUP ;
DUG 2 ;
MEM ;
IF
{ DROP 3 ; PUSH nat 0 ; FAILWITH }
{ SWAP ;
DUP ;
DUG 2 ;
GET 3 ;
AMOUNT ;
DUP 3 ;
DIG 4 ;
GET 4 ;
SELF_ADDRESS ;
PAIR ;
PAIR ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
UNPAIR 3 ;
CREATE_CONTRACT { parameter (or
(or
(option %oven_delegate key_hash)
(unit %default))
(or
(or %oven_edit_depositor
(pair %allow_account bool
address)
(bool %allow_any))
(pair %oven_withdraw mutez
(contract unit)))) ;
storage (pair
(pair (address %admin)
(or %depositors (unit %any)
(set %whitelist address)))
(pair %handle (nat %id)
(address %owner))) ;
code { UNPAIR ;
IF_LEFT
{ IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
SENDER ;
COMPARE ;
NEQ ;
IF
{ DROP 2 ;
PUSH nat 1002 ;
FAILWITH }
{ SWAP ;
NIL operation ;
DIG 2 ;
SET_DELEGATE ;
CONS ;
PAIR } }
{ DROP ;
DUP ;
CAR ;
CDR ;
IF_LEFT
{ DROP ; PUSH bool True }
{ SENDER ; MEM } ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
SENDER ;
COMPARE ;
EQ ;
OR ;
IF
{ DUP ;
CAR ;
CAR ;
CONTRACT %register_deposit (pair
(pair %handle
(nat %id)
(address %owner))
(mutez %amount)) ;
IF_NONE
{ PUSH nat 1003 ; FAILWITH }
{} ;
SWAP ;
DUP ;
DUG 2 ;
NIL operation ;
DIG 2 ;
PUSH mutez 0 ;
DIG 4 ;
CDR ;
AMOUNT ;
SWAP ;
PAIR ;
TRANSFER_TOKENS ;
CONS ;
PAIR }
{ DROP ; PUSH nat 1004 ; FAILWITH } } }
{ IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
SENDER ;
COMPARE ;
NEQ ;
IF
{ DROP 2 ;
PUSH nat 1006 ;
FAILWITH }
{ IF_LEFT
{ UNPAIR ;
DUP 3 ;
CAR ;
CDR ;
IF_LEFT
{ DROP 3 ;
PUSH nat 1005 ;
FAILWITH }
{ SWAP ;
IF
{ SWAP ;
PUSH bool True ;
SWAP ;
UPDATE }
{ SWAP ;
PUSH bool False ;
SWAP ;
UPDATE } ;
RIGHT unit } }
{ IF
{ PUSH unit Unit ;
LEFT (set address) }
{ EMPTY_SET address ;
RIGHT unit } } ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
SWAP ;
DIG 2 ;
CAR ;
CAR ;
PAIR ;
PAIR ;
NIL operation ;
PAIR } }
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
NEQ ;
IF
{ DROP 2 ;
PUSH nat 1001 ;
FAILWITH }
{ SWAP ;
NIL operation ;
DUP 3 ;
CDR ;
DIG 3 ;
CAR ;
UNIT ;
TRANSFER_TOKENS ;
CONS ;
PAIR } } } } } ;
AMOUNT ;
PUSH nat 0 ;
DIG 3 ;
PAIR ;
PAIR ;
DUP 4 ;
CDR ;
CDR ;
DUP 5 ;
CDR ;
CAR ;
CDR ;
DIG 2 ;
SOME ;
DIG 4 ;
UPDATE ;
DUP 4 ;
CDR ;
CAR ;
CAR ;
PAIR ;
PAIR ;
DIG 2 ;
CAR ;
PAIR ;
NIL operation ;
DIG 2 ;
CONS ;
PAIR } } }
{ IF_LEFT
{ DIG 2 ;
DIG 3 ;
DIG 4 ;
DIG 5 ;
DROP 4 ;
SWAP ;
DUP ;
DUG 2 ;
NIL operation ;
DIG 2 ;
PUSH mutez 0 ;
DIG 4 ;
CDR ;
CDR ;
TRANSFER_TOKENS ;
CONS ;
PAIR }
{ DUP ;
CAR ;
DUP 3 ;
SWAP ;
PAIR ;
DIG 6 ;
SWAP ;
EXEC ;
DUP ;
DUP 4 ;
CDR ;
CDR ;
SWAP ;
PAIR ;
DIG 6 ;
SWAP ;
EXEC ;
IF
{ SWAP ;
DUP ;
DUG 2 ;
GET 3 ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
CDR ;
SUB ;
ISNAT ;
IF_NONE { PUSH nat 10 ; FAILWITH } {} ;
PUSH nat 31 ;
PUSH mutez 1 ;
PUSH nat 43 ;
DUP 7 ;
CDR ;
CDR ;
DUP 7 ;
GET 3 ;
MUL ;
LSR ;
MUL ;
EDIV ;
IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
CAR ;
DUP ;
DUP 4 ;
CDR ;
SUB ;
DIG 2 ;
DIG 3 ;
CAR ;
CAR ;
PAIR ;
PAIR ;
DUP 4 ;
CDR ;
CDR ;
DUP 5 ;
CDR ;
CAR ;
CDR ;
DUP 3 ;
SOME ;
DUP 6 ;
CAR ;
UPDATE ;
DUP 6 ;
CDR ;
CAR ;
CAR ;
PAIR ;
PAIR ;
DIG 4 ;
CAR ;
PAIR ;
SWAP ;
CAR ;
CAR ;
DIG 5 ;
SWAP ;
EXEC ;
PUSH mutez 0 ;
DUP 5 ;
GET 4 ;
DIG 4 ;
PAIR ;
TRANSFER_TOKENS ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
CDR ;
DIG 4 ;
SWAP ;
EXEC ;
PUSH mutez 0 ;
SENDER ;
DIG 5 ;
GET 3 ;
NEG ;
PAIR ;
TRANSFER_TOKENS ;
DIG 2 ;
NIL operation ;
DIG 3 ;
CONS ;
DIG 2 ;
CONS ;
PAIR }
{ DROP 5 ; PUSH nat 11 ; FAILWITH } } } }
{ IF_LEFT
{ DIG 3 ;
DROP ;
IF_LEFT
{ DUP ;
CAR ;
SENDER ;
SWAP ;
PAIR ;
DUP ;
DUP 4 ;
SWAP ;
PAIR ;
DIG 6 ;
SWAP ;
EXEC ;
DUP 3 ;
CDR ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
CDR ;
ADD ;
ISNAT ;
IF_NONE { PUSH nat 10 ; FAILWITH } {} ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
SWAP ;
DIG 2 ;
CAR ;
CAR ;
PAIR ;
PAIR ;
DUP 4 ;
CDR ;
CDR ;
DUP 5 ;
CDR ;
CAR ;
CDR ;
DUP 3 ;
SOME ;
DIG 4 ;
UPDATE ;
DUP 5 ;
CDR ;
CAR ;
CAR ;
PAIR ;
PAIR ;
DIG 3 ;
CAR ;
PAIR ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
SWAP ;
PAIR ;
DIG 4 ;
SWAP ;
EXEC ;
IF
{ DROP 3 ; PUSH nat 12 ; FAILWITH }
{ DUP ;
CAR ;
CAR ;
CDR ;
DIG 3 ;
SWAP ;
EXEC ;
SWAP ;
NIL operation ;
DIG 2 ;
PUSH mutez 0 ;
SENDER ;
DIG 5 ;
CDR ;
PAIR ;
TRANSFER_TOKENS ;
CONS ;
PAIR } }
{ DIG 2 ;
DIG 3 ;
DROP 2 ;
DUP ;
CAR ;
DUP 3 ;
SWAP ;
PAIR ;
DIG 3 ;
SWAP ;
EXEC ;
SENDER ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
COMPARE ;
NEQ ;
IF
{ DROP 3 ; PUSH nat 1 ; FAILWITH }
{ SWAP ;
DUP ;
DUG 2 ;
CDR ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
ADD ;
SWAP ;
CAR ;
PAIR ;
DUP 3 ;
CDR ;
CDR ;
DUP 4 ;
CDR ;
CAR ;
CDR ;
DIG 2 ;
SOME ;
DIG 3 ;
CAR ;
UPDATE ;
DUP 3 ;
CDR ;
CAR ;
CAR ;
PAIR ;
PAIR ;
SWAP ;
CAR ;
PAIR ;
NIL operation ;
PAIR } } }
{ DIG 2 ;
DROP ;
IF_LEFT
{ DIG 2 ;
DIG 3 ;
DIG 4 ;
DROP 3 ;
PUSH address "tz1Ke2h7sDdakHJQh8WX4Z372du1KChsksyU" ;
DUP 3 ;
CAR ;
CAR ;
CDR ;
COMPARE ;
NEQ ;
IF
{ DROP 2 ; PUSH nat 2 ; FAILWITH }
{ PUSH address "tz1Ke2h7sDdakHJQh8WX4Z372du1KChsksyU" ;
DUP 3 ;
CAR ;
CAR ;
CAR ;
COMPARE ;
NEQ ;
IF
{ DROP 2 ; PUSH nat 3 ; FAILWITH }
{ SWAP ;
DUP ;
DUG 2 ;
CDR ;
DUP 3 ;
CAR ;
CDR ;
DUP 3 ;
CDR ;
DIG 4 ;
CAR ;
CAR ;
CAR ;
PAIR ;
PAIR ;
PAIR ;
DUP ;
CDR ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
CDR ;
DIG 2 ;
CAR ;
CAR ;
CDR ;
DIG 3 ;
CAR ;
PAIR ;
PAIR ;
PAIR ;
NIL operation ;
PAIR } } }
{ DUP ;
CAR ;
SENDER ;
SWAP ;
PAIR ;
DUP ;
DUP 4 ;
SWAP ;
PAIR ;
DIG 6 ;
SWAP ;
EXEC ;
DUP ;
CAR ;
CAR ;
DIG 5 ;
SWAP ;
EXEC ;
DUP 4 ;
GET 3 ;
DUP 3 ;
CDR ;
SUB ;
DIG 2 ;
CAR ;
PAIR ;
DUP 5 ;
CDR ;
CDR ;
DUP 6 ;
CDR ;
CAR ;
CDR ;
DUP 3 ;
SOME ;
DIG 5 ;
UPDATE ;
DUP 6 ;
CDR ;
CAR ;
CAR ;
PAIR ;
PAIR ;
DIG 4 ;
CAR ;
PAIR ;
DUP ;
DUG 2 ;
CDR ;
CDR ;
SWAP ;
PAIR ;
DIG 4 ;
SWAP ;
EXEC ;
IF
{ DROP 3 ; PUSH nat 8 ; FAILWITH }
{ NIL operation ;
DIG 2 ;
PUSH mutez 0 ;
DUP 5 ;
GET 4 ;
DIG 5 ;
GET 3 ;
PAIR ;
TRANSFER_TOKENS ;
CONS ;
PAIR } } } } }