MVP para hackathon que utiliza Chainlink CRE (Compute Runtime Environment) para evaluar el riesgo de activos DeFi mediante análisis de datos on-chain y off-chain, combinado con inteligencia artificial.
DeFi Risk Oracle es un sistema que:
- Obtiene precios desde Chainlink Data Feeds (oráculos descentralizados on-chain)
- Obtiene datos de TVL desde DeFiLlama (API confiable de datos DeFi)
- Utiliza OpenAI GPT-4o-mini para analizar y evaluar el riesgo (0-100)
- Actualiza un smart contract en la blockchain con el score de riesgo y la razón
- Proporciona una interfaz web en tiempo real para consultar y ejecutar evaluaciones
🔗 Integración Completa: Usa Chainlink CRE para ejecución, Chainlink Data Feeds para precios, y DeFiLlama para datos de TVL, garantizando datos confiables y actualizados.
/ketchup
/contracts # Smart contracts Solidity
RiskOracle.sol
/workflow # Chainlink CRE workflows
risk-evaluator.ts
config.json
/frontend # Next.js frontend
/app
page.tsx
api/run-check/route.ts
/test # Tests unitarios
RiskOracle.test.ts
/docs # Documentación
WORKFLOW_FLOW.md # Diagrama de flujo visual
/ketchup-workflow # Entorno de pruebas CRE CLI (no modificar)
hardhat.config.ts
package.json
README.md
- Instalar dependencias del proyecto principal:
npm install- Instalar dependencias del frontend:
cd frontend
npm install
cd ..- Instalar dependencias del workflow (si usas ketchup-workflow para pruebas):
cd ketchup-workflow
bun install
cd ..Crea un archivo .env en la raíz del proyecto basado en .env.example:
cp .env.example .envLuego edita .env y agrega tus claves:
INFURA_KEY: Tu API key de Infura para Sepolia (obtén una en https://infura.io)PRIVATE_KEY: Tu clave privada para desplegar contratos (sin prefijo 0x)OPENAI_API_KEY: Tu API key de OpenAI para evaluación de riesgo (obtén una en https://platform.openai.com)
- Reemplaza los valores placeholder (
your_infura_key_here,your_private_key_here) con valores reales - Si no configuras
INFURA_KEY, Hardhat usará un RPC público de Sepolia (puede ser más lento) - Si no configuras
PRIVATE_KEY, no podrás desplegar contratos - Si no configuras
OPENAI_API_KEY, el sistema usará cálculo basado en reglas
npm testLos tests cubren:
- Deployment del contrato
- Actualización de risk score
- Eventos emitidos
- Función
isRisky() - Casos límite
npm run compileLos artefactos compilados se generarán en ./artifacts/.
- Iniciar el servidor de desarrollo:
npm run dev-
Abrir el navegador en
http://localhost:3000 -
Hacer clic en "🚀 Ejecutar Evaluación de Riesgo" para ejecutar una evaluación en tiempo real
El frontend:
- Obtiene datos en tiempo real de CoinGecko y Llama.fi
- Usa OpenAI para evaluación (si está configurado)
- Muestra score, razón, factores y datos utilizados
- Interfaz visual con colores según el nivel de riesgo
Para probar el workflow usando el entorno de pruebas:
# Desde la raíz del proyecto
cre workflow simulate ./workflowO usando el script:
./workflow/test-simulation.sh-
Asegúrate de tener configurado
.envconINFURA_KEYyPRIVATE_KEY -
Compila el contrato:
npm run compile- Despliega el contrato en Sepolia:
npx hardhat run scripts/deploy-contract.ts --network sepoliaEl script automáticamente:
- Despliega el contrato
RiskOracle - Actualiza
cre.jsoncon la nueva dirección - Actualiza
workflow/config.jsoncon la nueva dirección - Genera el ABI en
contracts/RiskOracle.json
Una vez que el contrato esté desplegado y los archivos de configuración actualizados:
cre workflow deploy ./workflow/risk-evaluator.ts \
--config ./workflow/config.json \
--cre-config ./cre.jsonO usando el script:
./workflow/deploy-workflow.shPara simular el workflow localmente antes de desplegarlo:
cre workflow simulate ./workflow/risk-evaluator.ts \
--config ./workflow/config.json \
--cre-config ./cre.jsonO usando el script de simulación:
./workflow/test-simulation.shnpm run test:openaiEste script verifica que tu API key de OpenAI esté configurada y funcionando.
Ver el diagrama completo en docs/WORKFLOW_FLOW.md
- Trigger: Cron schedule ejecuta el workflow periódicamente
- Obtención de Datos:
- Precio: Chainlink Data Feed (lectura on-chain directa) - ETH/USD
- TVL: Llama.fi API con consenso distribuido CRE
- Evaluación: OpenAI GPT-4o-mini analiza los datos y genera score (0-100)
- On-Chain: Escribe el resultado al contrato
RiskOracleen Sepolia - Frontend: Muestra resultados en tiempo real con interfaz visual
- Chainlink CRE: Para ejecución del workflow
- Chainlink Data Feeds: Para precios confiables on-chain
- Consenso Distribuido: Múltiples nodos para mayor confiabilidad
Ver más detalles en docs/CHAINLINK_DATA_FEEDS.md
- @chainlink/cre-sdk: SDK de Chainlink CRE para workflows
- viem: Biblioteca para interactuar con Ethereum (usada por CRE SDK)
- hardhat: Framework de desarrollo para Ethereum (v3)
- ethers: Biblioteca para interactuar con Ethereum
- next: Framework React para producción
- react: Biblioteca UI
- openai: Para evaluación de riesgo con AI
- ✅ Interfaz moderna y responsive
- ✅ Evaluación en tiempo real
- ✅ Visualización de score con colores (verde/amarillo/rojo)
- ✅ Muestra factores de evaluación
- ✅ Datos utilizados en la evaluación
- ✅ Timestamp de la evaluación
- ✅ Estados de carga y error
- El endpoint
/api/run-checkejecuta una simulación del workflow - Para producción, integra con el workflow CRE desplegado
- Asegúrate de configurar las variables de entorno necesarias
- Nunca commitees el archivo
.envcon claves reales
Este proyecto es útil para:
- Protocolos DeFi: Mostrar score de riesgo para generar confianza
- Wallets: Alertar usuarios sobre protocolos riesgosos
- Plataformas de Lending: Decidir ratios de colateral automáticamente
- Agregadores: Ranking de protocolos por seguridad
- Seguros DeFi: Pricing dinámico basado en riesgo
- DAOs: Evaluar protocolos antes de invertir
Ver documentación detallada:
docs/USE_CASES.md- Casos de uso detalladosdocs/BUSINESS_VALUE.md- Valor de negocio y monetización
- ✅ Tests unitarios completos
- ✅ Diagrama de flujo visual
- ✅ Prompts mejorados para LLM
- ✅ Integración frontend en tiempo real
- ✅ Integración con Chainlink Data Feeds
- ⏳ Integrar con workflow CRE desplegado (en lugar de simulación)
- ⏳ Agregar WebSocket para actualizaciones en tiempo real
- ⏳ Historial de evaluaciones
- ⏳ Alertas cuando el score cambia significativamente
- ⏳ Evaluación de múltiples protocolos simultáneamente
MIT