Los contratos inteligentes son fragmentos de código almacenados en una cadena de bloques que especifican una serie de condiciones y solo pueden ejecutarse una vez que se cumplen estas condiciones. Vienen en muchas formas y tamaños diferentes, desde aquellos que mueven monedas o tokens dentro del entorno de la cadena de bloques, hasta los que dependen de datos externos para satisfacer sus condiciones.
Los contratos inteligentes son fragmentos de código almacenados en una cadena de bloques que especifican una serie de condiciones y solo pueden ejecutarse una vez que se cumplen estas condiciones. Vienen en muchas formas y tamaños diferentes, desde aquellos que mueven monedas o tokens dentro del entorno de la cadena de bloques, hasta los que dependen de datos externos para satisfacer sus condiciones.
Lo que distingue a los contratos inteligentes de los programas regulares es que se ejecutan en una red descentralizada. Esto les da una gran ventaja, ya que no dependen de un sistema central único para ejecutarlos. Las plataformas de cadenas de bloques, como Ethereum, permiten que los contratos inteligentes se almacenen y ejecuten en una red de nodos distribuidos por todo el mundo.
En este artículo, examinamos cómo la cadena de bloques de Ethereum permite que los contratos inteligentes se aniden en ella, cómo se compilan y se implementan estos artículos, además de señalar un par de casos de estudio.
Si es la primera vez que escuchas sobre contratos inteligentes, te recomendamos leer primero nuestro artículo sobre los fundamentos de los contratos inteligentes.
ASPECTOS ESENCIALES DEL FUNCIONAMIENTO DE LOS CONTRATOS INTELIGENTES
- Los contratos inteligentes son código de software que puede ejecutarse una vez que se han cumplido sus condiciones.
- Los contratos inteligentes son software sin confianza que elimina la necesidad de un intermediario.
- Los contratos inteligentes son ejecutados por el entorno de ejecución de la Máquina Virtual de Ethereum.
- La mayoría de ellos están escritos en el lenguaje de programación Solidity.
- Las tarifas por la ejecución de contratos inteligentes se calculan en gas y se pagan en ETH.
- Los datos del mundo real necesarios para su ejecución son proporcionados por los llamados oráculos.
Mecanismo subyacente
La capacidad de Ethereum para facilitar contratos inteligentes se debe al entorno de ejecución nativo del protocolo llamado Máquina Virtual de Ethereum o EVM, que es ejecutado por todos los nodos de la red Ethereum. Es un entorno protegido para la ejecución de contratos inteligentes, que está completamente aislado. El código dentro de la EVM no tiene acceso a la red, al sistema de archivos ni a otros procesos.
La EVM se define como una máquina cuasi-Turing completa. Esto significa que puede realizar cualquier cálculo o ejecutar cualquier programa informático existente, siempre y cuando el gas requerido para ejecutar el programa no exceda el límite de gas establecido. En cierto modo, la EVM actúa como el sistema judicial, asegurándose de que los contratos inteligentes se ejecuten como deberían.
Compilación de contratos y oráculos
A diferencia de los contratos regulares, los contratos inteligentes no son hojas de papel impresas con complejas formulaciones legales. En su lugar, son programas escritos principalmente en Solidity, que es un lenguaje de programación de alto nivel desarrollado específicamente para la implementación de contratos inteligentes.
Una vez que un desarrollador escribe un contrato inteligente en Solidity, debe compilarse en bytecode compatible con EVM antes de su implementación. Los compiladores utilizados para traducir Solidity a bytecode notificarán al desarrollador de muchos problemas potencialmente explotables en el código. Esto le da al desarrollador una buena oportunidad de corregir el código antes de la implementación del contrato.
Dado que los contratos inteligentes son públicos, pueden ser accedidos por todos en la cadena de bloques. A menos que un desarrollador exponga el código a través de etherscan u otra plataforma, lo que es visible para la comunidad de la cadena de bloques es el bytecode, no el código fuente de Solidity.
El problema inherente a los contratos inteligentes es que no pueden acceder a la información del mundo real que a menudo es esencial para su correcta ejecución. Para resolver este problema, los contratos inteligentes se basan en oráculos, que son fuentes de datos de terceros para contratos inteligentes. Son responsables de encontrar y verificar información del mundo real, que luego se comunica a la cadena de bloques.
Dado que los oráculos son terceros y no forman parte del mecanismo de la cadena de bloques, no son completamente sin confianza. Esto es un problema porque no hay retrocesos en los contratos inteligentes. Cuando "firmas" un contrato inteligente, aceptas todos sus "términos", y no hay forma de revertir el proceso. Esto significa que la información proporcionada por los oráculos, ya sea información sobre vuelos, alojamiento o cualquier otra cosa, debe ser precisa.
Implementación y casos de uso de contratos inteligentes
Entonces, ¿cómo procede exactamente un transactor a entrar en un contrato inteligente? El principio básico es el siguiente.
Cada comando, o llamado código OP, tiene una cantidad más o menos establecida de gas requerido para ser emitido. Esto significa que se puede calcular aproximadamente una estimación del gas requerido para ejecutar un comando dado con anticipación; sin embargo, la cantidad real de gas solo se puede calcular en el momento de la ejecución. Si no proporcionas suficiente gas, la función del contrato inteligente no se ejecutará. Si, por el contrario, has dedicado suficiente gas (el límite superior es ilimitado), el contrato inteligente podrá funcionar según lo diseñado (será "Turing completo").
Entre otros, los contratos inteligentes tienen los siguientes casos de uso:
- Pueden funcionar como cuentas multifirma. Esto significa que una cantidad de criptomonedas bloqueada en un contrato inteligente solo se gastará una vez que un porcentaje establecido de personas que firman el contrato hayan llegado a un acuerdo.
- Pueden gestionar acuerdos entre usuarios. Por ejemplo, una parte podría comprar un seguro a la otra parte mediante un contrato inteligente. La cantidad a pagar por el asegurado se deducirá automáticamente y se enviará al asegurador.
- Proporcionan utilidad a otros contratos, de manera similar a cómo funcionan las bibliotecas de software.
- Almacenan información de aplicaciones, por ejemplo, datos de registro de dominio o registros de membresía.
Cabe mencionar que, contrariamente a la creencia popular, los contratos inteligentes no se ejecutan automáticamente cuando se cumplen las condiciones predeterminadas. Solo se ejecutan una vez que alguien o algo activa la función del contrato inteligente. Esto generalmente requiere una cierta cantidad de gas, ya que se debe escribir un nuevo estado del contrato en la cadena de bloques. Por lo tanto, si deseas que se ejecute tu contrato inteligente, tendrás que pagar una pequeña tarifa en ETH.
Los contratos inteligentes siguen siendo uno de los aspectos más intrigantes de la tecnología blockchain, ya que extienden la funcionalidad de la cadena de bloques mucho más allá de un libro de contabilidad para transacciones monetarias. Se crean nuevos y emocionantes contratos inteligentes y DApps todo el tiempo, y muchas empresas en la industria financiera y más allá eligen darle una oportunidad a la blockchain principalmente debido al potencial de los contratos inteligentes.