Warning: strpos() expects parameter 1 to be string, array given in /home/site/wwwroot/wp-content/themes/twentynineteen-child/functions.php on line 163
Antes de la aparición de ethereum, el concepto de smart contracts fue descrito en 1995 por Nick Szabo [1,2], un matemático y criptógrafo americano que público un documento llamado Smart contracts glossary. En 1997, desarrolló un documento más completo que explicaba los smart contracts. Estas ideas nunca llegaron a ponerse en práctica debido a las carencias de la tecnología de la época.
Los smart contracts están presentes en un gran número de soluciones blockchain y cada una proporciona una solución tecnológica diferente para implementar la funcionalidad de los smart contracts. En este tema se usan como referencia los smart contracts de ethereum, por ser la primera solución en permitir la ejecución de código programado dentro de blockchain y por la relevancia que tiene esta red para proporcionar soluciones implementadas con smart contracts. Los conceptos desarrollados en este tema, son aplicables a otras soluciones blockchain que incorporan la funcionalidad de smart contracts.
¿Qué es un smart contract?
Los contratos son acuerdos escritos donde se definen unos compromisos por las partes implicadas y una serie de penalizaciones si no se cumplen las acciones pactadas. Este documento en papel muchas veces puede ser interpretado de manera diferente por las partes, generando disputas que requieren de terceros para ser resueltas. Un smart contract o contrato inteligente es un código que se almacena en blockchain, donde se definen las reglas que permiten gestionar los datos almacenados por el contrato inteligente. Los smart contracts se ejecutan en blockchain acorde a las reglas establecidas sin la necesidad de un tercero que controle el proceso.
El código de un smart contract tras ser desplegado en blockchain no puede ser modificado. Esto implica que su comportamiento siempre será acorde al código programado. Los smart contracts permiten guardar información en blockchain. Esta información puede ir variando en función de las reglas establecidas en el código del smart contract. Se puede decir que cada smart contract controla la información que guarda en la cadena de bloques.
Cada smart contracts tienen una dirección o identificador único asociado. Para ejecutar un smart contract es necesario enviar una transacción al identificador o dirección del smart contract. En ethereum, los mineros son los encargados de la ejecución del código y de actualizar la información en la cadena de bloques.
Estructura
Los smart contracts cuentan con una estructura definida que se compone de cuatro elementos:
- Identificador: es la dirección o nombre que permite determinar cada smart contract almacenado en blockchain.
- Variables de estado: son los datos asociados al smart contract que se guardan en blockchain.
- Constructor: es una función específica que permite inicializar las variables de estado del smart contract cuando se despliega en blockchain.
- Funciones: donde se define la lógica de negocio o reglas que manejan las variables de estado o criptomonedas asociadas al smart contract.
Características
Cuando se despliega un smart contract se le asocia una dirección que sirve para identificar a ese smart contract. El código de los smart contracts desplegados ya no puede modificarse. El código queda almacenado en la cadena de bloques asociados a la dirección del smart contracts. Los smart contracts requieren de una transacción para ejecutarse. La ejecución de un smart contract siempre está asociado a una transacción.
Un smart contract pueden recibir y enviar criptomonedas asociadas a su dirección. Un smart contract puede llamar a otro smart contract. Se pueden establecer restricciones sobre las llamadas a las funciones, como definir un periodo para la ejecución de una función o limitar una función para que solo puedan ser ejecutadas por una o más direcciones. Los smart contracts son predecibles, transparentes e inalterables. Al funcionar en blockchain no tienen periodos de inactividad o caída del servicio, siempre están disponibles para ser ejecutados dentro de la red blockchain.
Funcionamiento
Para poder ejecutar un smart contract este ha de estar desplegado en la red blockchain y es necesario conocer la dirección del smart contract y las funciones que este tiene disponibles para ser ejecutadas. Es importante publicar las funciones de un smart contract si se quiere que los usuarios de la red u otros smart contracts puedan interactuar con dichas funciones.
Despliegue de un smart contract
El despliegue de un smart contract se realiza creando una transacción donde el campo datos contiene el código del smart contract y la dirección destino no se rellena. Esta acción permite desplegar el smart contract inicializando las variables de entorno con el contenido definido en el constructor del contrato inteligente. Al desplegar un smart contracts se obtiene la dirección del smart contract, que es necesaria para poder realizar operaciones sobre el smart contract desplegado.
Ejecución de un smart contract
Para poder ejecutar un smart contract es necesario enviar una transacción a la dirección del smart contract indicando:
- La dirección del smart contract.
- La función que se quiere ejecutar.
- Los datos necesarios para ejecutar la función.
- La cantidad de criptomoneda que se quiere enviar (opcional).
También es necesario añadir la cantidad de criptomoneda necesaria para ejecutar la función indicada. La transacción se firma y se envía a uno o varios nodos como el resto de las transacciones. Cuando un minero procesa una transacción de un smart contract, este ha de obtener el código del smart contract, esto lo hace buscando en la cadena de bloques el código desplegado utilizando el identificador del contrato inteligente.
Al recuperar el código también obtiene el valor de las variables de estado. Esta información se carga en la máquina virtual de ethereum (EVM) encargada de ejecutar el código con los datos cargados de la transacción y la información de las variables de entorno. Cuando termina la ejecución, el minero establece los cambios en la cadena y continúa ejecutando otra transacción, hasta que puede crear un bloque y minarlo.
Los cambios no son efectivos hasta que el bloque es validado e incluido en la cadena de bloques. En ethereum los smart contracts pueden generar unos eventos que permiten comunicar a otros dispositivos o aplicaciones fuera de blockchain que se ha completado la ejecución de cierta transacción.
Funcionamiento de la máquina virtual de ethereum (EVM)
La EVM proporciona un entorno aislado que permite la ejecución de las instrucciones máquina del smart contract, utilizando una pila o memoria de información. La máquina virtual de ethereum es el motor que ejecuta los smart contracts. El funcionamiento de la EVM se recoge en un documento denominado ‘yelollow paper’. Cada instrucción máquina tiene un coste de ejecución que se mide en gas y que tiene una equivalencia con el ether.
El emisor de una transacción ha de enviar la cantidad de ETH necesario para costear la ejecución de la función indicada en la transacción. El gas de blockchain funciona como el combustible para el motor de un coche, el motor es la máquina virtual de ethereum y funciona mientras haya combustible para consumir. El emisor puede enviar una cantidad de gas superior a la necesaria para la ejecución, ya que el gas no consumido por la EVM se devuelve al emisor. ¿Qué ocurre si en la ejecución de un smart contract se termina la cantidad de gas? Esta situación puede ocurrir en los siguientes casos:
- Si el código está mal programado y genera un bucle o si se realiza una mala gestión de las llamadas otros smart contracts.
- Si el emisor no proporciona una cantidad suficiente para completar la ejecución de la función.
Cuando la máquina virtual de ethereum ejecuta una función y se agota el gas disponible para la ejecución de la transacción, si la máquina virtual de ethereum no ha terminado de procesar la función determinada, se revierten los cambios y se termina la transacción. En este caso la transacción no se ejecuta, pero el minero se queda con la cantidad de ETH correspondientes al gas enviado.
El profesional en la nueva industria
TECH Universidad Tecnológica cada día se adapta a las necesidades de su alumnado. Por ello cuenta con la última información acerca de las nuevas tecnologías y el como pueden ser aplicadas a la enseñanza. Tal es el caso de su Facultad de Informática, donde se desarrollan programas como el Máster en Visual Analytics & Big Data y el Máster en Tecnología Específica de Telecomunicación. Sin embargo, para aquellos profesionales que buscan hacer parte del cambio y el siguiente paso de la evolución en la tecnología, no cabe duda que su mejor opción es el Máster en Industria 4.0 y Transformación Digital.