Trading
Pools live in the canonical Uniswap v4 PoolManager with a custom fee hook. Wallets cannot call the PoolManager directly; trade through the router.The PoolKey
Three things every integration must handle
Launching programmatically
- Base - AdvancedLauncherV6
- Robinhood Chain - RhLauncher
launchDirect and launchGated take the same fields with startSqrtPriceX96 in place of marketCapUsd.launchGated is how a creator-chosen pair launches: usdPerPair(token, route) verifies the route hop by hop and prices the opening. The API’s gatedroute discovers a route for any address. The basket menu: basket-assets.The basket controller seat
- Base - HolderRewards
- Robinhood Chain - RhHolderRewards
rewardTracker() or the API’s
rewardsDistributor.
Readable state:
basketController, basketRenounced, basketSize(),
basketSlot(i) (token, weight, holdings). Every call reverts once
renounced. Value in a replaced slot drains to holders on the same maths.
Watching the chain
AdvancedLaunched has two shapes, and backfilling the full history needs
both. V6, V7, B20 V6B and RhLauncher on Robinhood Chain and Arc emit the
split-tax shape above, topic0
0x370377cb17f063e0544347d821ef4fb78fb513351700977cb06c7e63715d1ef0. The
launchers before V6 (V2 to V5C and B20 V1) emit one taxBps in place of
buyTaxBps and sellTaxBps, topic0
0x508e31622f2b7886bd54a544c43d38ad441276dd8b24f0fb37e7c793869f6997. Match
on the launcher’s address as well as the topic: other projects emit launch
events with common names. The pool’s key is in the PoolManager’s Initialize
in the same transaction, with id equal to poolId.
Same events on all three chains - Arc runs the same launcher and hook code as Robinhood Chain - so one decoder serves every chain.
Decoding reverts
HopTooThin - not your fault
0xb5377e60. Nothing in the tuple fixes it -
retrying, lowering the buy or changing the cap all revert the same way.
Check the pair first: the API reports a refusing
feed, and the form blocks it. It reopens by itself when liquidity returns.

