Glosario / Minería y consenso
Reorganización de la cadena
También se conoce como Reorg o Reorganización de la blockchain.
- ¿Qué es una reorganización de la cadena?
- Una reorganización de la cadena es lo que ocurre cuando su nodo descubre una rama con más trabajo acumulado, desconecta los bloques que había aceptado y reconstruye la punta de la cadena sobre la nueva rama.
Los nodos no siguen la cadena que vieron primero. Siguen la que lleva más prueba de trabajo, y cuando aparece una rama mejor retroceden hasta el punto de bifurcación y vuelven a avanzar desde allí. Casi todas las reorganizaciones de la cadena principal de bitcoin tienen un bloque de profundidad y terminan en segundos; la más profunda registrada, de 24 bloques en marzo de 2013, la causó un error de software y no un atacante.
Cómo funciona
Una reorganización de la cadena tiene tres pasos, y un nodo los ejecuta todos por su cuenta, sin consultar a nadie.
Primero retrocede desde su punta actual hasta el último bloque que comparten las dos ramas, y deshace cada bloque a su paso: las salidas que creó ese bloque se eliminan del conjunto de UTXO, las salidas que consumió vuelven a incorporarse y sus transacciones regresan a la mempool. Después conecta en orden los bloques de la rama en competencia y valida cada uno exactamente como si acabara de llegar. Por último, recalcula la mempool: descarta todo lo que ya se ha confirmado y conserva todo lo que no.
Es en el segundo paso donde reside la seguridad. Tener más trabajo es necesario, pero no suficiente. Si cualquier bloque de la rama aspirante falla en una sola comprobación de consenso, el nodo se detiene, marca esa rama como inválida y conserva la cadena que ya tenía. Un minero con un poder de hash ilimitado sigue sin poder hacer que un nodo acepte un bloque que se paga demasiado a sí mismo o que gasta dos veces una salida.
La regla es la cadena con más trabajo acumulado, no la cadena más larga. El trabajo se suma a partir de la dificultad con la que se minó cada bloque, así que una rama con menos bloques minados a una dificultad mayor puede imponerse a otra más larga. En bitcoin las dos medidas coinciden casi siempre, porque la dificultad solo cambia cada 2.016 bloques.
La profundidad es lo que separa lo rutinario de lo alarmante. Un bloque de profundidad es mantenimiento normal. Bitcoin Core trata cualquier cosa de envergadura como digna de atención y emite para el operador una advertencia de bifurcación con gran cantidad de trabajo cuando ve que una rama en competencia se aparta más de seis bloques de la cadena activa.
Por qué importa cuando compra bitcoin
Los recuentos de confirmaciones son una apuesta sobre la profundidad de las reorganizaciones, y cada plataforma que usted usa ha hecho discretamente una en su nombre.
Un exchange que acredita un depósito tras tres bloques ha decidido que no vale la pena asegurarse contra una reversión de tres bloques. Uno que espera seis le ha puesto al riesgo un precio más alto. Ninguna de esas cifras viene del protocolo; ambas son política interna, y por eso el mismo depósito se acredita en veinte minutos en una plataforma y en más de una hora en otra. Cuando mueva monedas entre los exchanges que reseña este sitio, vale la pena comprobar esa diferencia antes de suponer que algo ha salido mal.
Nada de esto afecta a sus claves. Una reorganización puede cambiar qué transacciones están en la cadena y en qué orden, pero no puede producir una firma, así que las monedas que están en una billetera que usted controla no forman parte de la exposición. Lo que queda dentro del radio de impacto es el valor en movimiento: un depósito que se ha acreditado pero aún no está enterrado, un pago que usted aceptó a cambio de mercancía, una operación entre pares en la que entregó efectivo con una sola confirmación.
La historia deja una advertencia instructiva. El 4 de julio de 2015, varios pools de minería grandes estaban construyendo sobre bloques que no habían validado, una práctica conocida como minería SPV, y produjeron una cadena de seis bloques que resultó ser inválida. Bitcoin.org publicó una alerta en la que aconsejaba a los usuarios esperar 30 confirmaciones hasta que se resolviera la situación. La lección no fue que bitcoin sea frágil; fue que la profundidad necesaria depende de lo que esté fallando, y que una confirmación nunca es mucho.
Si también conserva monedas de prueba de trabajo más pequeñas, trate el historial de reorganizaciones de esas monedas como una cuestión completamente aparte. Los exchanges exigen muchas más confirmaciones para las cadenas que de verdad han sufrido reorganizaciones, y ese requisito es una señal pública útil sobre lo segura que es realmente una cadena.
La reorganización de 24 bloques de marzo de 2013
La reorganización más profunda que ha sufrido nunca la cadena principal de bitcoin la causaron dos versiones del software que no se pusieron de acuerdo sobre un bloque que ambas deberían haber aceptado.
Bitcoin 0.8, publicada en febrero de 2013, reemplazó el motor de almacenamiento Berkeley DB por LevelDB. El 11 de marzo llegó el bloque 225.430 con un número inusualmente grande de entradas. Los nodos que ejecutaban la 0.8 lo aceptaron. Los nodos que ejecutaban la 0.7 chocaron con un límite de bloqueos de Berkeley DB que su configuración nunca les había permitido superar, y lo rechazaron. La red se dividió en dos, y cada lado estaba completamente seguro de que el otro se equivocaba.
Los desarrolladores se coordinaron por IRC en menos de una hora y tomaron una decisión incómoda: pedir a los pools que volvieran a la 0.7, abandonando deliberadamente la rama con más trabajo, porque esa rama era la que la mayoría de los nodos en funcionamiento no podía seguir. La división duró alrededor de seis horas. Cuando la cadena de la 0.7 tomó la delantera, la rama descartada llegaba a 24 bloques. Un procesador de pagos, OKPay, informó de que había sufrido un doble gasto durante esa ventana.
La corrección llegó días después con la 0.8.1, que hizo que los nodos nuevos imitaran el límite antiguo hasta una fecha de transición coordinada. El BIP50 documenta todo el episodio en detalle y es lo mejor que se puede leer sobre cómo gestiona bitcoin una emergencia real. También es la razón de que la reorganización más profunda de la historia de bitcoin sea un relato sobre la configuración de una base de datos y no sobre el poder de hash.
Reorganización de la cadena frente a bifurcación dura
Una reorganización de la cadena ocurre dentro de un mismo conjunto de reglas y termina con todos de vuelta en la misma cadena. Una bifurcación dura (hard fork) cambia las reglas de modo que las dos ramas nunca puedan reconciliarse, y ambas siguen creciendo como activos separados, que es lo que ocurrió con Bitcoin Cash el 1 de agosto de 2017. Una es un desacuerdo temporal sobre qué cadena válida es la mejor. La otra es un desacuerdo permanente sobre qué significa válido.
Reorganización de la cadena frente a doble gasto
Una reorganización es un mecanismo; un doble gasto es una de las cosas que se podrían hacer con ella, y rara vez lo que realmente ocurre. La inmensa mayoría de las reorganizaciones simplemente vuelven a minar las mismas transacciones en otro bloque, así que no cambia el pago de nadie. Una reversión exige que la rama ganadora contenga una transacción en conflicto que el atacante puso allí a propósito, lo que significa o un poder de hash enorme o una suerte extraordinaria. Los intentos de doble gasto más baratos nunca implican reorganización alguna, porque se dirigen a pagos que, para empezar, nunca llegaron a confirmarse.