Proyecto Final Curso de Solidity / Ecosistema Ethereum Whitepaper

SkyClaim

Protocolo de cobertura paramétrica descentralizada contra demoras y cancelaciones de vuelos.

Un seguro de vuelos donde, si la demora supera el umbral pactado, el pago se ejecuta automáticamente desde un pool de liquidez: sin reclamos, sin aseguradora intermediaria y sin discrecionalidad.

Vertical
DeFi + Utilidad
Red objetivo
Ethereum / Sepolia
Lenguaje
Solidity 0.8.x
Oráculo
Chainlink
1

Definición del problema

La industria aérea opera con una asimetría estructural en perjuicio del pasajero. Los derechos del consumidor frente a demoras y cancelaciones existen en marcos regulatorios (Convenio de Montreal, Regulación CE 261/2004 en Europa, normativa DOT en Estados Unidos, entre otros), pero ejercerlos requiere un proceso manual, lento y desgastante: presentación de reclamos, recolección de evidencia, intercambio con call centers, esperas que se extienden por meses, y en muchos casos respuestas negativas que obligan al pasajero a litigar por montos que no justifican el costo del juicio.

Las aseguradoras tradicionales ofrecen pólizas de viaje, pero presentan tres fallas estructurales:

  1. Custodia centralizada de los fondos: la aseguradora controla el dinero del pool y decide cuándo paga.
  2. Liquidación discrecional: cada siniestro requiere evaluación humana, lo que introduce demoras de semanas o meses y un margen amplio de rechazo.
  3. Letra chica y asimetría informativa: las condiciones de pago son complejas y favorables al asegurador, no al asegurado.

El caso más documentado de esta ineficiencia es el de AXA, que en 2017 lanzó Fizzy, un producto de seguro paramétrico de vuelos sobre Ethereum, y lo discontinuó en 2019 por falta de adopción comercial. Sin embargo, el problema que motivó su creación sigue vigente y validado: el proceso manual de reclamos es costoso para el asegurador y frustrante para el asegurado. Protocolos descentralizados como Etherisc continúan operando en este vertical con tracción creciente, demostrando que la demanda existe pero que la solución comercial óptima aún no se ha consolidado.

2

Propuesta de valor

SkyClaim es un protocolo de seguro paramétrico totalmente descentralizado para vuelos comerciales. La propuesta se sostiene en cuatro principios:

Liquidación automática

El contrato consulta el estado del vuelo a una red de oráculos al momento previsto de llegada. Si la demora supera el umbral pactado, el pago se ejecuta solo, sin intervención humana.

Sin custodia humana

No existe una entidad aseguradora que controle el pool de reservas. Las primas y los aportes de liquidez se gestionan exclusivamente mediante código inmutable.

Reglas inmodificables

Las condiciones de cobertura (umbral, monto, ventana de contratación) están escritas en el contrato y son auditables por cualquiera antes de contratar.

Pool mutual abierto

Cualquier usuario puede aportar liquidez al pool y participar de las primas no liquidadas, sustituyendo a la aseguradora por un mercado abierto de capital.

¿Por qué Ethereum y no una base de datos tradicional?

Una base de datos centralizada no resuelve este problema porque el problema mismo es la centralización. Si una empresa mantuviera la base de datos, los fondos y la lógica de pago, el usuario seguiría dependiendo de la voluntad de esa empresa para cobrar. Ethereum aporta exactamente las tres propiedades necesarias:

  • Inmutabilidad del código: las reglas de pago no pueden modificarse para perjudicar al asegurado una vez vendida la póliza.
  • Custodia trustless de los fondos: el smart contract sostiene el pool de reservas; ninguna persona física o jurídica puede retirarlo arbitrariamente.
  • Ejecución automática verificable: el pago se dispara por la lógica del contrato cuando el oráculo confirma la condición, sin discrecionalidad.

El único punto de confianza minimizado es el oráculo de datos de vuelo, que se mitiga mediante el uso de una red descentralizada de nodos (Chainlink) con múltiples fuentes de datos agregadas por consenso.

3

Arquitectura del sistema

3.1 Capa de Smart Contracts

El protocolo se compone de dos contratos principales y un set de estructuras de datos auxiliares.

SkyClaimPool.sol — gestiona la liquidez del protocolo

  • Permite a los proveedores de liquidez (LPs) depositar y retirar stablecoins.
  • Lleva contabilidad de aportes y comisiones devengadas mediante el patrón checkpoint accounting: las recompensas se calculan al momento del retiro.
  • Impone límites de exposición máxima por evento para mitigar el riesgo de correlated claims (cancelaciones masivas por un evento sistémico).

SkyClaimPolicy.sol — gestiona el ciclo de vida de las pólizas

Estructuras de datos principales:

enum EstadoPoliza { Activa, EnVerificacion, Liquidada, Pagada, Expirada }

struct Poliza {
    address asegurado;
    bytes32 codigoVuelo;          // ej. keccak256("AR1306-20260815")
    uint64  fechaProgramada;      // timestamp UTC
    uint128 prima;                // pagada en stablecoin (USDC)
    uint128 cobertura;            // monto a recibir si se cumple condición
    uint32  umbralDemoraMinutos;  // ej. 120
    EstadoPoliza estado;
}

mapping(uint256 => Poliza) public polizas;
mapping(address => uint256[]) public polizasDe;

