Repositorio educativo de contratos inteligentes Cardano escritos en Aiken y de aplicaciones TypeScript/Next.js que interactúan con ellos mediante MeshJS.
| Módulo | Propósito | Estado |
|---|---|---|
minting-app |
Minting de activos con wallet CIP-30 y API server-side | Demo funcional con tests |
spending-app |
Bloqueo y desbloqueo de ADA en un validator | Demo educativa |
stablecoin |
Flujo experimental de oracle, collateral y stablecoin | Experimental |
vesting/frontend |
Vesting parametrizado desde una interfaz web | Experimental |
vesting-parametrizado/frontend |
Variante parametrizada del vesting | Experimental |
oracle |
Scripts CLI para desplegar, actualizar y borrar un oracle | Herramienta de desarrollo |
*/onchain |
Validators Aiken y artefactos Plutus generados | Contratos de prueba |
- Node.js 24 LTS recomendado.
- npm 11 o compatible.
- Aiken instalado y disponible como
aiken. - Wallet CIP-30 para probar las interfaces.
- Proyecto Blockfrost para la red elegida.
Cada aplicación mantiene su propio package.json y package-lock.json; instala dependencias desde su carpeta.
Nunca uses NEXT_PUBLIC_BLOCKFROST_API_KEY: cualquier variable con ese prefijo puede llegar al navegador.
Para desarrollo, crea un .env.local dentro de la aplicación que estés ejecutando:
BLOCKFROST_API_KEY=tu_project_id_de_blockfrost
CARDANO_NETWORK=preprodLas mnemonics no deben configurarse en una aplicación web ni subirse al repositorio. Los scripts de oracle que requieran una wallet de firma deben ejecutarse sólo en un entorno local controlado o migrarse a un signer seguro antes de usar fondos reales.
Ejemplo con minting-app:
cd minting-app
npm ci
npm run devOtros comandos útiles:
npm test
npm run lint
npm run build
cd onchain && aiken checkLa verificación mínima de un cambio debe incluir:
- Tests de la aplicación modificada.
npm run lintynpm run build.aiken checkpara el paquete on-chain relacionado.- Prueba manual en
preprodcon una wallet de prueba.
Las pruebas automatizadas no envían transacciones reales salvo que se indique explícitamente en una prueba de integración.
El frontend sólo debe conectar la wallet, validar entradas, solicitar una transacción no firmada, firmarla mediante CIP-30 y mostrar el resultado. El backend debe ser el único lugar que inicializa Blockfrost, consulta UTxOs, construye transacciones y envía transacciones firmadas.
Consulta docs/architecture.md para conocer los límites y la migración en curso.
minting-app y spending-app ya usan API routes para Blockfrost y firma CIP-30 en el navegador. stablecoin y las interfaces de vesting todavía contienen lógica de provider en módulos importados por el frontend; permanecen marcadas como experimentales y no deben recibir claves mediante NEXT_PUBLIC_*. Su migración es el siguiente bloque de trabajo.
Este repositorio es un workshop y contiene prototipos con diferentes niveles de madurez. No uses sus contratos, claves, endpoints ni configuraciones en mainnet sin revisión independiente, pruebas de integración, auditoría de contratos y una estrategia operativa para claves.