Saltar al contenido
Lecciones de Finanzas

Ethereum

La EVM: el ordenador mundial de Ethereum

Cómo funciona el ordenador compartido de Ethereum: la EVM como máquina de estados determinista, el estado mundial, las transacciones como transiciones de estado, por qué cada nodo lo reejecuta todo, y qué significan realmente «bytecode» y «Turing-completo».

9 min Actualizado 3 jun 2026

En la lección anterior dijimos que Ethereum no solo mueve dinero de un lado a otro: ejecuta programas. Contratos inteligentes, tokens, aplicaciones enteras, todo viviendo en la cadena. Lo cual plantea una pregunta de seguimiento incómoda que la mayoría de las explicaciones se saltan convenientemente:

¿Dónde se ejecutan realmente esos programas?

Vuestro portátil ejecuta programas en su CPU. Una web se ejecuta en un servidor de algún sitio. Pero un contrato inteligente no está en la máquina concreta de nadie: pertenece a toda la red. Así que Ethereum necesita un ordenador que todos ejecuten, que nadie posea y que siempre esté de acuerdo consigo mismo. Ese ordenador es la EVM, y esta lección es la visita guiada.

Un ordenador, mil copias

Antes de explicarlo, una comprobación de intuición.

Hay miles de nodos de Ethereum por todo el mundo. ¿En cuántos «ordenadores» se ejecuta efectivamente un contrato inteligente?

La EVM (máquina virtual de Ethereum) es una máquina virtual: un ordenador definido por reglas, no por hardware. Una máquina virtual es un trozo de software que finge ser una CPU —tiene su propio conjunto de instrucciones, su propio modelo de memoria, su propia noción de qué es un «paso»— y cualquier ordenador real puede ejecutarla siguiendo esas reglas. Java funciona así; también los emuladores de videoconsolas. La gracia es la portabilidad: escribe las reglas una vez y toda máquina que las siga se comporta de forma idéntica.

Ethereum coge esa idea y la hace social. Hay conceptualmente una sola EVM, pero su estado está replicado en todos los nodos de la red. Imaginadla como una hoja de cálculo compartida gigantesca —un Google Doc del tamaño del planeta— que miles de personas tienen abierta a la vez. Nadie edita una celda a mano. El documento solo cambia cuando se envía una edición que cumple las reglas y todos aplican esa misma edición. Como todos parten del mismo documento y aplican las mismas ediciones con las mismas reglas, todos acaban viendo el mismo documento. Un ordenador, mil copias idénticas.

Info:

Virtual ≠ falso

«Virtual» no significa de mentira. Significa definido por una especificación en lugar de por el silicio. La EVM es tan real como cualquier ordenador: simplemente vive en un libro de reglas acordado que miles de máquinas obedecen simultáneamente.

Estado mundial: lo que el ordenador recuerda

Un ordenador sin memoria es un pisapapeles muy caro. La memoria de la EVM se llama estado mundial.

El estado mundial es el conjunto completo de todo lo que la EVM recuerda en un momento dado: cada cuenta y todos sus datos. Para cada cuenta eso significa:

  • su saldo (cuánto ETH tiene),
  • para las cuentas de contrato, el código que se ejecuta cuando la llamas,
  • y el almacenamiento de ese contrato (sus variables privadas y persistentes: la tabla de «quién posee cuánto» de un contrato de tokens vive aquí).

Si la EVM es una videoconsola, el estado mundial es la partida guardada. Pulsa el botón (envía una transacción) y la partida se actualiza. Reinicia un nodo desde cero, reproduce cada guardado hasta ahora y aterrizas exactamente en la misma partida guardada que todos los demás.

Rellena los huecos sobre qué contiene el estado mundial.

Pick the right option for each blank, then check.

El es el conjunto de todas las cuentas y sus datos —saldos, código de contratos y el persistente de cada contrato— en un instante del tiempo. Una analogía útil es la de la videoconsola.

Una transacción es una transición de estado

Aquí va la frase más importante de toda esta lección, así que la pondremos en código:

newState = EVM(oldState, transaction)

Ese es el modelo entero. Una transacción es una instrucción enviada a la red («envía 3 ETH de A a B», o «llama a la función mint de este contrato»). La EVM coge el estado mundial antiguo más esa transacción y calcula un estado mundial nuevo. Nada más místico que eso: una transacción es una transición de estado, una receta para convertir una partida guardada en la siguiente.

Y la EVM es una máquina de estados: un sistema que está en algún estado y pasa a un estado nuevo, completamente determinado, cuando llega una entrada. (Un interruptor de la luz: estados «encendido» y «apagado», entrada «pulsar». La misma idea, con algunas cuentas más.)

La palabra mágica es determinista. Determinista significa cero sorpresas, jamás: el mismo estado de partida más la misma transacción produce el mismo estado nuevo, exactamente igual, en todos los nodos, todas las veces, para siempre. Sin aleatoriedad, sin «depende del tiempo que haga», sin «en mi máquina funciona». Esa propiedad es la base que permite que miles de desconocidos se pongan de acuerdo sin fiarse los unos de los otros.

