LUMINA.

Seguros paramétricos on-chain para agentes de IA autónomos y humanos. Las primas queman $LUMINA. Los disparos generan ClaimBonds cupón-cero. Liquidados por oráculos de grado Chainlink.

Whitepaper · Español · v5.3 · 22-05-2026
Red: Base Sepolia (chainId 84532) · Mainnet pendiente
github.com/org-lumina
6 Flash Shields activos Suministro fijo 100M Oráculo Chainlink Código abierto

Índice

  1. 01Resumen Ejecutivo
  2. 02Introducción
  3. 03Arquitectura del Protocolo
  4. 04Productos de Seguro — los 6 Flash Shields
  5. 05Modelo de Precios y Primas
  6. 06BondVault, ClaimBond y Vencimiento
  7. 07Oráculo y Verificación
  8. 08Tokenomics
  9. 09Distribución Adaptativa de Quema
  10. 10Motor de Quema y Flujo Deflacionario
  11. 11Marketplace Secundario
  12. 12Modelo de Seguridad
  13. 13Para Agentes de IA
  14. 14Roadmap
  15. 15Riesgos y Aviso Legal
  16. 16Marco Legal
  17. AApéndice A — Direcciones Desplegadas
  18. BApéndice B — Glosario
  19. CApéndice C — Referencias

1. Resumen Ejecutivo

Lumina Protocol es un sistema de seguros paramétricos on-chain desplegado sobre Base. Paga automáticamente cuando un oráculo confirma un evento medible —una caída de precio, una pérdida de paridad de un stablecoin, un alza sostenida de tasas de préstamo— sin peritos, sin votaciones y sin intervención humana.

El protocolo se construye sobre cuatro primitivas:

La arquitectura actual está plenamente operativa en Base Sepolia: seis Flash Shields activos, las primas fluyen al motor de quema, el marketplace está abierto (3% de fee burn — 1.5% vendedor + 1.5% comprador — settlement en USDC), el oráculo Chainlink (BTC/USD + ETH/USD) alimenta los shields a través del bridge UUPS FlashShieldAdapter, y un endpoint de onboarding self-service permite a los agentes generar API keys con una sola firma de wallet.

Este whitepaper documenta lo que está desplegado al día de hoy en V5.3. Las afirmaciones prospectivas se confinan a la Sección 14 (Roadmap) y la Sección 15 (Riesgos). Cada cifra, dirección de contrato y firma de función está fundada en el código fuente del protocolo y en el endpoint en vivo /health de la API productiva.

2. Introducción

2.1 El problema: DeFi sin protección para agentes autónomos

Las finanzas descentralizadas han madurado hacia una economía programable donde los bots y agentes de IA ejecutan ya la mayoría del volumen on-chain. Pueden prestar, tomar prestado, hacer swaps, cubrirse y rebalancear, pero no pueden asegurarse contra los pocos eventos que liquidan estrategias enteras en un solo bloque: desplomes flash, pérdidas de paridad de stablecoins, picos de tasa que fuerzan liquidaciones.

Los seguros cripto existentes —Nexus Mutual, InsurAce, Sherlock— se estructuran sobre siniestros discrecionales: se reporta el evento, un comité vota, el pago se emite (o se deniega) días o semanas después. Eso es fundamentalmente incompatible con agentes autónomos que requieren una respuesta determinística y de menos de un minuto.

2.2 Lo que hace Lumina de forma distinta

Lumina es paramétrico: cada póliza especifica una condición objetiva de disparo (por ejemplo, "BTC cae ≥ 5% en cualquier ventana móvil de 1 hora"). Cuando un oráculo confirma la condición, el pago se dispara automáticamente dentro de la misma transacción. No hay formulario de siniestro, no hay comité, no hay demora, no existe la posibilidad de denegación subjetiva.

Lumina también es agent-first. La API expone un patrón de relayer (POST /api/v1/policies) en el cual el protocolo paga el gas y el agente solo necesita un encabezado x-api-key. Mantener 24 archivos de skill individuales que estandarizan las operaciones más frecuentes permite a un agente integrarse de extremo a extremo con Lumina en menos de una hora.

3. Arquitectura del Protocolo

3.1 Mapa de componentes

Doce contratos inteligentes colaboran para conformar el protocolo en vivo. Se agrupan en cinco áreas:

ÁreaContratosFunción
TokenLuminaTokenV2 · FounderVesting · TreasuryVestingERC-20 de suministro fijo, lock del fundador con compuertas AltSeason, drip de tesorería
BonosBondVault · ClaimBondReserva única de 70M; bonos cupón-cero ERC-1155, valor nominal de USD 1, vencimiento a 730 días
NúcleoCoverRouterV2 · PolicyManagerV2 · TWAPBurner · AdaptiveFeeDistributorCompra / redención / cancelación; matemática de primas; enruta el 100% de las primas a la quema
ProductosBaseFlashShield + 6 shields Flash tras FlashShieldAdapterUn contrato por ventana de disparo BTC/ETH; proxies UUPS; el adapter expone la superficie legacy IShieldV2 al core
MarketplaceLuminaBondMarketplace · BuybackEngineTrading secundario de ClaimBonds; protección anti-MEV por commit-reveal
Oráculos y automatizaciónLuminaOracleV2 · CapacityOracle · SolvencyOracle · ShieldKeeperPruebas firmadas EIP-712; TWAP del precio de LUMINA; monitoreo del ratio de solvencia (bandas 200/100/70%); automatización de disparos

