Ethereum: de historia a labs
Artículo 48 de 48
100%
completado al llegar aquí
Sistemas distribuidosNota de laboratorio11 min de lectura
De la serie a los labs: cómo practicar sin quemar ETH real
Cómo practicar Ethereum sin fondos reales: cadena local con Anvil, reorgs forzadas, fork de mainnet y testnets, y el paso a la ruta práctica de custodia.
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.
Arquitectura production-ready para dApps
Arquitectura para depósitos y retiros sobre un custodio: confirmación por finalized, reorgs, idempotencia por nonce, conciliación y respuesta a incidentes.
Blockchain13 min de lectura→Foundry, Anvil y Cast: taller local para Ethereum
Forge, Anvil y Cast paso a paso: compilar, probar con fuzzing, desplegar en una cadena local 31337 y leer storage por RPC sin gastar gas real.
Blockchain14 min de lectura→
Quieres comprobar que tu indexador sobrevive a una reorg, como pide el capítulo de indexadores. En mainnet no puedes provocar una. En una testnet tendrías que esperar a que ocurra por azar. En una cadena local la provocas con una sola llamada RPC, la repites cien veces y la borras al terminar. ¿Dónde conviene practicar cada cosa, entonces?
Este capítulo cierra la serie con esa pregunta. Define tres entornos de práctica y su frontera, propone una secuencia de laboratorios que recorre la serie, muestra un laboratorio completo (la reorg forzada) y termina donde empieza el trabajo real del equipo: la ruta práctica de custodia, llaves y cumplimiento.
De local a operación
Secuencia de laboratorios sugerida
Anvil
Cadena local y wallet
Levantar Anvil, firmar una transferencia y leer su recibo. Evidencia: status 1 y saldos antes y después.
Cast
RPC y depuración
Consultar bloques, logs y estado por JSON-RPC. Evidencia: el mismo dato leído por dos métodos.
Forge
Token ERC-20 con pruebas
Escribir un token y un test de fuzzing que preserve el suministro total. Evidencia: la propiedad pasa.
Forge
Storage y reentrancy
Leer slots y reproducir un ataque de reentrancy. Evidencia: el slot exacto y el test que falla antes del arreglo.
Anvil
Oráculo y liquidación
Mover un precio a mano y liquidar una posición. Evidencia: health factor antes y después.
Anvil
Indexador y observabilidad
Forzar una reorg y medir atrasos. Evidencia: el índice vuelve a cuadrar con la cadena.
Brújula de lectura
Actor, evidencia y estado
Actor
Quien practicaUna persona del equipo con Foundry instalado y ninguna clave con fondos reales en la máquina.
Evidencia
Artefacto observableRecibo, slot, test, hash de bloque o métrica: algo que otro puede comprobar sin creerte.
Estado
Cadena desechableUna cadena local que se crea, se altera y se borra; nada de lo que pase ahí cuesta dinero.
Preguntas guía
Usa estas preguntas para decidir dónde practicar algo concreto de tu equipo:
- ¿Qué propiedad quieres comprobar, y qué artefacto la demuestra?
- ¿Necesitas estado real de mainnet, o te basta una cadena vacía?
- ¿Necesitas un consenso real, con validadores y finalidad de verdad?
- ¿Cómo compruebas, antes de firmar, que no estás conectado a mainnet?
- ¿Qué tienes que borrar al terminar?
Conexiones dentro de la serie
- Antes: Arquitectura production-ready para dApps, cuyos estados de depósito y retiro se ensayan aquí.
- Después: la ruta práctica, que lleva estas ideas a custodia, llaves, firmas y cumplimiento.
Prerequisitos internos recomendados:
- Foundry, Anvil y Cast: taller local para Ethereum, para instalar las herramientas.
- Indexadores: eventos, reorgs e idempotencia, para el laboratorio de reorg.
- Ethereum: mapa de lectura antes de tocar Solidity, para ubicar cada laboratorio en la serie.
Riesgo operativo: la frontera entre local, testnet y mainnet
Hay tres entornos de práctica, y cada uno es real en algo distinto. Anvil, el nodo local de Foundry, crea una cadena en tu máquina. Por defecto escucha en el puerto 8545, usa el chain id 31337 y genera 10 cuentas con 10 000 ETH de prueba cada una, derivadas de una frase semilla pública. [1] Esas claves son conocidas por todo el mundo: nunca deben recibir fondos reales.
El segundo entorno es un fork de mainnet: Anvil arranca con --fork-url y lee el estado real de la red en un bloque, pero las transacciones que envías solo existen en tu máquina. Sirve para probar contra contratos y saldos reales sin tocar la red. El tercero son las testnets públicas. Según ethereum.org, Sepolia es la testnet recomendada por defecto para desarrollo de aplicaciones, y Hoodi está pensada para probar validación, staking y actualizaciones de red. [2]
La diferencia que más importa para esta serie es el consenso. Anvil no tiene validadores ni finalidad real: responde a safe y finalized con una aproximación, la cabeza menos 32 y menos 64 bloques por defecto. Para practicar la lógica de etiquetas basta. Para observar cuánto tarda la finalidad de verdad, o qué pasa si se detiene, necesitas una testnet. [1]
Tres entornos de práctica y qué es real en cada uno
Cómo leer esta figura
Cuatro columnas de izquierda a derecha: Anvil local, fork de mainnet, testnet Sepolia o Hoodi, y mainnet. Tres filas indican si es real el estado, el consenso con finalidad y el valor del ETH. Anvil: estado simulado, consenso simulado con safe y finalized aproximados, ETH sin valor; permite forzar reorgs. Fork: estado real leído en un bloque, consenso simulado, ETH sin valor. Testnet: estado propio de la testnet, consenso y finalidad reales, ETH sin valor. Mainnet: todo real. Una barrera vertical separa mainnet con la leyenda: fuera de los labs, solo vía la ruta práctica de custodia.
La regla operativa que sale de aquí es simple y conviene automatizarla: antes de firmar, comprueba el chain id. Si un script de laboratorio recibe un chain id 1 (mainnet), debe detenerse. Y ninguna clave con fondos reales vive en la máquina donde practicas.
Traza de ejecución de un laboratorio: reorg forzada en Anvil
Este laboratorio pone a prueba el cursor con hash del capítulo de indexadores. Anvil expone un método RPC propio, anvil_reorg, que reemplaza los últimos bloques por otros nuevos a partir de un ancestro común. Recibe la profundidad y, opcionalmente, una lista de transacciones para los bloques nuevos; la implementación se asegura de que los bloques de reemplazo tengan hashes distintos aunque contengan lo mismo. [3]
Los comandos usan cast rpc, que interpreta cada parámetro como JSON y, si no lo es, lo pasa como texto. Los métodos anvil_* son propios de Anvil y pueden cambiar entre versiones de Foundry; revisa la tuya antes de automatizar.
# Terminal 1: cadena local desechable
anvil
# Terminal 2
export ETH_RPC_URL=http://127.0.0.1:8545
test "$(cast chain-id)" = "31337" || { echo "No es Anvil: me detengo"; exit 1; }
cast rpc anvil_mine 0x50 # mina 80 bloques vacíos
cast rpc eth_getBlockByNumber latest false | jq -r '.number, .hash'
cast rpc eth_getBlockByNumber finalized false | jq -r '.number' # aproximación de Anvil
cast rpc anvil_reorg 3 '[]' # reemplaza los últimos 3 bloques
cast rpc eth_getBlockByNumber latest false | jq -r '.number, .hash' # misma altura, otro hashLa aceptación del laboratorio no es "el comando terminó". Es esta lista, comprobable por otra persona:
- Antes de la reorg, el indexador tiene su cursor en la cabeza, con altura y hash.
- Después de la reorg, la altura de
latestes la misma y el hash cambió. - El indexador detecta que el
parentHashno coincide, retrocede tres bloques y vuelve a avanzar. - Una conciliación contra
balanceOfen el bloquefinalizedaproximado cuadra.
Para la variante con depósitos, envía transferencias de un token de prueba antes de la reorg y no las incluyas en los bloques nuevos. Los depósitos atados a esos bloques deben pasar a "descartado", como describe el capítulo de arquitectura.
Invariante de un laboratorio: evidencia, frontera y limpieza
Un laboratorio útil aísla una propiedad. Si mezcla cinco conceptos, quien lo hace termina copiando comandos sin saber cuál de ellos falló. Por eso cada laboratorio de la secuencia declara lo mismo, en el mismo orden:
- Objetivo: la propiedad que se comprueba, en una frase.
- Frontera: en qué entorno corre, y qué no debe tocar nunca (mainnet, claves reales, servicios pagos).
- Evidencia: el artefacto que demuestra el resultado, comparable antes y después.
- Limpieza: qué procesos, archivos y variables se eliminan al terminar, y cómo se comprueba.
Con Anvil, la limpieza es casi gratis: al cerrar el proceso, la cadena desaparece. Lo que suele quedar son variables de entorno con URLs de RPC o claves, y archivos de configuración que alguien reutiliza después contra otra red. Ahí está el riesgo real de un laboratorio.
¿Dónde practico esto?
Reglas de decisión rápida
¿La propiedad es de un contrato aislado?
lógica, storage, eventos, permisos
→ Anvil local con tests de Forge.
¿Necesitas contratos o saldos reales?
integración con un protocolo desplegado
→ Fork de mainnet con Anvil, fijando el número de bloque.
¿Necesitas reorgs a demanda?
indexador, depósitos, conciliación
→ Anvil con anvil_reorg; repetir con varias profundidades.
¿Necesitas finalidad y tiempos reales?
políticas de confirmación, alertas de finalidad
→ Testnet pública (Sepolia para aplicaciones).
¿Implica mover valor real?
claves, custodio, retiros
→ No es un laboratorio: pasa por la ruta práctica y las políticas de custodia.
Historia de la ruta: de esta serie a la línea práctica
La serie recorrió Ethereum desde su historia hasta la producción: cuentas y transacciones, la EVM, contratos y sus fallos, consenso y finalidad, rollups, DeFi y operación. Los laboratorios convierten cada tramo en algo comprobable en tu máquina. Pero el trabajo del equipo no termina en un laboratorio: termina moviendo activos reales con llaves que alguien custodia.
Ese es el objeto de la ruta práctica. Sus módulos van del mínimo común que cualquier persona del equipo debe entender antes de mover un activo, a la gestión de llaves, la elección entre multifirma y MPC, la separación entre wallets hot, warm y cold, la decisión de custodiar o delegar, el cumplimiento AML y KYT, y una arquitectura de referencia con los proveedores contratados. Cada módulo termina en una decisión del equipo y un entregable revisable.
La conexión con esta serie es directa. Las etiquetas safe y finalized, la idempotencia por nonce y la conciliación contra la cadena son las piezas sobre las que esa ruta construye políticas de custodia. Si alguna se siente borrosa, vuelve al capítulo correspondiente antes de seguir.
El siguiente paso: la ruta práctica
Quédate con una frase: se practica en el entorno más barato que todavía muestre la propiedad, con una evidencia que otro pueda comprobar, y lo que mueve valor real no es un laboratorio. El siguiente paso está en la ruta práctica.
Bibliografía académica
- [1]
Foundry contributors, "anvil: command-line options and configuration," foundry-rs/foundry, GitHub repository.
Puerto 8545, chain id 31337, 10 cuentas con 10 000 ETH, frase semilla por defecto y slots por epoch.
- [2]
ethereum.org, "Networks."
Sepolia para aplicaciones y Hoodi para validadores y actualizaciones.
- [3]
Foundry contributors, "anvil_reorg," in crates/anvil/src/eth/api.rs, foundry-rs/foundry, GitHub repository.
Implementación de anvil_reorg: ancestro común y bloques de reemplazo con hashes distintos.
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.
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.
Foundry, Anvil y Cast: taller local para Ethereum
Tooling local para escribir, compilar, probar, desplegar, llamar y romper contratos sin pagar gas real.
Testing serio: unit, fork, fuzz e invariantes
Cómo probar contratos con unit tests, fork tests, fuzzing e invariants antes de confiar en un deploy.
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.