Juega con una abajo. Pasa unas cuantas transacciones predefinidas por la máquina y observa cómo el estado mundial va de antes a después. Prueba primero una transferencia normal de ETH (mira cómo cambian dos saldos), luego una llamada a contrato (mira cómo cambia el número almacenado del contrato), y luego pulsa reiniciar y ejecuta la misma secuencia otra vez: fíjate en que obtienes el resultado idéntico. Esa repetibilidad es el determinismo, en directo.

The EVM: one transaction, one new world stateEstado mundial

Estado mundial

  • A10 ETH
    saldo
  • B2 ETH
    saldo
  • Contrato Contador0 ETH
    saldocontador almacenado: 0
EVM

Transacción (entrada)

A envía 1 ETH a B

Mismo inicio + misma transacción ⇒ mismo resultado, todas las veces. Eso es el determinismo, y es la razón por la que todos los nodos de la Tierra coinciden en el estado mundial.

Un nodo en Tokio y un nodo en São Paulo aplican ambos la transacción T al mismo estado mundial de partida S. ¿Qué garantiza el determinismo sobre sus resultados?

Una transferencia, paso a paso

Supón que el estado mundial tiene la cuenta A con 10 ETH y la cuenta B con 2 ETH. A firma y difunde la transacción «envía 3 ETH a B». La EVM hace la aritmética obvia contra el estado antiguo:

CuentaAntesCambioDespués
A10 ETH−37 ETH
B2 ETH+35 ETH

El nuevo estado mundial es «A: 7, B: 5». Cambiaron dos celdas de la hoja de cálculo gigante; nada más se movió. (Ignoramos la pequeña comisión por ahora: eso es la próxima lección.) Todo nodo que aplique esta transacción a ese mismo estado antiguo aterriza en A: 7, B: 5. Sin excepciones, porque no hay margen para ninguna.

Por qué cada nodo lo reejecuta todo (avance del gas)

Aquí va la parte que suena absurda hasta que encaja: cada nodo reejecuta de forma independiente cada transacción. Tu nodo no se fía de la palabra de otro nodo sobre los nuevos saldos. Descarga la transacción, la ejecuta en su propia EVM, calcula el resultado por sí mismo y comprueba que todos los demás obtuvieron lo mismo.

Imagina miles de contables meticulosos, a cada uno se le entrega el mismo montón de recibos, cada uno rehace cada suma a mano y luego comparan respuestas. Tremendamente redundante, y esa redundancia es la seguridad. Para hacer trampa no engañarías a un contable; tendrías que engañar a la mayoría de ellos simultáneamente, todos ejecutando reglas idénticas y deterministas. Suerte con eso.

Pero reejecutarlo todo tiene un coste, y apunta directamente al siguiente concepto:

Sí, y deliberadamente. El desperdicio es el producto. Un servidor en la nube normal es barato porque exactamente una máquina hace el trabajo y te fías de ella. La EVM es cara porque miles de máquinas hacen el mismo trabajo y no te fías de ninguna de ellas individualmente: solo de su acuerdo. No estás pagando por cómputo en bruto; estás pagando por verificación sin confianza.

Ese coste es también por lo que cada operación debe estar medida y pagada. Si el cómputo fuera gratis, un solo atacante podría enviar una transacción con un bucle infinito y obligar a cada nodo de la Tierra a girar eternamente. Así que la EVM cobra por cada paso en una unidad llamada gas, y una transacción que se queda sin gas se detiene. El gas tiene una lección entera para él solo; por ahora, simplemente guarda el enlace en tu cabeza: reejecución por parte de todos ⇒ el cómputo debe tener precio.

Bytecode y ser Turing-completo

Nadie escribe instrucciones EVM en crudo a mano (bueno, casi nadie, y los que lo hacen necesitan un abrazo). Los desarrolladores escriben contratos en lenguajes de alto nivel como Solidity o Vyper: código legible con funciones, variables y sentencias if. Un compilador luego lo traduce a bytecode de la EVM: una larga cadena de opcodes de bajo nivel, las diminutas instrucciones primitivas que la EVM ejecuta realmente (ADD, SSTORE, JUMP y compañía). El bytecode es a Solidity lo que el código máquina es al C que escribirías en tu portátil: la misma lógica, triturada en pasos que una máquina puede masticar.

La EVM también es Turing-completa. Turing-completa significa que puede, en principio, expresar cualquier cómputo que puedas describir —bucles, ramificaciones, lógica arbitraria— con suficientes recursos. Eso es potente: es por lo que Ethereum puede alojar programas genuinamente complicados, no solo «mover moneda de X a Y».

