Ethereum: de historia a labs
Artículo 28 de 48
58%
completado al llegar aquí
Sistemas distribuidosNota de investigación13 min de lectura
The Merge: cómo se apagó proof-of-work sin apagar Ethereum
Cómo funcionó The Merge: Bellatrix, Paris, el bloque terminal por dificultad total, la Engine API y qué cambió para contratos y aplicaciones.
Ruta Ethereum: 0/48
Prerequisitos recomendados
Si alguno de estos conceptos todavía está medio nebuloso, empieza por aquí. Te ahorra tropiezos y un par de cejas fruncidas.
Beacon Chain desde cero
Qué es la Beacon Chain: depósitos, génesis de 2020, slots de 12 s, epochs de 32 slots, comités aleatorios y el ciclo de vida de un validador.
Blockchain14 min de lectura→"Ethereum 2" ya no es el nombre: execution y consensus layer
Por qué Eth1 y Eth2 pasaron a llamarse capa de ejecución y capa de consenso, y cómo se reparten el trabajo los dos clientes de un nodo actual.
Blockchain12 min de lectura→
¿Cómo cambias el motor de un sistema distribuido que mueve dinero sin detenerlo y sin que nadie tenga que migrar? Ethereum lo hizo el 15 de septiembre de 2022. Ese día la red principal dejó de depender de la minería y empezó a seguir los bloques que decidía la Beacon Chain. [1]
No se perdió historia: el estado de cuentas, contratos y transacciones desde la génesis de 2015 siguió intacto. [1] Lo que cambió fue quién decide el siguiente bloque. Este capítulo sigue el mecanismo paso a paso: el disparador, el bloque de transición, el canal entre clientes y las consecuencias para quien escribe contratos o aplicaciones.
Brújula de lectura
Actor, evidencia y estado
Actor
Cliente de consensoDesde la transición, ordena al cliente de ejecución qué bloque es la cabeza.
Evidencia
Dificultad total terminalEl paso se disparó por un valor acumulado de trabajo, no por un número de bloque.
Estado
Mismo estado de ejecuciónCuentas, contratos e historial siguieron en la misma cadena.
Preguntas guía
- ¿Por qué la transición se disparó con dificultad total acumulada y no con un número de bloque?
- ¿Qué campos de la cabecera de bloque pasaron a ser constantes?
- ¿Qué mensajes intercambian el cliente de consenso y el de ejecución en cada slot?
- ¿Qué devuelve hoy el opcode que antes se llamaba
DIFFICULTY?
Conexiones dentro de la serie
- Antes: Beacon Chain desde cero explica la cadena que tomó el control.
- Contexto: Por qué Ethereum necesitaba The Merge cubre la motivación histórica.
- Después: Gasper: Casper FFG + LMD-GHOST en una sola cabeza explica cómo decide ahora el consenso.
- Retiros: Shapella llegó después; The Merge no habilitó retiros.
Historia de la transición: dos actualizaciones y un disparador
The Merge fueron dos actualizaciones coordinadas, una por capa. En la capa de consenso, Bellatrix se activó el 6 de septiembre de 2022, en la epoch 144 896. Además de preparar el fork choice para la transición, hizo que los clientes de consenso conocieran el valor de dificultad total terminal y llevó las penalizaciones por inactividad y por slashing a sus valores completos. [2]
En la capa de ejecución, Paris fue la actualización que apagó la minería. No tenía un número de bloque fijo. Se disparaba cuando la cadena de prueba de trabajo superara una terminal total difficulty (TTD): la suma de la dificultad de todos los bloques desde la génesis. [2]
El valor de mainnet es TERMINAL_TOTAL_DIFFICULTY = 58 750 000 000 000 000 000 000. [3] Ese umbral se alcanzó en el bloque 15 537 393, el 15 de septiembre de 2022, y el bloque siguiente, 15 537 394, fue el primero producido con prueba de participación. [2]
¿Por qué dificultad total y no altura? Como razonamiento: la altura es barata de falsificar en una rama minoritaria, pero la dificultad acumulada mide trabajo real. Usarla ataba la transición a la cadena con más trabajo, la misma que la regla de prueba de trabajo ya consideraba canónica.
Traza de ejecución del bloque de transición
EIP-3675 define el mecanismo con precisión. Un bloque PoW es terminal si su dificultad total es mayor o igual que la TTD y la de su padre es menor. Puede haber más de uno, por ejemplo dos hijos del mismo padre. [4] Los clientes no deben importar bloques PoW que desciendan de un bloque terminal: el terminal es el último bloque de trabajo de la cadena canónica. [4]
El primer bloque de prueba de participación, TRANSITION_BLOCK, tiene que ser hijo de un bloque terminal. A partir de él, varios campos de cabecera pasan a constantes: difficulty = 0, nonce = 0x0000000000000000 y la lista de ommers (bloques tío) vacía. [4] EIP-3675 también fijaba mixHash en ceros, pero EIP-4399 reutilizó ese campo para llevar la mezcla RANDAO de la Beacon Chain. [5] La verificación de Ethash desaparece y también las recompensas de bloque y de tío; las comisiones de transacción siguen igual. [4]
Del lado de consenso, el bloque de ejecución viaja dentro del bloque beacon como un ExecutionPayload, con campos como parent_hash, fee_recipient, state_root, prev_randao, block_number, base_fee_per_gas, block_hash y la lista de transacciones. [6] La figura sigue esa traza.
El bloque terminal y el primer payload de prueba de participación
Cómo leer esta figura
Dos filas. Arriba, Beacon Chain (prueba de participación desde 2020): un bloque beacon sin transacciones, una línea vertical discontinua marcada Bellatrix, un bloque beacon con payload vacío, un bloque beacon con payload 15 537 394 y otro con payload 15 537 395, unidos por flechas. Abajo, Cadena de prueba de trabajo: el bloque 15 537 392 con dificultad total menor que la TTD, el bloque 15 537 393 marcado como terminal con dificultad total mayor o igual que la TTD, y una caja discontinua roja de hijos PoW que no se importan. Una flecha verde sube desde el bloque terminal al bloque beacon con payload 15 537 394, etiquetada padre del payload. Dos notas al pie: Bellatrix, 6 de septiembre de 2022, epoch 144 896, la capa de consenso ya conoce la TTD; Paris, 15 de septiembre de 2022, primer bloque PoS 15 537 394, TTD igual a 58 750 000 000 000 000 000 000.
Engine API: el contrato entre los dos clientes
Después de la transición, el cliente de ejecución ya no decide cuál es la cabeza. EIP-3675 reemplaza la regla del "más trabajo acumulado" por eventos POS_FORKCHOICE_UPDATED que nombran la cabeza y el último bloque finalizado; el cliente de ejecución no puede adelantar la cabeza por su cuenta. [4] En la práctica esos eventos llegan por la Engine API, que define tres métodos centrales: [7]
Traza
Un slot visto desde la Engine API
El estado forkchoiceState tiene tres hashes: headBlockHash, safeBlockHash y finalizedBlockHash. El bloque safe debe ser igual a la cabeza o un antepasado suyo. [7] Los atributos para construir un bloque son tres: timestamp, prevRandao y suggestedFeeRecipient. [7] Un ejemplo ilustrativo del cuerpo de la llamada, con valores inventados y hashes abreviados:
{
"jsonrpc": "2.0",
"id": 1,
"method": "engine_forkchoiceUpdatedV1",
"params": [
{
"headBlockHash": "0x3b8f...",
"safeBlockHash": "0x3b8f...",
"finalizedBlockHash": "0x9a1c..."
},
{
"timestamp": "0x6321d8c3",
"prevRandao": "0x5d2a...",
"suggestedFeeRecipient": "0x00000000000000000000000000000000000000aa"
}
]
}Para operadores, ethereum.org resume las obligaciones: correr un cliente de consenso además del de ejecución, autenticarlos con un secreto JWT compartido y, si se valida, fijar una dirección fee recipient para cobrar las propinas. Sin las dos primeras, el nodo aparece "offline". [1]
Qué cambió para contratos y aplicaciones
El opcode 0x44 se llamaba DIFFICULTY. Con la dificultad fijada en 0, EIP-4399 lo renombra a PREVRANDAO y le hace devolver el campo mixHash, que ahora contiene la mezcla RANDAO del bloque beacon anterior. Un valor mayor que 2^64 indica que la transacción se ejecuta en un bloque de prueba de participación. [5]
No lo uses como lotería segura. La misma EIP advierte que cada proponente tiene un bit de influencia por slot: puede no publicar su bloque para que la mezcla no cambie, o retrasar una transacción al bloque siguiente cuya mezcla ya conoce. [5]
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
/// Ilustrativo: leer la mezcla RANDAO. No es aleatoriedad resistente a sesgo.
contract RandaoProbe {
function currentMix() external view returns (uint256) {
return block.prevrandao; // opcode 0x44 tras EIP-4399
}
}Las aplicaciones también ganaron dos etiquetas de bloque en JSON-RPC. safe es el bloque más reciente a salvo de reorganizaciones bajo mayoría honesta y ciertos supuestos de sincronía; finalized es el más reciente con seguridad criptoeconómica, que no se reorganiza salvo intervención manual coordinada por la comunidad. [8] Un indexador que solo lee latest está aceptando bloques que pueden desaparecer en condiciones normales.
# Ilustrativo: puerto de ejemplo del cliente de ejecución.
curl -s -X POST http://localhost:8545 -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_getBlockByNumber","params":["finalized",false]}'Dos creencias frecuentes son falsas. The Merge no bajó el gas: cambió el mecanismo de consenso, no la capacidad de la red. Tampoco aceleró de forma notable las transacciones: los slots de 12 segundos frente a un objetivo de unos 13,3 segundos con prueba de trabajo son una diferencia pequeña. [1] Lo que sí apareció es la finalidad, que el capítulo siguiente desarma.
Bibliografía académica
- [1]
ethereum.org, "The Merge," Ethereum roadmap, accessed 2026-11-12.
Fecha de ejecución, historia intacta, requisitos para operadores y conceptos erróneos sobre gas y velocidad.
- [2]
ethereum.org, "Timeline of all Ethereum forks (2014 to present)," accessed 2026-11-12.
Bellatrix en la epoch 144 896; Paris disparado en el bloque 15 537 393 y primer bloque PoS 15 537 394; EIPs incluidas.
- [3]
ethereum/consensus-specs, "configs/mainnet.yaml," GitHub specification, accessed 2026-11-12.
TERMINAL_TOTAL_DIFFICULTY = 58750000000000000000000 y BELLATRIX_FORK_EPOCH = 144896.
- [4]
M. Kalinin, D. Ryan, and V. Buterin, "EIP-3675: Upgrade consensus to Proof-of-Stake," Ethereum Improvement Proposals, 2021.
Bloque PoW terminal, constantes de cabecera, fin de recompensas de bloque y regla de fork choice gobernada por POS_FORKCHOICE_UPDATED.
- [5]
M. Kalinin and D. Ryan, "EIP-4399: Supplant DIFFICULTY opcode with PREVRANDAO," Ethereum Improvement Proposals, 2021.
El opcode 0x44 devuelve la mezcla RANDAO de la Beacon Chain; consideraciones de sesgo del proponente.
- [6]
ethereum/consensus-specs, "Bellatrix: The Beacon Chain," GitHub specification, accessed 2026-11-12.
Contenedor ExecutionPayload dentro del bloque beacon y penalizaciones a valor completo.
- [7]
ethereum/execution-apis, "Engine API: Paris," GitHub specification, accessed 2026-11-12.
engine_newPayloadV1, engine_forkchoiceUpdatedV1, engine_getPayloadV1 y estados VALID, INVALID, SYNCING y ACCEPTED.
- [8]
ethereum/execution-apis, "Block schema: BlockTag," GitHub specification, accessed 2026-11-12.
Semántica de las etiquetas latest, safe y finalized en JSON-RPC.
Rutas vecinas
Si este tema te abrió hambre, sigue por aquí.
Series y labs que comparten área o dependen de esta ruta. Pocas opciones, para no convertir la curiosidad en menú infinito.
Series relacionadas
HotStuff: de cero a estado del arte
Ruta progresiva para entender consenso BFT moderno: quórums, sincronía parcial, locks, taxonomía one/two/three-chain, QC/highQC, multipipeline, view-change, responsiveness, AggQC, Fast-HotStuff, sync y frontera DAG-BFT.
Substrate: del runtime al consenso propio
Serie de 20 capítulos, de neófito a experto, sobre Substrate (Polkadot SDK): runtime en Wasm, FRAME, extrinsics, estado, pesos, actualizaciones sin fork, Aura, BABE, GRANDPA, sincronización, parachains, XCM, Sassafras, BEEFY y cómo conectar un consenso BFT propio a un nodo.
Ruta práctica: activos digitales en la operación
Nueve módulos, de menor a mayor dependencia, para decidir cómo usar custodia, wallets, llaves, firmas multifirma y MPC, AML/KYT y stablecoins con Fireblocks, BitGo, Kaleido, Circle y Tether.
Labs para convertir lectura en práctica
Prueba de trabajo y reajuste de dificultad
Laboratorio determinista para medir el costo de la prueba de trabajo y ver cómo el reajuste por altura de bloque estabiliza el tiempo entre bloques.
Consensus benchmark
Banco reproducible para comparar consenso BFT y documentar los trade-offs de HotStuff-2.
Ethereum local: Anvil, wallet y primera transacción
Laboratorio base para levantar una red local, crear cuentas, firmar transacciones y observar receipts sin gastar ETH real.
RPC y Cast: leer Ethereum con lupa
Ejercicios con JSON-RPC y Cast para consultar bloques, nonces, gas, receipts, logs y errores reproducibles.
Sigue leyendo
Ideas conectadas con este artículo
Una ruta corta para continuar sin abrir veinte pestañas y perder el hilo.
Por qué Ethereum necesitaba The Merge
Motivos técnicos, económicos y ambientales detrás de la transición de proof-of-work a proof-of-stake.
Beacon Chain desde cero
Validadores, depósitos, slots, epochs, committees y papel de Beacon Chain en Ethereum proof-of-stake.
Casper FFG (Ethereum): El gadget de finalidad amigable
Cómo Casper FFG finaliza checkpoints con enlaces de supermayoría, por qué sus dos reglas de slashing dan accountable safety y cómo Gasper lo une a LMD GHOST.
El castigo financiero (Slashing): Desincentivos económicos en BFT
Por qué el slashing convierte un ataque a la safety de Casper FFG en un hecho demostrable y costoso, apoyado en la misma intersección de quórums que PBFT.