¿Qué es EVM (Ethereum Virtual Machine)?

La Ethereum Virtual Machine, es una de las piezas claves en el funcionamiento de la blockchain de Ethereum. De manera simplificada podemos decir que EVM es un software diseñado para emular un maquina con determinadas capacidades que hacen posible el funcionamiento de la blockchain de Ethereum. Su función es la de permitir la ejecución de programas o smart contracts con la finalidad de desplegar sobre dicha blockchain una serie de funcionalidades añadidas para que los usuarios puedan disfrutar de las mismas.

EVM

Máquina Virtual explicada

Lo primero que necesitamos para comprender qué es exactamente la Ethereum Virtual Machine (EVM), es conocer qué es exactamente una máquina virtual. Pues bien, una máquina virtual o VM (Virtual Machine), es un software diseñado para crear una capa de emulación de lo que es un ordenador real. En palabras más simples, es un ordenador emulado mediante software, dentro del hardware de otro ordenador.

Por supuesto, esta máquina virtual emula todas las funciones de un computador. Hablamos de que es capaz de recrear un procesador, memoria RAM, discos duros, tarjetas de red y cualquier dispositivo que necesite.

Para lograr esto, las máquinas virtuales son capaces de aislar todas estas funciones en un “contenedor”, al cual podemos conectarnos e interactuar por medio de una interfaz de control. Esto nos ofrece la capacidad de que todo lo que sea ejecutado dentro de esta máquina virtual está aislado del resto del sistema. Una característica de seguridad única, pero también una característica que permite una gran portabilidad, o la capacidad de llevar esta máquina virtual a distintos sistemas y hardware.

En definitiva, las máquinas virtuales son una creación de software altamente flexible y que permite funcionalidades únicas.

Ahora sí, entremos en materia con EVM

Una vez que ya sabemos qué es una máquina virtual y como funciona. Veamos en más profundidad la EVM. La Ethereum Virtual Machine o EVM, es una máquina virtual que forma parte del ecosistema blockchain de Ethereum. Esta es capaz de ejecutar una amplia gama de instrucciones que le permiten una gran flexibilidad a la hora de realizar distintas operaciones.

Sin embargo, para hacer más sencilla la programación para esta máquina virtual se creo un lenguaje especializado de alto nivel llamado Solidity. A través de este lenguaje de programación se facilita la creación de los smart contracts. En primer lugar se transforma Solidity a los códigos de operación (OP_CODES) y luego a un bytecode. Este bytecode es finalmente ejecutado por la EVM para realizar las operaciones especificadas en un smart contract. Todo ello hace que la EVM puede funcionar como un computador de verdad, ejecutando desde las más sencillas hasta las más complejas operaciones.

En resumen, debido al carácter descentralizado de Ethereum y a su capacidad de almacenar smart contracts en los nodos de la red, Ethereum se convierte a sí mismo en un gran ordenador mundial descentralizado. Uno tan potente e increible que es capaz de realizar instrucciones que lleven a la resolución de cualquier tarea específica. De hecho, puede resolver casi cualquier problema computacional. Todo esto ocurre dentro de la propia blockchain de Ethereum.

Como decimos, todas las instrucciones se encuentran escritas en smart contracts de Ethereum.  Lo mejor de todo es que para poder usar el potencial de EVM tan solo debemos tener algo de $ETH para pagar las tarifas de transacción, e interactuar con alguna DApp, contrato inteligente o hacer nuestro propio contrato. No existe ninguna limitación. Cualquiera puede aprovechar el poder que EVM tiene a su disposición.

Características de la Ethereum Virtual Machine

