¿Qué es un contrato inteligente en blockchain?
El contrato inteligente en palabras sencillas
Una blockchain es un registro común de las transferencias, del que guardan una copia muchas computadoras de la red. El contrato inteligente vive en ese registro en su propia dirección, es decir, un número en la red como el de una «cuenta» común, y en esa dirección están el código y los datos del programa1. Las computadoras de la red ejecutan ese código de la misma manera para todos, y el resultado queda anotado en el registro.
Un contrato inteligente se parece a una máquina expendedora1. Metes una moneda y aprietas un botón, la máquina te da la bebida, y no hace falta ningún vendedor. La regla de la máquina es igual para cada comprador, y no hay forma de convencerla de que te dé la bebida sin pagar. El contrato inteligente funciona igual, solo que con criptomonedas y con anotaciones en la blockchain.
El término lo inventó Nick Szabo, que describió la idea en 1994, mucho antes de que existieran las blockchains2. La palabra «contrato» aquí significa una regla escrita en un programa, sin papeles ni firmas de las partes. Si un contrato inteligente tiene o no la fuerza de un contrato legal lo decide la ley de cada país ⚖️.
Cada vez que alguien usa un contrato inteligente se hace una operación en la blockchain, y por ella se paga la comisión de red, que en Ethereum se llama gas. La paga quien envía la operación, aunque algunas apps pueden hacerse cargo de ese pago. Cómo funciona la comisión lo explica el artículo qué es el gas.
Hay contratos inteligentes en muchas redes, como Ethereum, Tron y Solana. Los programas hechos para Ethereum funcionan sin cambios también en redes compatibles, por ejemplo BNB Chain y Polygon; más sobre esto en el artículo qué es la EVM.
Qué tienen que ver los contratos inteligentes con los tokens y los permisos
Los tokens, es decir, la criptomoneda emitida sobre una red ajena, son anotaciones en las cuentas que llevan los contratos inteligentes. Cada token, por ejemplo USDT en Ethereum o en Tron, lo lleva su propio contrato inteligente, que anota cuántos tokens hay en cada dirección3. Cómo funcionan los tokens lo cuenta el artículo qué es un token, y en qué se diferencian sus formatos en distintas redes, el artículo estándares de tokens.
Sobre contratos inteligentes funcionan las stablecoins, el cambio de una criptomoneda por otra sin una empresa intermediaria y la emisión de NFT2. El sitio por el que usas un servicio así es solo una ventana al contrato inteligente; el trabajo lo hace el código en la blockchain4. Sobre las stablecoins hay un artículo aparte, qué es una stablecoin, y sobre los NFT, otro: qué es un NFT.
Un contrato inteligente no toca tus tokens por su cuenta. Un contrato ajeno puede sacarlos de tu dirección solo si le diste permiso, por ejemplo si tocaste «Permitir» o «Firmar» en tu billetera dentro de su sitio5. Aparte de eso, el emisor de los tokens (la empresa que los emitió) puede congelarlos o quemarlos si esa posibilidad está prevista en el contrato inteligente del token. Cómo se ven esos permisos en la billetera y cómo revocarlos lo explica el artículo seguridad al conectar una billetera cripto.
Un contrato inteligente no ve por sí mismo los datos del mundo exterior, como la cotización de una moneda. Se los pasan los oráculos, servicios aparte que llevan datos a la blockchain, y si un oráculo pasa un precio equivocado, el contrato cumple su regla con ese precio equivocado6. Una de las redes de oráculos la describe el perfil Chainlink.
Qué no se puede deshacer en un contrato inteligente
Una operación que ejecutó un contrato inteligente no se puede cancelar por los medios normales1. Las consecuencias solo se corrigen con una operación nueva o con un cambio de las reglas de toda la red, como después del hackeo de The DAO, que se cuenta más abajo. Por defecto, un contrato ya publicado en la red tampoco cambia su código7.
Aun así, algunos proyectos hacen que sus contratos inteligentes se puedan actualizar. Entonces confías en quienes controlan las actualizaciones, y una versión nueva puede cambiar las reglas para todos. Para bajar el riesgo, las actualizaciones se aprueban con varias firmas, con una votación de los titulares, o se aplican con una demora que da tiempo a salir a quien no está de acuerdo7.
En la blockchain, el contrato inteligente se guarda como código de máquina, que una persona no puede leer. Si el texto publicado del programa coincide con ese código se puede comprobar en un explorador de bloques, un sitio donde se ven todas las direcciones y operaciones. Ahí, un contrato que pasó esa comprobación aparece marcado como verificado (Verified)8.
¿Se puede recuperar el dinero si un contrato inteligente falló?
Por lo general, no. La criptomoneda que salió de un contrato inteligente por un error o un hackeo casi nunca se recupera9. Hay alguna posibilidad si el contrato trae de antemano una función de devolución o tiene un administrador con derecho a intervenir. Eso se averigua en la documentación del proyecto y en el código verificado del explorador de bloques. Si el proyecto ofrece una devolución, usa solo su sitio oficial.
Riesgos de los contratos inteligentes
Un error de código es un riesgo contra el que la red no protege. Por errores en contratos inteligentes se robaron o perdieron más de mil millones de dólares9.
En 2017, por un solo error en un programa compartido, la gente perdió el acceso a su criptomoneda en las billeteras multifirma de Parity, es decir, billeteras donde una transferencia la aprueban varios dueños10. Se propuso devolverla cambiando las reglas de la red, pero la propuesta se retiró11. Otro caso, el hackeo del contrato inteligente The DAO en 2016, terminó con la división de la red Ethereum12; esa historia está en el artículo hard fork.
Los errores los buscan revisiones independientes del código, que se llaman auditorías. Una auditoría encuentra parte de los problemas que se les pasaron a los desarrolladores, pero no atrapa todos los errores9. Por eso el sello «auditado» baja el riesgo, aunque no da garantías.
Cualquiera puede publicar un contrato inteligente1, y entre ellos hay fraudulentos, por ejemplo tokens con el nombre de una criptomoneda conocida. De estas trampas habla el artículo phishing y estafas.
¿Quién responde si hackean un contrato inteligente?
No hay una respuesta única. Si responden los creadores y quienes administran el proyecto lo deciden la ley del país, las condiciones del proyecto y los tribunales ⚖️. Si te perjudicaron, guarda la dirección del contrato y los hashes de tus operaciones, es decir, sus números en la red, con los que se encuentran en el explorador. Sigue los anuncios del proyecto en su sitio oficial y denuncia el robo ante la policía de tu país. A quienes te escriban primero prometiendo recuperar tu dinero a cambio de un pago no les pagues: es una estafa frecuente.
Antes de usar un contrato inteligente que no conoces, revisa cuatro cosas:
- la dirección del contrato coincide con la de la documentación oficial del proyectodónde consultar: la documentación oficial del proyecto, sección con las direcciones de los contratos inteligentes;
- el código figura como verificado en el explorador de bloques;
- se sabe quién puede actualizar el contrato o ponerlo en pausa;
- el monto es uno que puedes permitirte perder, sobre todo en la primera operación.
Más detalles sobre los contratos inteligentes en distintas redes y el caso Parity
En Tron, los contratos inteligentes los ejecuta su propia máquina virtual, la TVM, y los programas para ella se escriben en el mismo lenguaje que para Ethereum, Solidity13. En Solana, a los contratos inteligentes se les llama programas14. Un programa lo puede actualizar quien tiene el derecho de actualización, que suele ser quien lo publicó, y si ese derecho se revoca, ya nadie puede cambiar el programa15. Bitcoin tiene un lenguaje de condiciones simples para las transferencias. Con él se pueden exigir las firmas de varios dueños o impedir que las monedas se gasten antes de una fecha fijada16.
El error de Parity ocurrió el 6 de noviembre de 2017. Todas las billeteras multifirma creadas después del 20 de julio de 2017 funcionaban con una misma biblioteca, un programa común. Al parecer, un usuario se convirtió por accidente en su dueño y borró la biblioteca, y las billeteras que dependían de ella dejaron de funcionar10. La propuesta de restaurar la biblioteca mediante una actualización de la red apareció en 201811.