"Solidity + OpenZeppelin RBAC + Wagmi v2 + Next.js + Foundry: La combinación tecnológica que hizo posible un sistema de trazabilidad donde 500 netbooks educativas son rastreadas sin punto único de fallo."
En el sector educativo público, la pérdida o extravió de dispositivos es un problema crónico. Una escuela recibe 500 netbooks y cada una necesita ser asignada a un estudiante, auditada periódicamente y rastreada durante todo su ciclo de vida. ¿Qué pasa cuando la base de datos central se corrompe, se pierde o es manipulada? Blockchain resuelve esto haciendo que cada evento sea inmutable y auditado públicamente.

Subtítulo técnico: Trazabilidad Web3 full-stack en EVM con RBAC en Solidity e integración Wagmi v2
🎯 Rastrear Dispositivos Educativos para que Nadie los Pierda de Vista
La situación: Una escuela recibe 500 netbooks. Cada una necesita ser asignada a un estudiante, auditada regularmente y rastreada durante todo su ciclo de vida. ¿Qué pasa cuando la base de datos central se corrompe, se pierde o es manipulada? Blockchain resuelve esto haciendo que cada evento sea inmutable y públicamente auditable.
📊 El Problema: Cuando las Bases de Datos Centralizadas Fallan
En la gestión tradicional de cadena de suministro, una sola entidad controla la base de datos. Esto crea varios problemas críticos:
| Problema | Impacto |
|---|---|
| Punto único de fallo | Si la base de datos se corrompe, se pierden todos los datos de rastreo |
| Falta de transparencia | Estudiantes, padres y auditores no pueden verificar los datos independientemente |
| Manipulación interna | Los admins pueden modificar registros sin que nadie lo sepa |
| Sin historial de auditoría | Los cambios históricos están ocultos o son fácilmente alterables |
Para instituciones educativas, esto significa cientos de dispositivos cuyo ciclo de vida — desde el registro hasta la asignación estudiantil hasta el mantenimiento — no puede ser rastreado de forma confiable.
flowchart LR
A[Base de Datos Centralizada] --> B[Admin Puede Modificar]
A --> C[No Auditoría Pública]
A --> D[Punto Único de Fallo]
style A fill:#ffcccc,stroke:#ff0000
style B fill:#ffcccc,stroke:#ff0000
style C fill:#ffcccc,stroke:#ff0000
style D fill:#ffcccc,stroke:#ff0000💡 La Solución: Blockchain como Verdad Compartida
SupplyChainTracker registra cada evento del ciclo de vida de cada dispositivo inmutablemente en la blockchain. Una vez escrito, nadie — ni siquiera el admin del sistema — puede alterar o borrar un registro.
Cómo Funciona Conceptualmente
sequenceDiagram
participant School as 🏫 Admin Escolar
participant BC as ⛓️ Blockchain
participant Student as 👨🎓 Estudiante
participant Auditor as 🔍 Auditor
School->>BC: Registrar Lote de Netbooks
BC-->>School: Transacción Confirmada
School->>BC: Asignar a Estudiante
BC-->>Student: Propiedad Registrada
Auditor->>BC: Solicitar Historial de Auditoría
BC-->>Auditor: Log Inmutable Completo
Auditor->>BC: Registrar Auditoría de Hardware
BC-->>Auditor: Auditoría ConfirmadaLa idea clave: la blockchain es la única fuente de verdad que todos confían porque nadie puede manipularla sola.
🛠️ Tecnologías Usadas
| Capa | Tecnología | Propósito |
|---|---|---|
| Smart Contracts | Solidity ^0.8.24, OpenZeppelin | Lógica de trazabilidad + RBAC on-chain |
| Testing | Foundry (Forge + Anvil) | Tests unitarios rápidos y despliegue |
| Frontend | React 19, Next.js 15+, TypeScript | Interfaz web operativa completa |
| Web3 | Wagmi v2, Viem, Ethers.js | Hooks type-safe para interacción EVM |
| Estilos | TailwindCSS | UI responsive y accesible |
| State Management | TanStack Query | Caché de estado on-chain |
🔧 Implementación: Arquitectura del Smart Contract
El Contrato Central
El sistema implementa un contrato inteligente central (SupplyChainTracker) que gestiona toda la lógica de negocio:
Ejemplo: Roles RBAC en OpenZeppelin
El control de acceso usa RBAC (Role-Based Access Control) nativo de OpenZeppelin:
Ejemplo: Asignación de Roles RBAC
Ejemplo Completo: Función assignToStudent
Control de Acceso: RBAC On-Chain
graph TB
subgraph Roles
ADMIN[Admin Role]
AUDITOR[Auditor Role]
SCHOOL[School Role]
TECH[Tech Role]
end
subgraph Acciones
REG[Registrar Netbooks]
ASN[Asignar a Estudiante]
AUD[Auditoría Hardware]
VAL[Validación Software]
end
ADMIN --> REG
ADMIN --> ASN
AUDITOR --> AUD
TECH --> VAL
SCHOOL -->|Consulta| BC[Estado Blockchain]
style ADMIN fill:#00f2ff,stroke:#00f2ff,color:#000
style AUDITOR fill:#ff00f2,stroke:#ff00f2,color:#fff
style SCHOOL fill:#00ff88,stroke:#00ff88,color:#000
style TECH fill:#ffaa00,stroke:#ffaa00,color:#000Archivos Clave del Repositorio
contracts/SupplyChainTracker.sol— Contrato principal con lógica de trazabilidad y RBACtest/SupplyChainTracker.t.sol— Tests exhaustivos con Foundryfrontend/src/— Interfaz React con Wagmi para interacción on-chain
💻 Frontend: UX Web3 con Next.js
La aplicación web cubre todo el flujo operativo:
- Gestión de dispositivos: Registro, asignación a estudiantes, auditoría de hardware y software
- Gestión de roles: Solicitud, aprobación y revocación de roles on-chain
- Dashboard de auditorías: Historial inmutable de todos los eventos
- Diagnóstico de servicios: Panel de salud de la conexión con blockchain
Ejemplo: Hook Wagmi para Consulta de Netbooks
Ejemplo: Test con Foundry
📊 Comparación: Tradicional vs Blockchain
| Aspecto | Tradicional (Base Centralizada) | Blockchain (SupplyChainTracker) |
|---|---|---|
| Punto de fallo | Único (la base de datos) | Distribuido (no hay pérdida) |
| Transparencia | Solo admins ven datos | Cualquiera puede auditar |
| Manipulación | Admin puede alterar registros | Inmutable, no se puede alterar |
| Verificación | Depende de auditoría interna | Pública, on-chain, instantánea |
| Historial | Puede ser borrado | Permanente, inmutable |
| Confianza | En la institución | En criptografía |
| Acceso | Limitado a la organización | Global, 24/7 |
| Costo de auditoría | Horas de trabajo manual | Segundos, consulta on-chain |
📈 Impacto: Por Qué la Blockchain Importa Aquí
Para la Escuela
- Adiós a los registros perdidos: Cada dispositivo es rastreado on-chain
- Auditorías transparentes: Padres y autoridades pueden verificar los registros
- Responsabilidad: Cada acción es atribuida a un rol específico
Para los Estudiantes
- Prueba de propiedad: Su dispositivo asignado está registrado en blockchain
- Rastreo de transferencia: Cuando un estudiante se gradúa, el historial del dispositivo sigue
Para los Auditores
- Historial inmutable: Nadie puede modificar retroactivamente los resultados de auditoría
- Verificación pública: Cualquiera puede verificar el estado de cualquier dispositivo
🤔 Por Qué Esto Importa Más Allá de la Educación
El mismo patrón de trazabilidad se aplica a:
- Rastreo de equipos médicos en redes hospitalarias
- Autenticación de productos de lujo (demostrar que un producto es genuino)
- Cadenas de seguridad alimentaria (rastreo de la granja a la mesa)
- Gestión de activos gubernamentales (inventario de equipamiento público)
La blockchain no es solo para aplicaciones financieras — cualquier industria que necesite registros a prueba de manipulaciones puede beneficiarse de esta arquitectura.
✅ Lecciones Aprendidas
Este proyecto fue el primer contacto serio con desarrollo full-stack Web3. Los desafíos más interesantes fueron:
- Sincronización de estado: Los datos on-chain son asíncronos y la UI necesita patrones específicos para evitar estados inconsistentes
- Control de acceso on-chain: Implementar RBAC directamente en el contrato es más gas-efficient que off-chain
- Testing con Foundry: La velocidad de
forge testcomparado con Hardhat es notable — los tests corren en segundos, no minutos
🔗 Explorar el Código
Código fuente completo: github.com/87maxi/SupplyChainTracker2
Próximo paso: Cloná el repo, ejecutá
anvilpara una blockchain local, e interactuá con el contrato usando el frontend Next.js. No se requiere wallet para modo de desarrollo.
Proyecto del Master en Blockchain y Web3 — CodeCrypto Academy