fix: a V3 exact-out swap step shows its tokens and amounts (closes #601)
A V3_SWAP_EXACT_OUT step was named in the Steps line but never read, so its tokens read as not named in the calldata and it gave no amounts. It is now read as a V2_SWAP_EXACT_OUT is: its path from the token it buys to the token it spends, as the router reads it, its amountInMax as the most it spends, its amountOut as the minimum, and its recipient as the address it pays. One the user pays for after the step that sets the input side joins the Amount total. A V3 path with bytes after its last whole hop, which the router ignores, leaves either V3 swap step unread. Also closes #637. Model: opus-5-5
This commit was merged in pull request #636.
This commit is contained in:
@@ -387,6 +387,18 @@ describe("each swap command's recipient", () => {
|
||||
data: (r) => execute(swapToWeth(r)),
|
||||
min: "1.0000 WETH",
|
||||
},
|
||||
{
|
||||
// Its input has V3_SWAP_EXACT_IN's layout, with amountOut and
|
||||
// amountInMax in place of amountIn and amountOutMin, and a path
|
||||
// that lists the token bought first.
|
||||
kind: "V3_SWAP_EXACT_OUT",
|
||||
data: (r) =>
|
||||
execute([
|
||||
0x01,
|
||||
v3SwapExactIn(r, ONE_WETH, USDT_2000, WETH, USDT)[1],
|
||||
]),
|
||||
min: "1.0000 WETH",
|
||||
},
|
||||
{
|
||||
kind: "V4_SWAP with TAKE",
|
||||
data: (r) =>
|
||||
@@ -2019,10 +2031,6 @@ describe("a payout that cannot be read is never said to be received", () => {
|
||||
),
|
||||
],
|
||||
},
|
||||
{
|
||||
kind: "V3_SWAP_EXACT_OUT",
|
||||
step: [0x01, swapToWeth(OTHER)[1]],
|
||||
},
|
||||
{
|
||||
kind: "EXECUTE_SUB_PLAN",
|
||||
step: [
|
||||
|
||||
Reference in New Issue
Block a user