EVM es una capa de abstracción entre el código y el host que sirve como garantía para mantener el buen funcionamiento de Ethereum. ¿Qué es EVM después de todo? ¿Cuáles son los principios y casos de uso típicos de EVM? Profundicemos más en ello.
Como la cadena de bloques más popular en la actualidad, Ethereum ofrece a los usuarios una variedad de aplicaciones descentralizadas. Es el término mencionado con más frecuencia cuando las personas se refieren a DeFi, NFT, etc. Y EVM, como parte central de Ethereum, también atrae la gran atención de las personas. Entonces, ¿cuál es la relación entre EVM y Ethereum?
EVM significa máquina virtual Ethereum. Tal como lo define Ethereum, EVM es el entorno de tiempo de ejecución en el que todas las cuentas de Ethereum y los contratos inteligentes viven en la cadena de Ethereum.
EVM existe como una sola entidad mantenida por todas las computadoras conectadas que ejecutan un cliente Ethereum. Es lo que define las reglas para computar un nuevo estado válido de bloque a bloque.
En lugar de un libro mayor distribuido como Bitcoin, Ethereum es una máquina de estado distribuida. El cambio de bloque a bloque representa una actualización del estado de todas las cuentas y saldos en Ethereum. La actualización se calcula en base al código del contrato por parte de la EVM.
Figura: https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf
EVM es una máquina virtual basada en pila y realiza todas sus operaciones directamente en la pila. Cuando el contrato inteligente se compila en código de bytes, el EVM realizará operaciones basadas en el código de bytes, incluida la obtención de variables de la memoria y la adición a la pila, el cálculo de las variables en la pila y el almacenamiento de variables en la memoria, etc.
Hay dos tipos principales de almacenamiento de datos en EVM: memoria y almacenamiento. Las variables almacenadas se almacenarán en Ethereum de forma permanente después de que se ejecute el contrato, mientras que las variables en la memoria existen temporalmente mientras el código se ejecuta en EVM.
Tome llamar a un contrato como ejemplo. Escribimos un contrato con Solidity, compilamos metadatos a través de un compilador y los publicamos en Ethereum. Cuando necesitamos actualizar el estado del contrato, debemos llamar al contrato. Sin embargo, ni el sistema operativo ni Windows pueden ejecutar directamente contratos inteligentes. Se necesita EVM para proporcionar un entorno de ejecución para contratos inteligentes. Los pasos específicos son los siguientes: Primero, el EVM encuentra el código del contrato almacenado en Ethereum a través de la dirección del contrato; luego, se genera un entorno de ejecución; finalmente, el contenido del contrato se convierte en código de bytes y se coloca en el EVM para su funcionamiento. El resultado obtenido de la operación se almacenará como último estado en el siguiente bloque, completando así el proceso de actualización de estado.
Figura: https://cnodejs.org/topic/5aeecba802591040485bab2a
Implementaciones de EVM
Actualmente, todos los clientes de Ethereum incluyen una implementación de EVM. Ethereum ha lanzado el código fuente de varios lenguajes de programación, incluidos Python, C++, js, Go, etc., para implementar las funcionalidades de EVM. Ayuda a los usuarios a comprender el principio de EVM de una manera más conveniente.
Py-EVM-Python: https://github.com/ethereum/py-evm
evmone - C++: https://github.com/ethereum/evmone
Ethereumjs - máquina virtual - JavaScript: https://github.com/ethereumjs/ ethereumjs-monorepo
eEVM-C++: https://github.com/microsoft/eevm
Hyperledger Burrow - Ir: https://github.com/hyperledger/burrow
Los contratos inteligentes son código que se ejecuta exclusivamente en el EVM. No se pueden cambiar una vez desplegados. Ethereum define, modifica y almacena el estado a través de contratos inteligentes para lograr varias aplicaciones descentralizadas. EVM actúa como un entorno donde se pueden ejecutar contratos inteligentes, que es similar a la relación entre una carretera y un automóvil.
Se requiere una potencia informática significativa para ejecutar contratos inteligentes en EVM, que consume una cierta cantidad de gas. Para una mejor comprensión, piense en los vehículos que deben pagar peajes en las carreteras de peaje.
Las tarifas de gas ayudan a incentivar a los mineros de todo el mundo a participar y proporcionar potencia informática, como una forma de hacer que Ethereum sea más descentralizado. También evita que los usuarios envíen solicitudes de operaciones aleatorias que pueden provocar la congestión de Ethereum Mainnet o protege a Ethereum de fallas al prevenir ataques maliciosos.
Los contratos inteligentes de Ethereum están escritos en Solidity y se compilan en bytecode antes de ejecutarse en el EVM. El código de bytes contiene códigos de operación o códigos de operación. EVM tiene 144 códigos de operación, cada uno con una funcionalidad específica, lo que hace que EVM Turing sea completo. Puede resolver cualquier tipo de problema de cálculo. Solidity y Opcodes nos permiten escribir contratos inteligentes complejos e implementar una amplia variedad de funciones en EVM, brindando así a los usuarios una variedad de dApps.
Para la misma pieza de código, la salida es la misma después de ejecutarse en diferentes EVM, ya que no tiene nada que ver con el entorno de ejecución y la cantidad de ejecuciones. La certeza de EVM asegura la confiabilidad del código y evita consecuencias inesperadas. Esta función ayuda a proteger los intereses de los usuarios, especialmente cuando realizan grandes transacciones en Ethereum.
EVM es como una caja de arena aislada donde se ejecuta el código. El proceso en ejecución no dañará el software/hardware de la computadora ni afectará el protocolo subyacente de Ethereum. El aislamiento de EVM evita que los piratas informáticos ataquen la máquina que ejecuta un EVM y también protege el protocolo subyacente de Ethereum para que no sea manipulado. Sirve como una garantía que asegura Ethereum.
El proceso de ejecución del código EVM puede interrumpirse. Si el usuario ejecuta el código incorrecto, como un bucle infinito, se puede implementar el mecanismo de gas para finalizar el proceso de ejecución a fin de evitar que dicho código ocupe la capacidad informática de forma indefinida. Antes de ejecutar el código en el EVM, el límite superior de gas debe establecerse de antemano. Cuando se agote el gas, el código dejará de ejecutarse y el estado se revertirá sin ninguna actualización en la cadena.
A medida que aumentan los usuarios, Ethereum Mainnet encuentra muchos problemas, como redes congestionadas y altas tarifas de gas. Limitados al diseño de Ethereum, estos problemas no pueden resolverse radicalmente.
En los últimos años, hay muchas cadenas públicas nuevas que tienen tarifas de gas más bajas y redes más rápidas y cadenas de Capa 2 que están diseñadas para escalar Ethereum. Estas cadenas son todas cadenas de contratos inteligentes, que se dice que tienen mejores diseños subyacentes y pueden usarse para construir una variedad de dApps.
Estas cadenas asumen las demandas excedentes del ecosistema Ethereum y desafían el estado dominante de Ethereum. ¿Es necesario que las contrapartes de Ethereum sean compatibles con EVM? Con respecto a esta divergencia, estas cadenas se dividen en dos categorías: cadenas compatibles con EVM y cadenas no EVM.
Recientemente, las cadenas públicas de Capa 1 han estado apareciendo una tras otra. Aunque la reconstrucción de un ecosistema en cadena que se ejecuta en paralelo con Ethereum podría superar las deficiencias existentes de Ethereum, se requieren recursos humanos significativos para construir un ecosistema completo y desarrollar una dApp desde cero. La falta de programadores calificados dificulta el crecimiento de nuevos ecosistemas de cadenas públicas. Para una cadena pública con un ecosistema subdesarrollado, sería difícil atraer a un usuario de Ethereum en un corto período de tiempo.
Ante esto, algunas cadenas públicas están diseñadas para ser compatibles con EVM. Las DApps que se ejecutan originalmente en Ethereum se pueden cambiar por completo a cadenas públicas compatibles con EVM con solo modificaciones menores en el código fuente. No solo puede maximizar el uso de los recursos de desarrollo, sino que brinda a los usuarios una mejor experiencia en el proceso de migración de Ethereum a una nueva cadena.
Sin embargo, la compatibilidad con EVM inevitablemente ha tenido ciertos problemas. Limitadas a las reglas de EVM, muchas cadenas compatibles con EVM encuentran un problema con respecto a cómo lograr la innovación sin homogeneización. Sin embargo, las cadenas que no son EVM pueden romper estas reglas y desarrollar un nuevo conjunto de reglas desde cero, logrando así la innovación fundamentalmente.
En la actualidad, más del 70 % de las principales cadenas públicas son compatibles con EVM, como BSC, Avalanche, Fantom, Tron, Celo, etc. No sería difícil para los desarrolladores desarrollar dApps o implementar aplicaciones Ethereum en estas cadenas para obtener un mayor rendimiento y tarifas de gas más bajas, mejorando así la experiencia del usuario.
Algunas otras cadenas públicas no son EVM pero han desarrollado sus propias máquinas virtuales, como Sol, Terra, etc. Aunque no son compatibles con EVM, estas cadenas han atraído a un grupo de usuarios e instituciones leales con su diseño innovador y su excelente desempeño en la cadena. Por ejemplo, los dos juegos de cadena de bloques, Step N y Déjame hablar, que han sido populares en todo el mundo recientemente, se basan en la cadena Sol y han atraído a fanáticos entusiastas de todo el mundo para que participen.
En particular, las cadenas compatibles con EVM pueden coexistir con cadenas que no son EVM. Algunas cadenas que no son EVM también comienzan a ser compatibles con EVM. El proceso para lograr esto sería arduo ya que requiere grandes esfuerzos para modificar el código. Un ejemplo de esto es Sol, que lanzó Neon, que permite a los desarrolladores crear dApps en EVM.
Figura: Compatibilidad EVM de cadenas públicas
Como solución de escalado de Ethereum, la capa 2 es complementaria de Ethereum en lugar de su competidor. Las cadenas de la Capa 2 son todas compatibles con EVM, con un nivel de compatibilidad más alto que el de la Capa 1. Para que la capa 2 sea compatible con EVM, tenemos dos soluciones: compatibilidad con EVM y equivalencia con EVM.
Las primeras cadenas de Capa 2 son compatibles con EVM, que es similar a la compatibilidad con EVM de las cadenas de Capa 1. Los contratos inteligentes en la capa 1 de Ethereum se pueden implementar en la capa 2 haciendo algunas modificaciones. Por ejemplo, Unipig, lanzado por Optimism, es completamente una reconstrucción del código Uniswap. Se considera Uniswap en la Capa 2.
Existen algunas limitaciones en la compatibilidad con EVM. Al desarrollar contratos inteligentes en una cadena compatible con EVM, es posible que algunas herramientas y marcos de desarrollo basados en EVM no estén disponibles. Además, para los contratos inteligentes dispuestos originalmente en la Capa 1, los desarrolladores aún deben realizar algunos ajustes para que los contratos inteligentes puedan funcionar sin problemas en la cadena de bloques compatible con EVM.
La equivalencia de EVM tiene como objetivo brindar a los desarrolladores exactamente la misma experiencia al desarrollar contratos inteligentes en la Capa 2 que en la Capa 1 de Ethereum. Esto ha beneficiado enormemente a los desarrolladores de Layer2, ha mejorado aún más la eficiencia del desarrollo y ha ahorrado los costos de desarrollo y mantenimiento del código sobre la base de la compatibilidad con EVM.
En la actualidad, las principales soluciones de Capa 2, como Artbitrum, Optimism y Metis, han logrado la equivalencia EVM. La equivalencia de EVM puede transferir mejor las características de Ethereum a la Capa 2, con miras a minimizar el costo de desarrollo y migración causado por la escala. Se espera que la equivalencia de EVM se convierta en el estándar principal de la Capa 2 en el futuro, y muchas soluciones de Capa 2 tendrán una carrera feroz en torno a la equivalencia de EVM.
EVM es el núcleo que mantiene a Ethereum en funcionamiento. Con el establecimiento del dominio de Ethereum, las principales cadenas públicas y las cadenas de Capa 2 han seguido o son compatibles con el concepto de diseño subyacente de EVM. Por lo tanto, EVM definitivamente ha tenido un profundo impacto en toda la cadena de bloques. El EVM en sí viene con muchos problemas, lo que dificulta que las nuevas cadenas sean compatibles con el EVM. A pesar de eso, los desarrolladores han estado trabajando duro para realizar mejoras, lo que ha facilitado en gran medida el surgimiento de muchas otras cadenas públicas.
EVM es una capa de abstracción entre el código y el host que sirve como garantía para mantener el buen funcionamiento de Ethereum. ¿Qué es EVM después de todo? ¿Cuáles son los principios y casos de uso típicos de EVM? Profundicemos más en ello.
Como la cadena de bloques más popular en la actualidad, Ethereum ofrece a los usuarios una variedad de aplicaciones descentralizadas. Es el término mencionado con más frecuencia cuando las personas se refieren a DeFi, NFT, etc. Y EVM, como parte central de Ethereum, también atrae la gran atención de las personas. Entonces, ¿cuál es la relación entre EVM y Ethereum?
EVM significa máquina virtual Ethereum. Tal como lo define Ethereum, EVM es el entorno de tiempo de ejecución en el que todas las cuentas de Ethereum y los contratos inteligentes viven en la cadena de Ethereum.
EVM existe como una sola entidad mantenida por todas las computadoras conectadas que ejecutan un cliente Ethereum. Es lo que define las reglas para computar un nuevo estado válido de bloque a bloque.
En lugar de un libro mayor distribuido como Bitcoin, Ethereum es una máquina de estado distribuida. El cambio de bloque a bloque representa una actualización del estado de todas las cuentas y saldos en Ethereum. La actualización se calcula en base al código del contrato por parte de la EVM.
Figura: https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf
EVM es una máquina virtual basada en pila y realiza todas sus operaciones directamente en la pila. Cuando el contrato inteligente se compila en código de bytes, el EVM realizará operaciones basadas en el código de bytes, incluida la obtención de variables de la memoria y la adición a la pila, el cálculo de las variables en la pila y el almacenamiento de variables en la memoria, etc.
Hay dos tipos principales de almacenamiento de datos en EVM: memoria y almacenamiento. Las variables almacenadas se almacenarán en Ethereum de forma permanente después de que se ejecute el contrato, mientras que las variables en la memoria existen temporalmente mientras el código se ejecuta en EVM.
Tome llamar a un contrato como ejemplo. Escribimos un contrato con Solidity, compilamos metadatos a través de un compilador y los publicamos en Ethereum. Cuando necesitamos actualizar el estado del contrato, debemos llamar al contrato. Sin embargo, ni el sistema operativo ni Windows pueden ejecutar directamente contratos inteligentes. Se necesita EVM para proporcionar un entorno de ejecución para contratos inteligentes. Los pasos específicos son los siguientes: Primero, el EVM encuentra el código del contrato almacenado en Ethereum a través de la dirección del contrato; luego, se genera un entorno de ejecución; finalmente, el contenido del contrato se convierte en código de bytes y se coloca en el EVM para su funcionamiento. El resultado obtenido de la operación se almacenará como último estado en el siguiente bloque, completando así el proceso de actualización de estado.
Figura: https://cnodejs.org/topic/5aeecba802591040485bab2a
Implementaciones de EVM
Actualmente, todos los clientes de Ethereum incluyen una implementación de EVM. Ethereum ha lanzado el código fuente de varios lenguajes de programación, incluidos Python, C++, js, Go, etc., para implementar las funcionalidades de EVM. Ayuda a los usuarios a comprender el principio de EVM de una manera más conveniente.
Py-EVM-Python: https://github.com/ethereum/py-evm
evmone - C++: https://github.com/ethereum/evmone
Ethereumjs - máquina virtual - JavaScript: https://github.com/ethereumjs/ ethereumjs-monorepo
eEVM-C++: https://github.com/microsoft/eevm
Hyperledger Burrow - Ir: https://github.com/hyperledger/burrow
Los contratos inteligentes son código que se ejecuta exclusivamente en el EVM. No se pueden cambiar una vez desplegados. Ethereum define, modifica y almacena el estado a través de contratos inteligentes para lograr varias aplicaciones descentralizadas. EVM actúa como un entorno donde se pueden ejecutar contratos inteligentes, que es similar a la relación entre una carretera y un automóvil.
Se requiere una potencia informática significativa para ejecutar contratos inteligentes en EVM, que consume una cierta cantidad de gas. Para una mejor comprensión, piense en los vehículos que deben pagar peajes en las carreteras de peaje.
Las tarifas de gas ayudan a incentivar a los mineros de todo el mundo a participar y proporcionar potencia informática, como una forma de hacer que Ethereum sea más descentralizado. También evita que los usuarios envíen solicitudes de operaciones aleatorias que pueden provocar la congestión de Ethereum Mainnet o protege a Ethereum de fallas al prevenir ataques maliciosos.
Los contratos inteligentes de Ethereum están escritos en Solidity y se compilan en bytecode antes de ejecutarse en el EVM. El código de bytes contiene códigos de operación o códigos de operación. EVM tiene 144 códigos de operación, cada uno con una funcionalidad específica, lo que hace que EVM Turing sea completo. Puede resolver cualquier tipo de problema de cálculo. Solidity y Opcodes nos permiten escribir contratos inteligentes complejos e implementar una amplia variedad de funciones en EVM, brindando así a los usuarios una variedad de dApps.
Para la misma pieza de código, la salida es la misma después de ejecutarse en diferentes EVM, ya que no tiene nada que ver con el entorno de ejecución y la cantidad de ejecuciones. La certeza de EVM asegura la confiabilidad del código y evita consecuencias inesperadas. Esta función ayuda a proteger los intereses de los usuarios, especialmente cuando realizan grandes transacciones en Ethereum.
EVM es como una caja de arena aislada donde se ejecuta el código. El proceso en ejecución no dañará el software/hardware de la computadora ni afectará el protocolo subyacente de Ethereum. El aislamiento de EVM evita que los piratas informáticos ataquen la máquina que ejecuta un EVM y también protege el protocolo subyacente de Ethereum para que no sea manipulado. Sirve como una garantía que asegura Ethereum.
El proceso de ejecución del código EVM puede interrumpirse. Si el usuario ejecuta el código incorrecto, como un bucle infinito, se puede implementar el mecanismo de gas para finalizar el proceso de ejecución a fin de evitar que dicho código ocupe la capacidad informática de forma indefinida. Antes de ejecutar el código en el EVM, el límite superior de gas debe establecerse de antemano. Cuando se agote el gas, el código dejará de ejecutarse y el estado se revertirá sin ninguna actualización en la cadena.
A medida que aumentan los usuarios, Ethereum Mainnet encuentra muchos problemas, como redes congestionadas y altas tarifas de gas. Limitados al diseño de Ethereum, estos problemas no pueden resolverse radicalmente.
En los últimos años, hay muchas cadenas públicas nuevas que tienen tarifas de gas más bajas y redes más rápidas y cadenas de Capa 2 que están diseñadas para escalar Ethereum. Estas cadenas son todas cadenas de contratos inteligentes, que se dice que tienen mejores diseños subyacentes y pueden usarse para construir una variedad de dApps.
Estas cadenas asumen las demandas excedentes del ecosistema Ethereum y desafían el estado dominante de Ethereum. ¿Es necesario que las contrapartes de Ethereum sean compatibles con EVM? Con respecto a esta divergencia, estas cadenas se dividen en dos categorías: cadenas compatibles con EVM y cadenas no EVM.
Recientemente, las cadenas públicas de Capa 1 han estado apareciendo una tras otra. Aunque la reconstrucción de un ecosistema en cadena que se ejecuta en paralelo con Ethereum podría superar las deficiencias existentes de Ethereum, se requieren recursos humanos significativos para construir un ecosistema completo y desarrollar una dApp desde cero. La falta de programadores calificados dificulta el crecimiento de nuevos ecosistemas de cadenas públicas. Para una cadena pública con un ecosistema subdesarrollado, sería difícil atraer a un usuario de Ethereum en un corto período de tiempo.
Ante esto, algunas cadenas públicas están diseñadas para ser compatibles con EVM. Las DApps que se ejecutan originalmente en Ethereum se pueden cambiar por completo a cadenas públicas compatibles con EVM con solo modificaciones menores en el código fuente. No solo puede maximizar el uso de los recursos de desarrollo, sino que brinda a los usuarios una mejor experiencia en el proceso de migración de Ethereum a una nueva cadena.
Sin embargo, la compatibilidad con EVM inevitablemente ha tenido ciertos problemas. Limitadas a las reglas de EVM, muchas cadenas compatibles con EVM encuentran un problema con respecto a cómo lograr la innovación sin homogeneización. Sin embargo, las cadenas que no son EVM pueden romper estas reglas y desarrollar un nuevo conjunto de reglas desde cero, logrando así la innovación fundamentalmente.
En la actualidad, más del 70 % de las principales cadenas públicas son compatibles con EVM, como BSC, Avalanche, Fantom, Tron, Celo, etc. No sería difícil para los desarrolladores desarrollar dApps o implementar aplicaciones Ethereum en estas cadenas para obtener un mayor rendimiento y tarifas de gas más bajas, mejorando así la experiencia del usuario.
Algunas otras cadenas públicas no son EVM pero han desarrollado sus propias máquinas virtuales, como Sol, Terra, etc. Aunque no son compatibles con EVM, estas cadenas han atraído a un grupo de usuarios e instituciones leales con su diseño innovador y su excelente desempeño en la cadena. Por ejemplo, los dos juegos de cadena de bloques, Step N y Déjame hablar, que han sido populares en todo el mundo recientemente, se basan en la cadena Sol y han atraído a fanáticos entusiastas de todo el mundo para que participen.
En particular, las cadenas compatibles con EVM pueden coexistir con cadenas que no son EVM. Algunas cadenas que no son EVM también comienzan a ser compatibles con EVM. El proceso para lograr esto sería arduo ya que requiere grandes esfuerzos para modificar el código. Un ejemplo de esto es Sol, que lanzó Neon, que permite a los desarrolladores crear dApps en EVM.
Figura: Compatibilidad EVM de cadenas públicas
Como solución de escalado de Ethereum, la capa 2 es complementaria de Ethereum en lugar de su competidor. Las cadenas de la Capa 2 son todas compatibles con EVM, con un nivel de compatibilidad más alto que el de la Capa 1. Para que la capa 2 sea compatible con EVM, tenemos dos soluciones: compatibilidad con EVM y equivalencia con EVM.
Las primeras cadenas de Capa 2 son compatibles con EVM, que es similar a la compatibilidad con EVM de las cadenas de Capa 1. Los contratos inteligentes en la capa 1 de Ethereum se pueden implementar en la capa 2 haciendo algunas modificaciones. Por ejemplo, Unipig, lanzado por Optimism, es completamente una reconstrucción del código Uniswap. Se considera Uniswap en la Capa 2.
Existen algunas limitaciones en la compatibilidad con EVM. Al desarrollar contratos inteligentes en una cadena compatible con EVM, es posible que algunas herramientas y marcos de desarrollo basados en EVM no estén disponibles. Además, para los contratos inteligentes dispuestos originalmente en la Capa 1, los desarrolladores aún deben realizar algunos ajustes para que los contratos inteligentes puedan funcionar sin problemas en la cadena de bloques compatible con EVM.
La equivalencia de EVM tiene como objetivo brindar a los desarrolladores exactamente la misma experiencia al desarrollar contratos inteligentes en la Capa 2 que en la Capa 1 de Ethereum. Esto ha beneficiado enormemente a los desarrolladores de Layer2, ha mejorado aún más la eficiencia del desarrollo y ha ahorrado los costos de desarrollo y mantenimiento del código sobre la base de la compatibilidad con EVM.
En la actualidad, las principales soluciones de Capa 2, como Artbitrum, Optimism y Metis, han logrado la equivalencia EVM. La equivalencia de EVM puede transferir mejor las características de Ethereum a la Capa 2, con miras a minimizar el costo de desarrollo y migración causado por la escala. Se espera que la equivalencia de EVM se convierta en el estándar principal de la Capa 2 en el futuro, y muchas soluciones de Capa 2 tendrán una carrera feroz en torno a la equivalencia de EVM.
EVM es el núcleo que mantiene a Ethereum en funcionamiento. Con el establecimiento del dominio de Ethereum, las principales cadenas públicas y las cadenas de Capa 2 han seguido o son compatibles con el concepto de diseño subyacente de EVM. Por lo tanto, EVM definitivamente ha tenido un profundo impacto en toda la cadena de bloques. El EVM en sí viene con muchos problemas, lo que dificulta que las nuevas cadenas sean compatibles con el EVM. A pesar de eso, los desarrolladores han estado trabajando duro para realizar mejoras, lo que ha facilitado en gran medida el surgimiento de muchas otras cadenas públicas.