3.2 Flujo de compra de póliza

El flujo de extremo a extremo desde la perspectiva del comprador consta de cuatro pasos:

  1. El comprador consulta CoverRouterV2.quotePremium(productId, coverageAmount), que devuelve la prima esperada y el pago.
  2. El comprador aprueba al router para gastar la prima en USDC.
  3. El comprador llama a CoverRouterV2.purchasePolicy(productId, coverageAmount, asset) (o a purchasePolicyFor(...) a través del relayer).
  4. El router cobra la prima en USDC, la reenvía en su totalidad al TWAPBurner y luego invoca PolicyManagerV2.recordPolicy(...) para registrar la póliza. Se emite PolicyCreated.

3.3 Flujo de disparo y pago

Los disparos son permisionless: cualquiera puede enviar una prueba válida del oráculo.

  1. Un firmante off-chain (operado por Lumina o por un keeper externo) lee los feeds de precio de Chainlink.
  2. Construye una prueba EIP-712 PriceProof(int256 price, bytes32 asset, uint256 verifiedAt) y la firma con la oracleKey de confianza.
  3. Cualquier dirección llama a CoverRouterV2.submitTrigger(productId, policyId, oracleProof).
  4. El router delega en PolicyManagerV2.triggerPayout, que invoca verifyAndCalculate del shield. El shield verifica la firma EIP-712 contra LuminaOracleV2.oracleKey(), valida la ventana temporal de la prueba, el activo, la ventana de cobertura de la póliza y la condición de disparo.
  5. Si todo pasa, BondVault.issueBond(buyer, payoutUSD) emite ClaimBonds ERC-1155 al comprador en el epoch de vencimiento correspondiente.

3.4 Flujo de redención de bonos

Los bonos vencen exactamente 730 días después de su emisión. Tras el vencimiento:

  1. El tenedor llama a BondVault.redeemBond(epochId, usdAmount).
  2. La bóveda quema el balance ERC-1155 del tenedor para ese epoch.
  3. Transfiere el equivalente en $LUMINA de usdAmount al precio TWAP vigente (leído de CapacityOracle).

Los bonos son transferibles a través del marketplace secundario antes del vencimiento. Una vez vencidos, ya no pueden listarse (la función list() del marketplace rechaza bonos vencidos).

4. Productos de Seguro — los 6 Flash Shields

Lumina V5.3 ofrece seis productos Flash paramétricos: tres ventanas de drawdown de BTC y tres de ETH. Cada shield es un proxy UUPS que hereda de BaseFlashShield e implementa su disparo en _doVerifyAndCalculate. El registro on-chain de productos usa nombres canónicos del estilo FLASHBTC1H-001; el productId que pasa el llamador es keccak256(canonicalName).

El FlashShieldAdapter (UUPS) es un contrato bridge: expone los shields Flash de la línea T-30a a través de la superficie legacy IShieldV2 que PolicyManagerV2 sigue invocando, de modo que los nuevos shields enchufan en el core sin redesplegarlo.

4.1 Flash Shields de BTC (3 ventanas)

Pagan cuando el spot de BTC cae desde el strike capturado en createPolicy por el umbral configurado dentro de la ventana de la póliza. La prima se publica por cada USD 1.000 de cobertura (payout = USD 800 en $LUMINA por cada USD 1.000 de cobertura, ya restado el deductible del 20%).

ShieldDisparoVentanaPrima / $1kNombre canónico
Flash BTC 1hBTC −2,5% desde el strike1h$2,92FLASHBTC1H-001
Flash BTC 24hBTC −6% desde el strike24h$52,60FLASHBTC24-001
Flash BTC 48hBTC −10% desde el strike48h$148,67FLASHBTC48-001
ShieldDirección del adapter (Base Sepolia)
Flash BTC 1h0x5d50310B9166184e822cD5368F51C1409713054f
Flash BTC 24h0x475b3F712707F61824122a94fE78b106260F8882
Flash BTC 48h0xdc6387E86F7D852D1f99F4009cFd8AdC2d500298

4.2 Flash Shields de ETH (3 ventanas)

ShieldDisparoVentanaPrima / $1kNombre canónico
Flash ETH 1hETH −4% desde el strike1h$1,68FLASHETH1H-001
Flash ETH 24hETH −8,5% desde el strike24h$45,80FLASHETH24-001
Flash ETH 48hETH −14% desde el strike48h$123,01FLASHETH48-001
ShieldDirección del adapter (Base Sepolia)
Flash ETH 1h0x57869AD3E7C56B0c96F357179DD231b407C88338
Flash ETH 24h0x4fD09cF98F6814Cc8b33C2E491429f59d0bCf089
Flash ETH 48h0x9696CFFD7dE8B1e16F83Dcc798c5CE69a61C884C

