Ethereum: de historia a labs
Artículo 39 de 48
81%
completado al llegar aquí
Sistemas distribuidosNota de investigación13 min de lectura
Bridges: mover valor entre cadenas sin cerrar los ojos
Qué respalda un token puenteado: lock/mint, burn/mint, quién verifica el mensaje, el retiro canónico de un rollup y riesgos para 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.
Rollups desde cero: ejecutar fuera, resolver dentro
Qué es un rollup: secuenciador, lote comprimido, raíz de estado, disponibilidad de datos y la regla que obliga a L1 a aceptar solo transiciones válidas.
Blockchain12 min de lectura→Optimistic rollups: optimismo con periodo de disputa
Cómo funciona un optimistic rollup: raíces afirmadas, ventana de impugnación, bisección hasta un paso de MIPS y retiros de OP Stack en dos fases.
Blockchain13 min de lectura→
Un cliente deposita en tu plataforma 1.000 unidades de un token que en otra red se llama "ETH". En el explorador aparece un contrato ERC-20 con ese símbolo y buena liquidez. ¿Qué tienes en custodia? No tienes ether de mainnet. Tienes un pasivo emitido por un contrato en otra red, cuyo valor depende de que alguien, en algún lugar, mantenga bloqueado el ETH original y de que nadie pueda emitir más representaciones que las bloqueadas.
Eso es un bridge (puente): un sistema que permite que un evento en una cadena produzca un efecto en otra. Las cadenas no se comunican de forma nativa; cada una tiene sus reglas y su consenso. El bridge agrega un tercer componente que observa una cadena y actúa en la otra. ethereum.org lo resume en una frase: hay que entender qué compromisos hace cada bridge antes de usarlo. [1]
Brújula de lectura
Actor, evidencia y estado
Actor
El verificador del bridgeMultisig, comité, light client o sistema de pruebas que afirma lo ocurrido en la otra cadena.
Evidencia
Mensaje y su pruebaFirmas del comité, prueba de inclusión o prueba de validez del evento de origen.
Estado
Bloqueado en origen y emitido en destinoLa solvencia exige que lo emitido nunca supere lo bloqueado.
Preguntas guía
- Si el verificador miente, ¿qué puede emitir o liberar?
- ¿Qué impide que el mismo mensaje se procese dos veces?
- ¿Cuánto tarda un retiro y qué lo puede detener?
- ¿Qué parte del riesgo de un token puenteado aparece en su precio y cuál no?
Tres maneras de "mover" un activo, sin moverlo
Ningún token viaja de una cadena a otra. Lo que ocurre es un cambio de estado coordinado en dos libros contables. La documentación para desarrolladores de ethereum.org distingue tres mecanismos: [2]
- Lock and mint. Se bloquea el activo en un contrato de la cadena de origen y se emite (mint) una representación en la de destino. Para volver, se quema la representación y se libera lo bloqueado.
- Burn and mint. Se quema el activo en origen y se emite en destino. Lo usa un emisor que controla el token en ambas cadenas.
- Atomic swaps. Se intercambia el activo de origen por otro que ya existe en destino con una contraparte que tiene liquidez allí.
Los dos primeros crean un pasivo: el token de destino vale porque promete algo en origen. El tercero no emite nada nuevo, pero depende de que existan proveedores de liquidez dispuestos a hacer el intercambio. La misma página clasifica los bridges en nativos (los que construye una red para atraer liquidez, como el de un rollup), basados en validadores u oráculos, de mensajería generalizada y redes de liquidez.
El verificador es el modelo de amenaza
En lock and mint, el contrato de destino emite cuando recibe un mensaje que dice "se bloquearon 1.000 en origen". La pregunta central de seguridad es: ¿quién puede producir un mensaje que el destino acepte? Esa entidad es el verificador, y su diseño define el riesgo.
ethereum.org separa dos familias. Los bridges confiables dependen de un conjunto externo de verificadores: federaciones con multisig, sistemas de cómputo multiparte (MPC) o redes de oráculos. Suelen ser rápidos, baratos y conectar muchas redes, pero el usuario confía en ese conjunto. Los bridges sin confianza adicional se apoyan en las propias cadenas y sus validadores, sin sumar supuestos nuevos. [2]
Entre los segundos hay variantes con costos distintos. Un bridge de light client verifica en destino los encabezados y el consenso de origen, lo que suele limitar cuántas redes conecta. Un bridge optimista acepta mensajes salvo que alguien demuestre fraude en una ventana de tiempo, lo que agrega latencia. Un bridge con pruebas de validez verifica una prueba criptográfica de que la transición ocurrió.
Ethereum ayuda desde la actualización Dencun, activada el 13 de marzo de 2024, con EIP-4788: [3] cada bloque de ejecución compromete la raíz del bloque de la beacon chain y un contrato del sistema la guarda en un buffer de 8.191 entradas. Los autores citan explícitamente los bridges entre los usos: con esas raíces, un contrato puede verificar pruebas sobre el estado de consenso sin depender de un oráculo externo. [4]
Invariante de solvencia: lo emitido contra lo bloqueado
Para un bridge lock and mint hay una invariante que cualquier ingeniero puede escribir como test: la oferta del token envuelto en destino nunca debe superar el saldo bloqueado en origen. Las fallas graves son formas de romperla.
- Mensaje falso. El verificador (o quien robó sus claves) afirma un bloqueo que no ocurrió: se emite sin respaldo.
- Error de verificación. El contrato acepta una prueba o firma inválida: el efecto es el mismo que un mensaje falso.
- Repetición. Un mensaje válido se procesa dos veces: doble emisión o doble liberación.
- Liberación sin quema. En el camino de vuelta, el contrato de origen libera fondos sin un burn real en destino.
Lock and mint: dónde se rompe la invariante de solvencia
Fuentes:
[2]Cómo leer esta figura
A la izquierda, la cadena de origen con un contrato de bloqueo que guarda un saldo B. En el centro, el verificador, que puede ser un multisig o MPC, un light client, un esquema optimista con ventana de disputa o un verificador de pruebas de validez. A la derecha, la cadena de destino con un contrato que emite el token envuelto con oferta S. Una flecha verde va del evento de bloqueo al verificador y del verificador a la emisión. Debajo, la invariante S menor o igual que B. Tres flechas rojas señalan cómo se rompe: un mensaje falso o claves robadas emiten sin bloqueo, una verificación defectuosa acepta una prueba inválida y un mensaje repetido emite dos veces.
El riesgo no está repartido de forma pareja. ethereum.org señala que muchos de los mayores robos en blockchains involucraron bridges y cita el caso de Wormhole, donde se robaron 120.000 wETH, unos 325 millones de dólares. [1] La razón estructural es simple: un contrato de bloqueo acumula el colateral de todos los usuarios del bridge en un solo lugar.
El siguiente contrato es ilustrativo. Muestra el lado de destino de un lock and mint con protección contra repetición. Todo lo importante depende de quién es verifier.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
interface IMintable {
function mint(address to, uint256 amount) external;
}
/// Ilustrativo: lado destino de un bridge lock-and-mint. Sin pausas, límites ni gobernanza.
contract MintGate {
IMintable public immutable wrapped;
address public immutable verifier; // multisig, light client o verificador de pruebas
uint256 public immutable sourceChainId;
mapping(bytes32 => bool) public processed;
event Minted(bytes32 indexed messageId, address indexed to, uint256 amount);
constructor(IMintable wrapped_, address verifier_, uint256 sourceChainId_) {
wrapped = wrapped_;
verifier = verifier_;
sourceChainId = sourceChainId_;
}
function mintFromSource(bytes32 lockId, address to, uint256 amount) external {
require(msg.sender == verifier, "solo verificador");
bytes32 messageId = keccak256(abi.encode(sourceChainId, block.chainid, lockId, to, amount));
require(!processed[messageId], "mensaje ya procesado");
processed[messageId] = true;
wrapped.mint(to, amount);
emit Minted(messageId, to, amount);
}
}El mapping processed bloquea la repetición, y los dos chainid dentro del hash impiden reutilizar el mensaje en otro par de redes. Lo que el contrato no puede saber es si el bloqueo existió. Esa afirmación la hace verifier, y si sus claves se comprometen, mintFromSource emite lo que el atacante pida.
Traza de ejecución: un retiro por el bridge canónico de un rollup
El bridge nativo de un rollup es el caso con menos supuestos adicionales, porque el contrato en L1 verifica contra el estado que el propio rollup publica. La especificación de OP Stack describe un retiro en pasos: [5]
- En L2, la cuenta llama a
initiateWithdrawaldel contrato predesplegadoL2ToL1MessagePasser, que guarda el hash del mensaje. - En L1, un relayer envía una transacción de prueba al contrato
OptimismPortalcon los datos del retiro y una prueba de inclusión contra una raíz de salida (output root) del rollup. - Una vez probado, el retiro entra en un periodo de disputa de 7 días, en el que otros participantes pueden impugnar la raíz de salida.
- Pasado ese plazo, un relayer envía la transacción de finalización, el portal comprueba que el retiro fue probado y que el plazo terminó, y ejecuta la llamada.
La especificación fija propiedades que funcionan como checklist de cualquier bridge: un retiro se prueba una sola vez salvo que cambie la raíz de salida, se finaliza una sola vez y ningún campo (remitente, destino, datos, valor, límite de gas) puede modificarse al retransmitirlo. Si la llamada final falla en el contrato de destino, el portal no ofrece reintento. Y como el portal puede enviar llamadas arbitrarias en L1, los tokens enviados por error a su dirección pueden darse por perdidos.
Para custodia, esta traza define tiempos y estados. Un retiro "iniciado" no es un retiro "disponible"; entre ambos hay una prueba, una semana de disputa y una finalización, cada una con su transacción y su costo de gas.
Riesgo operativo: inventario y reconciliación de activos puenteados
ethereum.org agrupa los riesgos de usar bridges. Todos tienen riesgo de contrato inteligente (un error de código expone los fondos) y de tecnología (fallas de software, errores humanos, spam o ataques). Los bridges confiables agregan riesgo de censura (los operadores pueden impedir transferencias) y de custodia (pueden coludirse para robar). [1] A esa lista hay que sumar el riesgo sistémico: si un token envuelto pierde su respaldo, todos los protocolos que lo aceptan como colateral heredan el agujero.
La guía para desarrolladores advierte además que integrar un solo bridge crea un punto único de falla y que un agregador de bridges suma más contratos y, por tanto, más superficie. [2] La liquidez de un token en un exchange descentralizado tampoco prueba solvencia: mide cuánto se puede vender hoy, no si el colateral existe.
¿Qué respalda este token?
Controles mínimos sobre activos puenteados
0 de 5 revisados
Lab propuesto: romper y defender la invariante
Con dos redes locales y el contrato MintGate de arriba, el lab tiene tres pasos observables. Primero, un bloqueo real seguido de una emisión deja totalSupply igual al saldo bloqueado. Segundo, reenviar el mismo mensaje revierte con "mensaje ya procesado". Tercero, si el test controla la clave del verificador, puede emitir sin bloqueo y la invariante falla: es la demostración de que la seguridad del puente es la seguridad de esa clave. Como teardown basta detener ambas redes. Nada de esto debe desplegarse en mainnet sin pausas, límites y auditoría.
Conexiones dentro de la serie
- Antes: rollups desde cero y optimistic rollups y fraud proofs explican por qué el retiro canónico espera una ventana de disputa.
- Relacionado: EIP-7702, otra forma de autorizar en nombre de una cuenta, y oráculos y price feeds, donde también alguien afirma un hecho externo.
- Después: MEV y PBS, donde la pregunta pasa a ser quién ordena las transacciones.
Bibliografía académica
- [1]
ethereum.org, "Blockchain bridges."
Bridges confiables y sin confianza adicional, riesgos y el robo de Wormhole.
- [2]
ethereum.org, "Bridges," Ethereum developer docs.
Mecanismos lock/mint, burn/mint y atomic swaps; tipos de bridge, compromisos y riesgos de integración.
- [3]
ethereum.org, "Ethereum roadmap."
Fechas de las actualizaciones de red; Dencun incluyó EIP-4788.
- [4]
A. Stokes, A. Dietrichs, D. Ryan, M. H. Swende y lightclient, "EIP-4788: Beacon block root in the EVM," Ethereum Improvement Proposals, no. 4788, 2022.
Raíces de bloques de la beacon chain accesibles desde la EVM para pruebas sin confianza adicional.
- [5]
Optimism, "Withdrawals," OP Stack Specification.
Flujo de retiro: iniciar en L2, probar en L1, periodo de disputa de 7 días y finalizar una sola vez.
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.
ERC-20: simple por fuera, tramposo por dentro
Token fungible, balances, transfers, approvals, allowances y riesgos comunes del estándar ERC-20.
Proxies y upgrades: cambiar el motor con el auto andando
Delegatecall, transparent proxies, UUPS, storage collisions y gobernanza de upgrades.
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.
Reentrancy: la llamada externa que muerde de vuelta
Cómo funciona reentrancy, por qué The DAO sigue siendo lección viva y cómo defender con CEI, pull payments y guards.