Funciones principales

  • contratarPoliza(codigoVuelo, fechaProgramada, cobertura): el usuario paga la prima en stablecoin. El contrato la calcula en función de la cobertura solicitada y el factor de riesgo del vuelo (puede ser fijo en una primera versión). Solo se aceptan pólizas con un margen mínimo respecto a la fecha de vuelo (anti-fraude).
  • solicitarLiquidacion(idPoliza): cualquier dirección puede invocarla una vez vencido el vuelo. Dispara una request a Chainlink.
  • fulfillFlightData(requestId, demoraMinutos, cancelado): callback ejecutado por el oráculo. Compara el resultado con el umbral y, si corresponde, transfiere la cobertura desde el pool a la wallet del asegurado.

Modifiers utilizados: soloAsegurado, enEstado(EstadoPoliza), dentroDeVentanaContratacion, nonReentrant. Eventos: PolizaContratada, LiquidacionSolicitada, DemoraVerificada, PolizaPagada, PolizaExpirada.

Ningún contrato implementa funciones administrativas privilegiadas (onlyOwner) sobre la lógica de pago. El protocolo es inmutable una vez desplegado.

3.2 Interacción de usuario

Asegurado

  1. Conecta su wallet (MetaMask, Rainbow) a la dApp.
  2. Ingresa el código de vuelo y la fecha programada; la dApp sugiere umbral y prima.
  3. Aprueba el gasto de stablecoin (approve del ERC-20).
  4. Firma contratarPoliza y recibe un registro de póliza on-chain.
  5. Tras el vuelo, si correspondió pago, recibe la cobertura automáticamente.

Proveedor de liquidez

  1. Conecta wallet y deposita stablecoins en el pool.
  2. Acumula comisiones provenientes de pólizas no liquidadas.
  3. Retira capital y comisiones cuando lo decide, sujeto a la liquidez disponible.

3.3 Componentes externos

  • Oráculo descentralizado: Chainlink Functions o Any API consultando agregadores de aviación (FlightAware, AviationStack, OpenSky Network). La red de nodos llega a consenso sobre el dato antes de escribirlo on-chain.
  • Stablecoin: USDC o DAI para denominar primas y coberturas, evitando la volatilidad de ETH.
  • Capa 2 (L2): deploy en Polygon, Base o Arbitrum para reducir costos de transacción a centavos.
  • Almacenamiento descentralizado (opcional): IPFS para metadatos extendidos de pólizas, referenciados por hash en el contrato.
4

Stack tecnológico

Lenguaje de contratos
Solidity 0.8.x
Librerías de seguridad
OpenZeppelin Contracts (ReentrancyGuard, SafeERC20, Pausable como circuit breaker opcional)
Integración con oráculo
@chainlink/contracts (ChainlinkClient, FunctionsClient)
Entorno de desarrollo
Hardhat o Foundry
Tests
Mocha/Chai o Forge, con simulación de respuestas del oráculo
Frontend
React + TypeScript, con Wagmi y RainbowKit
Comunicación con la cadena
Ethers.js v6 o Viem
Red de deploy (testnet)
Sepolia (Ethereum) o Polygon Amoy (L2)
5

Análisis de riesgos

Seguridad técnica

  • Reentrancy: mitigado con ReentrancyGuard en toda función que transfiere fondos y con el patrón Checks-Effects-Interactions.
  • Manipulación del oráculo: mitigada con un oráculo descentralizado y múltiples fuentes agregadas por consenso. El riesgo residual existe pero es órdenes de magnitud menor que una API individual.
  • Front-running: bajo, ya que las condiciones de cada póliza son contractuales y públicas.
  • Falsificación de identidad: irrelevante, la cobertura se paga a la wallet que contrató la póliza.

Riesgos económicos

  • Pool insuficiente: un evento masivo podría agotar las reservas. Mitigación: límite de cobertura por evento y ruta, y un haircut proporcional escrito en el contrato.
  • Fraude de contratación tardía: mitigado con una ventana mínima obligatoria entre la contratación y la salida del vuelo.
  • Selección adversa: mitigada ajustando la prima según la confiabilidad histórica de la ruta y la aerolínea.

Riesgos de adopción

  • Barrera de wallet: el asegurado debe tener wallet con stablecoins; mitigado por la adopción creciente en mercados emergentes.
  • Distribución: la adopción masiva requiere integración con OTAs. La versión inicial apunta a usuarios cripto-nativos.

Riesgos regulatorios

  • El producto podría calificarse como seguro y requerir licencia. Mitigación: presentarlo como cobertura mutual P2P sin entidad aseguradora intermedia, siguiendo el patrón de protocolos ya en operación.

Costos de gas

  • En Mainnet, los costos hacen inviable una póliza de bajo monto. La estrategia es desplegar en una L2 donde el gas por póliza no supera unos pocos centavos.

Conclusión

SkyClaim demuestra el caso de uso canónico de smart contracts con oráculos descentralizados: un producto financiero donde la lógica de liquidación es puramente algorítmica y verificable, los fondos son custodiados por código inmutable, y el único punto de confianza (los datos del mundo real) se minimiza mediante una red de oráculos distribuida.

El protocolo no compite con aseguradoras tradicionales en precio, sino en previsibilidad, velocidad y ausencia de discrecionalidad: el asegurado sabe, al momento de contratar, exactamente cuándo y cuánto cobrará si se cumple la condición.