Track remaining MultiSwapper quoteOut and SwapSource regressions
Nobody has claimed this yet.
- Dominant language
- Cadence
- Stars
- 9
- Forks
- 3
- Avg merge
- 1h 45m
- Merged PRs (30d)
- 2
Description
Summary
Track the two remaining MultiSwapper regressions introduced by #158 that are intentionally not fixed in #167.
Remaining Regressions
-
swap(nil, ...)/swapBack(nil, ...)can become inconsistent withquoteOut(...).Example:
- caller provides
10 TokenA - selected inner capped route reports
quoteOut(10) = { inAmount: 4, outAmount: 4 } MultiSwapper._swap(...)still falls back toquoteOut(from.balance)and forwards the full10 TokenAvault to the selected inner swapper- strict inner swappers can reject the call because execution forwarded more input than
quote.inAmount
- caller provides
-
SwapSource.withdrawAvailable(maxAmount)can return more thanmaxAmount.Example:
- caller asks for
withdrawAvailable(maxAmount: 10) - selected route returns
quoteIn(10) = { inAmount: 10, outAmount: 11 } SwapSourceforwards that quote intoswap(...)- caller receives more than the requested maximum amount
- caller asks for
Notes
#167intentionally fixes only the partial-routequoteIn(...)tie-break regression.- This follow-up issue keeps the larger
quoteOut/execution-contract discussion and theSwapSourcemax-amount behavior together in one place.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by comparing the MultiSwapper regressions described here with issues #158 and #167, then trace the swap(nil, ...), swapBack(nil, ...), quoteOut(...), and SwapSource.withdrawAvailable(maxAmount) paths. Reproduce both examples and define completion as execution matching the quote and withdrawAvailable never returning more than maxAmount.
Written by the indexing model from the issue text.
Assessment
- Domain
- blockchain
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100