You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
USDC zap is currently disabled on the frontend (PR #466) because the multi-hop swap reverts. The root cause is in ZapPlotLinkV2._executeV4MultiHopSwapExactIn — the SWAP_EXACT_IN action params are ABI-encoded differently from what the Universal Router expects.
ETH single-hop and HUNT (MCV2 bonding curve) routes work fine. Only the USDC→ETH→PLOT multi-hop path is broken.
The USDC→ETH→PLOT multi-hop swap reverts inside Universal Router's unlockCallback with empty revert data (1618 gas consumed). The SWAP_EXACT_IN action params encoding in _executeV4MultiHopSwapExactIn doesn't match what the deployed Router expects.
Fix approach
Compare with MintPad's ZapUniV4MCV2 (0xa2e7BcA51A84Ed635909a8E845d5f66602742A75) — find successful USDC multi-hop txs on Basescan and compare calldata encoding
Check if the USDC/ETH V4 pool exists with the configured params (fee=500, tickSpacing=10) on Base mainnet
Verify PathKey encoding order matches Universal Router V4 spec for multi-hop swaps
Fix _executeV4MultiHopSwapExactIn and _executeV4MultiHopSwapExactOut encoding
Redeploy ZapPlotLinkV2 to Base mainnet, verify on Sourcify
After contract fix
Update ZAP_PLOTLINK in lib/contracts/constants.ts with new address
Summary
USDC zap is currently disabled on the frontend (PR #466) because the multi-hop swap reverts. The root cause is in
ZapPlotLinkV2._executeV4MultiHopSwapExactIn— theSWAP_EXACT_INaction params are ABI-encoded differently from what the Universal Router expects.ETH single-hop and HUNT (MCV2 bonding curve) routes work fine. Only the USDC→ETH→PLOT multi-hop path is broken.
Root Cause (from #464 investigation)
The USDC→ETH→PLOT multi-hop swap reverts inside Universal Router's
unlockCallbackwith empty revert data (1618 gas consumed). TheSWAP_EXACT_INaction params encoding in_executeV4MultiHopSwapExactIndoesn't match what the deployed Router expects.Fix approach
0xa2e7BcA51A84Ed635909a8E845d5f66602742A75) — find successful USDC multi-hop txs on Basescan and compare calldata encoding_executeV4MultiHopSwapExactInand_executeV4MultiHopSwapExactOutencodingAfter contract fix
ZAP_PLOTLINKinlib/contracts/constants.tswith new addressSUPPORTED_ZAP_TOKENS(was removed in PR Disable USDC zap pending contract fix (#464) #466)Contract references
0x04f557F8D2806B34FC832a534c08DF514D4dfEeF0xa2e7BcA51A84Ed635909a8E845d5f66602742A75plotlink-contracts/src/ZapPlotLinkV2.sollines 463-5350x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913Acceptance Criteria
ZAP_PLOTLINKupdated in plotlink constantsSUPPORTED_ZAP_TOKENSBranch
task/466-usdc-multihop-fixin plotlink-contracts repo (+ plotlink for constants + re-enable USDC)