> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lumina-org.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Deployed contracts

> Live V5.4 addresses on Base mainnet. Always cross-check against /health.

These addresses are LIVE on **Base mainnet (chainId 8453)** since **2026-05-28**.
The single source of truth is [`/health`](https://lumina-api-production-ac85.up.railway.app/health)
and [`/products`](https://lumina-api-production-ac85.up.railway.app/products) —
never hardcode in production. The tables below are a snapshot of **V5.4** for reference.

```bash theme={null}
curl -s https://lumina-api-production-ac85.up.railway.app/health | jq .contracts
curl -s https://lumina-api-production-ac85.up.railway.app/products | jq '.products[].shield'
```

<Note>
  The protocol is in **BOOTSTRAP state** immediately post-mainnet-deploy: the
  CoverRouter is paused, awaiting the LBP to seed the LUMINA/USDC Uniswap V3
  pool. Once `capacityOracle.setPool(realPool)` is called and the multisig
  unpauses, policy purchases open. Most read endpoints work today; the write
  path (`purchasePolicy`) reverts with `ContractPaused` until unpause.
</Note>

## Core lifecycle (Base mainnet, chainId 8453)

| Contract                          | Address                                      | BaseScan                                                                        |
| --------------------------------- | -------------------------------------------- | ------------------------------------------------------------------------------- |
| LuminaTokenV2                     | `0xa35766202444d1d3D6d09Cf687B29D3C2632223C` | [view](https://basescan.org/address/0xa35766202444d1d3D6d09Cf687B29D3C2632223C) |
| BondVault                         | `0x1C50d05eEF138aAa9df22a001db4a75343a604E4` | [view](https://basescan.org/address/0x1C50d05eEF138aAa9df22a001db4a75343a604E4) |
| ClaimBond                         | `0x8203435Bc108FaBE1beB1fe40F66a7C8B42529F1` | [view](https://basescan.org/address/0x8203435Bc108FaBE1beB1fe40F66a7C8B42529F1) |
| CoverRouterV2                     | `0x7A49B31DC3540E037cdCEb95765eD46f6a515aa2` | [view](https://basescan.org/address/0x7A49B31DC3540E037cdCEb95765eD46f6a515aa2) |
| PolicyManagerV2                   | `0x8c20dfE07a5679b8DE8376361Bc9f63eD081C268` | [view](https://basescan.org/address/0x8c20dfE07a5679b8DE8376361Bc9f63eD081C268) |
| LuminaOracleV2                    | `0x191Be3f976CC7471aE2cc4001e92611BA0De1bef` | [view](https://basescan.org/address/0x191Be3f976CC7471aE2cc4001e92611BA0De1bef) |
| TWAPBurner                        | `0x99AA64806b680AbEB073Eb2171bda138a5D52b58` | [view](https://basescan.org/address/0x99AA64806b680AbEB073Eb2171bda138a5D52b58) |
| AdaptiveFeeDistributor            | `0xafD0928BFf5488D978F16b907e4Be84B15B95AB2` | [view](https://basescan.org/address/0xafD0928BFf5488D978F16b907e4Be84B15B95AB2) |
| BuybackEngine                     | `0x558F1675c10650A027e68BE33F8C5F290d8Ea307` | [view](https://basescan.org/address/0x558F1675c10650A027e68BE33F8C5F290d8Ea307) |
| LuminaBondMarketplace             | `0xfB3ec1B507DE8a7dB50691a26f872360F0EF71AB` | [view](https://basescan.org/address/0xfB3ec1B507DE8a7dB50691a26f872360F0EF71AB) |
| CapacityOracle                    | `0x4dFbb04b60d41A6B5693c7181d0a7Cc43d82e8E3` | [view](https://basescan.org/address/0x4dFbb04b60d41A6B5693c7181d0a7Cc43d82e8E3) |
| SolvencyOracle                    | `0x1F52f9AD24Aab2f70cb8837F37FF463BC1A795FD` | [view](https://basescan.org/address/0x1F52f9AD24Aab2f70cb8837F37FF463BC1A795FD) |
| ShieldKeeper                      | `0x8F43fB0C7F7F3A26D9631c1f430b08CF9C6879c3` | [view](https://basescan.org/address/0x8F43fB0C7F7F3A26D9631c1f430b08CF9C6879c3) |
| FounderVesting                    | `0xBC5C561a13BdC886A08F4bB901E198C1Fbd2803A` | [view](https://basescan.org/address/0xBC5C561a13BdC886A08F4bB901E198C1Fbd2803A) |
| TreasuryVesting                   | `0x745f4a9b77b5cCaF4B418ee1e5e1865Bfe088B75` | [view](https://basescan.org/address/0x745f4a9b77b5cCaF4B418ee1e5e1865Bfe088B75) |
| CEXLiquidityReserve               | `0x5f860688Bf6B7faf70c9447083AD74afdb839035` | [view](https://basescan.org/address/0x5f860688Bf6B7faf70c9447083AD74afdb839035) |
| MaintenanceReserve                | `0xFB294813e57b464ca5Db34ec45Dc9bAfab4EDEe6` | [view](https://basescan.org/address/0xFB294813e57b464ca5Db34ec45Dc9bAfab4EDEe6) |
| AerodromeAdapter                  | `0xc91D4110e9cF2Aad8BCfe7e3B3496BF5f3B4a4E4` | [view](https://basescan.org/address/0xc91D4110e9cF2Aad8BCfe7e3B3496BF5f3B4a4E4) |
| UniswapV3Adapter                  | `0x9ABe1C96C4Ac29c50f1BEE0CF9C10B95f3345059` | [view](https://basescan.org/address/0x9ABe1C96C4Ac29c50f1BEE0CF9C10B95f3345059) |
| **USDC** (Circle, canonical Base) | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` | [view](https://basescan.org/address/0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913) |

## V5.4 Flash Shield Adapters

`PolicyManagerV2.productShield(productId)` returns the **adapter** address —
this is what `purchasePolicy` resolves and where the SDK targets writes. See
[Adapters](/concepts/adapters) for why the adapter sits in front of each slim
shield.

| productName    | Adapter (PolicyManager target)               |
| -------------- | -------------------------------------------- |
| FLASHBTC1H-001 | `0xA6A82271c1f19CfB53BbD12D4396f25051f8f563` |
| FLASHBTC24-001 | `0xE62881cB4563b0508c698fA8a1efCc439c4c382D` |
| FLASHBTC48-001 | `0x8Ee1662604440F70fc52c87354Fc5D145940EB52` |
| FLASHETH1H-001 | `0xd51ae78C64C8fC93D80D58aA054c0B3AEfff3030` |
| FLASHETH24-001 | `0x4932996761e78899d70Aa672859E23090ccDBbB0` |
| FLASHETH48-001 | `0x9b4DFA1E1a5E79cF357470521c480710db229491` |

All adapters are deployed by `ShieldAdapterFactory` and are UUPS proxies.
To find the underlying drop-math shield contract per product, call
`adapter.shield()` on the adapter address. Both contracts (shield + adapter)
are verified on BaseScan.

## Multisig + relayer

| Role                                                                    | Address                                      |
| ----------------------------------------------------------------------- | -------------------------------------------- |
| MULTISIG (Gnosis Safe, admin of all UUPS proxies + AccessControl roles) | `0xa9aE612fD97f5e33B5829d16B6408ebD8422C783` |
| RELAYER (off-chain wallet that signs `purchasePolicyFor`)               | `0x06b1C5117591e2663bD83A66589165505f313c83` |
| ORACLE signer (EIP-712 price proofs for shields via LuminaOracleV2)     | `0xA0963323D6FA2b721E4D5bf7001C82B460f41456` |

```bash theme={null}
curl -s https://lumina-api-production-ac85.up.railway.app/health | jq .relayer
# { "address": "0x06b1C5117591e2663bD83A66589165505f313c83", "balanceWei": "…" }
```

## Retired in V5.3 / V5.4

* `FLASHBTC4H-001` — retired in Sprint T-30c (V5.3).
* `MICRODEPEG-001` — retired in Sprint T-30c (V5.3): no reliable Sepolia
  USDT Chainlink feed.
* `RATESHOCK-001` — deprecated; **not registered on mainnet**. Do not target it.

## Testnet sandbox

A **separate** Base Sepolia (chainId 84532) deployment powers the `/sandbox/*`
endpoints for zero-wallet integration testing. The sandbox uses a mock USDC
(`mUSDC` at `0xD944d8e5D8329994D83950872Ec210891d3Ab6AE`) and is purely for
exploration — it does NOT touch mainnet contracts. See
[Sandbox](/api-reference/sandbox) and [Sandbox-first agent flow](/agents/sandbox-first)
for details. For production usage, target the Base mainnet addresses above.
