Topics Conocimiento tecnológico profundo

¿Qué es una máquina virtual de Ethereum (EVM)? Guía para principiantes

Avanzado
Conocimiento tecnológico profundo
17 de jul de 2022

La máquina virtual (EVM) de Ethereum se denomina a menudo “el corazón de Ethereum”, que es exactamente lo que es. Al igual que el corazón bombea sangre que distribuye oxígeno y nutrientes por todo el cuerpo, una EVM otorga a los desarrolladores la capacidad de crear contratos inteligentes y DApps en el lenguaje de programación Solidity. Es responsable de que la mayoría de las DApps se creen hoy en día, lo que es lo que lo distingue del Bitcoin y otros libros contables distribuidos. En este artículo, profundizaremos primero en las máquinas virtuales de Ethereum y desglosaremos qué son, cómo funcionan y su papel en el desarrollo de DApp y el avance de la Web 3.0.

¿Qué es un EVM?

Una máquina virtual Ethereum es una plataforma de software, o “ordenador virtual”, utilizada por los desarrolladores para crear aplicaciones descentralizadas (DApps), así como para ejecutar e implementar contratos inteligentes en el sistema Ethereum.

Tanto si eres un programador con interés en DApps como un inversor que quiere aprender más sobre el mundo en constante evolución de las criptomonedas EVM, probablemente hayas oído hablar de Ethereum virtual machines.To comprender mejor qué es una EVM, ayuda primero aprender un poco sobre su historia.

Según Vitalik Buterin, el creador de Ethereum, BitTorrent fue la primera DApp. Bram Cohen inventó el protocolo de intercambio de archivos en 2001 y, a pesar de varios esfuerzos por destruirlo, BitTorrent sigue muy vivo.

Para detener realmente BitTorrent, todos los ordenadores de todos los hogares del mundo tendrían que estar apagados. Es una máquina virtual libre de restricciones físicas. Lo mismo sucede con la máquina virtual Ethereum. El EVM elimina la necesidad de hardware superpotente y es una plataforma ideal para programadores principiantes. Sin embargo, el conocimiento de los bytes, las pilas y los conceptos de la cadena de bloques, como las funciones hash y la prueba de trabajo, es útil cuando se trata de comprender mejor el código compatible con EVM y la máquina virtual Ethereum en general.

El propósito de la máquina virtual Ethereum es determinar el estado de cada bloque en la cadena de bloques Ethereum. Aunque las EVM son similares a otras redes basadas en blockchain en el sentido de que utilizan un libro mayor distribuido para mantener bases de datos para transacciones, añaden otra capa de funcionamiento debido a sus capacidades de contrato inteligente. Muchos se refieren a esta segunda capa como una “máquina de estado distribuida”.

¿Qué hace un EVM?

En su forma más rudimentaria, una máquina virtual de Ethereum es una gran base de datos para mantener todas las cuentas y saldos de Ethereum. Al mismo tiempo, también es un estado de máquina con la capacidad de ejecutar código de máquina y cambiar con cada nuevo bloque añadido al libro mayor de la cadena de bloques. Las reglas específicas que determinan cómo cambiará la EVM con cada nuevo bloque están realmente definidas por la propia EVM.

En pocas palabras, una máquina virtual Ethereum es un motor de procesamiento y una plataforma de software que funciona como un ordenador descentralizado. Desde aplicaciones cripto DeFi y EVM hasta juegos y mercados como OpenSea, los desarrolladores utilizan la máquina virtual de Ethereum para crear DApps basadas en Ethereum y su lenguaje de programación compatible con EVM, Solidity.

Lo más importante es que la máquina virtual de Ethereum es la parte de la red de Ethereum responsable de la ejecución e implementación de contratos inteligentes. Es donde los contratos inteligentes y millones de DApps basados en la blockchain de Ethereum viven y respiran.

Piensa en la cadena de bloques de Ethereum como una estructura P2P de diferentes nodos individuales. Un nodo se conecta al siguiente, lo que hace que cada nodo sea responsable de la seguridad y estabilidad de todo el ecosistema. Para ello y mantener el consenso en toda la cadena de bloques de Ethereum, cada nodo utiliza la EVM.

EVM y sus similitudes con las CPU

