Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integration of CrocSmartSwapPlan for multihop swaps #4500

Draft
wants to merge 4 commits into
base: develop
Choose a base branch
from

Conversation

busimus
Copy link
Contributor

@busimus busimus commented Dec 16, 2024

Describe your changes

This is a WIP integration of the new swap class in the SDK that supports fully client-side multihop swaps. This PR (when used with the WIP SDK PR) currently has mostly complete multihop swaps which are testable on Scroll mainnet, what remains is additional work to improve integration of that functionality into the frontend.

While integration which would only improve swap output compared to direct swaps in illiquid pools is quite simple, allowing users to make swaps "in non-existent pools" requires many small changes to the frontend since it makes many assumptions that the currently selected token pair in the swap UI represents the chosen pool and not just an intention to swap between the two tokens. But I suppose shipping only the former at first wouldn't be that bad, it's still a significant improvement.

So the remaining integration steps are split into two categories:

  • General integration:
    • SwapExtraInfo improvements:
      • Better swap route - depending on the number of tokens and their symbols it can be too long to display.
      • Conversion rate should show the average swap rate for multihop swaps, since the pool price is either irrelevant or doesn't exist.
      • Since the number of rows in that element differs between direct swaps and multihop swaps, maybe some should be added/removed?
    • Gas fee scaling with route length.
    • LP fee scaling with route length.
    • Swap route selector that takes USD prices of transacted tokens and estimated gas fees of multihop swaps into account (currently the SDK just selects the route with highest output or lowest input).
    • Something else?
  • Decoupling the swap UI from the pool:
    • What to do with the "This pool has not been initialized. Do you want to initialize it?" element?
      • I think it should not be displayed in the swap component, only on the limit and pool components.
      • But since "Direct swaps only" setting exists, maybe it should be shown in those cases too? Perhaps with additional text to remind the user that the setting is enabled?
    • Prevent non-pool ghost transactions getting added to the TX table.
    • Fix USD values in token input components from being bound to pools instead of tokens - they either don't show up or don't change when switching to a non-existent pool, which results in wildly incorrect USD token values.
    • Something else?

Link the related issue

Closes #0000

Checklist before requesting a review

  • Is this PR ready for merge? (Please convert to a draft PR otherwise)
  • I have performed a self-review of my code.
  • Did I request feedback from a team member prior to the merge?
  • Does my code following the style guide at docs/CODING-STYLE.md?

Instructions for Reviewers

Functionalities or workflows that should specifically be tested.

  1. Swap different tokens in different ways. Try small amounts and/or weird pairs - pairs with high liquidity will most likely be executed as a direct swap.

Environmental conditions that may result in expected but differential behavior.

  1. Swap settings (slippage, surplus, direct swaps only).
  2. Swap direction (fixed input or fixed output).
  3. Chain (since multihop swap support depends on a new view-only contract that currently only exists on Scroll, and the new swap class should be behaving identically to the old one on chains without that contract).

If relevant, list additional work to complete pre-merge (delete logging, code abstraction, etc)

Copy link

netlify bot commented Dec 16, 2024

Deploy Preview for plume-ambient-finance failed.

Name Link
🔨 Latest commit 1924bab
🔍 Latest deploy log https://app.netlify.com/sites/plume-ambient-finance/deploys/6761f47eb862d40008160dd6

Copy link

netlify bot commented Dec 16, 2024

Deploy Preview for dev-ambi failed.

Name Link
🔨 Latest commit 1924bab
🔍 Latest deploy log https://app.netlify.com/sites/dev-ambi/deploys/6761f47ee19a0e0008e735b9

Copy link

netlify bot commented Dec 16, 2024

Deploy Preview for futa-finance failed.

Name Link
🔨 Latest commit 1924bab
🔍 Latest deploy log https://app.netlify.com/sites/futa-finance/deploys/6761f47e66a3630008f46fff

Copy link

netlify bot commented Dec 16, 2024

Deploy Preview for base-ambient-finance failed.

Name Link
🔨 Latest commit 1924bab
🔍 Latest deploy log https://app.netlify.com/sites/base-ambient-finance/deploys/6761f47f631edb00089c76e8

Copy link

netlify bot commented Dec 16, 2024

Deploy Preview for ambient-plume-mainnet failed.

Name Link
🔨 Latest commit 1924bab
🔍 Latest deploy log https://app.netlify.com/sites/ambient-plume-mainnet/deploys/6761f47f230dcb0008b88873

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant