diff --git a/Dockerfile.tick.beta.ghostnet b/Dockerfile.tick.beta.ghostnet index 26e2a8a6..4c7d28d6 100644 --- a/Dockerfile.tick.beta.ghostnet +++ b/Dockerfile.tick.beta.ghostnet @@ -12,5 +12,5 @@ WORKDIR /etc/run COPY ./tick.sh /etc/run/ -CMD [ "/etc/run/tick.sh", "-b", "KT1Lh5Wkf2dtgNR23DnrdGcG4igfXUc9HQFW", "-m", "KT1VpMZjKtPa2oEdD2tQJiV7Mj3r4xY4QKFQ", "-f", "150" ] +CMD [ "/etc/run/tick.sh", "-b", "KT1JG7r23BFcc2GFdSnKBvijmagVzUncn9ry", "-m", "KT1VpMZjKtPa2oEdD2tQJiV7Mj3r4xY4QKFQ", "-f", "180" ] diff --git a/batcher-ui/src/components/batcher/Exchange.tsx b/batcher-ui/src/components/batcher/Exchange.tsx index cf119b66..ad686bb3 100644 --- a/batcher-ui/src/components/batcher/Exchange.tsx +++ b/batcher-ui/src/components/batcher/Exchange.tsx @@ -155,6 +155,8 @@ const Exchange = () => { tolerance, }; + console.info("SWAP PARAMS", swap_params); + if (selectedToken.standard === 'FA1.2 token') { if (!swap.from.token.address) { dispatch( diff --git a/batcher-ui/src/config/contracts.js b/batcher-ui/src/config/contracts.js index da54f708..21701f3f 100644 --- a/batcher-ui/src/config/contracts.js +++ b/batcher-ui/src/config/contracts.js @@ -15,9 +15,9 @@ const CONTRACTS_NAMES = [ ]; const ghostnet = { - batcher: 'KT1Lh5Wkf2dtgNR23DnrdGcG4igfXUc9HQFW', + batcher: 'KT1JG7r23BFcc2GFdSnKBvijmagVzUncn9ry', market_maker: 'KT1VpMZjKtPa2oEdD2tQJiV7Mj3r4xY4QKFQ', - token_manager: 'KT1AwSv5yaew3ZEEPn7HkDMvnbCrLniTBWCM', + token_manager: 'KT1WN3F9SkGHGigYsUBtYtBJu358UgiJSEKF', tzBTC_vault: 'KT1QChZQRof4pYheGE5MbUBv3oBsdJiy1Ue3', USDT_vault: 'KT1J2mW59LADXgD6AvywT46KF1Hyep7pKYcL', USDtz_vault: 'KT1KftikTS3nffDMuUobjBHt6LHqe5Zb8xMw', diff --git a/batcher/batcher.mligo b/batcher/batcher.mligo index f263094a..533ca4fa 100644 --- a/batcher/batcher.mligo +++ b/batcher/batcher.mligo @@ -869,6 +869,7 @@ let get_valid_swap_reduced (pair_name: string) (storage : storage) : valid_swap_reduced = let valid_swaps = TokenManagerUtils.get_valid_swaps storage.tokenmanager in + if (Map.size valid_swaps) = 0n then failwith unable_to_get_swaps_from_token_manager else match Map.find_opt pair_name valid_swaps with | Some vswp -> vswp | None -> failwith swap_does_not_exist @@ -957,6 +958,7 @@ let cancel let token_one, token_two = pair in let pair_name = find_lexicographical_pair_name token_one token_two in let valid_swaps = TokenManagerUtils.get_valid_swaps storage.tokenmanager in + if (Map.size valid_swaps) = 0n then failwith unable_to_get_swaps_from_token_manager else match Map.find_opt pair_name valid_swaps with | None -> failwith swap_does_not_exist | Some vswpr -> let valid_tokens = TokenManagerUtils.get_valid_tokens storage.tokenmanager in @@ -1004,7 +1006,7 @@ let enforce_correct_side let deposit (external_order: external_swap_order) (storage : storage) : result = let pair = pair_of_external_swap external_order in let current_time = Tezos.get_now () in - let pair_name = get_rate_name_from_pair pair in + let pair_name = find_lexicographical_pair_name external_order.swap.to.name external_order.swap.from.token.name in let valid_swap = get_valid_swap_reduced pair_name storage in if valid_swap.is_disabled_for_deposits then failwith swap_is_disabled_for_deposits else let () = enforce_correct_side external_order valid_swap in @@ -1221,8 +1223,13 @@ let does_batch_need_liquidity if volumes.buy_total_volume > 0n && volumes.sell_total_volume > 0n then (None: batch option) else Some batch | _ -> (None: batch option) - + +[@view] +let get_valid_swap (pair,storage:string * storage): valid_swap_reduced = get_valid_swap_reduced pair storage + +[@view] +let get_pair_name ((to,from),_storage:(string * string) * storage): string = find_lexicographical_pair_name to from [@view] let get_batches_needing_liquidity ((),storage: unit * storage) : batch list= diff --git a/batcher/errors.mligo b/batcher/errors.mligo index a223dbb6..1bbb248c 100644 --- a/batcher/errors.mligo +++ b/batcher/errors.mligo @@ -72,3 +72,4 @@ [@inline] let unable_to_get_balance_of_entrypoint_from_fa2_token : nat = 171n [@inline] let unable_to_get_balance_response_fa12_entrypoint_from_vault : nat = 172n [@inline] let unable_to_get_get_balance_entrypoint_from_fa12_token : nat = 173n +[@inline] let valid_swaps_map_is_empty = 174n diff --git a/batcher/michelson/batcher-ghostnet.tz b/batcher/michelson/batcher-ghostnet.tz index 47d1d864..211e1300 100644 --- a/batcher/michelson/batcher-ghostnet.tz +++ b/batcher/michelson/batcher-ghostnet.tz @@ -288,518 +288,524 @@ (nat %oracle_precision) (bool %is_disabled_for_deposits))) ; IF_NONE { PUSH nat 165 ; FAILWITH } {} ; - DUP 3 ; - DUP 3 ; + PUSH nat 0 ; + DUP 2 ; + SIZE ; COMPARE ; - GT ; - IF { DIG 2 ; PUSH string "-" ; CONCAT ; DIG 2 ; CONCAT } - { SWAP ; PUSH string "-" ; CONCAT ; DIG 2 ; CONCAT } ; - GET ; - IF_NONE - { DROP 4 ; PUSH nat 117 ; FAILWITH } - { DUP 4 ; - CDR ; - CDR ; - CAR ; - UNIT ; - VIEW "get_valid_tokens" - (map string - (pair (nat %token_id) - (string %name) - (option %address address) - (nat %decimals) - (option %standard string))) ; - IF_NONE { PUSH nat 162 ; FAILWITH } {} ; - DUP 2 ; - CAR ; - DUP 2 ; - DUP 2 ; - CAR ; - GET ; - IF_NONE { PUSH nat 111 ; FAILWITH } {} ; - DUG 2 ; - CDR ; - GET ; - IF_NONE { PUSH nat 111 ; FAILWITH } {} ; - NOW ; - DUP 7 ; - CAR ; - CAR ; - CAR ; - CDR ; - DUP ; - CDR ; - DUP 2 ; - CAR ; - DUP 9 ; - UNPAIR ; - DUP ; - DUP 3 ; - COMPARE ; - GT ; - IF { PUSH string "-" ; CONCAT ; SWAP ; CONCAT } - { SWAP ; PUSH string "-" ; CONCAT ; SWAP ; CONCAT } ; - GET ; - IF_NONE { PUSH nat 0 } {} ; - GET ; - IF_NONE - { PUSH nat 0 ; - DUP 2 ; - CAR ; - ITER { CDR ; DUP 2 ; DUP 2 ; COMPARE ; GT ; IF { SWAP ; DROP } { DROP } } ; - PUSH nat 1 ; - ADD ; - NONE address ; - PUSH nat 0 ; - DIG 9 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PAIR 8 ; - DIG 6 ; - RIGHT - (or (pair (pair timestamp - (pair (pair nat nat nat) - (or (or unit unit) unit) - (pair nat nat nat nat) - (pair (pair string string) (pair int int) timestamp))) - (pair (pair string string) (pair int int) timestamp)) - (pair timestamp timestamp)) ; - DIG 5 ; - PAIR 6 ; - DUP 7 ; - DUP 3 ; - DUP 4 ; - CDR ; - DUP 4 ; - SOME ; - DUP 5 ; - CAR ; - UPDATE ; - UPDATE 2 ; - DIG 3 ; - CAR ; - DUP 4 ; - CAR ; - SOME ; - DUP 5 ; - GET 7 ; - UNPAIR ; - DUP ; - DUP 3 ; - COMPARE ; - GT ; - IF { PUSH string "-" ; CONCAT ; SWAP ; CONCAT } - { SWAP ; PUSH string "-" ; CONCAT ; SWAP ; CONCAT } ; - UPDATE ; - UPDATE 1 } - { DUP 9 ; - CAR ; - CAR ; - CDR ; - CAR ; - DUP 2 ; - GET 3 ; - IF_LEFT - { SWAP ; - DROP ; - IF_LEFT - { DROP 2 ; - PUSH nat 0 ; - DUP 2 ; - CAR ; - ITER { CDR ; DUP 2 ; DUP 2 ; COMPARE ; GT ; IF { SWAP ; DROP } { DROP } } ; - PUSH nat 1 ; - ADD ; - NONE address ; - PUSH nat 0 ; - DIG 9 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PAIR 8 ; - DIG 6 ; - RIGHT - (or (pair (pair timestamp - (pair (pair nat nat nat) - (or (or unit unit) unit) - (pair nat nat nat nat) - (pair (pair string string) (pair int int) timestamp))) - (pair (pair string string) (pair int int) timestamp)) - (pair timestamp timestamp)) ; - DIG 5 ; - PAIR 6 ; - DUP 7 ; - DUP 3 ; - DUP 4 ; - CDR ; - DUP 4 ; - SOME ; - DUP 5 ; - CAR ; - UPDATE ; - UPDATE 2 ; - DIG 3 ; - CAR ; - DUP 4 ; - CAR ; - SOME ; - DUP 5 ; - GET 7 ; - UNPAIR ; - DUP ; - DUP 3 ; - COMPARE ; - GT ; - IF { PUSH string "-" ; CONCAT ; SWAP ; CONCAT } - { SWAP ; PUSH string "-" ; CONCAT ; SWAP ; CONCAT } ; - UPDATE ; - UPDATE 1 } - { DIG 3 ; DIG 8 ; DROP 3 ; DUP 7 ; DIG 2 } } - { DIG 9 ; - DROP ; - DUP 2 ; - INT ; - ADD ; - DIG 4 ; - COMPARE ; - GE ; - IF { DUP 2 ; - GET 3 ; + EQ ; + IF { DROP 7 ; PUSH nat 165 ; FAILWITH } + { DUP 3 ; + DUP 3 ; + COMPARE ; + GT ; + IF { DIG 2 ; PUSH string "-" ; CONCAT ; DIG 2 ; CONCAT } + { SWAP ; PUSH string "-" ; CONCAT ; DIG 2 ; CONCAT } ; + GET ; + IF_NONE + { DROP 4 ; PUSH nat 117 ; FAILWITH } + { DUP 4 ; + CDR ; + CDR ; + CAR ; + UNIT ; + VIEW "get_valid_tokens" + (map string + (pair (nat %token_id) + (string %name) + (option %address address) + (nat %decimals) + (option %standard string))) ; + IF_NONE { PUSH nat 162 ; FAILWITH } {} ; + DUP 2 ; + CAR ; + DUP 2 ; + DUP 2 ; + CAR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} ; + DUG 2 ; + CDR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} ; + NOW ; + DUP 7 ; + CAR ; + CAR ; + CAR ; + CDR ; + DUP ; + CDR ; + DUP 2 ; + CAR ; + DUP 9 ; + UNPAIR ; + DUP ; + DUP 3 ; + COMPARE ; + GT ; + IF { PUSH string "-" ; CONCAT ; SWAP ; CONCAT } + { SWAP ; PUSH string "-" ; CONCAT ; SWAP ; CONCAT } ; + GET ; + IF_NONE { PUSH nat 0 } {} ; + GET ; + IF_NONE + { PUSH nat 0 ; + DUP 2 ; + CAR ; + ITER { CDR ; DUP 2 ; DUP 2 ; COMPARE ; GT ; IF { SWAP ; DROP } { DROP } } ; + PUSH nat 1 ; + ADD ; + NONE address ; + PUSH nat 0 ; + DIG 9 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PAIR 8 ; + DIG 6 ; + RIGHT + (or (pair (pair timestamp + (pair (pair nat nat nat) + (or (or unit unit) unit) + (pair nat nat nat nat) + (pair (pair string string) (pair int int) timestamp))) + (pair (pair string string) (pair int int) timestamp)) + (pair timestamp timestamp)) ; + DIG 5 ; + PAIR 6 ; + DUP 7 ; + DUP 3 ; + DUP 4 ; + CDR ; + DUP 4 ; + SOME ; + DUP 5 ; + CAR ; + UPDATE ; + UPDATE 2 ; + DIG 3 ; + CAR ; + DUP 4 ; + CAR ; + SOME ; + DUP 5 ; + GET 7 ; + UNPAIR ; + DUP ; + DUP 3 ; + COMPARE ; + GT ; + IF { PUSH string "-" ; CONCAT ; SWAP ; CONCAT } + { SWAP ; PUSH string "-" ; CONCAT ; SWAP ; CONCAT } ; + UPDATE ; + UPDATE 1 } + { DUP 9 ; + CAR ; + CAR ; + CDR ; + CAR ; + DUP 2 ; + GET 3 ; + IF_LEFT + { SWAP ; + DROP ; IF_LEFT - { SWAP ; - DIG 2 ; - DROP 2 ; - IF_LEFT - { DROP ; PUSH nat 105 ; FAILWITH } - { DROP ; PUSH nat 105 ; FAILWITH } } - { SWAP ; - INT ; + { DROP 2 ; + PUSH nat 0 ; DUP 2 ; + CAR ; + ITER { CDR ; DUP 2 ; DUP 2 ; COMPARE ; GT ; IF { SWAP ; DROP } { DROP } } ; + PUSH nat 1 ; ADD ; - PAIR ; + NONE address ; + PUSH nat 0 ; + DIG 9 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PAIR 8 ; + DIG 6 ; RIGHT - (pair (pair timestamp - (pair (pair nat nat nat) - (or (or unit unit) unit) - (pair nat nat nat nat) - (pair (pair string string) (pair int int) timestamp))) - (pair (pair string string) (pair int int) timestamp)) ; - LEFT timestamp ; - UPDATE 3 ; + (or (pair (pair timestamp + (pair (pair nat nat nat) + (or (or unit unit) unit) + (pair nat nat nat nat) + (pair (pair string string) (pair int int) timestamp))) + (pair (pair string string) (pair int int) timestamp)) + (pair timestamp timestamp)) ; + DIG 5 ; + PAIR 6 ; DUP 7 ; - PAIR } ; - UNPAIR ; - DUP 3 ; - DUP 4 ; + DUP 3 ; + DUP 4 ; + CDR ; + DUP 4 ; + SOME ; + DUP 5 ; + CAR ; + UPDATE ; + UPDATE 2 ; + DIG 3 ; + CAR ; + DUP 4 ; + CAR ; + SOME ; + DUP 5 ; + GET 7 ; + UNPAIR ; + DUP ; + DUP 3 ; + COMPARE ; + GT ; + IF { PUSH string "-" ; CONCAT ; SWAP ; CONCAT } + { SWAP ; PUSH string "-" ; CONCAT ; SWAP ; CONCAT } ; + UPDATE ; + UPDATE 1 } + { DIG 3 ; DIG 8 ; DROP 3 ; DUP 7 ; DIG 2 } } + { DIG 9 ; + DROP ; + DUP 2 ; + INT ; + ADD ; + DIG 4 ; + COMPARE ; + GE ; + IF { DUP 2 ; + GET 3 ; + IF_LEFT + { SWAP ; + DIG 2 ; + DROP 2 ; + IF_LEFT + { DROP ; PUSH nat 105 ; FAILWITH } + { DROP ; PUSH nat 105 ; FAILWITH } } + { SWAP ; + INT ; + DUP 2 ; + ADD ; + PAIR ; + RIGHT + (pair (pair timestamp + (pair (pair nat nat nat) + (or (or unit unit) unit) + (pair nat nat nat nat) + (pair (pair string string) (pair int int) timestamp))) + (pair (pair string string) (pair int int) timestamp)) ; + LEFT timestamp ; + UPDATE 3 ; + DUP 7 ; + PAIR } ; + UNPAIR ; + DUP 3 ; + DUP 4 ; + CDR ; + DUP 4 ; + SOME ; + DUP 5 ; + CAR ; + UPDATE ; + UPDATE 2 ; + DIG 3 ; + CAR ; + DUP 4 ; + CAR ; + SOME ; + DUP 5 ; + GET 7 ; + UNPAIR ; + DUP ; + DUP 3 ; + COMPARE ; + GT ; + IF { PUSH string "-" ; CONCAT ; SWAP ; CONCAT } + { SWAP ; PUSH string "-" ; CONCAT ; SWAP ; CONCAT } ; + UPDATE ; + UPDATE 1 } + { DROP ; DUP 7 ; DIG 2 } } } ; + DIG 2 ; + DUP ; + GET 3 ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool False } } + { DROP ; PUSH bool True } ; + NOT ; + IF { PUSH nat 140 ; FAILWITH } {} ; + DIG 7 ; + CDR ; + CDR ; + CDR ; + DUP 8 ; + GET ; + IF_NONE + { DROP 8 ; PUSH nat 139 ; FAILWITH } + { DUP 2 ; + CAR ; + DUP 2 ; + DUP 2 ; + GET ; + IF_NONE + { SWAP ; DIG 4 ; DROP 3 ; PUSH nat 139 ; FAILWITH } + { DUP 6 ; + DUP 7 ; CDR ; - DUP 4 ; - SOME ; - DUP 5 ; - CAR ; + DUP ; + CDR ; + DIG 8 ; + CDR ; + CDR ; + CDR ; + DIG 6 ; + DIG 6 ; + NONE (map (pair (or unit unit) (or (or unit unit) unit)) nat) ; + SWAP ; UPDATE ; - UPDATE 2 ; - DIG 3 ; - CAR ; - DUP 4 ; - CAR ; SOME ; - DUP 5 ; - GET 7 ; - UNPAIR ; - DUP ; - DUP 3 ; - COMPARE ; - GT ; - IF { PUSH string "-" ; CONCAT ; SWAP ; CONCAT } - { SWAP ; PUSH string "-" ; CONCAT ; SWAP ; CONCAT } ; + DUP 12 ; UPDATE ; - UPDATE 1 } - { DROP ; DUP 7 ; DIG 2 } } } ; - DIG 2 ; - DUP ; - GET 3 ; - IF_LEFT - { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool False } } - { DROP ; PUSH bool True } ; - NOT ; - IF { PUSH nat 140 ; FAILWITH } {} ; - DIG 7 ; - CDR ; - CDR ; - CDR ; - DUP 8 ; - GET ; - IF_NONE - { DROP 8 ; PUSH nat 139 ; FAILWITH } - { DUP 2 ; - CAR ; - DUP 2 ; - DUP 2 ; - GET ; - IF_NONE - { SWAP ; DIG 4 ; DROP 3 ; PUSH nat 139 ; FAILWITH } - { DUP 6 ; - DUP 7 ; - CDR ; - DUP ; - CDR ; - DIG 8 ; - CDR ; - CDR ; - CDR ; - DIG 6 ; - DIG 6 ; - NONE (map (pair (or unit unit) (or (or unit unit) unit)) nat) ; - SWAP ; - UPDATE ; - SOME ; - DUP 12 ; - UPDATE ; - UPDATE 2 ; - UPDATE 2 ; - UPDATE 2 ; - SWAP ; - PAIR } ; - UNPAIR ; - DUP 3 ; - GET 5 ; - DUP 2 ; - ITER { UNPAIR ; - UNPAIR ; - IF_LEFT - { DROP ; - DUP 2 ; - DUP 4 ; - GET 7 ; - SUB ; - ABS ; - SWAP ; - IF_LEFT - { IF_LEFT - { DROP ; - DUP 3 ; - DIG 2 ; - DIG 3 ; - GET 3 ; - SUB ; - ABS ; - UPDATE 3 ; - SWAP ; - UPDATE 7 } - { DROP ; - DUP 3 ; - DIG 2 ; - DIG 3 ; - CAR ; - SUB ; - ABS ; - UPDATE 1 ; - SWAP ; - UPDATE 7 } } - { DROP ; - DUP 3 ; - DIG 2 ; - DIG 3 ; - GET 5 ; - SUB ; - ABS ; - UPDATE 5 ; - SWAP ; - UPDATE 7 } } - { DROP ; - DUP 2 ; - DUP 4 ; - GET 14 ; - SUB ; - ABS ; - SWAP ; - IF_LEFT - { IF_LEFT - { DROP ; - DUP 3 ; - DIG 2 ; - DIG 3 ; - GET 11 ; - SUB ; - ABS ; - UPDATE 11 ; - SWAP ; - UPDATE 14 } - { DROP ; - DUP 3 ; - DIG 2 ; - DIG 3 ; - GET 9 ; - SUB ; - ABS ; - UPDATE 9 ; - SWAP ; - UPDATE 14 } } - { DROP ; - DUP 3 ; - DIG 2 ; - DIG 3 ; - GET 13 ; - SUB ; - ABS ; - UPDATE 13 ; - SWAP ; - UPDATE 14 } } } ; - PUSH nat 1 ; - DUP 5 ; - GET 9 ; - SUB ; - ABS ; - DIG 4 ; - DIG 2 ; - UPDATE 5 ; - SWAP ; - UPDATE 9 ; - DUP 3 ; - DIG 3 ; - CAR ; - DUP ; - CAR ; - DUP ; - CAR ; - DUP 7 ; - DIG 7 ; - CDR ; - DUP 7 ; - SOME ; - DIG 7 ; - CAR ; - UPDATE ; - UPDATE 2 ; - UPDATE 2 ; - UPDATE 1 ; - UPDATE 1 ; - UPDATE 1 ; - DUP 5 ; - GET 8 ; - DUP 6 ; - GET 7 ; - DUP 7 ; - GET 5 ; - DIG 7 ; - GET 3 ; - DIG 6 ; - PUSH nat 1 ; - DIG 8 ; - PAIR ; - PAIR ; - PAIR 5 ; - PUSH mutez 0 ; - EMPTY_MAP string (pair (pair nat string (option address) nat (option string)) nat) ; - PAIR ; - DIG 3 ; - ITER { UNPAIR ; - DIG 2 ; - UNPAIR ; - DIG 3 ; - DIG 3 ; - CAR ; - IF_LEFT { DROP ; DUP 4 ; CAR ; CAR ; CAR } { DROP ; DUP 4 ; CAR ; CDR } ; - PAIR ; - PAIR ; - DUP 6 ; - SWAP ; - EXEC ; - DUP 4 ; - CAR ; - CAR ; - CDR ; - CDR ; - DIG 2 ; - ADD ; - SWAP ; - PAIR } ; - SWAP ; - DIG 4 ; - DROP 2 ; - UNPAIR ; - SELF_ADDRESS ; - NIL operation ; - DIG 2 ; - ITER { CDR ; - DUP ; - CAR ; - GET 5 ; - IF_NONE - { DROP ; PUSH nat 109 ; FAILWITH } - { DUP 2 ; - CAR ; - GET 8 ; - IF_NONE - { DROP 2 ; PUSH nat 108 ; FAILWITH } - { PUSH string "FA1.2 token" ; - DUP 2 ; - COMPARE ; - EQ ; - IF { DROP ; - CONTRACT %transfer (pair (address %from) (address %to) (nat %value)) ; - IF_NONE { PUSH nat 101 ; FAILWITH } {} ; - PUSH mutez 0 ; + UPDATE 2 ; + UPDATE 2 ; + UPDATE 2 ; + SWAP ; + PAIR } ; + UNPAIR ; + DUP 3 ; + GET 5 ; + DUP 2 ; + ITER { UNPAIR ; + UNPAIR ; + IF_LEFT + { DROP ; + DUP 2 ; + DUP 4 ; + GET 7 ; + SUB ; + ABS ; + SWAP ; + IF_LEFT + { IF_LEFT + { DROP ; + DUP 3 ; + DIG 2 ; + DIG 3 ; + GET 3 ; + SUB ; + ABS ; + UPDATE 3 ; + SWAP ; + UPDATE 7 } + { DROP ; + DUP 3 ; + DIG 2 ; + DIG 3 ; + CAR ; + SUB ; + ABS ; + UPDATE 1 ; + SWAP ; + UPDATE 7 } } + { DROP ; + DUP 3 ; DIG 2 ; - CDR ; - DUP 8 ; - DUP 6 ; - PAIR 3 ; - TRANSFER_TOKENS } - { PUSH string "FA2 token" ; + DIG 3 ; + GET 5 ; + SUB ; + ABS ; + UPDATE 5 ; + SWAP ; + UPDATE 7 } } + { DROP ; + DUP 2 ; + DUP 4 ; + GET 14 ; + SUB ; + ABS ; + SWAP ; + IF_LEFT + { IF_LEFT + { DROP ; + DUP 3 ; + DIG 2 ; + DIG 3 ; + GET 11 ; + SUB ; + ABS ; + UPDATE 11 ; + SWAP ; + UPDATE 14 } + { DROP ; + DUP 3 ; + DIG 2 ; + DIG 3 ; + GET 9 ; + SUB ; + ABS ; + UPDATE 9 ; + SWAP ; + UPDATE 14 } } + { DROP ; + DUP 3 ; + DIG 2 ; + DIG 3 ; + GET 13 ; + SUB ; + ABS ; + UPDATE 13 ; SWAP ; + UPDATE 14 } } } ; + PUSH nat 1 ; + DUP 5 ; + GET 9 ; + SUB ; + ABS ; + DIG 4 ; + DIG 2 ; + UPDATE 5 ; + SWAP ; + UPDATE 9 ; + DUP 3 ; + DIG 3 ; + CAR ; + DUP ; + CAR ; + DUP ; + CAR ; + DUP 7 ; + DIG 7 ; + CDR ; + DUP 7 ; + SOME ; + DIG 7 ; + CAR ; + UPDATE ; + UPDATE 2 ; + UPDATE 2 ; + UPDATE 1 ; + UPDATE 1 ; + UPDATE 1 ; + DUP 5 ; + GET 8 ; + DUP 6 ; + GET 7 ; + DUP 7 ; + GET 5 ; + DIG 7 ; + GET 3 ; + DIG 6 ; + PUSH nat 1 ; + DIG 8 ; + PAIR ; + PAIR ; + PAIR 5 ; + PUSH mutez 0 ; + EMPTY_MAP string (pair (pair nat string (option address) nat (option string)) nat) ; + PAIR ; + DIG 3 ; + ITER { UNPAIR ; + DIG 2 ; + UNPAIR ; + DIG 3 ; + DIG 3 ; + CAR ; + IF_LEFT { DROP ; DUP 4 ; CAR ; CAR ; CAR } { DROP ; DUP 4 ; CAR ; CDR } ; + PAIR ; + PAIR ; + DUP 6 ; + SWAP ; + EXEC ; + DUP 4 ; + CAR ; + CAR ; + CDR ; + CDR ; + DIG 2 ; + ADD ; + SWAP ; + PAIR } ; + SWAP ; + DIG 4 ; + DROP 2 ; + UNPAIR ; + SELF_ADDRESS ; + NIL operation ; + DIG 2 ; + ITER { CDR ; + DUP ; + CAR ; + GET 5 ; + IF_NONE + { DROP ; PUSH nat 109 ; FAILWITH } + { DUP 2 ; + CAR ; + GET 8 ; + IF_NONE + { DROP 2 ; PUSH nat 108 ; FAILWITH } + { PUSH string "FA1.2 token" ; + DUP 2 ; COMPARE ; EQ ; - IF { CONTRACT %transfer - (list (pair (address %from_) (list %tx (pair (address %to_) (nat %token_id) (nat %amount))))) ; + IF { DROP ; + CONTRACT %transfer (pair (address %from) (address %to) (nat %value)) ; IF_NONE { PUSH nat 101 ; FAILWITH } {} ; PUSH mutez 0 ; - NIL (pair address (list (pair address nat nat))) ; - NIL (pair address nat nat) ; - DUP 5 ; + DIG 2 ; CDR ; - DIG 5 ; - CAR ; - CAR ; - DUP 11 ; - PAIR 3 ; - CONS ; + DUP 8 ; DUP 6 ; - PAIR ; - CONS ; + PAIR 3 ; TRANSFER_TOKENS } - { DROP 2 ; PUSH nat 108 ; FAILWITH } } } } ; - CONS } ; - SWAP ; - DIG 4 ; - DROP 2 ; - PUSH mutez 0 ; - DUP 3 ; - COMPARE ; - GT ; - IF { DUP 3 ; - CAR ; - CDR ; - CAR ; - CAR ; - CONTRACT unit ; - IF_NONE - { SWAP ; DROP ; PUSH nat 102 ; FAILWITH } - { DIG 2 ; UNIT ; TRANSFER_TOKENS } ; - CONS } - { SWAP ; DROP } ; - PAIR } } } } + { PUSH string "FA2 token" ; + SWAP ; + COMPARE ; + EQ ; + IF { CONTRACT %transfer + (list (pair (address %from_) (list %tx (pair (address %to_) (nat %token_id) (nat %amount))))) ; + IF_NONE { PUSH nat 101 ; FAILWITH } {} ; + PUSH mutez 0 ; + NIL (pair address (list (pair address nat nat))) ; + NIL (pair address nat nat) ; + DUP 5 ; + CDR ; + DIG 5 ; + CAR ; + CAR ; + DUP 11 ; + PAIR 3 ; + CONS ; + DUP 6 ; + PAIR ; + CONS ; + TRANSFER_TOKENS } + { DROP 2 ; PUSH nat 108 ; FAILWITH } } } } ; + CONS } ; + SWAP ; + DIG 4 ; + DROP 2 ; + PUSH mutez 0 ; + DUP 3 ; + COMPARE ; + GT ; + IF { DUP 3 ; + CAR ; + CDR ; + CAR ; + CAR ; + CONTRACT unit ; + IF_NONE + { SWAP ; DROP ; PUSH nat 102 ; FAILWITH } + { DIG 2 ; UNIT ; TRANSFER_TOKENS } ; + CONS } + { SWAP ; DROP } ; + PAIR } } } } } { DIG 2 ; DROP ; IF_LEFT @@ -1072,7 +1078,16 @@ SWAP ; IF_LEFT { DROP } { DROP ; DUP ; CAR ; SWAP ; CDR ; PAIR } ; NOW ; + DUP 3 ; + CAR ; + CAR ; + CAR ; + GET 3 ; DUP 4 ; + CAR ; + CDR ; + GET 3 ; + DUP 6 ; CDR ; CDR ; CAR ; @@ -1085,16 +1100,20 @@ (nat %oracle_precision) (bool %is_disabled_for_deposits))) ; IF_NONE { PUSH nat 165 ; FAILWITH } {} ; - DUP 3 ; - UNPAIR ; - DUP ; - DUP 3 ; + PUSH nat 0 ; + DUP 2 ; + SIZE ; COMPARE ; - GT ; - IF { PUSH string "-" ; CONCAT ; SWAP ; CONCAT } - { SWAP ; PUSH string "-" ; CONCAT ; SWAP ; CONCAT } ; - GET ; - IF_NONE { PUSH nat 117 ; FAILWITH } {} ; + EQ ; + IF { DROP 3 ; PUSH nat 165 ; FAILWITH } + { DUP 3 ; + DUP 3 ; + COMPARE ; + GT ; + IF { DIG 2 ; PUSH string "-" ; CONCAT ; DIG 2 ; CONCAT } + { SWAP ; PUSH string "-" ; CONCAT ; DIG 2 ; CONCAT } ; + GET ; + IF_NONE { PUSH nat 117 ; FAILWITH } {} } ; DUP ; GET 8 ; IF { DROP 6 ; PUSH nat 125 ; FAILWITH } @@ -1385,9 +1404,13 @@ (nat %oracle_precision) (bool %is_disabled_for_deposits))) ; IF_NONE { PUSH nat 165 ; FAILWITH } {} ; + PUSH nat 0 ; DUP 2 ; - GET ; - IF_NONE { PUSH nat 117 ; FAILWITH } {} ; + SIZE ; + COMPARE ; + EQ ; + IF { DROP ; PUSH nat 165 ; FAILWITH } + { DUP 2 ; GET ; IF_NONE { PUSH nat 117 ; FAILWITH } {} } ; DUP ; GET 3 ; SWAP ; @@ -4753,6 +4776,45 @@ SWAP ; ITER { CDR ; PUSH nat 0 ; SWAP ; COMPARE ; GT ; OR } ; OR } } } ; + view "get_valid_swap" + string + (pair (pair %swap (string %from) (string %to)) + (address %oracle_address) + (string %oracle_asset_name) + (nat %oracle_precision) + (bool %is_disabled_for_deposits)) + { UNPAIR ; + SWAP ; + CDR ; + CDR ; + CAR ; + UNIT ; + VIEW "get_valid_swaps" + (map string + (pair (pair %swap (string %from) (string %to)) + (address %oracle_address) + (string %oracle_asset_name) + (nat %oracle_precision) + (bool %is_disabled_for_deposits))) ; + IF_NONE { PUSH nat 165 ; FAILWITH } {} ; + PUSH nat 0 ; + DUP 2 ; + SIZE ; + COMPARE ; + EQ ; + IF { DROP 2 ; PUSH nat 165 ; FAILWITH } + { SWAP ; GET ; IF_NONE { PUSH nat 117 ; FAILWITH } {} } } ; + view "get_pair_name" + (pair string string) + string + { CAR ; + UNPAIR ; + DUP 2 ; + DUP 2 ; + COMPARE ; + GT ; + IF { SWAP ; PUSH string "-" ; CONCAT ; SWAP ; CONCAT } + { PUSH string "-" ; CONCAT ; SWAP ; CONCAT } } ; view "get_batches_needing_liquidity" unit (list (pair (nat %batch_number) diff --git a/batcher/michelson/marketmaker-ghostnet.tz b/batcher/michelson/marketmaker-ghostnet.tz index 6b7f7217..bd116685 100644 --- a/batcher/michelson/marketmaker-ghostnet.tz +++ b/batcher/michelson/marketmaker-ghostnet.tz @@ -703,7 +703,7 @@ COMPARE ; GT ; IF { SWAP ; PUSH string "-" ; CONCAT ; SWAP ; CONCAT } - { PUSH string "-" ; CONCAT ; SWAP ; CONCAT } + { PUSH string "-" ; CONCAT ; SWAP ; CONCAT } ; DUP 7 ; DUP 2 ; GET ; diff --git a/batcher/michelson/tokenmanager-storage-ghostnet.tz b/batcher/michelson/tokenmanager-storage-ghostnet.tz index 3f1099f1..d5f6e329 100644 --- a/batcher/michelson/tokenmanager-storage-ghostnet.tz +++ b/batcher/michelson/tokenmanager-storage-ghostnet.tz @@ -1,15 +1,15 @@ (Pair (Pair "tz1ca4batAsNxMYab3mUK5H4QRjY8drV4ViL" 10) (Pair { "BTCtz-USDT" ; "BTCtz-USDtz" ; "tzBTC-EURL" ; "tzBTC-USDT" ; "tzBTC-USDtz" } { Elt "BTCtz-USDT" - (Pair (Pair "BTCtz" "USDT") "KT1DG2g5DPYWqyHKGpRL579YkYZwJxibwaAZ" "BTC-USDT" 6 False) ; + (Pair (Pair "BTCtz" "USDT") "KT1C5Y5dWWEP9Ucxsdmgb3PSPiYQ2Qcgo9xM" "BTC-USDT" 6 False) ; Elt "BTCtz-USDtz" - (Pair (Pair "BTCtz" "USDtz") "KT1DG2g5DPYWqyHKGpRL579YkYZwJxibwaAZ" "BTC-USDT" 6 False) ; + (Pair (Pair "BTCtz" "USDtz") "KT1C5Y5dWWEP9Ucxsdmgb3PSPiYQ2Qcgo9xM" "BTC-USDT" 6 False) ; Elt "tzBTC-EURL" - (Pair (Pair "tzBTC" "EURL") "KT1DG2g5DPYWqyHKGpRL579YkYZwJxibwaAZ" "BTC-EUR" 6 False) ; + (Pair (Pair "tzBTC" "EURL") "KT1C5Y5dWWEP9Ucxsdmgb3PSPiYQ2Qcgo9xM" "BTC-EUR" 6 False) ; Elt "tzBTC-USDT" - (Pair (Pair "tzBTC" "USDT") "KT1DG2g5DPYWqyHKGpRL579YkYZwJxibwaAZ" "BTC-USDT" 6 False) ; + (Pair (Pair "tzBTC" "USDT") "KT1C5Y5dWWEP9Ucxsdmgb3PSPiYQ2Qcgo9xM" "BTC-USDT" 6 False) ; Elt "tzBTC-USDtz" - (Pair (Pair "tzBTC" "USDtz") "KT1DG2g5DPYWqyHKGpRL579YkYZwJxibwaAZ" "BTC-USDT" 6 False) }) + (Pair (Pair "tzBTC" "USDtz") "KT1C5Y5dWWEP9Ucxsdmgb3PSPiYQ2Qcgo9xM" "BTC-USDT" 6 False) }) { "BTCtz" ; "EURL" ; "USDT" ; "USDtz" ; "tzBTC" } { Elt "BTCtz" (Pair 0 "BTCtz" (Some "KT1ErLEYVsxqHxLgLucXViq5DYrtSyDuSFTe") 8 (Some "FA2 token")) ; diff --git a/batcher/storage/tokenmanager_storage_ghostnet.mligo b/batcher/storage/tokenmanager_storage_ghostnet.mligo index 2af54255..ad4da717 100644 --- a/batcher/storage/tokenmanager_storage_ghostnet.mligo +++ b/batcher/storage/tokenmanager_storage_ghostnet.mligo @@ -41,7 +41,7 @@ let f(_:unit) : TokenManager.TokenManager.storage = { ]; }; valid_swaps = { - keys = Set.literal ["tzBTC-USDT";"BTCtz-USDtz";"tzBTC-USDtz";"BTCtz-USDT";"tzBTC-EURL"] ; + keys = Set.literal ["tzBTC-USDT";"USDtz-BTCtz";"tzBTC-USDtz";"USDT-BTCtz";"tzBTC-EURL"] ; values = Big_map.literal [ ("tzBTC-USDT", { swap = { @@ -54,7 +54,7 @@ let f(_:unit) : TokenManager.TokenManager.storage = { is_disabled_for_deposits = false } ); - ("BTCtz-USDtz", { + ("USDtz-BTCtz", { swap = { from = "BTCtz"; to = "USDtz"; @@ -76,7 +76,7 @@ let f(_:unit) : TokenManager.TokenManager.storage = { is_disabled_for_deposits = false } ); - ("BTCtz-USDT", { + ("USDT-BTCtz", { swap = { from = "BTCtz"; to = "USDT";