Bien, llegados a este punto, pasemos a ver las características únicas de EVM:

  1. En primer lugar, ayuda a proporcionar un alto nivel de seguridad. Al ser una máquina virtual con limitaciones en las instrucciones y en la forma en cómo se ejecutan, EVM es capaz de ejecutar códigos no confiables sin consecuencias desastrosas.

     
  2. EVM es una construcción completamente descentralizada. Cada nodo dentro de la red Ethereum ejecuta una copia de esta máquina virtual en conjunto y sincronía con el resto de nodos que forman la red. Esto garantiza que las instrucciones dadas las EVM se ejecuten siempre y cuando exista al menos un nodo en activo. Lo que permite el acceso a dicho sistema desde cualquier parte del mundo, resistiendo la censura y garantizando el acceso a los recursos de la red. Además, como podrás deducir tras conocer todo lo anterior, otra gran ventaja es que no requiere de la participación de terceros.

  3. EVM es capaz de hacer realidad a los smart contracts o contratos inteligentes de Turing completo. Estos son programaciones específicas e invariables que pueden ejecutarse y hacerse cumplir por sí mismos, de una manera autónoma y automática.

     
  4. La EVM permite el desarrollo de una mayor cantidad de aplicaciones, y que éstas puedan ejecutarse sobre una misma red blockchain, sin afectar otras operaciones. Lo vemos claramente en el funcionamiento de las DApps de Ethereum y su explosión de desarrollo hasta la actualidad.

     
  5. La EVM posee la capacidad de ejecutar una serie de códigos de operación u OP_CODES bien definidos, fuero de estos códigos la EVM no es capaz de realizar absolutamente nada. Pero para que esta ejecución sea posible, dichos OP_CODES deben transformarse en bytecode o código máquina. Esto permite que EVM tenga un mayor rendimiento en la realización de operaciones en comparación con aproximaciones como las de Bitcoin.

  6. La EVM es sustancialmente menos eficiente que muchas otras máquinas virtuales convencionales. Esto se debe a que principalmente su diseño se basó en la utilidad del momento y no en el alto rendimiento.

  7. Los cambios y mejoras experimentados por la EVM han sido pocos hasta ahora. Por lo que no está optimizada en cuanto a la velocidad para distintas plataformas de hardware.

  8. El diseño de la EVM no está dirigido a la portabilidad, lo que limita lo espacios en los que dicha máquina virtual puede implementarse.

¿Cómo funciona la Ethereum Virtual Machine (EVM)?

El funcionamiento de la EVM puede simplificarse de la siguiente forma: En primer lugar, los desarrolladores de EVM han creado un lenguaje de programación llamado Solidity. Este lenguaje de programación de alto nivel es muy parecido al JavaScript, un lenguaje muy usado en el mundo de la programación Web. El objetivo de este lenguaje es facilitar la tarea de escribir código para los smart contracts de Ethereum y las DApps asociadas a los mismos.

Gracias a Solidity crear estos smart contracts resulta muy sencillo y manejable. Aunque la EVM por sí misma no es capaz de ejecutar directamente este lenguaje, si lo hace por medio de una técnica conocida como compilación de instrucciones.

La EVM utiliza estos códigos de operación (OP_CODES) para realizar tareas específicas. Estas limitaciones llevan a al EVM a crear métodos de trabajo que le permitan realizar sus operaciones, entre ellas la más importante es la memoria de contratos. Dicha memoria sirve para almacenar información a la que la EVM puede acceder rápidamente. Por otra parte, para almacenar datos de manera indefinida y hacerlos accesibles para futuras ejecuciones de contratos, se puede usar el almacenamiento por contratos. Esta actúa esencialmente como una base de datos pública, desde la cual los valores se pueden leer externamente sin necesidad de enviar una transacción al contrato, es decir, sin comisiones.

Smart Contracts y la EVM

Como ya hemos mencionado en varias ocasiones la funcionalidad de los smart contracts de Ethereum es posible gracias a EVM. Para diseñar estos contratos inteligentes los desarrolladores usan Solidity o un lenguaje de programación compatible con la EVM (Vyper o Bamboo). Esto es posible debido a la característica nº3, descrita más arriba. Y es que EVM es capaz de realizar operaciones de Turing completo.