4.3 Parámetros comunes (todos los shields)

ParámetroValorOrigen
Cobertura mínimaUSD 100 USDCBaseFlashShield._minCoverage()
Deductible20% (DEDUCTIBLE_BPS = 2000)Payout = USD 800 LUMINA por cada USD 1.000 de cobertura
Margin2,00× (marginBps = 20000) — multiplicador económico efectivo ~1,60×configureProduct(...)
StrikeSpot al momento de createPolicyBaseFlashShield._strikeAt(...)
Vencimiento del bono730 días desde el disparoBondVault.BOND_MATURITY_SECONDS
Check de sequencer L2activo en BaseFlashShield; address(0) en Base Sepolia → no-opChainlink L2 Sequencer Uptime Feed (cableado de mainnet)

Los builds anteriores V5.1 de testnet exponían también una ventana Flash BTC 4h, un shield de Micro Depeg de USDT y un shield de Rate Shock de Aave USDC. En V5.3 esos productos no son user-facing: la ventana de 4h se retiró, el Micro Depeg se eliminó y el Rate Shock permanece pausado on-chain a la espera del cableado real con Aave.

5. Modelo de Precios y Primas

5.1 Cotización de la prima

V5.3 publica una prima fija por cada USD 1.000 de cobertura para cada shield. La superficie expuesta al comprador es:

prima = cobertura × premiumPer1k / 1000

El protocolo sigue aplicando una carga de riesgo determinística dentro del shield (marginBps = 20000, es decir 2,00×) antes de computar el payout; la cifra publicada de $/$1k ya incluye esa carga. No se expone ningún factor de probabilidad al llamador: solo necesita leer la prima por $1k y el multiplicador.

Si la fórmula da cero (coberturas muy pequeñas), el contrato impone un piso de prima de 1 micro-USDC (USD 0.000001).

5.2 Verificación de capacidad

Antes de registrar una póliza, PolicyManagerV2 consulta BondVault.availableCapacityUSD(). Si el pago potencial de la póliza llevaría a la bóveda por debajo de su piso de respaldo (comprometido ≤ 50% del valor de reserva, ~200% de respaldo), la compra revierte con InsufficientCapacity.

La capacidad se computa sobre un TWAP de 1 hora del precio de LUMINA, no sobre el precio spot. Esta salvaguarda anti-MEV impide que un atacante manipule el spot, ya sea para denegar cobertura o para empujar al protocolo a reservas escasas.

BondVault aplica un throttle adicional sobre quemas/redenciones: cap de 1,08% por semana, cola FIFO, de modo que un solo bloque no puede vaciar la reserva incluso si un gran cohorte se dispara simultáneamente.

5.3 Disyuntor de auto-pausa

Si el TWAP del precio de LUMINA cae por debajo de USD 0.005, isProtocolAutoPaused() devuelve true y las nuevas compras revierten. El disyuntor usa histéresis: una vez activado, requiere que el precio se recupere por encima de USD 0.008 (el RESET_PRICE_FOR_NEW_POLICIES) para volver a armarse. Esto evita oscilaciones cerca del umbral.

5.4 Tabla de calibración (Sepolia actual, V5.3)

ShieldVentanaCaída desde el strikePrima / $1kmarginBps
Flash BTC 1h3600s2,5%$2,9220000
Flash BTC 24h86400s6%$52,6020000
Flash BTC 48h172800s10%$148,6720000
Flash ETH 1h3600s4%$1,6820000
Flash ETH 24h86400s8,5%$45,8020000
Flash ETH 48h172800s14%$123,0120000

6. BondVault, ClaimBond y Vencimiento

6.1 El modelo de bóveda única

Versiones anteriores de Lumina usaban cuatro bóvedas separadas (una por clase de activo). La arquitectura actual las unifica en un único BondVault que custodia 70 millones de $LUMINA. La bóveda nunca se financia directamente con depósitos de usuarios; recibe su asignación en LuminaTokenV2.initialize() como parte de la distribución génesis.

La bóveda solo expone dos superficies con efecto de estado:

6.2 ClaimBond — cupón-cero ERC-1155

Los ClaimBonds son tokens ERC-1155 agrupados por epoch mensual de vencimiento. El tokenId es el identificador del epoch, calculado como year × 100 + month (por ejemplo, 202805 = mayo de 2028). Todos los bonos que vencen en el mismo mes calendario comparten el mismo tokenId y son fungibles dentro de ese epoch.

Críticamente, 1 token = USD 1 de valor nominal al vencimiento. Las cantidades son dólares enteros, NO unidades base de USDC con 6 decimales. Una posición con balance 4000 representa USD 4.000 de valor nominal, no USD 0.004.

Los bonos son no transferibles peer-to-peer por diseño. El contrato sobrescribe _update para permitir solo emisiones (from == 0), quemas (to == 0) y transferencias vía operadores autorizados. El LuminaBondMarketplace es el único operador autorizado, lo que asegura que el protocolo capture la comisión por trading secundario.

6.3 Período de vencimiento

