fix: each PERMIT2_TRANSFER_FROM shows the amount it moves and where to (closes #611)
The swap decoder now gives three lines for every PERMIT2_TRANSFER_FROM it reads, after the swap's Amount line: the amount moved from the sender, the token with its address, and where it goes (the router, the V2 pair the next swap spends, the sender, or the address itself on a line of its own). Before, a move to another address or to the next V2 pair showed no amount at all. Who counts as paid, and so Min. received against Min. paid out, is unchanged. tokenMovedLine() moves to module level and takes its label as an argument. Model: opus-5-5
This commit is contained in:
@@ -2360,9 +2360,10 @@ view would leave a wallet one click from deletion.
|
||||
- Site origin (bold, scheme and port included) + "wants to send a
|
||||
transaction"
|
||||
- Decoded action (if calldata is recognized): action name, token details,
|
||||
amounts, steps, deadline, and unless a swap pays only the From address, a
|
||||
`Paid to` line for each other address it pays, or saying that a token
|
||||
stays in the router or who it pays is unknown (see Transaction Decoding)
|
||||
amounts, what each `PERMIT2_TRANSFER_FROM` moves and where to, steps,
|
||||
deadline, and unless a swap pays only the From address, a `Paid to` line
|
||||
for each other address it pays, or saying that a token stays in the router
|
||||
or who it pays is unknown (see Transaction Decoding)
|
||||
- From: color dot + full address + etherscan link
|
||||
- Contract: color dot + full address + etherscan link, token symbol label if
|
||||
known; for a contract creation, the same sentence as on WaitTx
|
||||
@@ -3112,14 +3113,22 @@ Currently supported:
|
||||
name); and one more reads `Unknown (could not be decoded)` when a step that
|
||||
may pay an address went unread. When no step pays anyone, a single line reads
|
||||
`Unknown (not named in the calldata)`. Wherever there is a `Paid to` line, the
|
||||
minimum reads `Min. paid out`. A step goes unread when its recipient does not
|
||||
decode as an address, or when it is a command the decoder does not read: every
|
||||
command other than `PERMIT2_PERMIT`, `PERMIT2_TRANSFER_FROM`,
|
||||
`V2_SWAP_EXACT_IN`, `V2_SWAP_EXACT_OUT`, `V3_SWAP_EXACT_IN`, `V4_SWAP`,
|
||||
`SWEEP`, `TRANSFER`, `PAY_PORTION`, `PAY_PORTION_FULL_PRECISION`,
|
||||
`ACROSS_V4_DEPOSIT_V3`, `WRAP_ETH`, `UNWRAP_WETH` and `BALANCE_CHECK_ERC20`
|
||||
(`V3_SWAP_EXACT_OUT`, `PERMIT2_TRANSFER_FROM_BATCH`, `EXECUTE_SUB_PLAN` and
|
||||
the NFT commands among them), or a type its release names no command for.
|
||||
minimum reads `Min. paid out`. After the `Amount` line (after `Token In` when
|
||||
there is none), each `PERMIT2_TRANSFER_FROM`, in step order, gives three
|
||||
lines: `Moved from the sender`, the amount it moves, for example
|
||||
`1000000.0000 USDT`; `Token moved`, giving the token's address as the
|
||||
`Token In` line does; and `Moved to`, which reads `The router` for a move into
|
||||
the router, `The V2 pair the next swap spends` for a hop, and `The sender` for
|
||||
`address(1)` on every router but `UniversalRouterV1`, and otherwise gives the
|
||||
address. These lines change neither the `Paid to` lines nor the minimum's
|
||||
label. A step goes unread when its recipient does not decode as an address, or
|
||||
when it is a command the decoder does not read: every command other than
|
||||
`PERMIT2_PERMIT`, `PERMIT2_TRANSFER_FROM`, `V2_SWAP_EXACT_IN`,
|
||||
`V2_SWAP_EXACT_OUT`, `V3_SWAP_EXACT_IN`, `V4_SWAP`, `SWEEP`, `TRANSFER`,
|
||||
`PAY_PORTION`, `PAY_PORTION_FULL_PRECISION`, `ACROSS_V4_DEPOSIT_V3`,
|
||||
`WRAP_ETH`, `UNWRAP_WETH` and `BALANCE_CHECK_ERC20` (`V3_SWAP_EXACT_OUT`,
|
||||
`PERMIT2_TRANSFER_FROM_BATCH`, `EXECUTE_SUB_PLAN` and the NFT commands among
|
||||
them), or a type its release names no command for.
|
||||
|
||||
### Non-Goals Forever
|
||||
|
||||
|
||||
Reference in New Issue
Block a user