Para aclarar aún más el concepto de EVM, ayuda a volver a los conceptos básicos pensando en cómo funcionan los programas informáticos. Todo su software está escrito en un lenguaje de programación, como Java o C++. Sin embargo, dado que las CPU no pueden leer Java o C++, el código se compila y traduce a bytecode .

Ethereum no es una CPU: es una red mundial distribuida con 100 CPU que ejecutan simultáneamente la EVM. Sin embargo, la EVM funciona como una CPU virtual o “máquina” virtual que se ejecuta dentro del programa Go Ethereum, o “Geth”.

Al igual que otros programas de software, los desarrolladores crean DApps y escriben contratos inteligentes en un lenguaje de programación. En lugar de Java o C++, el lenguaje de Ethereum se llama Solidity. El código de solididad se compila en bytecode y se distribuye a todos los ordenadores (nodos) que ejecutan Geth en la red.

Cuando se implementa un contrato inteligente, cada nodo recibe una copia del mismo, ejecuta su bytecode y entrega el código a quien haya llamado a la implementación, lo que da lugar a un “cambio de estado”. Esto significa que el estado actual de la cadena de bloques se ha alterado, lo que solo se puede hacer con el consenso de cada nodo.

Por lo tanto, una EVM a menudo se denomina “máquina de estado distribuido”. Realiza un seguimiento del estado de la cadena de bloques a medida que se transforma con cada transacción.

¿Cómo funcionan las EVM?

Si alguna vez has descargado una canción, una película o un software de BitTorrent, sabes lo que puede hacer una red descentralizada. Ni siquiera las autoridades más poderosas del mundo pueden eliminarlo porque hacerlo requeriría apagar todos los ordenadores vinculados a la red.

Una de las mejores formas de escalar una red descentralizada es mediante el uso de máquinas virtuales. Al actuar como capa entre las máquinas y el código que ejecutan, las máquinas virtuales se pueden ejecutar en varios hardware y sistemas operativos desde cualquier lugar del mundo.

Las máquinas virtuales como la EVM funcionan de forma similar a las máquinas físicas con CPU, memoria y almacenamiento, pero funcionan solo como código. En teoría, cualquiera puede ejecutar una máquina virtual, lo que le da la flexibilidad y portabilidad que necesitan las redes descentralizadas.

La máquina virtual de Ethereum utiliza una red nodal descentralizada para ejecutar contratos inteligentes. Es una pila virtual dinámica, integrada en cada nodo de Ethereum para ejecutar un bytecode de contrato inteligente compatible con EVM.

Contratos inteligentes, nodos y P2P

Al aprender qué son las EVM y qué hacen para las criptomonedas en casos como los préstamos DeFi, ten en cuenta que los contratos inteligentes se escriben en Solidity y otros idiomas de nivel superior, y luego se traducen al bytecode y se compilan en la EVM. Esto significa que el código de la máquina está aislado del sistema de archivos, los procesos y la red del ordenador host.

Cada nodo de la red de Ethereum debe estar de acuerdo con el siguiente para ejecutar las mismas instrucciones. Esto hace que la máquina virtual Ethereum Turing complete , lo que significa que puede realizar pasos lógicos para la función computacional.

Por cada instrucción que implementa el EVM, se le asigna un coste, lo que permite al sistema realizar un seguimiento de los costes de ejecución. El coste de realizar transacciones de cripto EVM y ejecutar otras instrucciones se mide en unidades compatibles con EVM conocidas como gas.

Al habilitar una economía basada en los cargos de las instrucciones ejecutadas en lugar de las transacciones financieras ejecutadas, como Bitcoin, se logra la integridad de Turing. Esto significa que la máquina virtual de Ethereum es un ordenador de igual a igual, conectado globalmente, capaz de crear contratos inteligentes, eventos de crowdfunding P2P, economías de intercambio de archivos y más.

A diferencia de Internet a principios de la década de 1990, el futuro está ahí para tomarlo.

Códigos de operación

Por el momento, hay aproximadamente 150 códigos operativos diferentes que puede ejecutar una EVM. Entonces, ¿qué son exactamente los opcodes y por qué son importantes para comprender las EVM?

La razón por la que la máquina virtual de Ethereum se denomina Turing Complete se debe en gran medida a su capacidad para ejecutar instrucciones a nivel de máquina conocidas como opcodes .

Los códigos operativos compatibles con EVM ayudan a la EVM a completar tareas específicas relacionadas con transacciones de criptomonedas o contratos inteligentes de EVM. Sin embargo, los opcodes se utilizan para una variedad de operaciones, que van desde el registro aritmético y de datos hasta la memoria y la recuperación de la información del bloque.

Dicho esto, los opcodes no se escriben directamente en una EVM. Debido a su capacidad para permitir a los desarrolladores crear e interactuar fácilmente con contratos inteligentes, las EVM se escriben en el lenguaje de programación Solidity. Sin embargo, este idioma nativo debe convertirse en código operativo para que un EVM lo interprete.

A cada código operativo se le asigna un byte. Esto significa que se puede utilizar un máximo de 256 opcodes.

Contratos inteligentes

Al intentar comprender qué es una EVM, es necesario tener un conocimiento básico de los contratos inteligentes y su papel en las criptomonedas de EVM, DeFi y otras funciones de la cadena de bloques.

A veces denominados la “Aplicación de la EVM”, los contratos inteligentes son líneas de código compatibles con la EVM utilizadas por las partes para hacer transacciones entre sí sin el uso de un tercero, o la interferencia de las autoridades centrales.

Dentro de cada contrato inteligente hay una lista definida de operaciones que deben ejecutarse cuando se cumplen ciertas condiciones dentro o fuera de la cadena. Estas operaciones pueden variar desde la transferencia de fondos a ciertas direcciones hasta la creación de nuevos contratos inteligentes y la comunicación entre los existentes. En lugar de requerir un tercero, cualquiera puede enviar fondos a una dirección de contrato inteligente para impulsar estas operaciones.

Ethereum tomó el concepto de Bitcoin y lo impulsó al permitir a los desarrolladores crear contratos inteligentes sobre su cadena de bloques. El siguiente paso fue crear un entorno en el que los contratos inteligentes pudieran vivir e interactuar entre sí. Aquí es donde entra en juego la máquina virtual Ethereum.

El EVM combina los recursos no solo de una, sino de miles de CPU conectadas a la red de Ethereum. Además de verificar transacciones, traduce el código operativo de contrato inteligente escrito en Solidity en código byte, para que se puedan leer las instrucciones y ejecutar las operaciones. Para esta última parte, necesitas gas.

Almacenamiento de tarifa de Gas

El gas es el combustible que impulsa la máquina virtual Ethereum. Tanto si transfiere criptomonedas EVM como si invierte en un NFT, se necesita gas para pagar la ejecución de la operación. El gas actúa como una tarifa computacional necesaria para ejecutar contratos inteligentes.

A cada código operativo se le asigna un coste de gas. Cuanto más complejo sea el código operativo, mayor será la tarifa de gas. Por el momento, el coste inicial de cada transacción es de 21 000 gas.

Las tarifas de gas se cobran para compensar a los validadores responsables de verificar que la información de la transacción sea válida y que no haya excepciones o errores de la EVM.

Y lo que es aún más importante, las tarifas de gas ayudan a prevenir ataques DDoS y a mantener la red segura. Dado que la implementación de contratos complejos a escala requeriría cálculos largos y costosos, los atacantes se desaniman monetariamente de realizar intentos maliciosos. El ataque simplemente sería demasiado caro de ejecutar.

¿Qué son las blockchains compatibles con EVM?

La interoperabilidad entre las cadenas de bloques ha demostrado ser un problema significativo. A medida que persistían los problemas con Ethereum, como las altas tarifas de gas y las transacciones lentas, los desarrolladores comenzaron a crear DApps y contratos inteligentes basados en otras blockchains sin permiso para ofrecer transacciones más rápidas y tarifas de gas más bajas. Desafortunadamente, muchas de estas cadenas de bloques son muy limitadas y carecen de interoperabilidad con otras cadenas de bloques.

Las blockchains compatibles con EVM han demostrado ser una forma fácil de resolver este problema. En lugar de empezar desde cero y crear un entorno similar al de las EVM mediante el uso de puentes entre cadenas, los desarrolladores pueden copiar ciertas partes de la red Ethereum y crear DApps que permitan a los usuarios transferir activos de forma rápida y sencilla entre cualquier red EVM.

Con esta interoperabilidad, muchas de las cadenas de bloques más utilizadas de la actualidad siguen este modelo compatible con EVM. Algunos ejemplos incluyen algunos de los nombres más importantes en el espacio cripto de EVM, como:

Cadena inteligente de Binance

Avalancha

Fantom

Cardano

Polígono

Tron

Independientemente de tus razones para querer comprender las EVM, es importante saber que todas estas cadenas laterales son compatibles con las EVM.  Ofrecen todos los beneficios y el alcance de la cadena de bloques Ethereum, pero con velocidades más rápidas, mayor capacidad y menores costes de transacción.

En última instancia, al hablar de las blockchains compatibles con EVM, todo se reduce a la optimización y a la creación de la mejor experiencia de usuario descentralizada posible. Dicho esto, también hay otros beneficios.

Interoperabilidad del ecosistema Ethereum

Uno de los mayores beneficios de las EVM es su interoperabilidad dentro del ecosistema Ethereum. Ethereum es la cadena de bloques más utilizada del mundo. Gracias a la máquina virtual de Ethereum, las DApps basadas en la cadena de bloques de Ethereum pueden comunicarse e interactuar entre sí, lo que permite una experiencia de usuario más rápida y fluida.

Al utilizar puentes de cadena de bloques, se puede lograr la interoperabilidad entre cadenas de bloques. Los usuarios pueden enviar libremente activos a través de redes EVM de una DApp a la siguiente.

Fácil de transportar para Dapps

Las máquinas virtuales de Ethereum facilitan la migración y expansión de DApps a nuevas cadenas sin tener que reescribir ningún código. Usar otro tipo de máquina virtual, como Move-VM o Wasm , requiere más recursos y dificulta mucho la portabilidad de DApps.

Baja barrera de entrada para los desarrolladores de Ethereum

Una EVM también tiene una entrada de baja barrera para los desarrolladores de Ethereum. No hay necesidad de preocuparse por la naturaleza de las EVM o si su código es compatible con EVM. Tampoco es necesario aprender otros lenguajes de programación, ya que los desarrolladores pueden utilizar herramientas conocidas de Ethereum como Waffle y MetaMask.

Casos de uso de EVM

Ahora que hemos analizado qué es una EVM y cómo funciona, veamos cómo todo se une para impulsar las criptomonedas EVM y otros proyectos basados en Ethereum.

Tokens ERC-20

Varios proyectos de DApps y Ethereum incentivan a los usuarios con tokens ERC-20, que están específicamente diseñados para transferirse fácilmente entre direcciones y mantener el mismo valor en toda la red.

Los tokens ERC-20 se crean mediante contratos inteligentes siguiendo estructuras de datos definidas. Esta estructura de datos es responsable de nombrar, distribuir y supervisar el token.

Estos tokens se utilizan por mucho más que cripto EVM. Nexus Mutual, que proporciona seguro sobre contratos inteligentes, utiliza el token NXM ERC-20 para ofrecer a los usuarios la capacidad de realizar reclamaciones y comprar cobertura. Otro ejemplo es Livepeer . Aunque no es exactamente el ejemplo más popular al hablar de las EVM, esta red de streaming de vídeo descentralizada utiliza el token ERC-20 de Livepeer para incentivar a los usuarios a suministrar recursos a la red. Estas son solo dos de las muchas DApps que manejan tokens ERC-20.

AMM y DEX

Los exchanges descentralizados (DEX) permiten intercambiar tokens ERC-20 mediante la implementación de contratos inteligentes. Estos contratos inteligentes permiten a los usuarios aprovechar los fondos de liquidez de tokens sin interferencia de terceros, lo que les da el título de market makers automatizados (AMM). SushiSwap , Uniswap y otros exchanges populares son en realidad aplicaciones de este modelo AMM descentralizado.

Minería NFT

Otro token ampliamente popular es el ERC-721 no fungible. Los contratos inteligentes con este token se utilizan con frecuencia para acuñar tokens no fungibles (NFT), que son tokens que poseen un valor único en toda la cadena de bloques de Ethereum.

