Introducción a la Ethereum Virtual Machine (EVM)

Introducción a la Ethereum Virtual Machine

Además de permitir el intercambio de valores, Ethereum facilita la creación de contratos inteligentes. A través de la Ethereum Virtual Machine (EVM), podremos sacarle el máximo provecho a la blockchain, y en esta introducción veremos lo básico. Los contratos inteligentes son programas de ejecución automática que habilitan varias apps en Ethereum.

Los tokens no fungibles o NFTs, las plataformas de finanzas descentralizadas (DeFI), juegos blockchain. Cada una de estas herramientas funcionan mediante contratos inteligentes. Los contratos inteligentes hoy corren únicamente gracias a la Ethereum Virtual Machine, por eso la introducción a su funcionamiento es tan importante.

EVM es un motor computacional que facilita el despliegue y la operación contratos inteligentes. Sin EVM, sería imposible ejecutar estos programas en el protocolo Ethereum. Por eso EVM es una parte crítica del núcleo de la arquitectura Ethereum.

En este artículo, veremos una introducción al entorno Ethereum Virtual Machine. Analizaremos los elementos básicos de EVM, su estructura, los códigos operacionales y los contratos inteligentes.

Introducción a Ethereum Virtual Machine: ¿qué es?

Para entender EVM, primero hay que explorar dos conceptos: el de máquinas virtuales, y el de Turing completo.

Máquinas virtuales

Las máquinas virtuales son programas que simulan el comportamiento de una computadora física. Una máquina virtual tiene una unidad de procesamiento y almacenamiento que corre como un proceso en tu ordenador. Es como tener una computadora corriendo dentro de otra.

Una VM es similar a otros programas de Windows o MacOS. La diferencia es que están diseñadas para realizar funciones de más alto nivel. Es más, una VM, a diferencia de un sistema operativo tradicional, no tiene acceso a partes de tu ordenador como ancho de banda o almacenamiento.

Si corriste juegos de Android en tu PC con un emulador, una máquina virtual sería similar. Si bien VM y emulador son conceptos diferentes, los dos permiten correr hardware en entornos aislados. La idea es poder correr código de un hardware específico, en otro dispositivo.

Turing Completo

La introducción al Ethereum Virtual Machine requiere conocer al matemático británico Alan Turing. Él creó la primera Máquina Turing, antepasada del ordenador. Una máquina Turing completa puede procesar cualquier cálculo, sin importar la complejidad, si tiene suficiente tiempo y recursos.

Si atamos estos dos conceptos, podemos definir la EVM de la siguiente manera:

La Ethereum Virtual Machine es una máquina virtual gigante, que permite desplegar y ejecutar código. Solamente hay que instalar el software de cliente necesario, acceder a EVM y usarlo para correr programas en la blockchain. Esencialmente, actúa como una “computadora mundial” que realiza operaciones de software en un entorno descentralizado.

Sin un control centralizado, EVM se mantiene gracias a individuos y compañías que prestan poder de cálculo al sistema a cambio de incentivos. Por lo tanto, es una buena forma de conseguir aplicaciones resistentes a la censura ya que no se pueden apagar de forma unilateral.

El EVM es Turing completo, ya que puede usarse para realizar cálculos de complejidad variable. Esto diferencia a Ethereum de Bitcoin, ya que este último es Turing incompleto, limitando su funcionalidad. Bitcoin funciona en primera instancia como un registro distribuido. Las reglas para transferir valor están especficadas. Además de encargarse de la transferencia de valor, Ethereum (mediante EVM) permite aplicar contratos inteligentes. Por eso, Ethereum es una máquina de estado distribuido.

Estado se refiere a la información sobre el sistema en cualquier punto del tiempo. En Ethereum el estado referencia las direcciones, balances de cuenta y códigos de contrato inteligentes que existen en momentos específicos. Cada transacción modifica el estado de Ethereum, y eso se refleja en la red.

¿Cómo funciona la  Ethereum Virtual Machine? Una introducción simple

Aquí exploraremos los fundamentos básicos que conforman los bloques de la Ethereum Virtual Machine. Así obtendremos una visión general del sistema, algunos detalles técnicos pesados quedarán fuera.

Opcodes

EVM utiliza una serie de instrucciones llamadas opcodes para ejecutar distintas tareas. Hay más de 140 opcodes que permiten ejecutar procesos distintos en EVM. Los opcodes son necesarios porque EVM no puede interpretar las instrucciones escritas en Solidity. Este es el lenguaje utilizado para encodear los contratos inteligentes. Por lo tanto, el código de un contrato inteligente se transforma en opcodes, y así se ejecuta en el entorno EVM.

Un ejemplo para la introducción a la Ethereum Virtual Machine: creamos un contrato inteligente usando en opcode CREAR. Así damos la orden de correr o detener un contrato mediante el opcode DETENER. Hay una amplia variedad de opcodes para Ethereum.

Gas

El gas es el recurso que permite ejecutar código en el entorno EVM. Se mide en “gwei”, una unidad de ether. Así como necesitamos combustible para el auto en la vida real, EVM requiere gas para ejecutar operaciones.

Los opcodes, las instrucciones específicas que se usan para las operaciones en EVM, requieren una cantidad de gas puntual. El gas es el equivalente al recurso computacional necesario para realizar cualquier acción.

Cada ejecución de código tiene una tarifa de gas. Esto varía según muchos factores, desde la complejidad de la operación, hasta la demanda de la red. Las tarifas de gas incentivan a los individuos a prestar su poder de cálculo a Ethereum. Sin tarifas de gas, el entorno EVM no funcionaría como una computadora descentralizada.