BOND_MATURITY_SECONDS = 730 días. Un bono emitido hoy por una póliza disparada vence exactamente dos años después. El vencimiento se fija en la emisión y no cambia si el bono se vende en el marketplace: el comprador redime en la misma fecha.

6.4 Piso de solvencia

El protocolo lleva la cuenta de totalCommittedUSD (suma de bonos emitidos) y totalReservedUSD (suma de reservas de capacidad de pólizas activas). Su suma nunca puede exceder SAFETY_FACTOR_BPS × reserveValueUSD / 10000. burnFromReserves —ruta administrativa para retirar colateral excedente— está limitada al 5% de las reservas de la bóveda por transacción.

7. Oráculo y Verificación

7.1 LuminaOracleV2 (Chainlink real en Base Sepolia)

El oráculo de los shields es LuminaOracleV2.sol en 0x9bfa2f7A5098C89b8740D1694d1f716A0Bd871dD (Base Sepolia). Lee directamente los feeds reales de Chainlink BTC/USD y ETH/USD; no se requiere un firmante off-chain EIP-712 para el camino activo. El verificador EIP-712 legacy queda en el contrato por compatibilidad de upgrade y para feeds futuros que carezcan de un agregador Chainlink.

El envelope EIP-712 legacy (mantenido por compatibilidad) es:

