Ir al contenido principal

Ayúdenos a actualizar esta página.

🌏

Disponemos de una nueva versión de esta página, pero solo está en inglés por ahora. Ayúdenos a traducir la última versión.

Traducir la página
Ver en inglés

¡Aquí no hay ningún error!🐛

Esta página no se está traduciendo. Por ahora hemos dejado esta página en inglés.

Máquina virtual de Ethereum (EVM)

Última edición: , Invalid DateTime
Editar página

La representación física de EVM no se puede describir del mismo modo que una nube o una ola, pero existe como una única entidad sustentada por miles de computadoras conectadas ejecutando un cliente de Ethereum.

El protocolo de Ethereum en sí mismo existe únicamente con el propósito de mantener el funcionamiento continuo, ininterrumpido e inmutable de esta máquina de estado especial; se trata del entorno que alberga todas las cuentas de Ethereum y los contratos inteligentes. En cualquier bloque de la cadena, Ethereum tiene un único estado "canónico" y la EVM es la que define las reglas de cálculo de un nuevo estado válido de bloque a bloque.

Requisitos previos

Para comprender la EVM es necesario estar familiarizado con terminología básica y común de las ciencias informáticas, como bytes, memoria y pila. Asimismo, será de ayuda estar familiarizado con conceptos de criptografía/cadena de bloques, como funciones hash, prueba de trabajo y árboles Merkle.

Del libro de contabilidad a la máquina de estado

La analogía del "libro de contabilidad distribuido" suele utilizarse para describir blockchains como Bitcoin, que permite la existencia de una moneda descentralizada que utiliza herramientas fundamentales de criptografía. Una criptomoneda se comporta como una moneda "normal", debido a las reglas que rigen lo que uno puede o no puede hacer para modificar el libro de contabilidad. Por ejemplo, una dirección de Bitcoin no puede gastar más Bitcoin de los que ha recibido previamente. Estas reglas sustentan todas las transacciones de Bitcoin y muchas otras blockchains.

Aunque Ethereum tenga su propia criptomoneda nativa (Ether), que sigue casi exactamente las mismas reglas intuitivas, también permite el uso de una función mucho más poderosa: los contratos inteligentes. Para explicar esta característica más compleja se requiere una analogía más sofisticada. En lugar de un libro mayor distribuido, Ethereum es una máquina de estado distribuida. El estado de Ethereum es una gran estructura de datos, que no solo sostiene todas las cuentas y saldos, sino que también alberga el estado de la máquina. Este puede cambiar de bloque a bloque según un conjunto de reglas predefinidas, así como ejecutar un código de máquina arbitrario. Las reglas específicas de cambiar el estado de bloque a bloque las define la EVM.

Un diagrama que muestra la composición de la EVM. Diagrama adaptado de Ethereum EVM ilustrado

Función de transición de estado de Ethereum

La EVM se comporta como una función matemática: dada una entrada, esta produce una salida determinista. Por tanto, es bastante útil para describir formalmente a Ethereum como una función de transición de estado:

1Y(S, T)= S'
2

Dado un estado válido anterior (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 el contexto de Ethereum, el estado es una gran estructura de datos llamada Merkle Patricia Trie modificado, que mantiene todas las cuentas enlazadas mediante los hashes y reducibles a un solo hash raíz almacenado en la blockchain.

Transacciones

Las transacciones son instrucciones firmadas criptográficamente desde las cuentas. Hay dos tipos de transacciones: aquellas que resultan de llamadas de mensajes y aquellas que resultan de la creación de contratos.

La creación de contratos da lugar a la creación de una nueva cuenta de contrato, que contiene el bytecode compilado del contrato inteligente. Cada vez que otra cuenta realiza una llamada de mensaje al contrato, este ejecuta su bytecode.

Instrucciones de la EVM

La EVM se ejecuta como una máquina de pila con una profundidad de 1024 ítems. Cada ítem es una palabra de 256 bits, que se selecciona para utilizar fácilmente 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 temporal (como un array de bytes con direccionamiento por palabras), que no se conserva entre transacciones.

Los contratos, sin embargo, contienen un Merkle Patricia trie de almacenamiento (como una matriz de palabras con direccionamiento por palabra), asociado a la cuenta en cuestión y que forma parte del estado global.

El bytecode compilado del contrato inteligente se ejecuta a través de códigos de operación de la EVM, que realizan operaciones estándar de pila como XOR, AND, ADD, SUB, etc. La EVM también implementa varias operaciones de pila específicas de las cadenas de bloques, como ADDRESS, BALANCE,BLOCKHASH, etc.

Un diagrama en el que se muestra dónde se necesita gas para las operaciones de la EVM Diagramas adaptados de la Ethereum EVM ilustrada

Implementaciones de la EVM

Todas las implementaciones de la EVM deben ser conformes con la especificación descrita en el protocolo de Ethereum.

A lo largo de los 5 años de historia de Ethereum, la EVM ha pasado varias revisiones y existen varias implementaciones de la EVM en distintos lenguajes de programación.

Todos los clientes de Ethereum incluyen una implementación de la EVM. Asimismo, existen varias implementaciones independientes, entre las que se incluyen las siguientes:

Más información

¿Le ha resultado útil este artículo?