> For the complete documentation index, see [llms.txt](https://docs.familio.trade/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.familio.trade/developers/contracts-and-addresses.md).

# Contracts and addresses

Solidity on Robinhood Chain (`packages/contracts`). Each family is an **EIP-1167 clone** of one `FamilyVault` implementation. `FamilyFactory` deploys them and holds the router allow-list, token deny-list, protocol fee, treasury, and the two emergency switches.

{% hint style="info" %}
The address table below is kept up to date. A factory that opens a family in **one transaction** (clone + founding deposit) is the current source; if a new factory is deployed, this table is the place that changes. Always confirm the address on [familio.trade](https://familio.trade) and on Blockscout before sending funds.
{% endhint %}

## Addresses (Robinhood Chain, 4663)

| Contract                                                                                             | Address                                                                                                                                                                                                                                                                            |
| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| FamilyFactory (current, vault v2: crew leaves last, 48h co-pilot notice)                             | [`0x6716e9df55Bdf2572Ec8C5E58Ca7b75b10dDEB12`](https://robinhoodchain.blockscout.com/address/0x6716e9df55Bdf2572Ec8C5E58Ca7b75b10dDEB12)                                                                                                                                           |
| FamilyVault implementation (v2)                                                                      | [`0x80897D73649b5A5ce3cf0604bD553Cb9ACB6C68F`](https://robinhoodchain.blockscout.com/address/0x80897D73649b5A5ce3cf0604bD553Cb9ACB6C68F)                                                                                                                                           |
| FairExitFactory (fair exit pools; routers and treasury from the current FamilyFactory, fixed 1% fee) | [`0x52fbFDE19F129CE124385F60CbE7eB4344b0828A`](https://robinhoodchain.blockscout.com/address/0x52fbFDE19F129CE124385F60CbE7eB4344b0828A)                                                                                                                                           |
| FairExit implementation                                                                              | [`0xf2ECbF83775B88B9c4D434D8536731bf48132A6C`](https://robinhoodchain.blockscout.com/address/0xf2ECbF83775B88B9c4D434D8536731bf48132A6C)                                                                                                                                           |
| FamilyFactory (legacy, still indexed; vault v1 with session keys)                                    | [`0xeCdDB2c93157CcE1fBf4610616f20EF976E7C239`](https://robinhoodchain.blockscout.com/address/0xeCdDB2c93157CcE1fBf4610616f20EF976E7C239)                                                                                                                                           |
| FamilyVault implementation (legacy)                                                                  | [`0x0324F035F86294DBb81e63d63866fe37Fc095E3c`](https://robinhoodchain.blockscout.com/address/0x0324F035F86294DBb81e63d63866fe37Fc095E3c)                                                                                                                                           |
| FamilyFactory (legacy, still indexed; no session keys)                                               | [`0x31aDBeff4fd3AAe56441fafF1c7266b2464C277e`](https://robinhoodchain.blockscout.com/address/0x31aDBeff4fd3AAe56441fafF1c7266b2464C277e)                                                                                                                                           |
| FamilyVault implementation (legacy)                                                                  | [`0x81Ef0677454d07958CC522c5C402D1864b83E937`](https://robinhoodchain.blockscout.com/address/0x81Ef0677454d07958CC522c5C402D1864b83E937)                                                                                                                                           |
| FamilyFactory (legacy, still indexed)                                                                | [`0x943d59543d8b0546C2e767D171390175EFc18aCd`](https://robinhoodchain.blockscout.com/address/0x943d59543d8b0546C2e767D171390175EFc18aCd)                                                                                                                                           |
| FamilyVault implementation (legacy)                                                                  | [`0x0b96e486F2936b4781dffC11f1619e6600315372`](https://robinhoodchain.blockscout.com/address/0x0b96e486F2936b4781dffC11f1619e6600315372)                                                                                                                                           |
| FamilyFactory (legacy, still indexed)                                                                | [`0xcf3644a93e503Fe8B3e80dEcff183877D91f6316`](https://robinhoodchain.blockscout.com/address/0xcf3644a93e503Fe8B3e80dEcff183877D91f6316)                                                                                                                                           |
| FamilyVault implementation (legacy)                                                                  | [`0x27C9FDE67a4E334e0143fFf3c160c4B510E27374`](https://robinhoodchain.blockscout.com/address/0x27C9FDE67a4E334e0143fFf3c160c4B510E27374)                                                                                                                                           |
| FamilyFactory (legacy, still indexed)                                                                | [`0x3d890C1961bFDbd15462d73af049f07CF9A54724`](https://robinhoodchain.blockscout.com/address/0x3d890C1961bFDbd15462d73af049f07CF9A54724)                                                                                                                                           |
| FamilyVault implementation (legacy)                                                                  | [`0xf4D66532c9EB88fd20123A4fb876750F85823b22`](https://robinhoodchain.blockscout.com/address/0xf4D66532c9EB88fd20123A4fb876750F85823b22)                                                                                                                                           |
| PonsAdapter (v2: ETH launches + Stock-Token-paired launches via Uniswap v3)                          | [`0x66481af8a19DfAa82D665F9937Bfb922517c3F48`](https://robinhoodchain.blockscout.com/address/0x66481af8a19DfAa82D665F9937Bfb922517c3F48)                                                                                                                                           |
| PonsAdapter (v1, ETH launches only; still allow-listed)                                              | [`0x797616081E35a337206E1f057017EE1f33AB5806`](https://robinhoodchain.blockscout.com/address/0x797616081E35a337206E1f057017EE1f33AB5806)                                                                                                                                           |
| PonsAdapter (legacy, wired to the legacy factories)                                                  | [`0xEaC6C539662250e38a920B45beCdd1eaAa3f3e02`](https://robinhoodchain.blockscout.com/address/0xEaC6C539662250e38a920B45beCdd1eaAa3f3e02), [`0x5D28bE6a44BF72232B0593D438777Da17E029D3e`](https://robinhoodchain.blockscout.com/address/0x5D28bE6a44BF72232B0593D438777Da17E029D3e) |
| WETH                                                                                                 | [`0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73`](https://robinhoodchain.blockscout.com/address/0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73)                                                                                                                                           |
| USDG                                                                                                 | [`0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168`](https://robinhoodchain.blockscout.com/address/0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168)                                                                                                                                           |
| Permit2                                                                                              | [`0x000000000022D473030F116dDEE9F6B43aC78BA3`](https://robinhoodchain.blockscout.com/address/0x000000000022D473030F116dDEE9F6B43aC78BA3)                                                                                                                                           |
| Uniswap Universal Router                                                                             | [`0x8876789976decbfcbbbe364623c63652db8c0904`](https://robinhoodchain.blockscout.com/address/0x8876789976decbfcbbbe364623c63652db8c0904)                                                                                                                                           |
| Uniswap v3 SwapRouter02                                                                              | [`0xCaf681a66D020601342297493863E78C959E5cb2`](https://robinhoodchain.blockscout.com/address/0xCaf681a66D020601342297493863E78C959E5cb2)                                                                                                                                           |
| Uniswap v3 QuoterV2                                                                                  | [`0x33e885eD0Ec9bF04EcfB19341582aADCb4c8A9E7`](https://robinhoodchain.blockscout.com/address/0x33e885eD0Ec9bF04EcfB19341582aADCb4c8A9E7)                                                                                                                                           |
| Uniswap v4 PoolManager                                                                               | [`0x8366a39CC670B4001A1121B8F6A443A643e40951`](https://robinhoodchain.blockscout.com/address/0x8366a39CC670B4001A1121B8F6A443A643e40951)                                                                                                                                           |
| Uniswap v4 Quoter                                                                                    | [`0x8Dc178eFB8111BB0973Dd9d722ebeFF267c98F94`](https://robinhoodchain.blockscout.com/address/0x8Dc178eFB8111BB0973Dd9d722ebeFF267c98F94)                                                                                                                                           |
| familio dev wallet ($FAM creator on Pons; receives the token's trading fees)                         | [`0xAca033f29D99B8d994dfa58cfAEd0737b4829A99`](https://robinhoodchain.blockscout.com/address/0xAca033f29D99B8d994dfa58cfAEd0737b4829A99)                                                                                                                                           |
| Pons v2 launch factory                                                                               | [`0x7eD598BcEf8bd9Edd8C97A195C6d13f40801EC7e`](https://robinhoodchain.blockscout.com/address/0x7eD598BcEf8bd9Edd8C97A195C6d13f40801EC7e)                                                                                                                                           |
| Pons v2 meme hook                                                                                    | [`0xE5e702641Ea86F4ae6cC3cDaeD2B886f976Be044`](https://robinhoodchain.blockscout.com/address/0xE5e702641Ea86F4ae6cC3cDaeD2B886f976Be044)                                                                                                                                           |

RPC: `https://rpc.mainnet.chain.robinhood.com`. Explorer: [robinhoodchain.blockscout.com](https://robinhoodchain.blockscout.com). Testnet is chain id 46630.

Factory constants on the live deployment: `protocolFeeBps = 100` (1%), `createFee = 0`, `MAX_PROTOCOL_FEE_BPS = 500`, `MAX_EXIT_PAUSE = 72 hours`. Vault constants: `MAX_PERF_FEE_BPS = 3000`, `MAX_HELD_TOKENS = 30`, `MIN_SUPPLY_FOR_JOIN = 1e9`.

Pons' `PonsV2LaunchAndBuy` (`0xe33E9E479dF8802cb0866d5d05258bEc4cF62948`) is a **launch helper, not a swap router**. Vaults do not call it.

## Verification

Contracts are source-verified on [Sourcify](https://sourcify.dev/#/lookup/0x6716e9df55Bdf2572Ec8C5E58Ca7b75b10dDEB12) as exact matches (byte-for-byte, metadata included); Blockscout verification is submitted from the same Foundry build when its API accepts it. On a family page, the vault address is the clone; reading a clone uses the implementation ABI. Confirm `factory()` on the clone returns the FamilyFactory above, and `isFamily(vault)` on the factory is true.

## How to read a vault on the explorer

1. Open the vault address from the family page.
2. Check `head`, `quote`, `joinMode`, `perfFeeBps`, `minHeadShareBps`, `crewLocked`, `heldTokens()`, `totalShares`, `freeQuote()`.
3. Events: `Joined`, `Left`, `Swapped`, `Distributed`, `Claimed`, `RoleSet`, `SessionKeySet`, `CrewLocked`.
4. `previewSlice(yourShares)` shows what an exit would pay today (view).
5. Do not send tokens to the vault to "join". Use `join` / `joinETH` (or the app). Random ERC-20s become strays.

Clones are `CREATE2`'d with salt `keccak256(creator, nonce)`. `predictFamily(creator, nonce)` returns the address before you send `createFamily`.

## Internal name: `driver`

The product word is **co-pilot**. The contract, ABI and `RoleSet` payload still use **`driver`**. You will see `isDriver`, `setDriver`, `InitParams.drivers`, and `RoleSet(..., "driver", ...)`. That is the same role. Docs and the app never call it driver anywhere else.

## `FamilyFactory` — what it does

Deploys clones, records `isFamily`, allow-lists routers (`usesPermit2` flag), deny-lists tokens, allow-lists quote assets (WETH by default, USDG if enabled), holds `treasury` / `protocolFeeBps` / `createFee`, and the two pauses.

`createFamily(InitParams, founding)` — in source, this is **one call, one wallet confirmation**: clone, `initialize` (head allow-listed, co-pilots granted as on-chain `driver` roles, optional crew lock, `metaHash` stamped), optional `found` (ETH as `msg.value` or an ERC-20 pull), create fee to treasury. No separate metadata signatures. Passing `founding = 0` opens an empty pool.

Owner (Ownable2Step): `setRouter`, `setTokenBlocked` / `setTokensBlocked`, `setQuoteAllowed`, `setTreasury`, `setProtocolFee`, `setCreateFee`, `setTradingPaused`, `pauseExits`. Ownership transfer is two-step (`transferOwnership` + `acceptOwnership`).

## `PonsAdapter` — what it does

Stateless adapter. `curveBuy` / `curveSell` on a factory-recognised ETH curve; `swapV4` via PoolManager `unlock` → `swap` → `settle` / `take`. `unlockCallback` only accepts the PoolManager. Refunds and native output are pushed back as WETH.

`buyVia(token, path, wethIn, minTokensOut)` / `sellVia(token, tokensIn, path, minWethOut)` handle launches quoted in an ERC-20 pair token (Stock Tokens): a Uniswap v3 `exactInput` along `path` between WETH and the pair token (SwapRouter02), then the launch's curve or v4 pool with the pair token. `path` must start at WETH and end at the pair token the Pons factory has on record (`BadPath` otherwise); intermediate hops (USDG) and fee tiers are the caller's choice. Pool keys use sorted currencies exactly as the Pons factory builds them. A clamped curve buy's pair-token refund is swapped back to WETH along the reversed path; the adapter never returns the pair token to the vault. The direct entry points stay ETH-only (`UnsupportedQuote` for a pair-token launch).

## `FamilyVault` — external functions

Grouped by who can call them. Views can be called by anyone.

### Anyone (views)

| Function                                                                                                                                                                                          | One line                                                                                                                   |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| `balanceOf` / `shares`                                                                                                                                                                            | Member's shares.                                                                                                           |
| `totalSupply` / `totalShares`                                                                                                                                                                     | Share supply.                                                                                                              |
| `decimals`                                                                                                                                                                                        | 18.                                                                                                                        |
| `heldTokens`                                                                                                                                                                                      | Tracked bags, in index order (`leaveWith` mask bits).                                                                      |
| `freeQuote`                                                                                                                                                                                       | Quote belonging to the pool (balance minus head fees, escrow, unclaimed payouts).                                          |
| `claimable`                                                                                                                                                                                       | Quote a member can claim from the accumulator.                                                                             |
| `previewSlice`                                                                                                                                                                                    | Quote + per-bag amounts `shareAmount` would receive today.                                                                 |
| `version`                                                                                                                                                                                         | v2 only: `2`. First-factory vaults have no such function (a reverting call means v1).                                      |
| `isDriver`                                                                                                                                                                                        | Whether the address holds the wheel now (v2: false while on notice, and never if the crew locked during their notice).     |
| `pendingDriverFrom`                                                                                                                                                                               | v2: unix time a named co-pilot takes the wheel; `0` if none pending.                                                       |
| `isBound` / `boundUntil`                                                                                                                                                                          | v2: whether the address is held to the crew exit rule (head, driver, or within `CREW_TAIL` of letting go), and until when. |
| `domainSeparator` / `inviteDigest`                                                                                                                                                                | EIP-712 helpers for invite codes.                                                                                          |
| `head`, `quote`, `joinMode`, caps, locks, `crewLocked`, `isDriver`, `isMod`, `sessionOwner`, `allowlist`, `ignored`, `costBasis`, `lossCarry`, `headFeesAccrued`, `autoSend`, `pendingDeposit`, … | Public state.                                                                                                              |

### Members and joiners

| Function                         | One line                                                          |
| -------------------------------- | ----------------------------------------------------------------- |
| `join`                           | Join or top up with quote already approved to the vault.          |
| `joinETH`                        | Same, wrapping `msg.value` (WETH families only).                  |
| `requestJoin` / `requestJoinETH` | Approval-mode escrow.                                             |
| `cancelRequest`                  | Refund your own escrow.                                           |
| `completeJoin`                   | Finish an approved request with mirror legs.                      |
| `leave`                          | Burn shares, take the in-kind slice.                              |
| `leaveWith`                      | `leave` plus skip-mask and/or untracked `extra` tokens.           |
| `claim`                          | Pull your payout.                                                 |
| `claimFor`                       | Push a payout to a member who enabled auto-send. Anyone may call. |
| `setAutoSend`                    | Opt in or out of keeper pushes.                                   |

### Head or co-pilot (`onlyTrader`)

| Function        | One line                                                                                                                        |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `swap`          | Buy or sell through an allow-listed router; also callable by a trader's session key (attributed to owner); `noteHash` optional. |
| `setSessionKey` | Arm or revoke a swap-only session key that trades as you; not subject to the crew lock.                                         |
| `distribute`    | Move free quote into the per-share payout accumulator.                                                                          |
| `setLocks`      | Joins lock and/or trading lock.                                                                                                 |
| `pinNote`       | Set `pinnedNote`.                                                                                                               |

### Head or mod (`onlyMod`)

| Function       | One line                                  |
| -------------- | ----------------------------------------- |
| `approveJoin`  | Mark an escrowed applicant approved.      |
| `declineJoin`  | Refund escrow.                            |
| `setAllowlist` | Wave a wallet in regardless of door mode. |

### Head only

| Function        | One line                                                                                                                                                                                                          |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `evict`         | Full in-kind exit of that member; nothing withheld. v2: a bound crew member cannot be evicted in kind while a live bag exists.                                                                                    |
| `transferHead`  | New head; if crew-locked, must already be a co-pilot. v2: the outgoing head is bound by the crew exit rule for `CREW_TAIL` (7 days).                                                                              |
| `setDriver`     | Grant or revoke co-pilot. If crew-locked, cannot grant a new address. v2 open crew: a new name lands after `CREW_NOTICE` (48h), `DriverProposed` is emitted; removal is immediate and binds them for `CREW_TAIL`. |
| `lockCrew`      | One-way freeze of who can trade. v2: a co-pilot still on notice never lands.                                                                                                                                      |
| `setMod`        | Grant or revoke mod.                                                                                                                                                                                              |
| `setJoinMode`   | Open / approval / invite / holder-gated (+ gate token).                                                                                                                                                           |
| `setCaps`       | Members cap, contribution cap, `maxTradeBps`, `minHeadShareBps`.                                                                                                                                                  |
| `setPerfFee`    | Lower the performance fee; cannot raise.                                                                                                                                                                          |
| `setIgnored`    | Exclude a bag from the join ratio (still paid on exit).                                                                                                                                                           |
| `trackToken`    | Start tracking an airdropped ERC-20 that already sits on the vault.                                                                                                                                               |
| `setMeta`       | Update `metaHash` (off-chain identity commitment).                                                                                                                                                                |
| `claimHeadFees` | Withdraw accrued performance fees to `to`.                                                                                                                                                                        |

### Factory only

| Function     | One line                                                                                    |
| ------------ | ------------------------------------------------------------------------------------------- |
| `initialize` | One-shot clone setup. Allow-lists the head. Optionally grants co-pilots and locks the crew. |
| `found`      | First deposit, shares to the head. Only the factory, only while `totalShares == 0`.         |

`receive()` wraps native ETH from anyone except the quote token (WETH unwraps return immediately).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.familio.trade/developers/contracts-and-addresses.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
