La máquina virtual Ethereum (EVM)
El Máquina Virtual Ethereum (EVM) es un entorno virtual descentralizado que ejecuta código de manera consistente y segura en todos los nodos de Ethereum. Los nodos ejecutan el EVM para ejecutar contratos inteligentes, utilizando “Natural" para medir el esfuerzo computacional requerido para las operaciones, garantizando la asignación eficiente de recursos y la seguridad de la red.
Requisitos previos
Para comprender la EVM, es necesario tener conocimientos básicos de la terminología informática común, como bytes, memoria y pilas. También es útil estar familiarizado con conceptos de criptografía y blockchain, como funciones hash y árboles de Merkle.
Del libro mayor a la máquina de estados
Las cadenas de bloques como Bitcoin suelen describirse como "libros distribuidos", que mantienen un registro de actividad que se adhiere a un conjunto de reglas que rigen las modificaciones. Por ejemplo, una dirección de Bitcoin no puede gastar más Bitcoin de los que ha recibido. Estas reglas sustentan todas las transacciones en Bitcoin y muchas otras cadenas de bloques.
Si bien Ethereum tiene su propia criptomoneda nativa (Ether) con reglas similares, también admite una característica más poderosa: contratos inteligentesPara entender esto, Ethereum se describe mejor como una máquina de estados distribuida. El estado de Ethereum es una gran estructura de datos que contiene no solo todas las cuentas y saldos, sino también un estado de máquina que puede cambiar de bloque a bloque según reglas predefinidas, ejecutando código de máquina arbitrario. La EVM define las reglas para estos cambios de estado.
¿Cuál es la diferencia entre EVM y Ethereum?
Ethereum es una plataforma que permite a las personas crear y ejecutar aplicaciones en una red descentralizada de computadoras. Tiene su propia moneda digital llamada Ether (ETH), que se utiliza para pagar cosas en la red. Piense en Ethereum como una computadora gigante compartida que todos pueden usar para crear y ejecutar sus aplicaciones sin una autoridad central que la controle.
El Máquina Virtual Ethereum Es como el motor dentro de esta computadora gigante. Se asegura de que todas las aplicaciones y contratos inteligentes (acuerdos automatizados) funcionen de la misma manera en todas las computadoras de la red. Para mantener las cosas justas y eficientes, el EVM usa un sistema llamado "gas" para medir cuánta potencia de procesamiento se necesita para cada tarea, lo que garantiza que no se desperdicien recursos.
En términos simples, Ethereum es la plataforma completa que le permite crear y usar aplicaciones y contratos descentralizados, mientras que Máquina Virtual Ethereum es parte de la plataforma que ejecuta estas aplicaciones y contratos, asegurándose de que todo funcione de manera fluida y consistente en todas las computadoras de la red. Esta es la diferencia entre EVM y Ethereum.
La función de transición de estado de Ethereum
La EVM se comporta como una función matemática: dada una entrada, produce una salida determinista. Esto se puede describir formalmente como una función de transición de estado:
\[ Y(S, T) = S' \]
Dado un antiguo estado válido \( S \) y un nuevo conjunto de transacciones válidas \( T \), la función de transición de estado de Ethereum \( Y(S, T) \) produce un nuevo estado de salida válido \( S' \).
Estado
En Ethereum, el estado es una enorme estructura de datos llamada Merkle Patricia Trie modificado, que vincula todas las cuentas mediante hashes y las reduce a un único hash raíz almacenado en la cadena de bloques.
Transacciones
Las transacciones son instrucciones firmadas criptográficamente desde cuentas, clasificadas en dos tipos: las que resultan en llamadas de mensajes y las que resultan en la creación de contratos. La creación de contratos genera una nueva cuenta de contrato que contiene el código de bytes del contrato inteligente compilado. Cuando otra cuenta realiza una llamada de mensaje a este contrato, ejecuta su código de bytes.
Instrucciones EVM
La EVM funciona como una máquina de pila con una profundidad de 1024 elementos, cada uno de ellos una palabra de 256 bits, elegida por su compatibilidad con la criptografía de 256 bits (como los hashes Keccak-256 o las firmas secp256k1). Durante la ejecución, la EVM mantiene una memoria transitoria (una matriz de bytes direccionada por palabra) que no persiste entre transacciones. Los contratos tienen un trie de almacenamiento Patricia de Merkle (una matriz de palabras direccionable por palabra) asociado con la cuenta y parte del estado global.
El código de bytes del contrato inteligente compilado se ejecuta como Máquina Virtual Ethereum códigos de operación, que realizan operaciones de pila estándar como XOR, AND, ADD, SUB, etc., y operaciones específicas de blockchain como ADDRESS, BALANCE y BLOCKHASH.
Implementaciones de EVM
Todas las implementaciones de EVM deben cumplir con las especificaciones del Libro Amarillo de Ethereum. A lo largo de la historia de Ethereum, EVM ha sufrido varias revisiones, lo que ha dado lugar a múltiples implementaciones en varios lenguajes de programación, entre ellos:
- Py-EVM (Python)
- evmone (C++)
- ethereumjs-vm (JavaScript)
- eEVM (C++)
- revm (óxido)
Estas implementaciones garantizan que la EVM se mantenga consistente y segura en diferentes plataformas.