El gas también tiene otro propósito: previene la ejecución de acciones maliciosas. Por ejemplo, un ataque DDoS. Si bien EVM puede correr casi cualquier cálculo, es difícil predecir el tiempo de ejecución de cada operación.

Una operación maliciosa bien diseñada, puede correr infinitamente, causando a la red pérdida de poder computacional y un crash. Las tarifas de gas previenen el problema, forzando a los actores maliciosos a pagar cada aso que realizan en el proceso computacional.

Antes de empezar una operación, tienes que marcar un límite de gas. Es el máximo que vas a pagar en un cálculo. Una vez que el límite se excede, la acción se suspende de forma inmediata. Entonces, el loop infinito que podría amenazar a Ethereum queda desarticulado de esta forma.

Contratos inteligentes

Los contratos inteligentes son pedazos de código que se ejecutan cuando una serie de parámetros establecidos se cumplen. Un contrato inteligente usa programación condicional para realizar operaciones.

En la introducción a Ethereum Virtual Machine debemos entender que los contratos inteligentes son inmutables, autónomos y transparentes. Estas acciones combinadas, hacen atractivos los contratos inteligentes pero eso no quita que tengan fallas.

La inmutabilidad quiere decir que una vez desplegado, el código del contrato en la blockchain no se altera. Los contratos inteligentes son autónomos porque se ejecutan automáticamente sin control externo. Y son transparentes porque las reglas que determinan su rendimiento están escritas en un código abierto al público.

Algunos contratos inteligentes se usan para crear e intercambiar tokens en la blockchain. Los tokens ERC-20, por ejemplo, tienen un contrato inteligente que define su nombre, creación, intercambio, provisión total y otros atributos.

Transacciones

Una transacción es una instrucción de una cuenta de Ethereum. Un ejemplo de transacción es enviar ethere a una dirección desde tu billetera electrónica. En este caso, le das a la EVM la instrucción de transferir valor de tu billetera a otra ubicación en la blockchain.

No todas las transacciones en Ethereum involucran transferir valores. Algunos pueden transferir información de arbitraje. El resultado de la transacción dependerá del recipiente.

Una cuenta regular de un tercero, recibirá el ether enviado. Sin embargo, una cuenta con contrato inteligente puede ejecutar un código cuando la transacción se realiza exitosamente. Y como explicamos antes, las transacciones son funciones de transición del estado de la blockchain.

Los elementos que discutimos en esta sección conforman el núcleo de la infraestructura de EVM.

Características de la Ethereum Virtual Machine para su introducción

Determinista

En programación, el determinismo es la habilidad de un programa de producir el mismo resultado para una misma entrada en cada instancia. El determinismo asegura que los desarrolladores pueden diseñar programas para realizar operaciones específicas con resultados requeridos, de manera independiente.

El EVM es determinista, así que los opcodes proveen el mismo resultado sin importar cuantas veces se realice el cálculo. Esto es importante porque las dApps con contratos inteligentes de Ethereum manejan transacciones de altos valores. Por eso debe funcionar de manera confiable. De lo contrario, los usuarios no tendrían confianza para usarlos sin esperar fallas.

Aislado

La EVM es aislada. Esto quiere decir que el código no tiene acceso a los procesos de tu ordenador. Puedes desplegar con seguridad tus programas en la EVM mientras proteges tu software y hardware de problemas potenciales.

Es más, los contratos inteligentes operan en entornos aislados dentro del EVM. Entonces, bugs o hacks que afectan un contrato inteligente puntual, no influyen en el resto del protocolo.

Terminable

La EVM es Turing completo. Teóricamente puede usarse para realizar cualquier cálculo si tiene los recursos e instrucciones necesarios. Sin embargo, todo cálculo se basa en el gas designado. Si se acaba el gas, la operación deja de correr.

En este contexto, Ethereum sería casi Turing completo, o terminable, ya que el código de ejecución puede terminar en momentos específicos. Sin embargo, esta función es importante para asegurar programas que no corran para siempre (por accidente o maliciosamente) y bloqueen la red.

¿Por qué es importante la Ethereum Virtual Machine y una introducción a su funcionamiento?

La EVM es la que permite la ejecución de contratos inteligentes en el protocolo Ethereum. Estos contratos son la clave de las aplicaciones descentralizadas, los tokens y otros proyectos que corren en la blockchain.

Un vistazo general a las funciones de la EVM

1 – Proveen el entorno y tiempo de ejecución para contratos inteligentes

Sin la EVM, desplegar contratos inteligentes sería fútil. La EVM brinda un entorno aislado y seguro para ejecutar código de contrato inteligente.

2 – Funciona como una unidad de procesamiento descentralizada

La EVM le da poder al protocolo Ethereum y le da la programabilidad necesaria para crear dApps. Cada transacción o ejecución de contrato inteligente se desarrolla en la EVM.

3- Registra los cambios de estado

La EVM monitorea los cambios en el mundo Ethereum. Como explicamos antes en la introducción a la Ethereum Virtual Machine, el estado es la descripción del protocolo en cualquier momento del tiempo. Se incluyen balances de cuentas, códigos de contrato, almacenamiento de contratos y más.

Las operaciones, como enviar ether, ejecutar código o crear contratos, causan cambios de estado. El trabajo de la EVM es actualizar la red y reflejar dichos cambios.

Reflexiones finales

La EVM es el corazón de las operaciones Ethereum. Sin la EVM Ethereum no puede convertirse en “la computadora de Internet con poder descentralizado y aplicaciones disponibles a usuarios del mundo”.

Sin embargo, la EVM todavía enfrenta problemas, como una pobre escalabilidad. Eso limita su funcionalidad. Las actualizaciones planeadas, incluyendo la fragmentación, prometen mejorar la EVM y expandir su uso.

Total
0
Shares
Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Artículos relacionados