Introducción
Nick Szabo describió por primera vez los contratos inteligentes en la década de 1990. En ese momento, definió al contrato inteligente como una herramienta que formaliza y protege redes informáticas al combinar protocolos con interfaces de usuario.
Szabo estudió el uso potencial de los contratos inteligentes en varios campos que involucran acuerdos contractuales, como por ejemplo los sistemas de crédito, el procesamiento de pagos y la gestión de derechos de contenido.
Los contratos inteligentes de blockchain permiten la creación de protocolos trustless. Esto significa que dos partes pueden comprometerse a través de una blockchain, sin necesidad de conocerse o confiar entre sí. Si las condiciones no se cumplen, el contrato no será ejecutado. Aparte de eso, la utilización de contratos inteligentes puede eliminar la necesidad de intermediarios, reduciendo significativamente los costos operativos.
En este artículo nos centraremos en los contratos inteligentes que se ejecutan en la Ethereum Virtual Machine (EVM), componente esencial de la blockchain Ethereum.
¿Cómo funcionan?
De forma resumida, un contrato inteligente funciona como un programa determinístico. Ejecuta una tarea particular cuando ciertas condiciones se cumplen, si es que se cumplen. Como tal, los sistemas de contrato inteligente a menudo contienen condicionales como "si…", "cuando…". Pero a pesar de la terminología popular, los contratos inteligentes no son contratos legales ni inteligentes. Simplemente son secciones de código que se ejecutan en un sistema distribuido (blockchain).
En la red Ethereum, los contratos inteligentes son los responsables de ejecutar y administrar las operaciones de la blockchain que se producen cuando los usuarios (direcciones) interactúan entre sí. Cualquier dirección que no sea un contrato inteligente se denomina "Externally Owned Account" o "EOA" (cuenta controlada externamente). Esto significa que, mientras los contratos inteligentes son controlados por código informático, las EOA son controladas por usuarios.
Básicamente, los contratos inteligentes de Ethereum están compuestos por un código de contrato y dos claves públicas. La primera clave pública es aquella proporcionada por el creador del contrato. La otra clave representa al contrato en sí mismo, lo que significa que actúa como identificador digital único de cada contrato inteligente.
La implementación de cualquier contrato inteligente se realiza mediante una transacción en la blockchain, y solo podrá ser activado cuando sea llamado por una EOA (o por otros contratos inteligentes). Sin embargo, el activador inicial siempre es de una EOA (usuario).
Características clave
Los contratos inteligentes de Ethereum a menudo presentan las siguientes características:
Distribuidos. Los contratos inteligentes son replicados y distribuidos en todos los nodos de la red Ethereum. Esta es una de las principales diferencias respecto a otras soluciones basadas en servidores centralizados.
Determinísticos. Los contratos inteligentes solamente realizan las acciones para las que fueron diseñados, siempre y cuando las condiciones se cumplan. Además, el resultado será siempre el mismo, sin importar quién los ejecute.
Autónomos. Los contratos inteligentes pueden automatizar todo tipo de tareas, funcionando como programas autoejecutables. En la mayoría de casos, sin embargo, si un contrato no es activado, permanecerá "latente" y no ejecutará ninguna acción.
Inmutables. Los contratos inteligentes no pueden ser modificados una vez implementados. Solamente pueden ser eliminados si una función particular ha sido previamente implementada. Por lo tanto, podríamos afirmar que los contratos inteligentes pueden proporcionar código a prueba de manipulaciones (tamper-proof code).
Trustless. Dos o más partes pueden interactuar vía contratos inteligentes sin conocerse ni confiar entre sí. Además, la tecnología blockchain garantiza que los datos son precisos.
Transparentes. Dado que los contratos inteligentes están basados en una blockchain pública, su código fuente no solo es inmutable sino también visible para todo el mundo.
¿Puedo modificar o eliminar un contrato inteligente?
Es imposible agregar nuevas funciones a un contrato inteligente de Ethereum después de que haya sido implementado. Sin embargo, si su creador incluye en el código una función llamada SELFDESTRUCT, tendrá la capacidad de "eliminar" el contrato inteligente en el futuro y reemplazarlo por uno nuevo. Por otra parte, si la función no se incluye en el código de antemano, no podrá eliminarse el contrato.
En particular, los llamados contratos inteligentes actualizables permiten a los desarrolladores tener más flexibilidad sobre la inmutabilidad de los contratos. Hay muchas formas de crear contratos inteligentes actualizables, con diversos grados de complejidad.
Tomando un ejemplo simplificado, imaginemos que un contrato inteligente se divide en múltiples contratos más pequeños. Algunos de ellos están diseñados para ser inmutables, mientras que otros tienen habilitada la función de eliminarse. Esto significa que parte del código se puede eliminar y reemplazar, mientras que otras funcionalidades permanecen intactas.
Ventajas y casos de uso
Como código programable, los contratos inteligentes son altamente personalizables y pueden diseñarse de muchas maneras diferentes, ofreciendo muchos tipos de servicios y soluciones.
Como programas descentralizados y autoejecutables, los contratos inteligentes pueden proporcionar una mayor transparencia y menores costos operativos. Dependiendo de la implementación, también pueden aumentar la eficiencia y reducir los gastos burocráticos.
Los contratos inteligentes son particularmente útiles en situaciones que implican la transferencia o el intercambio de fondos entre dos o más partes.
ERC-20
Limitaciones
Los contratos inteligentes están hechos de código informático escrito por humanos. Esto conlleva numerosos riesgos, ya que el código está sujeto a vulnerabilidades y errores. Idealmente, deberían ser escritos e implementados por programadores expertos, especialmente cuando se trata de información confidencial o grandes cantidades de dinero.
Por lo demás, hay quien argumenta que los sistemas centralizados pueden ofrecer la mayoría de soluciones y funcionalidades ofrecidas por los contratos inteligentes. La principal diferencia es que los contratos inteligentes se ejecutan en redes P2P distribuidas, en lugar de en servidores centralizados. Y como se basan en un sistema de blockchain, tienden a ser inmutables o muy difíciles de modificar.
La inmutabilidad puede ser ventajosa en algunas situaciones, pero muy perjudicial en otras. Por ejemplo, cuando una Organización Autónoma Descentralizada (DAO) llamada "The DAO" fue pirateada en 2016, millones de ether (ETH) fueron robados debido a fallos en el código de su contrato inteligente.
Es importante tener en cuenta que el problema no provino de la blockchain Ethereum. En cambio, fue causado por una implementación defectuosa del contrato inteligente.
Otra limitación de los contratos inteligentes está relacionada con su incierto estado legal. No solo porque está en una zona gris en la mayoría de los países, sino también porque los contratos inteligentes no se ajustan al marco legal actual.
Por ejemplo, muchos contratos requieren que ambas partes estén debidamente identificadas y sean mayores de 18 años. El seudónimo que proporciona la tecnología blockchain, combinado con la falta de intermediarios, podría amenazar esos requisitos. Si bien existen soluciones potenciales para esto, la ejecución legal de los contratos inteligentes es un verdadero desafío, especialmente cuando se trata de redes distribuidas sin fronteras.
Crítica
Algunos entusiastas de blockchain ven los contratos inteligentes como una solución que pronto reemplazará y automatizará una gran parte de nuestros sistemas comerciales y burocráticos. Si bien esta es una realidad posible, probablemente esté lejos de convertirse en la norma.
Los contratos inteligentes son ciertamente una pieza de tecnología interesante. Pero, ser distribuido, determinístico, transparente y de alguna manera inmutable puede hacerlos menos atractivos en algunas situaciones.
Básicamente, la crítica se basa en el hecho de que los contratos inteligentes no son una solución adecuada para muchos problemas del mundo real. De hecho, algunas organizaciones están mejor con alternativas convencionales basadas en servidor.
En comparación con los contratos inteligentes, los servidores centralizados son más fáciles y baratos de mantener, y tienden a presentar una mayor eficiencia en términos de velocidad y comunicación entre redes (interoperabilidad).
Conclusiones
No hay duda de que los contratos inteligentes causaron un gran impacto en el mundo de las criptomonedas, y ciertamente revolucionaron el espacio blockchain. Si bien los usuarios finales pueden no interactuar directamente con los contratos inteligentes, es probable que estos contratos impulsen una amplia gama de aplicaciones en el futuro, que van desde servicios financieros hasta la gestión de cadenas de suministro.
Los contratos inteligentes y la blockchain, en conjunto, tienen el potencial de revolucionar casi todas las áreas de nuestra sociedad. Pero solo el tiempo dirá si estás tecnologías innovadoras lograrán superar las múltiples barreras para una adopción a gran escala.