Flow
What the proof binds
selector: which router functionrouterArgs:amountIn,amountOutMin,path[4],pathLength,deadlinereceivingKeyCommitment:Poseidon2(rkHash, trapdoor)for the output ownerciphertextSwap[6]: header and owner fields of the output noteUNISWAP_V2_ROUTER: supplied by the contract as public input #1
amountOut, the output token and a zero value trapdoor.
Protections
Robinhood Chain requirement
UNISWAP_V2_ROUTER is set in the implementation constructor. Swaps go live only after a V2-compatible router, its WETH and usable liquidity are verified on Robinhood Chain.