Ethereum: de historia a labs
Artículo 29 de 48
60%
completado al llegar aquí
Sistemas distribuidosNota de investigación13 min de lectura
Gasper: Casper FFG + LMD-GHOST en una sola cabeza
Cómo decide Ethereum: LMD-GHOST elige la cabeza con el último voto de cada validador y Casper FFG justifica y finaliza checkpoints por supermayoría.
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.
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.
Blockchain13 min de lectura→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.
Blockchain17 min de lectura→
Tu servicio acredita depósitos en cuanto ve la transacción en un bloque. Una mañana, ese bloque desaparece de la cadena y el depósito con él. ¿Fallo de Ethereum? No: el bloque era la cabeza, no un bloque finalizado. Ethereum responde a dos preguntas distintas con dos mecanismos distintos, y confundirlas cuesta dinero.
La primera pregunta es "¿cuál es la cabeza de la cadena ahora?". La responde LMD-GHOST, una regla de elección de bifurcación (fork choice). La segunda es "¿qué parte de la historia ya no se puede revertir sin destruir mucho ETH?". La responde Casper FFG, un mecanismo de finalidad. ethereum.org llama Gasper a la combinación de ambos. [1] El paper que lo formaliza lo presenta como una versión idealizada de la Beacon Chain. [2]
Brújula de lectura
Actor, evidencia y estado
Actor
Validadores que votanCada attestation lleva a la vez un voto de cabeza y un voto de finalidad.
Evidencia
Enlace de supermayoríaVotos de al menos 2/3 del stake entre dos checkpoints.
Estado
Cabeza, justificado, finalizadoTres marcas distintas sobre el mismo árbol de bloques.
Preguntas guía
- Si un bloque es la cabeza, ¿qué garantía tienes sobre él? ¿Y si está finalizado?
- ¿Por qué LMD-GHOST cuenta solo el último voto de cada validador?
- ¿Qué tiene que pasar para que un checkpoint justificado se finalice?
- ¿Por qué el número mágico es un tercio del stake y no la mitad?
Conexiones dentro de la serie
- Antes: The Merge explica cómo el consenso tomó el control de la cabeza.
- Mecanismo en detalle: Casper FFG (Ethereum): el gadget de finalidad amigable desarrolla las pruebas de seguridad de FFG.
- Después: Validadores, attestations y BLS abre el voto que alimenta ambos mecanismos.
- Fallos: Finality, slashing e inactivity leak cubre qué pasa cuando la finalidad se detiene.
Dos preguntas distintas: cabeza y finalidad
En condiciones normales, el fork choice casi no trabaja. Hay un único proponente por slot y los validadores honestos votan su bloque. La regla solo decide algo cuando hay mucha asincronía en la red o un proponente que publica dos bloques para el mismo slot. [1] En esos casos, es la defensa que mantiene a todos en la misma rama.
La finalidad, en cambio, trabaja siempre y a otro ritmo. Solo los bloques en el límite de cada epoch, los checkpoints, pueden justificarse y finalizarse. [1] Por eso la cabeza avanza cada 12 segundos y la finalidad avanza de epoch en epoch.
El original de Casper FFG traía su propia regla: seguir la cadena con el checkpoint justificado de mayor altura. Gasper la sustituyó por LMD-GHOST. [1] La pieza que los une es simple: LMD-GHOST no empieza a buscar la cabeza desde la génesis, sino desde el último checkpoint justificado. [3] FFG fija el pasado; LMD-GHOST elige el presente sobre ese pasado.
Gasper: FFG fija el pasado y LMD-GHOST elige la cabeza
Cómo leer esta figura
Diagrama en dos zonas separadas por una línea discontinua. Zona izquierda, titulada Casper FFG: el checkpoint C sub e menos 1, marcado finalizado, apunta al checkpoint C sub e, marcado justificado; un arco verde por encima los une con la etiqueta enlace mayor o igual a dos tercios del stake. Debajo: qué ya no se revierte sin quemar al menos un tercio del stake. Zona derecha, titulada LMD-GHOST: desde C sub e salen dos ramas, una azul hacia A1 con peso w de A1 y luego A2 marcada cabeza, y otra gris hacia B1 con peso w de B1. Debajo: desde C sub e elige el hijo con más peso, w de A1 mayor que w de B1, con el último voto de cada validador.
Estado de votos en LMD-GHOST: el último mensaje de cada validador
El nombre se lee en dos partes. Latest message driven: si un validador votó varias veces, solo cuenta su voto más reciente. Greedy heaviest observed subtree: en cada bifurcación se elige el hijo cuyo subárbol acumula más peso de votos. [1] El peso es saldo efectivo, no número de validadores.
La especificación lo escribe en pocas líneas. Este es un extracto de get_head:
# Extracto de consensus-specs, phase0/fork-choice.md (comentarios traducidos)
def get_head(store: Store) -> ForkChoiceNode:
nodes = get_filtered_node_tree(store)
head = ForkChoiceNode(root=store.justified_checkpoint.root)
while True:
children = [child for child in get_node_children(store, head) if child in nodes]
if len(children) == 0:
return head
# Más peso gana; empate: raíz lexicográficamente mayor
head = max(children, key=lambda child: (get_weight(store, child), child.root))get_weight suma el saldo efectivo de los validadores activos y no penalizados cuyo último mensaje apoya ese nodo o un descendiente. Los validadores detectados votando dos veces de forma contradictoria quedan fuera de la suma. [3]
Un ejemplo hipotético con cinco validadores de igual saldo. Tres votaron por última vez a A2 y dos a B1. Aunque uno de los tres hubiera votado antes a B1, ese voto viejo ya no cuenta. El subárbol de A1 pesa tres y el de B1 pesa dos: la cabeza es A2.
Hay un ajuste más, el proposer boost. Si un bloque llega a tiempo en su slot, recibe durante ese slot un peso extra igual a PROPOSER_SCORE_BOOST = 40 % del peso medio de un comité. [3] Como razonamiento: ese extra dificulta que alguien guarde votos para reorganizar un bloque honesto publicado a tiempo.
Invariante de Casper FFG: justificar, finalizar y no contradecirse
Cada attestation incluye un voto FFG con dos checkpoints: source, el último justificado que ve el validador, y target, el checkpoint de la epoch actual. Un enlace de supermayoría entre a y b existe cuando validadores con al menos 2/3 del depósito votan con source a y target b. [4]
Las reglas son recursivas. Un checkpoint está justificado si es la raíz o si hay un enlace de supermayoría que llega a él desde otro justificado. Está finalizado si está justificado y hay un enlace de supermayoría desde él hasta su hijo directo. [4] En la práctica de Ethereum: dos epochs seguidas justificadas, la primera queda finalizada. [5]
La especificación lo implementa con un registro de bits de las últimas epochs justificadas y cuatro casos de finalización; el más común es "las dos epochs más recientes justificadas, la más nueva usando la anterior como source". [6] El umbral es literal: el saldo que votó el target multiplicado por 3 debe ser mayor o igual que el saldo activo total multiplicado por 2.
Estado de votos
De votos a finalidad en el caso normal
¿Qué impide votar a dos ramas a la vez? Dos reglas de slashing, que la especificación comprueba así:
# Extracto de consensus-specs, phase0/beacon-chain.md
def is_slashable_attestation_data(data_1: AttestationData, data_2: AttestationData) -> bool:
return (
# Double vote
(data_1 != data_2 and data_1.target.epoch == data_2.target.epoch)
or
# Surround vote
(data_1.source.epoch < data_2.source.epoch and data_2.target.epoch < data_1.target.epoch)
)Doble voto: dos votos distintos con el mismo target. Voto envolvente: un voto cuyo intervalo de epochs contiene estrictamente al de otro. [6]
Por qué un tercio: seguridad responsable y vivacidad plausible
Casper FFG prueba dos propiedades. Accountable safety: dos checkpoints en conflicto no pueden quedar ambos finalizados a menos que al menos un tercio de los validadores viole una regla de slashing. Plausible liveness: pase lo que pase antes, si al menos dos tercios siguen el protocolo, siempre pueden crear enlaces nuevos sin violar ninguna regla. [4]
El argumento del tercio es aritmética de cuórums. Si dos tercios votaron una rama y dos tercios otra, la intersección es al menos un tercio, y esos validadores votaron dos veces. Como el doble voto se castiga al máximo, revertir la finalidad exige quemar al menos un tercio del ETH en staking. [1]
El mismo número explica el riesgo opuesto. Con más de un tercio del stake desconectado o en contra, nadie puede formar dos tercios y la finalidad se detiene. Para eso existe el inactivity leak: si la cadena no finaliza durante más de cuatro epochs, los validadores que no votan con la mayoría pierden saldo poco a poco hasta que la mayoría recupera los dos tercios. [5] El mecanismo tiene su propio capítulo de investigación: inactivity leaks como cura para particiones masivas.
Riesgo operativo
Qué le puedes prometer a un usuario según la marca del bloque
Cabeza
Resultado de LMD-GHOST en tu nodo ahora mismo.
- Puede cambiar con votos nuevos o con latencia de red.
- Sirve para mostrar estado provisional en una interfaz.
Justificado
Checkpoint con enlace de supermayoría desde otro justificado.
- Difícil de revertir, pero todavía posible en condiciones raras.
- Es el punto de partida de LMD-GHOST.
Finalizado
Justificado y con enlace a su hijo directo.
- Revertirlo exige que al menos 1/3 del stake sea penalizado.
- Es el umbral razonable para acreditar depósitos de valor alto.
Vuelve al depósito perdido del principio. La corrección no es esperar "más bloques" a ojo, sino leer el bloque finalized del nodo y acreditar solo lo que está por debajo. Cuesta minutos de latencia, y es la única marca con una garantía que se puede explicar en una frase.
Bibliografía académica
- [1]
ethereum.org, "Gasper," Ethereum developer documentation, accessed 2026-11-12.
Casper FFG más LMD-GHOST; justificación y finalización por checkpoints; inactivity leak; definición de LMD-GHOST.
- [2]
V. Buterin, D. Hernandez, T. Kamphefner, K. Pham, Z. Qiao, D. Ryan, J. Sin, Y. Wang, and Y. X. Zhang, "Combining GHOST and Casper," arXiv:2003.03052, 2020.
Define Gasper como versión idealizada de la Beacon Chain y prueba safety, plausible liveness y probabilistic liveness.
- [3]
ethereum/consensus-specs, "Phase 0: Beacon Chain Fork Choice," GitHub specification, accessed 2026-11-12.
get_head, get_weight, latest_messages y PROPOSER_SCORE_BOOST = 40.
- [4]
V. Buterin and V. Griffith, "Casper the Friendly Finality Gadget," arXiv:1710.09437, 2017.
Enlaces de supermayoría, checkpoints justificados y finalizados, accountable safety y plausible liveness.
- [5]
ethereum.org, "Proof-of-stake (PoS)," Ethereum developer documentation, accessed 2026-11-12.
Checkpoints, enlace de supermayoría, coste de revertir la finalidad e inactivity leak tras más de cuatro epochs.
- [6]
ethereum/consensus-specs, "Phase 0: The Beacon Chain," GitHub specification, accessed 2026-11-12.
weigh_justification_and_finalization e is_slashable_attestation_data.
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.
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.
Ethereum: mapa de lectura antes de tocar Solidity
Ruta completa para aprender Ethereum desde historia y arquitectura hasta EVM, proof-of-stake, L2, seguridad, DeFi y labs reproducibles.
Antes de Ethereum: Bitcoin, scripts y la máquina mundial
Historia inicial de Ethereum: qué problema vio el whitepaper, por qué los contratos generales importaban y qué cambió frente a Bitcoin.
Frontier, Homestead y The DAO: la red aprendió con golpes
De mainnet inicial a The DAO: primeros forks, tensiones sociales y por qué la historia de Ethereum no es solo técnica.