x
237
parameter (or (pair %withdraw (address %receiver) (ticket %ticket (pair nat (option bytes)))) (or (ticket %unwrap (pair nat (option bytes))) (or (ticket %default (pair nat (option bytes))) (pair %deposit (address %rollup) (pair (bytes %receiver) (nat %amount))))));storage (pair (or %token (address %fa12) (pair %fa2 address nat)) (pair (address %ticketer) (pair (bytes %erc_proxy) (pair (option %context (pair (bytes %receiver) (address %rollup))) (big_map %metadata string bytes)))));code { PUSH string "INVALID_FA12" ; PUSH string "INVALID_FA2" ; LAMBDA unit unit { PUSH mutez 0 ; AMOUNT ; COMPARE ; GT ; IF { DROP ; PUSH string "XTZ_DEPOSIT_DISALLOWED" ; FAILWITH } {} } ; LAMBDA (pair address (pair address (ticket (pair nat (option bytes))))) operation { UNPAIR ; CONTRACT %withdraw (pair (address %receiver) (ticket %ticket (pair nat (option bytes)))) ; IF_NONE { PUSH string "ROUTER_ENTRYPOINT_NOT_FOUND" ; FAILWITH } {} ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS } ; DIG 4 ; UNPAIR ; IF_LEFT { DIG 3 ; DIG 4 ; DIG 5 ; DROP 3 ; UNPAIR ; SWAP ; READ_TICKET ; CAR ; SWAP ; DIG 2 ; PAIR ; SWAP ; PAIR ; DIG 2 ; SWAP ; EXEC ; SWAP ; NIL operation ; DIG 2 ; CONS ; PAIR } { IF_LEFT { DIG 4 ; DIG 5 ; DROP 2 ; UNIT ; DIG 4 ; SWAP ; EXEC ; DROP ; SENDER ; PAIR ; DUP 2 ; GET 3 ; PAIR ; DIG 2 ; SWAP ; EXEC ; SWAP ; NIL operation ; DIG 2 ; CONS ; PAIR } { DIG 2 ; DROP ; IF_LEFT { DIG 3 ; DIG 4 ; DROP 2 ; UNIT ; DIG 3 ; SWAP ; EXEC ; DROP ; SENDER ; DUP 3 ; GET 3 ; COMPARE ; NEQ ; IF { PUSH string "UNEXPECTED_SENDER" ; FAILWITH } {} ; DUP 2 ; GET 7 ; IF_NONE { DROP 2 ; PUSH string "ROUTING_DATA_IS_NOT_SET" ; FAILWITH } { UNPAIR ; DUP 4 ; GET 5 ; SWAP ; CONCAT ; PUSH nat 40 ; DUP 2 ; SIZE ; COMPARE ; NEQ ; IF { PUSH string "WRONG_ROUTING_INFO_LENGTH" ; FAILWITH } {} ; DIG 2 ; SWAP ; PAIR ; LEFT bytes ; LEFT bytes ; SWAP ; CONTRACT (or (or (pair %deposit (bytes %routing_info) (ticket %ticket (pair nat (option bytes)))) (bytes %b)) (bytes %c)) ; IF_NONE { PUSH string "ROLLUP_DEPOSIT_NOT_FOUND" ; FAILWITH } {} ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; SWAP ; NONE (pair bytes address) ; UPDATE 7 ; NIL operation ; DIG 2 ; CONS ; PAIR } } { UNPAIR 3 ; UNIT ; DIG 5 ; SWAP ; EXEC ; DROP ; DUP 4 ; CAR ; DUP 5 ; GET 3 ; SENDER ; SELF_ADDRESS ; DUP 4 ; IF_LEFT { CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { DUP 10 ; FAILWITH } {} ; PUSH mutez 0 ; DUP 9 ; DIG 3 ; DIG 4 ; PAIR 3 ; TRANSFER_TOKENS } { UNPAIR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { DUP 10 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DUP 12 ; DIG 5 ; DIG 6 ; PAIR 3 ; CONS ; DIG 4 ; PAIR ; CONS ; TRANSFER_TOKENS } ; DUP 2 ; CONTRACT %deposit nat ; IF_NONE { PUSH string "TKTR_DEPOSIT_NOT_FOUND" ; FAILWITH } {} ; PUSH mutez 0 ; DUP 8 ; TRANSFER_TOKENS ; DIG 3 ; IF_LEFT { DIG 8 ; DROP ; CONTRACT %approve (pair (address %spender) (nat %value)) ; IF_NONE { DIG 7 ; FAILWITH } { DIG 8 ; DROP } ; PUSH mutez 0 ; DIG 7 ; DIG 5 ; PAIR ; TRANSFER_TOKENS } { DIG 6 ; DIG 9 ; DROP 2 ; UNPAIR ; SELF_ADDRESS ; NIL (or (pair address (pair address nat)) (pair address (pair address nat))) ; DIG 3 ; DIG 6 ; DIG 3 ; PAIR 3 ; LEFT (pair address (pair address nat)) ; CONS ; SWAP ; CONTRACT %update_operators (list (or (pair %add_operator (address %owner) (pair (address %operator) (nat %token_id))) (pair %remove_operator (address %owner) (pair (address %operator) (nat %token_id))))) ; IF_NONE { DIG 6 ; FAILWITH } { DIG 7 ; DROP } ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS } ; DIG 5 ; DIG 4 ; DIG 5 ; PAIR ; SOME ; UPDATE 7 ; NIL operation ; DIG 3 ; CONS ; DIG 2 ; CONS ; DIG 2 ; CONS ; PAIR } } } }