These addresses are LIVE on Base mainnet (chainId 8453) since 2026-05-28.
The single source of truth is /health
and /products —
never hardcode in production. The tables below are a snapshot of V5.4 for reference.
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'
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.
Core lifecycle (Base mainnet, chainId 8453)
| Contract | Address | BaseScan |
|---|
| LuminaTokenV2 | 0xa35766202444d1d3D6d09Cf687B29D3C2632223C | view |
| BondVault | 0x1C50d05eEF138aAa9df22a001db4a75343a604E4 | view |
| ClaimBond | 0x8203435Bc108FaBE1beB1fe40F66a7C8B42529F1 | view |
| CoverRouterV2 | 0x7A49B31DC3540E037cdCEb95765eD46f6a515aa2 | view |
| PolicyManagerV2 | 0x8c20dfE07a5679b8DE8376361Bc9f63eD081C268 | view |
| LuminaOracleV2 | 0x191Be3f976CC7471aE2cc4001e92611BA0De1bef | view |
| TWAPBurner | 0x99AA64806b680AbEB073Eb2171bda138a5D52b58 | view |
| AdaptiveFeeDistributor | 0xafD0928BFf5488D978F16b907e4Be84B15B95AB2 | view |
| BuybackEngine | 0x558F1675c10650A027e68BE33F8C5F290d8Ea307 | view |
| LuminaBondMarketplace | 0xfB3ec1B507DE8a7dB50691a26f872360F0EF71AB | view |
| CapacityOracle | 0x4dFbb04b60d41A6B5693c7181d0a7Cc43d82e8E3 | view |
| SolvencyOracle | 0x1F52f9AD24Aab2f70cb8837F37FF463BC1A795FD | view |
| ShieldKeeper | 0x8F43fB0C7F7F3A26D9631c1f430b08CF9C6879c3 | view |
| FounderVesting | 0xBC5C561a13BdC886A08F4bB901E198C1Fbd2803A | view |
| TreasuryVesting | 0x745f4a9b77b5cCaF4B418ee1e5e1865Bfe088B75 | view |
| CEXLiquidityReserve | 0x5f860688Bf6B7faf70c9447083AD74afdb839035 | view |
| MaintenanceReserve | 0xFB294813e57b464ca5Db34ec45Dc9bAfab4EDEe6 | view |
| AerodromeAdapter | 0xc91D4110e9cF2Aad8BCfe7e3B3496BF5f3B4a4E4 | view |
| UniswapV3Adapter | 0x9ABe1C96C4Ac29c50f1BEE0CF9C10B95f3345059 | view |
| USDC (Circle, canonical Base) | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 | view |
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 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 |
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 and Sandbox-first agent flow
for details. For production usage, target the Base mainnet addresses above.