El funcionamiento de los smart contracts dentro de la EVM es relativamente sencillo. Se programan las condiciones del contrato, es decir las formas en las que podemos interactuar con el mismo, y la EVM se encarga de realizar el resto de operaciones. Dicho así, suena muy sencillo y sin complicaciones. Pero esto es solo la teoría. La verdad es que conseguir todo esto conlleva una enorme complejidad, tal como veremos ahora.

En primer lugar, ejecutar smart contracts, como cualquier otra operación computacional, requiere de recursos informáticos. Memoria RAM, CPU, almacenamiento, etc. Además, debido a la forma en cómo funciona la tecnología blockchain, cada interacción con los contratos tiene un coste (gas) asociado. El primer problema se soluciona gracias a que la EVM organiza su memoria en forma de pila. Para ello crea espacios de almacenamiento en el que se contiene la información durante la ejecución de un contrato. Esta memoria, permite que los contratos tengan un espacio donde almacenar datos de ejecución y otras variables.

Por otro lado, las necesidades de almacenamiento son atendidas por un espacio de almacenamiento externo a la blockchain. Generalmente las DApps usan este almacenamiento para guardar la información necesaria entre ejecuciones. De este modo siempre que se necesiten estarán disponibles de forma local, evitando hacer una transacción cada vez que sea necesario al smart contract, evitando entre otras cosas el costo asociado que cada una de estas transacción tendría.

Estos costes de interacción se miden en Gas, una medida creada por Ethereum para calcular el costo de interactuar con la EVM. El objetivo del Gas es brindar seguridad frente a un atacante malicioso que pueda aprovecharse de la red para realizar algún acto malicioso o simplemente dejarla fuera de servicio. Así que cada operación realizada tiene un coste asociado. Por ejemplo, usar el código de operación KECCAK256 tiene un costo de operación de 30 Wei. Pero el costo aumenta en razón de 6 Wei por cada palabra que añadamos a esta operación cuya finalidad es realizar un hash de la información que coloquemos.

Esta medida se mantiene con el resto de instrucciones que es capaz de ejecutar la EVM. A mayor complejidad de la instrucción mayor es su costo en Gas.

Usos de EVM

En la actualidad el desarrollo de la EVM continua a grandes pasos. De hecho, la EVM cuenta con un desarrollo oficial muy activo, pero también con desarrollos e implementaciones alternas muy activas.

A lo largo de los 5 años de historia de Ethereum, la EVM ha experimentado varias revisiones y existen varias implementaciones de la EVM en varios lenguajes de programación.

Todos los clientes de Ethereum incluyen una implementación de la EVM. Adicionalmente hay varias implementaciones independientes, entre las que se incluyen las siguientes:

Esto nos dice mucho del desarrollo de Ethereum Virtual Machine (EVM) y de lo que podemos esperar de la misma. Uno de los desarrollos más grandes del mundo cripto que sigue creciendo, evolucionando y mejorando cada día, mostrando al mundo que lo que la tecnología blockchain es capar de crear y de aportarnos.

Sin más, esto es todo lo que te quería contar sobre EVM. Espero que te haya resultado interesante la información.

Mil Gracias por leernos!!. 👋😄

Descargo de responsabilidad: no estoy patrocinado por ninguno de los proyectos/empresas mencionados en este artículo. Este no es un consejo financiero, la información de este artículo es solo para fines informativos, educativos y de entretenimiento. Nunca inviertas lo que no puedas permitirte perder. Renuncio a cualquier responsabilidad o pérdida incurrida por cualquier persona que actúe sobre la información, ideas o estrategias expuestas en mis artículos. Haz tu propia investigación y si inviertes, hazlo bajo tu propio riesgo y responsabilidad.

Hey!, 👋 si te gusta nuestro contenido y quieres colaborar para soportar los gastos del Canal, me puedes invitar a un ☕ café!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *