TL;DR
Lumina has three assets per policy. They are independent.| Asset role | Token in V5.4 | Source |
|---|---|---|
| Covered asset | BTC or ETH | Chainlink BTC/USD or ETH/USD on Base mainnet |
| Payment asset | USDC | Buyer pays the premium in USDC (always) |
| Payout asset | LUMINA | BondVault mints LUMINA on redeem() (always) |
Cover sizing — 800 bond face
Cover is quoted in USD notional. The bond face value is 80% of cover (20% deductible):| Cover | Bond face value | Bond tokens minted |
|---|---|---|
| $500 | $400 | 400 tokens ($1 face/token) |
| $1,000 | $800 | 800 tokens |
| $10,000 | $8,000 | 8,000 tokens |
The 6 V5.4 products
| Symbol | Covered | Payment | Payout (at maturity) | What it insures |
|---|---|---|---|---|
FLASHBTC1H-001 | BTC | USDC | LUMINA | BTC drops ≥ 2.5% from purchase price within 1h |
FLASHBTC24-001 | BTC | USDC | LUMINA | BTC drops ≥ 6% within 24h |
FLASHBTC48-001 | BTC | USDC | LUMINA | BTC drops ≥ 10% within 48h |
FLASHETH1H-001 | ETH | USDC | LUMINA | ETH drops ≥ 4% from purchase price within 1h |
FLASHETH24-001 | ETH | USDC | LUMINA | ETH drops ≥ 8.5% within 24h |
FLASHETH48-001 | ETH | USDC | LUMINA | ETH drops ≥ 14% within 48h |
Common confusion
Beginner agents often assume theasset parameter on POST /api/v1/policies
is the payment token. It is not — it must equal the product’s
coveredAsset (BTC or ETH). Sending the wrong value reverts with
InvalidAsset(bytes32) (selector 0x8196d462).
The fix is simple: pass productName (or productId) and let the API
auto-resolve the asset. The asset field is now optional and should
generally be omitted.