Conceptos

Qué es un smart contract y qué puede salir mal en uno

Código que cumple lo pactado, para bien y para mal — 6 min de lectura

La palabra "contrato inteligente" (smart contract) suena a algo más sofisticado de lo que es. No hay inteligencia artificial ni razonamiento de por medio: es simplemente código, almacenado en una blockchain, que ejecuta unas reglas fijas cuando se cumplen ciertas condiciones. Esa sencillez es, a la vez, su mayor virtud y su mayor problema.

Un contrato que se ejecuta solo

Un smart contract funciona con una lógica de tipo "si pasa X, ocurre Y", programada de antemano y publicada en la blockchain para que cualquiera pueda leerla. Por ejemplo: "si esta dirección deposita 100 unidades del token A, transfiere automáticamente el equivalente en el token B calculado según esta fórmula". No hace falta que un empleado revise la operación ni que un gestor la autorice — el propio código, ejecutado por miles de ordenadores de la red a la vez, hace cumplir el acuerdo.

La ventaja: automatización y reglas iguales para todos

Nadie puede negociar un trato especial con el contrato ni saltarse la cola. El código es el mismo para el primer usuario que para el último, y —a diferencia de un acuerdo verbal o de una cláusula en letra pequeña— puede leerse en su totalidad antes de interactuar con él, al menos por quien sepa programación. Esa transparencia y esa falta de discrecionalidad son la base de buena parte del atractivo del sector DeFi tratado en otro artículo de este blog.

El riesgo: el código no distingue un error de una instrucción correcta

Aquí está el problema de fondo. Un smart contract no entiende la intención de quien lo escribió — solo ejecuta literalmente lo que está escrito. Si una condición está mal programada (por ejemplo, un cálculo que permite retirar más fondos de los que corresponden, o una comprobación de seguridad que se puede saltar en un orden concreto de operaciones), el contrato ejecutará esa instrucción defectuosa con la misma fidelidad que ejecutaría la correcta. No hay un supervisor humano que note que "esto no tiene sentido" y lo pare a mitad de camino.

A esto se suma otro rasgo del diseño: una vez desplegado en la blockchain, un smart contract es, en muchos casos, muy difícil o imposible de modificar directamente. Algunos se diseñan con mecanismos de actualización, pero eso introduce a su vez la pregunta de quién controla esa actualización y qué pasa si esa clave de control se pierde o se compromete.

Casos que ya han ocurrido

En la historia del ecosistema DeFi ha habido varios episodios de gran repercusión en los que un fallo de programación en un contrato permitió a alguien retirar fondos de una forma no prevista por quienes lo diseñaron, por importes conjuntos que se cuentan en cientos de millones de dólares a lo largo de los años. No es un riesgo teórico ni puntual: es una categoría de fallo que se repite porque escribir código sin ningún error, en un entorno donde cualquiera puede intentar explotarlo, es extraordinariamente difícil.

La idea central de este artículo Un smart contract cumple exactamente lo que dice su código, ni más ni menos — y eso incluye sus errores. Las auditorías de seguridad reducen el riesgo, pero no lo eliminan: siguen apareciendo fallos en contratos ya revisados.

Resumen antes de seguir