La pega de la Turing-completitud es el problema de la parada: una máquina suficientemente expresiva puede escribir programas que se repiten para siempre, y no siempre puedes saber de antemano si uno lo hará. La solución de la EVM es el gas (otra vez): cada paso cuesta gas, una transacción lleva un presupuesto finito de gas, y cuando el presupuesto se agota, la ejecución se detiene. Así que la EVM es Turing-completa con un contador: puede expresar cualquier cosa, pero no puede ejecutar nada gratis ni para siempre.

Esto es un contraste deliberado con Bitcoin Script, el lenguaje en cadena de Bitcoin, que intencionadamente no es Turing-completo. Bitcoin Script no tiene bucles sin límite a propósito: menos expresivo, pero más fácil de razonar y más difícil de pegarte un tiro en el pie. Ethereum eligió el intercambio opuesto: máxima expresividad, vallada por el gas.

Empareja cada término con lo que realmente es.

Pick a term, then click its definition.

Clasifica cada afirmación: ¿es cierta para la EVM o no?

Place each item in the right group.

  • Los programas pueden repetirse para siempre gratis
  • Es Turing-completa (acotada por el gas)
  • Se ejecuta en un servidor central propiedad de Ethereum
  • Su estado está replicado en todos los nodos
  • Cada nodo puede calcular un resultado ligeramente distinto
  • Es determinista: la misma entrada siempre da la misma salida

Los bloques ponen en orden las transacciones

Una última pieza. newState = EVM(oldState, transaction) está muy bien para una transacción, pero entran miles cada minuto, y el orden importa. (Si A tiene 10 ETH e intenta enviar 8 ETH tanto a B como a C, cuál sale adelante depende enteramente de cuál se procese primero.) Así que la EVM necesita un único orden acordado.

Ese es el trabajo de los bloques. Las transacciones se agrupan en un bloque; los bloques se colocan en una secuencia estricta, cada uno enlazado criptográficamente con el anterior (la cadena de «blockchain»). Aplica los bloques en orden, las transacciones dentro de cada bloque en orden, y cada nodo recorre el mismo camino desde el estado génesis hasta el estado de hoy, y aterriza en el mismo estado mundial. El determinismo se ocupa de cada paso; el orden de los bloques se ocupa de la secuencia de pasos.

Each block locks in the one before it

Chain valid — every block matches the one before it.

Cada bloque empaqueta un lote ordenado de transacciones y enlaza con el bloque anterior. Mismos bloques, mismo orden ⇒ mismo estado mundial en todos los nodos.

Dos nodos tienen ambos una EVM determinista y exactamente el mismo conjunto de transacciones pendientes. ¿Qué más deben compartir para tener garantizado el mismo estado mundial final?

La imagen global

Big picture

La EVM de un vistazo

  • La EVM
    • Estado mundial
      • Cuentas + saldos
      • Código + almacenamiento de contratos
      • La partida guardada
    • Transacción = transición de estado
      • newState = EVM(oldState, tx)
      • Entra el estado antiguo, sale el nuevo
    • Reejecución y determinismo
      • Cada nodo lo reejecuta todo
      • Misma entrada ⇒ misma salida
      • Redundancia = seguridad
    • Bytecode y Turing-completo
      • Solidity → bytecode → opcodes
      • Puede expresar cualquier cómputo
      • El gas acota la parada
Cuatro ideas: qué recuerda, cómo cambia, por qué todos coinciden y qué puede ejecutar.
Pregunta 1 de 60 correctas

En una frase, ¿qué es la EVM?

Comprueba tu respuesta para continuar.

Ideas clave

Success:

Qué recordar

  • La EVM es una sola máquina virtual —un ordenador definido por reglas— cuyo estado mundial está replicado de forma idéntica en todos los nodos. Un ordenador, mil copias.
  • El estado mundial es cada cuenta y sus datos (saldos, código de contratos, almacenamiento de contratos): la partida guardada de la red.
  • Una transacción es una transición de estado: newState = EVM(oldState, transaction). La EVM es determinista: mismo inicio + misma transacción ⇒ el mismo resultado en todas partes, siempre.
  • Cada nodo reejecuta cada transacción. Esa redundancia es la seguridad, y es por lo que el cómputo debe medirse y pagarse con gas.
  • Los contratos se escriben en Solidity/Vyper, se compilan a bytecode de la EVM (opcodes). La EVM es Turing-completa (puede expresar cualquier cómputo) pero acotada por el gas, así que nada se repite para siempre, a diferencia del intencionadamente limitado Bitcoin Script.
  • Los bloques ponen las transacciones en un orden acordado, de modo que todos los nodos aplican los mismos cambios en la misma secuencia y convergen en el mismo estado mundial.

Hemos hablado mucho de «cuentas» que guardan saldos, pero ¿cómo funciona realmente una cuenta? La respuesta de Ethereum (el modelo de cuentas) es sorprendentemente distinta del enfoque de monedas-en-un-tarro de Bitcoin (el modelo UTXO). Lo próximo: cuentas frente a UTXO, y por qué Ethereum eligió el modelo que eligió.

Marcar lección como completada