DOMAIN = { name: "LuminaOracle", // literal en el contrato — NO "LuminaOracleV2" version: "2", chainId: block.chainid, // capturado al desplegar: 84532 en Sepolia verifyingContract: address(this), }

Para Flash BTC y Flash ETH el shield invoca el camino latestRoundData() de Chainlink dentro de FlashShieldAdapter; el camino EIP-712 legacy solo se usa cuando el activo no tiene feed nativo de Chainlink.

7.2 Tipo PriceProof

PriceProof { int256 price // respuesta del feed con signo (formato Chainlink, 8 decimales) bytes32 asset // UTF-8 con padding a la derecha (p. ej. ethers.encodeBytes32String("BTC")) uint256 verifiedAt // segundos UNIX cuando la API observó el feed }

El shield invoca IOracleV2(oracle).verifyPriceProofEIP712(price, asset, verifiedAt, signature) dentro de _doVerifyAndCalculate. El firmante recuperado debe coincidir con la oracleKey() del oráculo.

7.3 Servicio de firma off-chain

El servicio lumina-api expone POST /api/v1/oracle/sign-proof, que:

  1. Lee el feed de Chainlink correspondiente al activo solicitado.
  2. Construye el envelope EIP-712 con verifiedAt = now.
  3. Firma con la ORACLE_PRIVATE_KEY almacenada en el secret store de Railway.
  4. Devuelve el oracleProof codificado en ABI listo para pasar a submitTrigger.

La dirección del firmante es auditable on-chain mediante LuminaOracleV2.oracleKey(). Cualquier agente puede consultarla en GET /api/v1/oracle/signer antes de enviar un disparo.

7.4 Envío de disparos sin permisos

submitTrigger no tiene control de acceso. El argumento es exclusivamente la prueba criptográfica; una prueba forjada o vencida revierte en la verificación del shield. Esto significa que cualquiera (el comprador de la póliza, un keeper bot, un buscador MEV) puede enviar una prueba válida y disparar el pago. El comprador de la póliza sigue siendo el único beneficiario, sin importar quién haga la llamada.

7.5 Oráculo de capacidad y oráculo de solvencia

Dos oráculos adicionales sirven necesidades internas del protocolo:

8. Tokenomics

8.1 Suministro y estándar

$LUMINA es un token ERC-20 + ERC-20Burnable desplegado tras un proxy UUPS. El suministro máximo es 100_000_000 * 1e18, fijado en construcción. No existe función mint. El suministro solo decrece por quema.

El constructor refuerza assert(totalSupply() == MAX_SUPPLY) tras la distribución génesis, y totalBurned() devuelve MAX_SUPPLY - totalSupply().

8.2 Distribución inicial (100M)

Se acuña por única vez en initialize() a través de cinco direcciones inmutables como argumentos:

AsignaciónTokens%ReceptorComportamiento
Reserva de Bonos70.000.00070%BondVaultRespalda todos los siniestros; solo sale por redeemBond al vencimiento.
Liquidez CEX/DEX14.000.00014%CEX Liquidity ReserveAsignado para listings en exchanges centralizados y descentralizados.
Fundador8.000.0008%FounderVestingBloqueado tras compuertas oracle 2-de-3 AltSeason — ver § 8.4.
LBP5.000.0005%LBP DepositLiquidity Bootstrapping Pool (Fjord Foundry) en TGE.
Tesorería3.000.0003%TreasuryVestingLock de 180 días, luego drip de 250k/mes — ver § 8.5.
Total100.000.000100%

8.3 BURNER_ROLE

Solo el contrato TWAPBurner ostenta BURNER_ROLE sobre el token. Este rol permite invocar burnFrom sobre cualquier dirección, lo que es necesario porque el burner extrae $LUMINA de los buffers intermedios del protocolo y lo quema. DEFAULT_ADMIN_ROLE administra las asignaciones de roles. Renunciar a DEFAULT_ADMIN_ROLE bloquea de forma permanente la administración de BURNER_ROLE; el desplegador solo debería renunciar tras confirmarse el despliegue final del TWAPBurner.

8.4 FounderVesting V2 (8M, tres rutas independientes)

La asignación del fundador (8M) se desbloquea mediante FounderVesting V2: tres compuertas independientes, gana la primera que se dispare, y luego se liberan tres tramos de ~3,333M cada uno cada 31 días.

FounderVesting V2 está desplegado en 0xfF4Db529bBCd4E3CC091E07b7845241EB4762832 y se cablea contra LuminaOracleV2 para las lecturas en vivo de ETH/USD y ETH/BTC.

8.5 TreasuryVesting (3M, drip)

Las liberaciones son onlyOwner; una liberación por ventana de 30 días, con tope en el máximo mensual.

9. Distribución Adaptativa de Quema

El 100% del USDC enrutado al TWAPBurner no siempre se quema directamente. Antes de comprar y quemar $LUMINA, el burner consulta a AdaptiveFeeDistributor para decidir cómo dividir el USDC entrante en cuatro buckets:

El split no es estático. Adapta sobre dos ejes: solvencia del protocolo y momentum de mercado de LUMINA. El producto 4×4 de estos dos ejes produce 16 distribuciones posibles, cada una pre-calibrada para un régimen específico. La matriz completa se implementa en AdaptiveFeeDistributor._lookupDistribution(sLevel, mLevel) y está verificada por tests unitarios que cubren los 16 cuadrantes.

9.1 Los dos ejes

Niveles de solvencia: computados por SolvencyOracle como el ratio entre (reserva LUMINA del BondVault × precio spot) y obligaciones totales comprometidas en USD, expresado en basis points:

Buckets de momentum: computados a partir del ratio entre el TWAP de ventana corta (30 minutos) y el TWAP de ventana larga (1 día) del precio spot de LUMINA:

9.2 La matriz de 16 cuadrantes

Cada celda muestra los basis points enrutados a quema / buyback / operaciones / mantenimiento, sumando 10000 (100%):

Solvencia \ Momentum RALLY STABLE DECLINE CRASH
ULTRA 9500/0/0/500 9000/500/0/500 8500/1000/0/500 7500/2000/0/500
HEALTHY 9000/500/0/500 8500/800/200/500 7000/2100/200/700 5500/3500/200/800
STRESSED 7500/1800/200/500 5500/3500/200/800 3800/5500/200/500 1800/7500/200/500
CRISIS 4800/4500/200/500 2800/6500/200/500 800/8500/200/500 0/9600/200/200

Celda en negrita = HEALTHY/STABLE = régimen operativo por defecto. Las cuatro constantes FALLBACK_*_BPS en TWAPBurner espejan esta celda como red de seguridad si el distributor revierte.

9.3 Ejemplos prácticos

9.4 Estado de implementación (testnet Sepolia)

⚠ Disclosure honesto
La matriz de 16 cuadrantes está plenamente implementada en AdaptiveFeeDistributor.sol y ejercitada por tests unitarios que cubren los 16 cuadrantes en AdaptiveFeeDistributorTest.t.sol. Sin embargo, en Sepolia hoy, el input de momentum se mantiene en neutral (10000 bps) en SolvencyOracle.sol: aún no se desplegó un pool profundo de liquidez LUMINA/USDC en Sepolia, por lo que el oráculo de momentum no tiene TWAPs reales on-chain para leer.

En la práctica, esto significa que la matriz corre solo sobre el eje de solvencia: en runtime colapsa a la columna STABLE. El comportamiento completo de 16 cuadrantes se activa automáticamente una vez que tres piezas se entregan en conjunto:

  1. Un pool real LUMINA/USDC en Uniswap V3 desplegado y fundeado con liquidez en la chain objetivo.
  2. El hunk del oráculo de momentum (ya escrito en la branch release/v5.1-pre-mainnet, audit fix H-10) se cherry-pickea a SolvencyOracle.sol.
  3. El contrato BuybackSpender se despliega y se cablea como consumidor de buybackReserve: la pieza faltante que convierte el USDC acumulado en buybacks de LUMINA en drawdowns de precio.

La secuenciación es intencional: desplegar la lógica de momentum antes de que exista un pool de liquidez profundo produciría una señal muerta indistinguible de neutral, sin síntoma off-chain que delate la regresión. Cada pieza aterriza cuando su dependencia está en su lugar.

9.5 Referencias

10. Motor de Quema y Flujo Deflacionario

9.1 Dos rutas de quema

Cada USDC que entra al protocolo se enruta a través del TWAPBurner:

  1. Primas: CoverRouterV2._purchase invoca twapBurner.receivePremium(premium) tras cada compra de póliza. La transferencia es atómica respecto de la compra.
  2. Comisiones de marketplace: LuminaBondMarketplace.executeBuy deduce una comisión del 3% en cada trade secundario, también enrutada vía receivePremium.

Los USDC se acumulan dentro del burner hasta que se invoca executeBurn().

9.2 Parámetros de executeBurn

ParámetroValor por defectoEfecto
burnCooldown900s (15 min)Brecha mínima entre quemas.
minBurnAmount1 USDCPor debajo, la llamada revierte con "Below minimum".
maxBurnAmount10.000 USDCTope duro por llamada para limitar slippage en un solo swap.
adaptiveModeEnabledtrueEnruta al AdaptiveFeeDistributor para split dinámico de 4 buckets. Si el distribuidor reporta unhealthy, hace fallback a bps fijos.

9.3 Distribución de fallback en 4 buckets

BucketBPS%Constante
Burn (USDC → compra LUMINA → quema)850085%FALLBACK_BURN_BPS
Reserva de Buyback8008%FALLBACK_BUYBACK_BPS
Reserva de Mantenimiento5005%FALLBACK_MAINTENANCE_BPS
Reserva de Operaciones2002%FALLBACK_OPS_BPS

El bucket de Burn compra $LUMINA en Uniswap V3 (con Aerodrome como fallback secuencial) y lo envía a 0xdead. Cada quema exitosa emite:

event BurnExecuted( uint256 usdcSpent, uint256 luminaBurned, uint256 effectivePrice, uint256 timestamp )

9.4 Caller permisionless

executeBurn es external nonReentrant: no hay onlyAuthorized. Cualquier wallet puede llamarla. El cooldown limita la frecuencia, y los topes mínimo/máximo limitan el slippage por llamada. Cualquiera puede ser el keeper de quema.

11. Marketplace Secundario

10.1 Propósito

Los ClaimBonds vencen a 730 días. Los tenedores que necesitan liquidez antes los venden en el mercado secundario con descuento; los compradores obtienen un yield implícito esperando al vencimiento. El mercado es permisionless y on-chain.

10.2 Flujo de listing

  1. El vendedor ejecuta ClaimBond.setApprovalForAll(marketplace, true) (una sola vez por familia de epoch).
  2. El vendedor llama LuminaBondMarketplace.list(epochId, amount, priceUSDC). El contrato verifica balanceOf(seller, epochId) ≥ amount y que block.timestamp < maturityDate(epochId).
  3. El marketplace extrae la cantidad ERC-1155 vía safeTransferFrom, almacena la struct Listing y emite Listed(listingId, seller, epochId, amount, priceUSDC).

10.3 Flujo de compra

  1. El comprador aprueba USDC al marketplace por priceUSDC.
  2. El comprador invoca executeBuy(listingId).
  3. El marketplace transfiere USDC desde el comprador, deduce un 3% de comisión (enrutado al TWAPBurner), paga al vendedor y transfiere la cantidad ERC-1155 al comprador.
  4. El vencimiento no cambia: el comprador redime en la fecha original, igual que lo haría el tenedor original.

10.4 Flujo de cancelación

El vendedor puede cancelar cualquiera de sus propios listings vía cancel(listingId). El bono regresa al wallet del vendedor. No hay enforcement on-chain de auto-compra, pero el frontend deshabilita el botón Buy cuando seller == wallet conectado.

10.5 BuybackEngine (anti-MEV por commit-reveal)

Un BuybackEngine separado consume el bucket de buyback del TWAPBurner usando un esquema de commit-reveal para impedir front-running. Las operaciones se baten en lotes y se revelan en una transacción separada; se recomienda enrutamiento por mempool privado del lado de operaciones.

12. Modelo de Seguridad

11.1 Upgradeability

Todos los contratos del núcleo son upgradeables UUPS con _authorizeUpgrade protegido por DEFAULT_ADMIN_ROLE. Los upgrades hoy requieren un único firmante y migrarán a multisig antes de mainnet (ver Roadmap).

11.2 Postura de auditoría

Los reportes de auditoría interna son públicos:

El protocolo lleva una nota de riesgo aceptado: no hay auditoría de tercero Tier-1 previa al mainnet. La bug bounty del fundador + multisig + clave en cold storage entran en vigor en T+30d posterior al deploy de mainnet.

11.3 Matriz de control de acceso

docs/ACCESS-CONTROL-MATRIX.md documenta cada rol privilegiado, su tenedor actual y la política de rotación. Roles clave:

11.4 Modelo de amenazas

Documentado en docs/audit/THREAT-MODEL.md. Mayores riesgos residuales:

13. Para Agentes de IA

12.1 Onboarding self-service

Un agente autónomo puede generar su propia API key sin intervención humana. El flujo consta de dos operaciones en línea:

  1. Firmar el envelope EIP-191 "Lumina onboarding for {wallet} at {timestamp}" con la wallet del agente.
  2. POST /api/v1/agent/onboard con {walletAddress, label?, signature, timestamp}.

La API verifica la firma, acuña una key lk_<64hex> (hasheada con SHA-256 en reposo) y devuelve el plaintext una sola vez. Límites: máximo 3 keys activas por wallet, 10 intentos de onboard por IP por hora.

12.2 Compra de pólizas con relayer

La feature distintiva para agentes: POST /api/v1/policies. El wallet relayer de la API firma purchasePolicyFor on-chain en nombre del agente. El agente no necesita ETH para gas; solo USDC para la prima (custodiado por el wallet del agente, extraído por el contrato). Las idempotency keys impiden el doble-gasto en reintentos.

12.3 Skill files

El repo lumina-api ships 24 skill files en docs/skills/: uno por operación frecuente. Cada archivo sigue una estructura fija: un bloque "What this does" en lenguaje llano, un prompt LLM listo para copiar-pegar, variables de entorno, ejemplos en curl + TypeScript + Python, esquemas de request/response y códigos de error. Diseñados para insertarse directamente en la lista de tools o el system prompt de un agente.

12.4 Superficie de endpoints

MétodoPathAuthPropósito
GET/healthnoneEstado en vivo: chain, relayer, direcciones de contratos
GET/productsnoneLista los 6 Flash shields activos + capacidad
GET/products/:id/quote?cover=NnonePrima y pago para un monto de cobertura
POST/api/v1/agent/onboardfirma EIP-191Mint self-service de API key
GET/api/v1/agent/keysx-api-keyLista las keys del llamador
DELETE/api/v1/agent/keys/:keyIdx-api-keyRevoca una key propia
POST/api/v1/policiesx-api-keyCompra una póliza vía relayer (el agente no paga gas)
GET/api/v1/policiesx-api-keyLista las pólizas del llamador
GET/api/v1/bonds/:walletx-api-keyPosiciones de bonos del llamador
POST/api/v1/redeemx-api-keyIndexa una redención (redeem on-chain firmado por el agente)
POST/api/v1/marketplace/listx-api-keyIndexa un listing
POST/api/v1/marketplace/buyx-api-keyIndexa una compra
POST/api/v1/oracle/sign-proofx-api-keyObtiene un PriceProof EIP-712 fresco para submitTrigger
GET/api/v1/oracle/signerx-api-keyLee la dirección actual del firmante del oráculo

14. Roadmap

Fases 1-4 — V5.3 desplegada ✅ (Base Sepolia, 2026-05-14)

Fase 5 — Uso real en testnet (actual)

Fase 6 — Hardening pre-mainnet

Fase 7 — Lanzamiento mainnet

15. Riesgos y Aviso Legal

⚠ Solo testnet
El deploy actual corre en Base Sepolia. El contrato USDC es un mock; las lecturas de los oráculos de BTC y ETH son feeds reales de Chainlink en Base Sepolia, pero no hay dinero real en riesgo porque no debería depositarse dinero real. No transfiera activos de mainnet a ninguna dirección listada en este documento.

14.1 Riesgo de smart contracts

El protocolo no está auditado por una firma Tier-1 al momento de redacción. Las auditorías internas son públicas pero no sustituyen una externa. Un bug de reentrancy, colisión de storage o manipulación de oráculo en el BondVault o en la ruta de un shield podría resultar en pérdida total del colateral.

14.2 Riesgo de oráculo

Los disparos dependen de pruebas EIP-712 firmadas por un firmante off-chain. Si su clave se compromete, todas las pólizas activas pueden dispararse falsamente, drenando el BondVault. Las mitigaciones son ítems del roadmap (HSM, firmante multisig).

14.3 Riesgo de liquidez

La redención de bonos paga en $LUMINA al precio TWAP vigente. Si la liquidez secundaria de LUMINA es escasa en el momento de la redención, los tenedores pueden recibir menos USD-equivalente que el valor nominal del bono.

14.4 Riesgo regulatorio

El seguro paramétrico on-chain es novedoso. Puede ser clasificado como valor, derivado o producto de seguro regulado en algunas jurisdicciones. El uso del protocolo es por cuenta y riesgo legal del usuario.

14.5 Aviso legal

Este whitepaper describe el protocolo tal como está desplegado al 14 de mayo de 2026 en Base Sepolia (V5.3). No constituye una oferta de venta ni una solicitud de compra de ningún token, valor o producto de seguro. Se provee con propósitos técnicos y educativos. Las afirmaciones prospectivas en la Sección 14 son aspiracionales; nada en este documento es garantía de despliegue futuro, fusión de funcionalidades o retorno financiero.

16. Marco Legal

15.1 Estructura del protocolo

Lumina Protocol es software de código abierto publicado bajo licencia MIT en github.com/org-lumina. Los contratos están desplegados y operados por el equipo fundador durante el testnet; en mainnet, la gobernanza y autoridad sobre parámetros migran a un multisig y, en última instancia, a una gobernanza on-chain.

15.2 Naturaleza del producto

Los ClaimBonds son instrumentos paramétricos de pago, no contratos de seguro en el sentido regulado. No hay perito, no hay underwriter, no hay acuerdo de tomador de póliza. Un disparo es un evento on-chain determinístico; un pago es una transferencia on-chain determinística.

15.3 Naturaleza del token

$LUMINA es un token de utilidad con tres usos programáticos: (i) es el activo pagado por las redenciones de ClaimBond; (ii) el motor de quema del protocolo lo destruye permanentemente a medida que las primas y comisiones de marketplace fluyen; (iii) es la unidad de cuenta para la solvencia del BondVault. No está diseñado ni comercializado como inversión; cualquier trading especulativo queda fuera del propósito del protocolo.

15.4 Jurisdicción

El protocolo no apunta a usuarios de ninguna jurisdicción específica. Operadores, integradores y usuarios finales son responsables de su propio cumplimiento regulatorio.

Apéndice A — Direcciones Desplegadas (Base Sepolia, chainId 84532)

V5.3 mantiene las direcciones del core V5.2 (sin redeploy de BondVault, PolicyManager, etc.) y agrega seis nuevos adapters de shield. La fuente canónica es siempre https://lumina-api-production-ac85.up.railway.app/health; si alguna dirección difiere de /health, /health manda.

Núcleo del protocolo (direcciones V5.2 vigentes)

ContratoDirección
LuminaTokenV20x62C0b58bB30CA857674ec593F1e23B3F15266680
BondVault0x193acBc1EdC5E565a4aBE96941C7E7AeF637B6EC
ClaimBond0xaa57Ab52Eb00f296Ad4CFA9E9c201f3737271FB4
CoverRouter0xcdB70B40e6a3DEac3189185d947A0e458518F566
PolicyManager (proxy)0x546C07e07DeBCdbf7a2A7Ef12C38c8c8fcAFcDd8
PolicyManager (impl Sprint Cleanup)0xdE41D414eD191A1090546078DF8e120c196Be22F
FounderVesting V20xfF4Db529bBCd4E3CC091E07b7845241EB4762832
LuminaOracleV20x9bfa2f7A5098C89b8740D1694d1f716A0Bd871dD
TWAPBurner0x242d76082856901b4ba1E7c50C022D46a6941bC0
AdaptiveFeeDistributor0xeC7841A4a9ecfb8cA58391E233A645B021c59D54
BuybackEngine0x56B5a1115B0d9781E7358521204d927d2F80d8B4
LuminaBondMarketplace0x0938205f4cBe5F572656533FC930FFce6F5F4345

Split del AdaptiveFeeDistributor: 85% Burn / 8% Buyback / 2% Operations / 5% Maintenance.

Adapters de Flash shield (V5.3, desplegados 2026-05-14)

AdapterDirección
Flash BTC 1h0x5d50310B9166184e822cD5368F51C1409713054f
Flash BTC 24h0x475b3F712707F61824122a94fE78b106260F8882
Flash BTC 48h0xdc6387E86F7D852D1f99F4009cFd8AdC2d500298
Flash ETH 1h0x57869AD3E7C56B0c96F357179DD231b407C88338
Flash ETH 24h0x4fD09cF98F6814Cc8b33C2E491429f59d0bCf089
Flash ETH 48h0x9696CFFD7dE8B1e16F83Dcc798c5CE69a61C884C

API + relayer

ServicioEndpoint / dirección
URL base de la APIhttps://lumina-api-production-ac85.up.railway.app
Block explorersepolia.basescan.org
RPChttps://sepolia.base.org
Nota sobre drift de direcciones
V5.3 reutiliza las direcciones del core V5.2 y solo agrega los seis adapters Flash de arriba. Cualquier artefacto previo con direcciones V5.1 está obsoleto. Verifique siempre contra /health antes de integrar.

Apéndice B — Glosario

BondVaultContrato único que custodia la reserva de 70M $LUMINA que respalda cada ClaimBond.
ClaimBondBono cupón-cero ERC-1155, valor nominal de USD 1, vencimiento a 730 días, redimible en $LUMINA.
CoverRouterV2Punto de entrada para usuarios: quotePremium, purchasePolicy, submitTrigger.
EIP-191Estándar "personal_sign" usado para la firma de onboarding de agentes.
EIP-712Estándar de firma con tipos usado para los PriceProofs del oráculo.
EpochBucket mensual de vencimiento. Codificado como year × 100 + month. Todos los bonos que vencen en el mismo mes calendario comparten epoch.
FlashShieldUno de los seis productos de caída de precio que cubren BTC y ETH en ventanas de 1h, 24h y 48h (tres por activo).
FlashShieldAdapterContrato bridge UUPS que expone los Flash shields T-30a a través de la superficie legacy IShieldV2 consumida por PolicyManagerV2.
Modelo KinkModelo de pricing dependiente de capacidad que ajusta la prima conforme aumenta la utilización.
LuminaOracleV2Verificador EIP-712 que autoriza los disparos de shields a partir de un firmante off-chain de confianza.
oracleKeyDirección Ethereum cuya clave privada firma cada PriceProof; rotable por el owner del contrato.
ParamétricoSeguro cuyo pago depende exclusivamente de un disparo objetivo y medible, sin ajuste de siniestros.
RelayerWallet de la API que firma transacciones purchasePolicyFor en nombre del agente, pagando el gas.
Skill fileDocumento Markdown en lumina-api/docs/skills/ con un prompt LLM listo para copiar-pegar y ejemplos de código.
TWAPBurnerContrato que convierte primas en USDC a $LUMINA vía Uniswap V3 y lo quema.
UUPSUniversal Upgradeable Proxy Standard. Permite upgrades de implementación in-place por un admin.

Apéndice C — Referencias

Toda afirmación técnica de este whitepaper se trazea a alguna de estas fuentes: