¿Qué es la Máquina Virtual Ethereum (EVM)? Una guía para principiantes
La máquina virtual (EVM) de Ethereum suele denominarse “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 aplicaciones D en el lenguaje de programación de Solidity. Es responsable de que la mayoría de las DApps se creen hoy en día, que es lo que lo distingue de 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 Web 3.0.
¿Qué es un EVM?
Una máquina virtual Ethereum es una plataforma de software, o “ordenador virtual”, que utilizan los desarrolladores para crear aplicaciones descentralizadas (DApps), así como para ejecutar e implementar contratos inteligentes en el sistema Ethereum.
Ya sea un programador interesado en DApps o un inversor que desea obtener más información sobre el mundo en constante evolución de la criptografía EVM, probablemente haya oído hablar de Ethereum virtual machines.To entender mejor qué es una EVM, ayuda primero a aprender un poco sobre su historia.
Según Vitalik Buterin, 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 todas las casas del mundo tendrían que apagarse. Es una máquina virtual libre de restricciones físicas. Lo mismo ocurre con la máquina virtual Ethereum. El EVM elimina la necesidad de hardware superalimentado y es una plataforma ideal para programadores principiantes. Sin embargo, el conocimiento de bytes, pilas y conceptos de cadena de bloques como funciones hash y prueba de trabajo es útil cuando se intenta obtener una comprensión más profunda del 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 distribuido”.
¿Qué hace un EVM?
En su forma más rudimentaria, una máquina virtual 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 cadena de bloques. Las reglas específicas que determinan cómo cambiará la EVM con cada nuevo bloque son definidas realmente 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 criptográficas DeFi y EVM hasta juegos y mercados como OpenSea, los desarrolladores utilizan la máquina virtual 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 Ethereum es la parte de la red Ethereum responsable de la ejecución e implementación de contratos inteligentes. Es donde los contratos inteligentes y millones de DApp basados en la cadena de bloques Ethereum viven y respiran.
Piense 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 Ethereum, cada nodo utiliza la EVM.
EVM y sus similitudes con las CPU
Para clarificar aún más el concepto de la EVM, ayuda volver a los aspectos básicos al pensar 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 en bytecode.
Ethereum no es una CPU: es una red mundial distribuida con 100 CPU que ejecutan simultáneamente la EVM. Sin embargo, el 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 Solididad. El código de solididad se compila en bytecode y se distribuye a cada ordenador (nodo) que ejecuta Geth en la red.
Cuando se implementa un contrato inteligente, cada nodo recibe una copia del mismo, ejecuta su código byte y entrega el código a quien se haya llamado para la implementación, lo que resulta en 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, un 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 los EVM?
Si alguna vez has descargado una canción, película o 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 sistemas operativos y de hardware 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 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 Ethereum utiliza una red nodal descentralizada para ejecutar contratos inteligentes. Se trata de una pila virtual dinámica en sandbox, integrada dentro de cada nodo de Ethereum para ejecutar un bytecode de contrato inteligente compatible con EVM.
Contratos inteligentes, nodos y P2P
Cuando aprenda qué son las EVM y qué hacen para las criptomonedas en casos como los préstamos DeFi, tenga 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.
Para cada instrucción que implementa el EVM, se le asigna un costo, lo que permite al sistema realizar un seguimiento de los costos de ejecución. El coste de realizar transacciones de cifrado EVM y ejecutar otras instrucciones se mide en unidades compatibles con EVM conocidas como gas.
Al permitir una economía basada en cargos por instrucciones ejecutadas en lugar de transacciones financieras ejecutadas, como Bitcoin, se logra la integridad de Turing. Esto significa que la máquina virtual Ethereum es un ordenador conectado globalmente entre pares, capaz de crear contratos inteligentes, eventos de financiación colectiva 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
En este momento, hay aproximadamente 150 códigos operativos diferentes que puede ejecutar un 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 Ethereum se conoce como 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 cifrado de EVM o contratos inteligentes. 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 códigos operativos no se escriben directamente en una EVM. Debido a su capacidad para permitir que los desarrolladores creen e interactúen 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 códigos operativos.
Contratos inteligentes
Al intentar entender qué es una EVM, es necesario tener un conocimiento básico de los contratos inteligentes y su papel en la criptografía de EVM, DeFi y otras funciones de 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 realizar transacciones entre sí sin el uso de un tercero, o 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 exigir a 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 superpuso permitiendo 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 las 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, necesita gas.
Gas
A cada código operativo se le asigna un coste de gas. Cuanto más complejo sea el código operativo, más alta será la tarifa de combustible. En este momento, el costo inicial de cada transacción es de 21.000 gasolina.
Los cargos por 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 del 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, se desaconseja a los atacantes que realicen intentos maliciosos. El ataque simplemente sería demasiado caro de ejecutar.
¿Qué son las cadenas de bloques compatibles con EVM?
La interoperabilidad entre 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 cadenas de bloques 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 cadenas de bloques compatibles con EVM han demostrado ser una forma fácil de resolver este problema. En lugar de comenzar desde cero y crear un entorno similar al de las EVM mediante el uso de puentes de cadena cruzada, 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 hoy en día siguen este modelo compatible con EVM. Algunos ejemplos incluyen algunos de los nombres más grandes en el espacio criptográfico de EVM, como:
• Fantom
• Cardano
• Polígono
• Tron
Independientemente de los motivos por los que desees entender 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 cadenas de bloques 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 Ethereum, las DApps basadas en la cadena de bloques Ethereum pueden comunicarse e interactuar entre sí, lo que permite una experiencia de usuario más rápida y sin problemas.
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 las aplicaciones
Las máquinas virtuales Ethereum facilitan la migración y expansión de DApps a nuevas cadenas sin tener que reescribir ningún código. El uso de otro tipo de máquina virtual, como Move-VM o Wasm, requiere más recursos y hace que la portabilidad de DApps sea mucho más difícil.
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 los 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 Ethereum conocidas como Waffle y MetaMask.
Casos de uso de EVM
Ahora que hemos repasado qué es una EVM y cómo funciona, veamos cómo todo se une para impulsar la criptografía 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 diseñados específicamente 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 para mucho más que cifrado EVM. Nexus Mutual, que proporciona seguros sobre contratos inteligentes, utiliza el token NXM ERC-20 para dar a los usuarios la capacidad de realizar reclamaciones y adquirir cobertura. Otro ejemplo es Livepeer. Aunque no es exactamente el ejemplo más popular al hablar de las EVM, esta red de transmisión de vídeo descentralizada emplea el token Livepeer ERC-20 para incentivar a los usuarios a suministrar recursos a la red. Estas son solo dos de las muchas aplicaciones D que manejan tokens ERC-20.
AMM y DEX
Los intercambios descentralizados (DEX) permiten el intercambio de tokens ERC-20 mediante la implementación de contratos inteligentes. Estos contratos inteligentes permiten a los usuarios aprovechar los conjuntos de liquidez de tokens sin interferencia de terceros, lo que les da el título de creadores de mercado automatizados (AMM). SushiSwap, Uniswap y otros muchos intercambios 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 pieza de código ahora tiene la capacidad de democratizar el acceso virtual a los mercados del arte. Los proyectos de juego como Gods Unchained y Axie Infinity también utilizan estos tokens para artículos y coleccionables dentro del juego.
Préstamos DeFi
AdaSwap y Milkomeda están utilizando esta colaboración para integrar las máquinas virtuales de Ethereum en el ecosistema de Cardano. Hay otras plataformas DeFi siguiendo el ejemplo de Cardano.
DAO
La máquina virtual Ethereum está regida por una organización autónoma descentralizada, o DAO. Una DAO es una entidad comunitaria que carece de una 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 una auditoría pública.
En última instancia, las DAO están regidas por miembros individuales que toman decisiones críticas sobre el proyecto de forma colectiva. Las reglas de una DAO son establecidas por los miembros principales de la comunidad y se implementan a través de contratos inteligentes. Dado que estos son visibles, verificables y abiertos a una 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 entender 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 viene con ciertas limitaciones. Por un lado,irritantemente, el uso de 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 gasolina. 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 como resultado mayores tarifas de transacción en comparación con otras cadenas.
Por último, la máquina virtual Ethereum no está totalmente descentralizada. De hecho, alrededor del 25 por ciento de los nodos de Ethereum se ejecutan realmente en Amazon Web Services. Si AWS experimentara una interrupción importante o interrumpiera sus servicios, los EVM y las DApps que alimentan se verían notablemente afectados.
El futuro de las EVM
Cuando se trata de la cadena de bloques Ethereum y las EVM, solo estamos al principio. En un futuro cercano, la velocidad, complejidad y capacidad de la máquina virtual Ethereum solo aumentará, de la misma manera que los PC de la década de 1990 evolucionaron hasta convertirse en las centrales de procesamiento que se utilizan hoy en día.
Dicho esto, las EVM no son perfectas. Los desafíos relacionados con el rendimiento de la red y la velocidad de las transacciones siguen siendo un problema que afecta al 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 realizamos 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 visto cómo las EVM ejecutan el bytecode. También hemos hablado de gGas, el mecanismo contable de las EVM, y de cómofacilitan las transacciones y protegen 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. Conocer mejor la máquina virtual Ethereum es esencial para cualquier persona que busque desarrollar DApps y sumergirse en nuestro futuro mundo descentralizado.