x
586
{ parameter (or
(or (or (unit %accept_manager) (or (address %add_fa2) (nat %cancel_swap)))
(or (nat %collect)
(or (address %remove_fa2) (bool %set_pause_collects))))
(or
(or (bool %set_pause_swaps)
(or
(pair %swap (address %fa2)
(pair (nat %objkt_id)
(pair (nat %objkt_amount)
(pair (mutez %xtz_per_objkt)
(pair (nat %royalties)
(address %creator))))))
(address %transfer_manager)))
(or (nat %update_fee)
(or (address %update_fee_recipient)
(pair %update_metadata (string %key) (bytes %value)))))) ;
storage (pair
(pair (pair (big_map %allowed_fa2s address unit) (bool %collects_paused))
(pair (nat %counter) (pair (nat %fee) (address %fee_recipient))))
(pair (pair (address %manager) (big_map %metadata string bytes))
(pair (option %proposed_manager address)
(pair
(big_map %swaps nat
(pair (address %issuer)
(pair (address %fa2)
(pair (nat %objkt_id)
(pair (nat %objkt_amount)
(pair
(mutez %xtz_per_objkt)
(pair
(nat %royalties)
(address %creator))))))))
(bool %swaps_paused))))) ;
code { UNPAIR ;
IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ DROP ;
DUP ;
GET 5 ;
IF_NONE { PUSH string "MP_NO_NEW_MANAGER" ; FAILWITH } { DROP } ;
DUP ;
GET 5 ;
IF_NONE { PUSH int 352 ; FAILWITH } {} ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "MP_NOT_PROPOSED_MANAGER" ; FAILWITH } ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
IF {} { PUSH string "MP_TEZ_TRANSFER" ; FAILWITH } ;
UNPAIR ;
SWAP ;
UNPAIR ;
CDR ;
SENDER ;
PAIR ;
PAIR ;
SWAP ;
PAIR ;
NONE address ;
UPDATE 5 ;
NIL operation }
{ IF_LEFT
{ DUP 2 ;
GET 3 ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "MP_NOT_MANAGER" ; FAILWITH } ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
IF {} { PUSH string "MP_TEZ_TRANSFER" ; FAILWITH } ;
SWAP ;
UNPAIR ;
UNPAIR ;
UNPAIR ;
PUSH (option unit) (Some Unit) ;
DIG 5 ;
UPDATE ;
PAIR ;
PAIR ;
PAIR ;
NIL operation }
{ PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
IF {} { PUSH string "MP_TEZ_TRANSFER" ; FAILWITH } ;
DUP 2 ;
GET 7 ;
DUP 2 ;
MEM ;
IF {} { PUSH string "MP_WRONG_SWAP_ID" ; FAILWITH } ;
DUP 2 ;
GET 7 ;
DUP 2 ;
GET ;
IF_NONE { PUSH int 253 ; FAILWITH } {} ;
DUP ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "MP_NOT_SWAP_ISSUER" ; FAILWITH } ;
PUSH nat 0 ;
DUP 2 ;
GET 7 ;
COMPARE ;
GT ;
IF {} { PUSH string "MP_SWAP_COLLECTED" ; FAILWITH } ;
NIL operation ;
DUP 2 ;
GET 3 ;
CONTRACT %transfer (list (pair (address %from_)
(list %txs (pair (address %to_)
(pair
(nat %token_id)
(nat %amount)))))) ;
IF_NONE { PUSH int 620 ; FAILWITH } {} ;
PUSH mutez 0 ;
NIL (pair address (list (pair address (pair nat nat)))) ;
NIL (pair address (pair nat nat)) ;
DIG 5 ;
DUP ;
GET 7 ;
SWAP ;
GET 5 ;
SENDER ;
PAIR 3 ;
CONS ;
SELF_ADDRESS ;
PAIR ;
CONS ;
TRANSFER_TOKENS ;
CONS ;
DIG 2 ;
DUP ;
GET 7 ;
NONE (pair address
(pair address
(pair nat
(pair nat
(pair mutez (pair nat address)))))) ;
DIG 4 ;
UPDATE ;
UPDATE 7 ;
SWAP } } }
{ IF_LEFT
{ DUP 2 ;
CAR ;
CAR ;
CDR ;
IF { PUSH string "MP_COLLECTS_PAUSED" ; FAILWITH } {} ;
DUP 2 ;
GET 7 ;
DUP 2 ;
MEM ;
IF {} { PUSH string "MP_WRONG_SWAP_ID" ; FAILWITH } ;
DUP 2 ;
GET 7 ;
DUP 2 ;
GET ;
IF_NONE { PUSH int 190 ; FAILWITH } {} ;
DUP ;
CAR ;
SENDER ;
COMPARE ;
NEQ ;
IF {} { PUSH string "MP_IS_SWAP_ISSUER" ; FAILWITH } ;
DUP ;
GET 9 ;
AMOUNT ;
COMPARE ;
EQ ;
IF {} { PUSH string "MP_WRONG_TEZ_AMOUNT" ; FAILWITH } ;
PUSH nat 0 ;
DUP 2 ;
GET 7 ;
COMPARE ;
GT ;
IF {} { PUSH string "MP_SWAP_COLLECTED" ; FAILWITH } ;
PUSH mutez 0 ;
DUP 2 ;
GET 9 ;
COMPARE ;
NEQ ;
IF
{ PUSH nat 1000 ;
DUP 2 ;
GET 11 ;
DUP 3 ;
GET 9 ;
MUL ;
EDIV ;
IF_NONE { PUSH int 203 ; FAILWITH } {} ;
CAR ;
PUSH mutez 0 ;
DUP 2 ;
COMPARE ;
GT ;
IF
{ NIL operation ;
DUP 3 ;
GET 12 ;
CONTRACT unit ;
IF_NONE { PUSH int 208 ; FAILWITH } {} ;
DUP 3 ;
UNIT ;
TRANSFER_TOKENS ;
CONS }
{ NIL operation } ;
PUSH nat 1000 ;
DUP 6 ;
CAR ;
GET 5 ;
DUP 5 ;
GET 9 ;
MUL ;
EDIV ;
IF_NONE { PUSH int 211 ; FAILWITH } {} ;
CAR ;
PUSH mutez 0 ;
DUP 2 ;
COMPARE ;
GT ;
IF
{ SWAP ;
DUP 6 ;
CAR ;
GET 6 ;
CONTRACT unit ;
IF_NONE { PUSH int 216 ; FAILWITH } {} ;
DUP 3 ;
UNIT ;
TRANSFER_TOKENS ;
CONS ;
SWAP }
{} ;
SWAP ;
DUP 4 ;
CAR ;
CONTRACT unit ;
IF_NONE { PUSH int 219 ; FAILWITH } {} ;
DIG 2 ;
DIG 3 ;
AMOUNT ;
SUB_MUTEZ ;
IF_NONE { PUSH int 219 ; FAILWITH } {} ;
SUB_MUTEZ ;
IF_NONE { PUSH int 219 ; FAILWITH } {} ;
UNIT ;
TRANSFER_TOKENS ;
CONS }
{ NIL operation } ;
DUP 2 ;
GET 3 ;
CONTRACT %transfer (list (pair (address %from_)
(list %txs (pair (address %to_)
(pair (nat %token_id)
(nat %amount)))))) ;
IF_NONE { PUSH int 620 ; FAILWITH } {} ;
PUSH mutez 0 ;
NIL (pair address (list (pair address (pair nat nat)))) ;
NIL (pair address (pair nat nat)) ;
PUSH nat 1 ;
DUP 7 ;
GET 5 ;
SENDER ;
PAIR 3 ;
CONS ;
SELF_ADDRESS ;
PAIR ;
CONS ;
TRANSFER_TOKENS ;
CONS ;
DIG 3 ;
DUP ;
GET 7 ;
DUP ;
DIG 5 ;
DUP ;
DUG 2 ;
GET ;
IF_NONE { PUSH int 230 ; FAILWITH } {} ;
PUSH nat 1 ;
DIG 6 ;
GET 7 ;
SUB ;
ISNAT ;
IF_NONE { PUSH int 230 ; FAILWITH } {} ;
UPDATE 7 ;
SOME ;
SWAP ;
UPDATE ;
UPDATE 7 ;
SWAP }
{ IF_LEFT
{ DUP 2 ;
GET 3 ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "MP_NOT_MANAGER" ; FAILWITH } ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
IF {} { PUSH string "MP_TEZ_TRANSFER" ; FAILWITH } ;
SWAP ;
UNPAIR ;
UNPAIR ;
UNPAIR ;
NONE unit ;
DIG 5 ;
UPDATE ;
PAIR ;
PAIR ;
PAIR }
{ DUP 2 ;
GET 3 ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "MP_NOT_MANAGER" ; FAILWITH } ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
IF {} { PUSH string "MP_TEZ_TRANSFER" ; FAILWITH } ;
SWAP ;
UNPAIR ;
UNPAIR ;
CAR ;
DIG 3 ;
SWAP ;
PAIR ;
PAIR ;
PAIR } ;
NIL operation } } }
{ IF_LEFT
{ IF_LEFT
{ DUP 2 ;
GET 3 ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "MP_NOT_MANAGER" ; FAILWITH } ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
IF {} { PUSH string "MP_TEZ_TRANSFER" ; FAILWITH } ;
UPDATE 8 ;
NIL operation }
{ IF_LEFT
{ DUP 2 ;
GET 8 ;
IF { PUSH string "MP_SWAPS_PAUSED" ; FAILWITH } {} ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
IF {} { PUSH string "MP_TEZ_TRANSFER" ; FAILWITH } ;
DUP 2 ;
CAR ;
CAR ;
CAR ;
DUP 2 ;
CAR ;
MEM ;
IF {} { PUSH string "MP_FA2_NOT_ALLOWED" ; FAILWITH } ;
PUSH nat 0 ;
DUP 2 ;
GET 5 ;
COMPARE ;
GT ;
IF {} { PUSH string "MP_NO_SWAPPED_EDITIONS" ; FAILWITH } ;
PUSH nat 250 ;
DUP 2 ;
GET 9 ;
COMPARE ;
LE ;
IF {} { PUSH string "MP_WRONG_ROYALTIES" ; FAILWITH } ;
NIL operation ;
DUP 2 ;
CAR ;
CONTRACT %transfer (list (pair (address %from_)
(list %txs (pair (address %to_)
(pair
(nat %token_id)
(nat %amount)))))) ;
IF_NONE { PUSH int 620 ; FAILWITH } {} ;
PUSH mutez 0 ;
NIL (pair address (list (pair address (pair nat nat)))) ;
NIL (pair address (pair nat nat)) ;
DUP 6 ;
GET 5 ;
DUP 7 ;
GET 3 ;
SELF_ADDRESS ;
PAIR 3 ;
CONS ;
SENDER ;
PAIR ;
CONS ;
TRANSFER_TOKENS ;
CONS ;
DUP 3 ;
DUP ;
GET 7 ;
DUP 4 ;
GET 10 ;
DUP 5 ;
GET 9 ;
DUP 6 ;
GET 7 ;
DUP 7 ;
GET 5 ;
DUP 8 ;
GET 3 ;
DUP 9 ;
CAR ;
SENDER ;
PAIR 7 ;
DIG 4 ;
DROP ;
SOME ;
DIG 4 ;
CAR ;
GET 3 ;
UPDATE ;
UPDATE 7 ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
PUSH nat 1 ;
ADD ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
SWAP }
{ DUP 2 ;
GET 3 ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "MP_NOT_MANAGER" ; FAILWITH } ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
IF {} { PUSH string "MP_TEZ_TRANSFER" ; FAILWITH } ;
SOME ;
UPDATE 5 ;
NIL operation } } }
{ IF_LEFT
{ DUP 2 ;
GET 3 ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "MP_NOT_MANAGER" ; FAILWITH } ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
IF {} { PUSH string "MP_TEZ_TRANSFER" ; FAILWITH } ;
PUSH nat 250 ;
DUP 2 ;
COMPARE ;
LE ;
IF {} { PUSH string "MP_WRONG_FEES" ; FAILWITH } ;
SWAP ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
CDR ;
DIG 4 ;
PAIR ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
PAIR }
{ IF_LEFT
{ DUP 2 ;
GET 3 ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "MP_NOT_MANAGER" ; FAILWITH } ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
IF {} { PUSH string "MP_TEZ_TRANSFER" ; FAILWITH } ;
SWAP ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
CAR ;
DIG 4 ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
PAIR }
{ DUP 2 ;
GET 3 ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "MP_NOT_MANAGER" ; FAILWITH } ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
EQ ;
IF {} { PUSH string "MP_TEZ_TRANSFER" ; FAILWITH } ;
SWAP ;
UNPAIR ;
SWAP ;
UNPAIR ;
UNPAIR ;
SWAP ;
DUP 5 ;
CDR ;
SOME ;
DIG 5 ;
CAR ;
UPDATE ;
SWAP ;
PAIR ;
PAIR ;
SWAP ;
PAIR } } ;
NIL operation } } ;
NIL operation ;
SWAP ;
ITER { CONS } ;
PAIR } ;
view "get_fee" unit nat { CDR ; CAR ; GET 5 } ;
view "get_fee_recipient" unit address { CDR ; CAR ; GET 6 } ;
view "get_manager" unit address { CDR ; GET 3 ; CAR } ;
view "get_swap" nat
(pair (address %issuer)
(pair (address %fa2)
(pair (nat %objkt_id)
(pair (nat %objkt_amount)
(pair (mutez %xtz_per_objkt)
(pair (nat %royalties) (address %creator)))))))
{ UNPAIR ;
DUP 2 ;
GET 7 ;
DUP 2 ;
MEM ;
IF {} { PUSH string "MP_WRONG_SWAP_ID" ; FAILWITH } ;
SWAP ;
GET 7 ;
SWAP ;
GET ;
IF_NONE { PUSH int 564 ; FAILWITH } {} } ;
view "get_swaps_counter" unit nat { CDR ; CAR ; GET 3 } ;
view "has_swap" nat bool { UNPAIR ; SWAP ; GET 7 ; SWAP ; MEM } ;
view "is_allowed_fa2" address bool { UNPAIR ; SWAP ; CAR ; CAR ; CAR ; SWAP ; MEM } }