¿Sabes qué es una máquina virtual de Ethereum o Ethereum Virtual Machine (EVM) y cómo funciona?
El Ether (ETH), la moneda de la blockchain de Ethereum, la cual es la segunda criptomoneda del criptomercado en términos de capitalización, es sumamente popular entre los criptoinversores. Aunque, a los desarrolladores, lo que realmente les atrae es su lenguaje de programación nativo, Solidity, y la Máquina Virtual de Ethereum (o EVM por sus siglas en inglés). Ambos son elementos fundamentales para la admiración que recibe Ether por parte de la comunidad de desarrolladores. La blockchain de Ethereum sigue atrayendo a los desarrolladores de DApp (aplicaciones descentralizadas) gracias a su gran flexibilidad, la gran variedad de herramientas disponibles para los desarrolladores y el gran número de usuarios que tiene esta plataforma.
La Ethereum Virtual Machine (la Máquina Virtual de Ethereum), que representa el núcleo de la arquitectura de la blockchain, es un programa encargado de ejecutar el código fuente de las aplicaciones, lo que proporciona un entorno de ejecución que es ejecutado sobre la cadena de Ethereum. Además, hemos de tener en cuenta que la EVM es Turing-completa y, por eso, es capaz de ejecutar cualquier programa que haya sido codificado en cualquier lenguaje de programación, lo que permite que los desarrolladores puedan crear fácilmente y rápidamente Smart Contracts y DApps personalizados para la novedosa Web3.
Aparte de todas estas funcionalidades tan importantes, la EVM dispone de acceso a todos los nodos de la blockchain, gestiona los Smart Contracts y ejecuta de forma eficaz las transacciones en la red de Ethereum, lo cual hace que sea una de las máquinas virtuales más potentes actualmente existentes.
¿Qué es la EVM y cómo funciona?
La blockchain de Ethereum, que fue conceptualizada en 2013 por el programador Vitalik Buterin, debe su todo su éxito a la Máquina Virtual Ethereum (EVM) la cual fue creada por el programador Gavin Wood mientras estuvo en Ethereum. Fue escrita en C++ y usaba el compilador del proyecto LLVM, la Ethereum Virtual Machine opera continuamente y sus operaciones son inmutables y determinan el estado de cada bloque en la cadena de Ethereum.
La EVM no se limita a gobernar los nodos diciéndole al libro de contabilidad distribuido que mantiene la blockchain de Ethereum que pueden o no pueden hacer, sino que, además, también define las normas específicas para el cambio de estado de un bloque a otro. Esta funcionalidad de Smart Contract es la razón por la cual Ethereum ha llegado a ser conocido.
Para comprender que hace la Máquina Virtual de Ethereum, debemos fijarnos en cada una de las distintas funciones que realiza para garantizar que la red Ethereum funcione correctamente. Por cada entrada recibida, la EVM crea una salida de una naturaleza determinista y realiza una función matemática en el sentido más simple.
La EVM tiene una profundidad de 1024 elementos, siendo cada uno de ellos una palabra de 256 bits, y funciona como si fuese una máquina de apilar que va empujando valores transitorios hacia y desde una pila empujando. Además, tiene una memoria temporal, formada por una matriz de bytes, que va cambiando entre dos transacciones en la cadena de Ethereum. Los códigos de los Smart Contracts que han sido compilados se ejecutan por la EVM como si fueran una colección de 140 opcodes estándar, mientras que implementa otras operaciones de pila específicas de la blockchain.
De esta manera, la EVM se mantiene en un estado de máquina volátil durante el procesamiento de cualquier transacción y pasa a un estado global, que contiene información relativa a las diferentes cuentas mantenidas en la blockchain de Ethereum. Todas las operaiones son dirigidas por el código de la EVM, que ha pasado por varias iteraciones desde que se lanzase la blockchain de Ethereum en 2015, lo que ha conllevado diferentes implementaciones del EVM que actualmente hay en uso.
La Ethereum Virtual Machine es la encargada de mantener el nivel de abstracción entre los nodos de Ethereum y el código que se ejecuta y actúa como una función que ofrece resultados consistentes sin divulgar los detalles a los usuarios o a los nodos.
¿Cuál es el fin de la Máquina Virtual de Ethereum?
La Máquina Virtual de Ethereum ha ido alimentando a todas las aplicaciones que se ejecutan en la cadena de Ethereum sin que se haya registrado ningún período de inactividad importante. Para la comunidad de desarrolladores, la Máquina Virtual de Ethereum hace la función de programa general que ejecuta otros más pequeños que son conocidos como Smart Contracts, al mismo tiempo que les proporciona libertad para escribir dichos contratos en una amplia variedad de lenguajes de programación, ya sea en Solidity, Vyper, Python o Yul, entre muchos otros.
Gracias a la flexibilidad ofrecida por la EVM, la cadena de Ethereum ha logrado crear miles de DApps en los sectores DeFi, las finanzas descentralizadas, y NFT. Cada DApp y Smart Contract que las componen se convierte en bytecode, que es introducido en la Máquina Virtual de Ethereum y es distribuido por todos los nodos de la cadena de Ethereum. Cuando un Smart Contract es desplegado, la EVM se comunica con todos los nodos y efectúa los cambios de estado necesarios cuando se llega a un consenso.
Podríamos decir que la Máquina Virtual de Ethereum se introduce en cada uno de los nodos que componen la cadena de Ethereum para ejecutar los Smart Contracts, usando bytecode en lugar del lenguaje base en que fue programado, esto aisla el ordenador anfitrión del código de la máquina en el que se ejecuta Ethereum.
¿Qué ventajas tiene la máquina virtual de Ethereum?
Gracias al funcionamiento de la Ethereum Virtual Machine, los desarrolladores pueden ejecutar el código sin tener que preocuparse del posible impacto sobre el resto de la cadena o de los posibles fallos con el tratamiento de los datos o archivos personales alojados en cualquiera de los nodos.
Incluso, pueden ejecutar complejos Smart Contracts sobre diferentes entornos informáticos de consenso distribuido. Esto garantiza que, si solo falla un nodo, no halla impacto negativo alguno en la ejecución del Smart Contract o la DApp, ya que el código de la Máquina Virtual de Ethereum continúa siendo el mismo en todos los nodos y, como a nivel global los datos de la cuenta permanecen dentro de la EVM, los desarrolladores ven en ello algo perfecto para escribir códigos para Smart Contracts personalizados y para la creación de diferentes DApps, las cuales puedan acceder a ese conjunto de datos y obtener resultados fiables.
La precisión y fiabilidad de los resultados es lo que hace que la EVM y la blockchain de Ethereum sean extremadamente adecuados para una expansión sostenible de su ecosistema de DApps y Smart Contracts. Si a todo esto le sumamos la biblioteca de códigos estándar disponibles para los desarrolladores, una cantidad cada vez mayor de cadenas de capa 2 que son totalmente compatibles con la EVM y las enormes posibilidades de uso potenciales de la EVM, entenderemos por qué la Ethereum Virtual Machine es la plataforma preferida por los desarrolladores de Web3.
Los inconvenientes de la Máquina Virtual Ethereum
A pesar de las múltiples ventajas ofrecidas por la EVM, hay algunas desventajas a tener en consideración por los desarrolladores. La más importante sería las elevadas fees, tasas de la transacción, o costes de gas asociados a la ejecución de cualduier DApp o Smart Contract en la blockchain de Ethereum.
Al pagarlas en ETH, estas fees varían en función de la complejidad del Smart Contract y de lo congestionada que esté la red en ese momento, lo que hace que sea imprescindible que desarrolladores y emprendedores pongan precio a sus servicios. Si le sumamos que Solidity es el lenguaje de programación favorito para codificar sobre la EVM, esto implica que todos los desarrolladores tienen una grata experiencia programando y poseen los suficientes conocimientos técnicos para crear Smart Contracts eficientes.
Esto es sumamente importante, porque cualquier requisito técnico adicional conllevaría un mayor costo de gas y perjudiciaría al éxito del proyecto. Si los programadores deciden codificar en cualquier otro lenguaje de programación, deberán tener sumo cuidado al resolver cualquier repetición del código, ya que la Ethereum Virtual Machine procederá a compilarlos. Aunque es factible hacer una actualización de los Smart Contracts en una fase posterior, esto conllevaría un gran riesgo de seguridad por la necesidad de crear un Smart Contract intermedio para que haga referencia a la dirección del original.
¿Tienen futuro las Máquinas Virtuales de Ethereum?
Pese a los revolucionarios cambios que ha supuesto la puesta en marcha de la Ethereum Virtual Machine en la cadena de Ethereum, esta gran tecnología para la lectura y la ejecución de código continúa evolucionando por diversos proyectos de diferentes blockchains.
Como la posibilidad de operar entre las diferentes cadenas de bloques resulta ser el aspecto de mayor importancia para los desarrolladores, actualmente hay muchas cadenas que son compatibles con la EVM y la mayoría de ellas cargan menos gas por transacción y una velocidad de transacción más rápida que la ofrecida por el protocolo ooriginal de Ethereum. El resultado es que todas esas cadenas ahora son capaces de interactuar con la de Ethereum sin problema alguno y facilitan las transferencias de fondos a sus propias cadenas de bloques usando puentes (bridges) entre blockchains.
Tras completarse la fusión del protocolo de Ethereum en septiembre de 2022, el siguiente paso a dar sería pasar de la EVM a la nueva Ethereum WebAssembly (eWASM). Que está siendo diseñada para que sea altamente modular y totalmente independiente de la plataforma. La eWASM se está promocionado como el próximo cambio de las reglas de juego para el protocolo de Ethereum y se supone que podría llevar a otras cadenas a utilizar este nuevo entorno para Smart Contracts. Claro que, si la eWASM para saber si finalmente acabará sustituyendo a la EVM como el motor más confiable para tramitar Smart Contracts es una cuestión que sólo tendrá respuesta con el tiempo.