Los Smart Contracts
Los smart contracts son programas informáticos que se ejecutan automáticamente en una blockchain cuando se cumplen ciertas condiciones preestablecidas. Esto permite la creación de aplicaciones descentralizadas (Dapps) y centralizadas que pueden realizar transacciones y acuerdos de manera automatizada.
Los smart contracts han sido uno de los desarrollos más importantes en la industria blockchain en los últimos años.
Aunque originalmente fueron creados para Ethereum, los smart contracts se han convertido rápidamente en una herramienta valiosa para muchas blockchains.
Por ejemplo, se pueden utilizar para desencadenar un pago electrónico de forma automática, una vez se haya cumplido cierto evento determinable, que se ha programado previamente. De esta forma, se facilita la ejecución.
¿Cómo funciona un smart contract?
Los smart contracts pueden operar de forma autónoma gracias a que la red en la que se despliega lo permite y, además, la seguridad de la transacción queda garantizada por la tecnología blockchain. Solo es necesario que se indique al programa informático cuál es el resultado esperado y cuál será el evento que desencadenará ese resultado. Sería algo así: En caso de X, entonces Y.
Se deben conocer y aceptar las reglas establecidas y los pasos que se van a ejecutar antes de desplegar el programa ya que, una vez esto ocurra, será imposible cambiar las reglas que se hayan programado. Esto es así porque cada línea de código queda registrada en la blockchain y, por tanto, es inmutable (Existen los llamados "upgradeable smart contracts", que permitern lanzar versiones mejoradas del programa informático. Esta acción no revierte transacciones pasadas, pero puede modificar el resultado).
Un ejemplo ilustrativo de lo que sería una transacción irrevocable, son las máquinas expendedoras. Estas solo dispensan los productos cuando se introduce la cantidad de dinero correcta y se pulsa el botón correspondiente. Tanto los artículos vendidos como el dinero que se recibe se guardan en el interior de la máquina, que los protege de “ataques externos”.
Ventajas de los smart contracts
Una de las principales ventajas es que los smart contracts ofrecen seguridad a las partes en cuanto al cumplimiento automático de lo que estaba programado.
Esta misma naturaleza automática también elimina cualquier posible error humano (más allá de los posibles errores de escritura del código), al tiempo que favorece la creación de smart contracts que son, en la práctica, casi inmutables. Al ser automáticos, se reducen los costes y los problemas, facilitando también el proceso de ejecución del mismo.
Los smart contracts permiten además la creación de nuevos tokens dentro de una red, como es el caso de los ya mencionados tokens que siguen el estándar ERC-20, o los NFT, que siguen el estándar ERC-721. Estos tokens, son creados a partir de un smart contract de emisión, que siguen estos estándares y son desplegados sobre la red de Ethereum u otras que lo permiten, de forma que .es posible llevar una subcontabilidad de las transacciones realizadas con estos tokens en el libro principal de Ethereum, teniendo su propia unidad de cuenta. Todo ello, sin que se mezclen los saldos de ether u otros tokens con los del token en cuestión, y garantizando la transparencia, trazabilidad y seguridad que brinda la red de Ethereum.
Problemas de los smart contractsNo obstante, los smart contracts también son vulnerables a ciertos riesgos o problemas legales.
- Uno de estos problemas sería la pérdida de control sobre los resultados contractuales, consecuencia directa de la naturaleza automatizable y programable de los smart contracts. En cuanto se produzcan los eventos que desencadenan el smart contract, el código efectuará los cambios inmediatamente. El problema es que, por su naturaleza, no es posible ajustar los resultados del smart contract al contexto o a las circunstancias que rodean su ejecución, por lo que no es posible adelantarse a los imprevistos.
- También pueden dar lugar a riesgos operativos. Por ejemplo, si el código es incorrecto se puede ocasionar un problema muy difícil de resolver, ya que todas las operaciones están vinculadas e integradas en la blockchain y se ejecutan automáticamente. De esta forma un código erróneo puede no reflejar con exactitud su intención y resultar en un riesgo operativo.
- Además, gran parte de los resultados de un smart contract dependen de información exterior (cotizaciones de criptoactivos, precios de acciones, etc.), esto significa que la ejecución puede ser vulnerable a información errónea, lo que pone en duda la capacidad de autonomía y de autosuficiencia. Además, actualizar smart contracts puede ser complicado, por su propiedad de inmutabilidad. Las fuentes de información que se utilizan para integrar datos del exterior a una blockchain (por ejemplo, la cotización de una determinada acción) se denominan oráculos.
Smart Contracts y la Ethereum Virtual Machine
La relación entre los smart contracts y la Máquina Virtual de Ethereum o Ethereum Virtual Machine (EVM) es estrecha y fundamental. La EVM es un software que se ejecuta en cada nodo de la red Ethereum, levantando un sistema operativo básico que permite ejecutar los smart contracts.
En otras palabras, los smart contracts se programan en el lenguaje de programación compatible con estas máquinas virtuales, como es el llamado Solidity, y luego se cargan en la EVM, que es donde se ejecutan.
La EVM es una máquina virtual Turing-completa, lo que significa que puede ejecutar cualquier tipo de programa informático, siempre y cuando cumpla con las reglas de consenso de la red Ethereum. La EVM también es responsable de mantener el registro de los estados de los smart contracts y de actualizarlos después de cada transacción.
Los smart contracts y la EVM son la clave de la programabilidad en Ethereum y han permitido la creación de una gran cantidad de aplicaciones descentralizadas (dApps) en su blockchain.