fix: the swap decoder reads who the router's transfer commands pay (closes #599)
TRANSFER, PAY_PORTION, PAY_PORTION_FULL_PRECISION (0x07, on the routers with the 0x7f mask), PERMIT2_TRANSFER_FROM, ACROSS_V4_DEPOSIT_V3 (0x40) and V4 TAKE_PORTION were payouts the decoder did not read, so a swap using one read Min. paid out with an unknown payee. Each recipient is now read: the sender, the router, a hop into the next V2 pair, or another address, which is named. Paying all the router holds of a token pays it out as SWEEP does. A PERMIT2_TRANSFER_FROM into the router is shown with the amount it moves, and a bridge deposit names the bridge and each of its recipient and depositor that is not the sender; either keeps the minimum from reading received. Model: opus-5-5
This commit is contained in:
+22
-1
@@ -954,7 +954,28 @@ describe("uniswap decoder", () => {
|
||||
router: "UniversalRouterV2_1_2",
|
||||
address: ROUTER_V2_1_2_ADDR,
|
||||
command: "0x40",
|
||||
steps: "Command 0x40",
|
||||
steps: "Across Bridge Deposit",
|
||||
},
|
||||
// Only the routers with the 0x7f mask have 0x07, as
|
||||
// PAY_PORTION_FULL_PRECISION; the others revert on it
|
||||
// (https://git.eeqj.de/sneak/AutistMask/issues/599).
|
||||
{
|
||||
router: "UniversalRouterV1",
|
||||
address: ROUTER_V1_ADDR,
|
||||
command: "0x07",
|
||||
steps: "Command 0x07",
|
||||
},
|
||||
{
|
||||
router: "UniversalRouterV2",
|
||||
address: ROUTER_ADDR,
|
||||
command: "0x07",
|
||||
steps: "Command 0x07",
|
||||
},
|
||||
{
|
||||
router: "UniversalRouterV2_1_2",
|
||||
address: ROUTER_V2_1_2_ADDR,
|
||||
command: "0x07",
|
||||
steps: "Pay Portion (Full Precision)",
|
||||
},
|
||||
])(
|
||||
"command $command sent to $router is listed as $steps",
|
||||
|
||||
Reference in New Issue
Block a user