You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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.
Swap settings (slippage, surplus, direct swaps only).
Swap direction (fixed input or fixed output).
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)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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:
SwapExtraInfoimprovements:Link the related issue
Closes #0000
Checklist before requesting a review
docs/CODING-STYLE.md?Instructions for Reviewers
Functionalities or workflows that should specifically be tested.
Environmental conditions that may result in expected but differential behavior.
If relevant, list additional work to complete pre-merge (delete logging, code abstraction, etc)