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 } }