Cadena Más Larga

La versión de la blockchain que los nodos aceptan como válida

Diagrama que muestra la cadena más larga de bloques en una blockchain.

La cadena más larga es lo que los nodos Bitcoin aceptan como la versión válida de la blockchain.

La regla de la cadena más larga permite que todos los nodos de la red se pongan de acuerdo sobre cómo se ve la blockchain y, por lo tanto, sobre el mismo historial de transacciones.

La cadena de prueba de trabajo es la solución al problema de sincronización, y para saber cuál es la visión globalmente compartida sin tener que confiar en nadie.
Satoshi Nakamoto, Lista de Criptografía

Definición

¿Qué es la cadena más larga?

La cadena más larga es la cadena de bloques que requirió más esfuerzo para ser construida.

Para agregar un nuevo bloque a la blockchain, necesitas usar poder de procesamiento, lo que significa que cada bloque en la blockchain requiere una cierta cantidad de energía para llegar ahí.

Diagrama que muestra nodos adoptando una cadena más larga en lugar de una más corta.

Por lo tanto, una blockchain con más bloques habrá requerido más energía para ser construida que una cadena con menos bloques, y, como regla, los nodos siempre adoptan esa cadena en lugar de una "más corta".

La decisión de la mayoría está representada por la cadena más larga, que tiene el mayor esfuerzo de prueba de trabajo invertido en ella.
Satoshi Nakamoto, Whitepaper de Bitcoin

Concepto Erróneo

¿La cadena más larga es la que tiene más bloques?

Podrías pensar que la cadena más larga es simplemente la que tiene más bloques, pero la cadena que exigió más energía para construirse no es necesariamente la que tiene más bloques.

Esto ocurre porque los cambios en la dificultad significan que algunos bloques requieren más energía para ser minados que otros. Dentro del mismo período de dificultad, cada nuevo bloque requiere el mismo esfuerzo; pero si la dificultad aumenta, los bloques del nuevo período requieren más esfuerzo.

Como los nodos adoptan la cadena con más trabajo, no adoptarían una cadena con más bloques si no requiriera tanto trabajo para ser construida. Los nodos adoptan la que tiene más "chainwork" acumulado, y no simplemente la que tiene más bloques.

Entonces, en resumen, la frase "cadena más larga" se refiere a la blockchain que requirió más energía para ser construida. La mayoría de las veces es la cadena con más bloques, pero, para ser más precisos, es la cadena con más trabajo.

En la primera versión de Bitcoin, Satoshi usaba el número de bloques como métrica. Sin embargo, eso es vulnerable a manipulación, así que luego se cambió para usar el chainwork como métrica.

Chainwork

¿Cómo calculas la cadena más larga?

La cadena más larga se mide mediante una métrica llamada "chainwork".

[Chainwork] es el número total de hashes que se espera que hayan sido necesarios para producir la cadena actual.
Pieter Wuille, bitcoin.stackexchange.com

Para calcular el chainwork, solo necesitas calcular cuántos hashes habrías tenido que hacer para minar cada bloque de la cadena, y luego sumarlos.

Cálculo

La minería implica hacer hash de un encabezado de bloque. Cada hash produce un número de 256 bits, que puede ir de 0 a 0xffff...ffff.

Para minar el bloque con éxito, ese resultado debe ser menor o igual al valor objetivo de esa altura. Para calcular cuántos hashes necesitarías (en promedio) para quedar por debajo de ese valor, divides el intervalo máximo de números entre el número por debajo del cual quieres quedar:

intervalo = 2^256
objetivo+1 = 0x00000000ffff...0000 + 1

hashes = intervalo / (objetivo+1)
hashes = 0x0100010001 (4295032833)

Eso significa que necesitarías hacer aproximadamente 4.295.032.833 hashes en promedio para el primer bloque. Para el chainwork total de una cadena, basta con calcular los hashes esperados de cada bloque y sumar todo.

Puedes descubrir cuál era el objetivo de cada bloque mirando el campo bits en el encabezado del bloque.

Ejemplo

Para dar un ejemplo rápido de cómo se calcula el chainwork, vamos a calcular el chainwork hasta el cuarto bloque de la blockchain.

El objetivo no se ajustó durante los primeros 2016 bloques, así que el número promedio de hashes necesario para minar cada uno de esos 4 primeros bloques es el mismo: aproximadamente 4.295.032.833 hashes por bloque.

El chainwork total es la suma del número promedio de hashes para minar cada uno de esos bloques:

4 bloques × 4.295.032.833 hashes = 17.180.131.332 hashes

Podemos verificar que el cálculo es correcto usando bitcoin-cli: el campo chainwork que devuelve getblock para el bloque de altura 3 coincide con ese total acumulado.

Propósito

¿Por qué los nodos adoptan la cadena más larga?

1. Resolver desacuerdos cuando dos bloques se minan al mismo tiempo.

Como bitcoin opera en una red, es posible que dos computadoras independientes minen un bloque al mismo tiempo. En esa situación, los nodos discrepan sobre cuál de esos dos bloques debe estar en la cima. Sin embargo, eso se resuelve cuando se mina el siguiente bloque. Ese siguiente bloque construye sobre uno de esos dos, creando una nueva cadena más larga que todos los nodos aceptan (una reorganización de la cadena).

2. Proteger bloques ya minados en la blockchain.

El hecho de que los nodos siempre adopten la cadena más larga hace muy difícil reemplazar bloques (y, por tanto, transacciones) ya presentes en la cadena. Para reemplazar una transacción, tendrías que construir una nueva cadena más larga. Pero si la mayoría de los mineros trabaja continuamente para extender la misma cadena actual, un minero individual no puede superar el esfuerzo combinado de todos los demás (esto requeriría un ataque de 51%).

Piénsalo como un esfuerzo cooperativo para construir una cadena.
Satoshi Nakamoto, bitcointalk.org

Preguntas frecuentes

¿Por qué los mineros eligen construir sobre la cadena más larga?

Porque un minero puede reclamar una recompensa de bloque si logra minar un bloque. Sin embargo, los bitcoins de esa recompensa solo pueden gastarse si el bloque llega a 100 bloques de profundidad en la cadena más larga. Esto incentiva a los mineros a intentar siempre minar nuevos bloques que se conviertan en parte de la cadena más larga.

¿Qué pasa con las transacciones que no forman parte de la cadena más larga?

Una transacción dentro de un bloque que no forma parte de la cadena más larga es inválida. Los nodos solo consideran la cadena más larga como el historial válido de transacciones, y cualquier cosa fuera de ella no es una transacción válida.

Comandos

¿Cómo ver el chainwork de un nodo?

Puedes consultar los valores de chainwork de un nodo en ejecución con estos comandos de bitcoin-cli:

bitcoin-cli getblockchaininfo

Muestra información general sobre la blockchain actual, incluido el campo chainwork con el trabajo total acumulado de la cadena más larga conocida por el nodo.

bitcoin-cli getblock [hash del bloque]

Muestra información de un bloque específico, incluido el campo chainwork con el trabajo acumulado hasta ese bloque.

Resumen

¿Por qué importa esto?

La adopción de la cadena más larga de bloques permite que los nodos de una red de computadoras compartan una visión globalmente aceptada de la blockchain. Además, hace difícil reescribir el historial de transacciones, pues haría falta rehacer el trabajo de todos los bloques a reemplazar.

La "cadena más larga" generalmente se refiere a la cadena con el mayor número de bloques consecutivos, pero, técnicamente, se refiere a la cadena que tiene más trabajo (chainwork) invertido en ella.

Recursos