Hace unos años, una parte del código ahora tiene la capacidad de democratizar el acceso virtual a los mercados de arte. Estos proyectos de juego, como Gods Unchained y Axie Infinity, también utilizan estos tokens para artículos y coleccionables del juego.

Préstamo DeFi

AdaSwap es un exchange descentralizado basado en Cardano con un AMM. Recientemente, anunció una colaboración con Milkomeda . Al utilizar soluciones de capa 2 para una cadena lateral, Milkomeda ofrece cadenas de bloques no EVM como la compatibilidad con Cardano EVM. Con esta cadena lateral, los usuarios pueden transferir activos y ejecutar Cardano DApps en Ethereum, y viceversa.

AdaSwap y Milkomeda utilizan esta colaboración para integrar las máquinas virtuales de Ethereum en el ecosistema Cardano. Hay otras plataformas DeFi siguiendo el ejemplo de Cardano.

DAO

La máquina virtual de Ethereum está regida por una organización autónoma descentralizada, o DAO. Una DAO es una entidad comunitaria que carece de autoridad central. Esto da a la comunidad el control sobre la red.

Las DAO no solo son totalmente autónomas, sino que también son transparentes. Los contratos inteligentes describen las reglas y ejecutan decisiones basadas en instrucciones escritas en código, pero en cualquier momento, el voto y las propuestas se pueden realizar a través del consenso. Incluso el código en sí puede estar abierto a auditoría pública.

En última instancia, las DAO están regidas por miembros individuales que toman decisiones críticas en relación con el proyecto. Las reglas de una DAO las establecen miembros principales de la comunidad y se implementan a través de contratos inteligentes. Dado que estos son visibles, verificables y abiertos a auditoría pública, cada miembro de la DAO puede comprender cómo funciona el protocolo en cada paso del camino.

Limitaciones de EVM

Al intentar comprender qué es un EVM, es importante tener en cuenta tanto sus ventajas como sus desventajas. A pesar de sus numerosas ventajas, la tecnología EVM también conlleva ciertas limitaciones. Por un lado, curiosamente, usar una máquina virtual Ethereum requiere cierto nivel de experiencia técnica. El conocimiento de Solidez, Java y otros lenguajes de programación es imprescindible.

En segundo lugar, las EVM son infames por sus altas tarifas de gas. No importa lo inteligente que sea una EVM, no puede evitar su propia popularidad y la congestión de datos que conlleva, lo que da lugar a tarifas de transacción más altas en comparación con otras cadenas.

Por último, la máquina virtual de Ethereum no está completamente descentralizada. De hecho, aproximadamente el 25 por ciento de los nodos de Ethereum se ejecutan realmente en Amazon Web Services. Si AWS sufriera una interrupción importante o interrumpiera sus servicios, las EVM y las DApps que impulsan se verían notablemente afectadas.

El futuro de las EVM

Cuando se trata de la cadena de bloques y EVM de Ethereum, solo estamos al principio. En un futuro próximo, la velocidad, la complejidad y la capacidad de la máquina virtual Ethereum solo aumentarán, de la misma manera que los PC de la década de 1990 evolucionaron hasta convertirse en las centrales de procesamiento que se utilizan actualmente.

Dicho esto, las EVM no son perfectas. Los retos relacionados con el rendimiento de la red y la velocidad de transacción siguen siendo un problema que plaga el sistema. Actualmente, estos problemas son puntos focales para la comunidad de desarrollo de Ethereum, y resolverlos es una hoja de ruta para el uso y éxito continuos de Ethereum.

Si Ethereum está a la altura de su promesa de revolucionar la forma en que interactuamos y hacemos transacciones entre nosotros, será el resultado de las mejoras realizadas en la EVM.

En resumen

En este artículo, hemos atravesado la máquina virtual de Ethereum, explorado la ejecución de contratos inteligentes y analizado cómo ejecutan el bytecode las EVM. También hemos hablado de gGas, el mecanismo de contabilidad de las EVM, y hemos hablado de cómo facilita las transacciones y protege a Ethereum de los ataques DDoS. En última instancia, las EVM son el corazón y el alma de la implementación y ejecución de contratos inteligentes. Comprender mejor la máquina virtual Ethereum es esencial para cualquier persona que busque desarrollar DApps y sumergirse en nuestro futuro mundo descentralizado.