fix: the approval screen names the address a swap's output is paid to (closes #594)
check / check (push) Waiting to run
e2e / e2e-chrome (push) Waiting to run
e2e / e2e-firefox (push) Waiting to run

The swap decoder read no recipient, so a swap paying its output to another
address still showed Min. received. It now reads the address that every swap
step, SWEEP, WRAP_ETH, UNWRAP_WETH, V4 TAKE and TAKE_ALL pays. The minimum
reads Min. received only when some step pays the sender, none pays another
address, none that may pay one went unread, and the output is not left in the
router: an output paid to the router needs a later SWEEP of that token, or
UNWRAP_WETH of WETH, paying it out. A payment to the V2 pair that the next V2
swap spends as already paid is a hop, not a payout; the pair is derived as the
router derives it. Otherwise it reads Min. paid out, with Paid to lines.

Model: opus-5-5
This commit is contained in:
2026-10-19 08:44:45 +00:00
committed by sneak
parent 5e4b8ff3b0
commit d7739547b3
11 changed files with 1449 additions and 112 deletions
+3
View File
@@ -68,10 +68,13 @@ function swapData(amountIn, amountOutMin) {
}
function swapDetail(amountIn, amountOutMin, label) {
// Sent by the address the swap pays, so the output is the user's.
const decoded = uniswap.decode(
swapData(amountIn, amountOutMin),
ROUTER,
"0x1",
{},
RECIPIENT,
);
return decoded.details.find((d) => d.label === label);
}