Contract Addresses
These are the only addresses Poolix calls. They are constants in config/chains.ts rather than environment variables, because a mistyped address in an env file is a silent misconfiguration that would route funds to the wrong contract.
Robinhood Chain
Chain 4663SelectedL2 Multicall0x2cAC2D899eCC914d704FeaAE33ac1bF36277DaD1
UniswapV2Factory0x8bcEaA40B9AcdfAedF85AdF4FF01F5Ad6517937f
UniswapV2Router020x89e5DB8B5aA49aA85AC63f691524311AEB649eba
How these were checked
The Uniswap addresses come from Uniswap’s official deployments list and were then confirmed against the chain. npm run verify:chain re-runs every assertion:
- router.factory() returns the factory address above.
- router.WETH() returns the WETH address above.
- Both contracts are verified source on Blockscout, under their canonical names.
- Pair addresses derived offchain from the canonical init code hash match factory.getPair for live pairs.
- router.getAmountsOut matches Poolix’s own v2 arithmetic exactly across sampled pools, confirming the deployed 0.30% fee.
The L2 Multicall is a Multicall2, not a Multicall3
It exposes
aggregate and tryAggregate but not aggregate3, so it is deliberately not wired into viem’s multicall3 slot, where it would revert. Poolix batches reads at the JSON-RPC layer instead.Check addresses before you trust them
Router lookalikes are documented on this chain, including modified builds whose calldata differs from stock Uniswap. Compare anything you are about to approve against the addresses above and against the explorer, not against a link someone sent you.