Riesgo de los contratos inteligentes, puentes y hackeos
Entiende cómo fallan los contratos inteligentes y los puentes, aprende de hackeos documentados y estima cómo los riesgos acumulados reducen un rendimiento DeFi.
Qué aprenderás
- Las principales formas en que fallan los contratos inteligentes: errores de código, claves de administrador, oráculos y actualizaciones.
- Cómo funcionan los puentes entre cadenas y por qué son objetivos tan grandes.
- Qué enseñan tres hackeos de puentes documentados sobre distintos tipos de fallo.
- Cómo combinar varias capas de riesgo en una única estimación aproximada de la pérdida esperada.
Explicación
Un contrato inteligente es un programa almacenado en una blockchain que custodia y mueve tokens según reglas fijas. Las estafas y el phishing se trataron en el curso "Fundamentos de Bitcoin y criptomonedas". Esta lección trata un peligro distinto: el protocolo es honesto, pero el código o su configuración fallan.
Principales tipos de fallo
- Errores de código: por ejemplo, la reentrada (reentrancy), en la que un contrato envía fondos antes de actualizar sus registros, de modo que un atacante puede volver a llamarlo y retirar fondos repetidamente. The DAO, en Ethereum, perdió así unos 3.6 millones de ETH en 2016.
- Claves de administrador: muchos protocolos tienen claves privilegiadas que pueden pausar, modificar o actualizar los contratos. Si una clave es robada o se usa indebidamente, los usuarios pierden fondos aunque el código sea correcto. Una multisig (monedero multifirma) necesita varias claves, por ejemplo 5 de 9, para aprobar una acción.
- Contratos actualizables: el código puede sustituirse. Un timelock (bloqueo temporal) retrasa las actualizaciones, por ejemplo 48 horas, para que los usuarios puedan salir antes.
- Manipulación de oráculos: un oráculo proporciona precios externos a un contrato. Si lee un mercado poco líquido, un atacante puede mover el precio con un préstamo flash (flash loan, un préstamo que se toma y se devuelve en una sola transacción) y engañar a un protocolo de préstamos.
Una auditoría es una revisión del código realizada por una empresa de seguridad. Reduce el riesgo, pero no lo elimina; varios protocolos hackeados estaban auditados.
Puentes
Un puente (bridge) mueve valor entre blockchains. El diseño habitual de "bloquear y emitir" (lock-and-mint) bloquea tokens en un contrato de la cadena A y emite un token envuelto (wrapped token) en la cadena B. El token envuelto es solo un pagaré. Si roban los tokens bloqueados o se emiten tokens sin respaldo, el token envuelto puede perder la mayor parte de su valor. Los puentes concentran grandes fondos en un solo lugar, lo que los convierte en objetivos atractivos.
| Caso (2022) | Pérdida aproximada | Causa raíz |
|---|---|---|
| Wormhole, febrero | unos $320 millones | Error en la comprobación de firmas: se emitieron 120,000 ETH envueltos en Solana sin depósitos |
| Ronin, marzo | unos $625 millones | Los atacantes controlaban 5 de las 9 claves de los validadores (un fallo operativo, no de código) |
| Nomad, agosto | unos $190 millones | Una actualización defectuosa hizo que mensajes no válidos parecieran válidos; se sumaron muchos imitadores |
La lección: el riesgo está en el código, en la gestión de las claves y en las actualizaciones. En el caso de Wormhole, una empresa vinculada repuso los fondos; en otros casos, los usuarios no fueron reembolsados por completo. El reembolso nunca está garantizado.
Ejemplo resuelto
Ejemplo hipotético: depositas €5,000 de una stablecoin traída por un puente en un protocolo de préstamos de una red de capa 2 y esperas un 6% anual. Asignas a cada capa probabilidades anuales de fallo aproximadas e inventadas: puente 2%, red de capa 2 1%, protocolo de préstamos 3%, oráculo de precios 1%. Supuestos: las capas fallan de forma independiente; cualquier fallo supone la pérdida total; se ignoran las comisiones, el gas y los impuestos.
- Probabilidad de que no falle ninguna capa = 0.98 × 0.99 × 0.97 × 0.99 ≈ 0.932.
- Probabilidad de al menos un fallo ≈ 1 − 0.932 = 0.068, alrededor del 6.8%.
- Pérdida esperada ≈ €5,000 × 0.068 ≈ €342.
- Rendimiento esperado = €5,000 × 6% = €300.
- Resultado ajustado por riesgo ≈ €300 − €342 ≈ −€42 al año.
Compara: mantener la stablecoin en su cadena nativa en un protocolo más sencillo con riesgos del 1% y el 2% da 1 − (0.99 × 0.98) ≈ 3.0%, una pérdida esperada de unos €149 frente a quizá un 3% (€150) de rendimiento. Cada capa adicional tiene que compensar su propio riesgo.
Error común
Actividad práctica
En papel: te planteas depositar €10,000 en un pool que promete un 9% anual. Los tokens llegan a través de un puente (supón un riesgo anual de fallo del 3%), la propia cadena tiene un 2% y el contrato del pool un 4%. Supón independencia y pérdida total ante cualquier fallo. Calcula la probabilidad de al menos un fallo, la pérdida esperada y el resultado ajustado por riesgo.
Mostrar solución
Ningún fallo = 0.97 × 0.98 × 0.96 ≈ 0.9126. Al menos un fallo ≈ 8.7%.
Pérdida esperada ≈ €10,000 × 0.087 ≈ €874. Rendimiento esperado = €900.
Resultado ajustado por riesgo ≈ €900 − €874 ≈ €26 al año: casi nada a cambio de una posible pérdida total grande.
Limitaciones: las probabilidades reales son desconocidas, los fallos suelen estar relacionados (un hackeo puede desencadenar otros) y son posibles las pérdidas parciales o los reembolsos. El método te ayuda a comparar estructuras, no a medir el riesgo real.
Puntos clave
- El riesgo de los contratos inteligentes incluye errores de código, claves de administrador, actualizaciones y oráculos.
- Los tokens envueltos son pagarés; si el puente falla, pueden quedarse casi sin valor.
- Cada capa que añades (puente, red, protocolo, oráculo) multiplica la probabilidad de fallo.
- Las auditorías y los timelocks reducen el riesgo, pero nunca lo eliminan, y el reembolso tras un hackeo no está garantizado.
Siguiente paso
La próxima lección trata los NFT y la tokenización de activos del mundo real: qué te da realmente el token y dónde están los riesgos.
Autoevaluación
Responde a las preguntas y luego comprueba tus respuestas. Puedes volver a intentarlo tantas veces como quieras.
Autoevaluación automática para tu propio repaso. Tus respuestas se comprueban en tu navegador y no las vemos ni evaluamos. No es un examen ni una titulación.
Tu progreso
«Completada» solo significa que marcaste la lección como terminada. No es una prueba de tu comprensión. El progreso y las notas se guardan solo en este navegador y en este dispositivo, no en una cuenta.