Contracts
Where the code runs, and what this build is pointed at.
Addresses
| Contract | Address |
|---|---|
| Ride on Robinhood Chain (chain 4663) | 0xBb0cE13E5312A9FDf6ee70d5f583A4154e33df04 |
| Uniswap v4 PoolManager, Robinhood Chain | 0x8366a39CC670B4001A1121B8F6A443A643e40951 |
| Uniswap v4 StateView, Robinhood Chain | 0xF3334192D15450CdD385c8B70e03f9A6bD9E673b |
The Ride contract talks to the PoolManager directly: it is its own router, and the pool it trades on is named in each ride's key. Native ETH is currency zero in v4, which is where the long tail on Robinhood Chain actually trades, so every ride is on an ETH/coin pool and nothing is ever wrapped. StateView is the read-only lens a keeper uses for the price reference it passes to sync.
Source: contracts/src/Ride.sol in the repository, Solidity 0.8.28, OpenZeppelin Ownable2Step and ReentrancyGuard, Uniswap v4-core.
Pointing the app
Everything the app reads comes from the chain; there is no backend. A build is pointed with environment variables:
NEXT_PUBLIC_CHAIN_ID=4663
NEXT_PUBLIC_RPC_URL=https://rpc.mainnet.chain.robinhood.com
NEXT_PUBLIC_EXPLORER_URL=https://robinhoodchain.blockscout.com
NEXT_PUBLIC_RIDE=0x…
NEXT_PUBLIC_RIDE_DEPLOY_BLOCK=…
NEXT_PUBLIC_FOMO_PROFILE_URL=https://fomo.family/{handle}With none set, the app uses whatever pnpm setup:local wrote to the local manifest, chain id included. With a chain set and no NEXT_PUBLIC_RIDE, it says so on every page instead of reading the zero address.
Local chain
For development, anvil stands in for the chain and a mock PoolManager stands in for Uniswap.
pnpm chain # anvil on 127.0.0.1:8545 pnpm setup:local # mock pool manager, three coins, the Ride contract, four demo rides pnpm dev # next dev; the Dev wallet is anvil account #0