Saltar al contenido
buybitcoinsmart

Glosario / Nodos y software

Cadena de encabezados

También se conoce como Cadena de cabeceras.

¿Qué es la cadena de encabezados?
La cadena de encabezados es la secuencia de encabezados de bloque de 80 bytes que un nodo ha verificado, y puede ir miles de bloques por delante de los datos de bloque que realmente ha descargado.

Un nodo hace el seguimiento de dos cosas a la vez: los encabezados en los que cree y los cuerpos de los bloques que ha almacenado. Los encabezados pesan 80 bytes cada uno, así que un año de ellos, alrededor de 52.560 bloques, suma aproximadamente 4,2 MB. Esa diferencia de tamaño es la razón por la que una billetera puede conocer la altura actual de la cadena y el trabajo acumulado total mucho antes de poder decirle qué hay dentro de un bloque concreto.

Cómo funciona

La cadena de encabezados se ordena por la prueba de trabajo acumulada, no por cuántos bloques contiene.

Cada encabezado nombra a su bloque padre, así que el conjunto de encabezados de los que un nodo ha tenido noticia forma un árbol y no una línea. La rama que acumula más trabajo total es la mejor cadena de encabezados, y el nodo recuerda también las ramas perdedoras por si alguna de ellas la supera más adelante. Bitcoin Core guarda este árbol en el índice de bloques, una pequeña base de datos LevelDB en el directorio blocks/index, totalmente separada de los archivos de bloques en bruto que contienen las transacciones.

Como el árbol se conserva, un nodo puede describir su propia incertidumbre. El comando getchaintips enumera cada punta que conoce con un estado asociado: active para la rama que está siguiendo, headers-only para una rama cuyos cuerpos nunca se descargaron, valid-fork para una rama totalmente validada que perdió la carrera, e invalid para una que infringió una regla. Una reorganización de la cadena no es más que el paso del nodo de una punta a otra a través de ese árbol una vez que tiene los bloques para hacerlo.

Los encabezados sobreviven a cosas a las que los datos de bloque no sobreviven. Un nodo podado elimina los archivos de bloques antiguos para ahorrar espacio, e incluso con prune=550, el valor más bajo que acepta Bitcoin Core, conserva todos los encabezados desde el bloque génesis en adelante. Sin ellos no podría comprobar que un bloque nuevo se construye sobre la cadena que ya aceptó, así que los encabezados son la parte de la que nunca puede deshacerse.

Dónde aparece

La cadena de encabezados es la cifra que su nodo menciona cuando le dice cuánto retraso lleva.

Ejecute la llamada RPC getblockchaininfo y obtendrá dos campos, blocks y headers. El campo headers es la altura de la mejor cadena de encabezados, blocks es la parte de ella que se ha descargado y validado por completo, y la diferencia entre ambos es el trabajo que aún queda pendiente. En un nodo al día los dos coinciden, y un nodo cuyo valor headers está atascado es un nodo que ha perdido el contacto con sus pares, no uno que simplemente va lento.

Las billeteras ligeras no guardan nada más. Una billetera SPV o un cliente de filtros compactos almacena solo encabezados y los usa para confirmar que una transacción que le interesa está bajo prueba de trabajo real. La dificultad también puede calcularse a partir de los encabezados, ya que el objetivo se redefine cada 2.016 bloques usando solo las marcas de tiempo y los valores nBits que ya están en la cadena, lo que significa que un cliente puede verificar que el trabajo que cuenta es auténtico sin ver jamás una transacción.

Cadena de encabezados frente a encabezado de bloque

Un encabezado de bloque es un único registro de 80 bytes; la cadena de encabezados es el conjunto de todos ellos, enlazados hasta el bloque génesis del 3 de enero de 2009. La distinción importa cuando alguien dice que un cliente ligero verifica la prueba de trabajo. Un encabezado demuestra que un bloque fue caro de producir. Solo la cadena de todos ellos, en la que cada encabezado fija su bloque padre, demuestra que un bloque concreto se sitúa detrás de una serie ininterrumpida de trabajo costoso que nadie ha reemplazado discretamente.

No confundir con

Preguntas frecuentes

¿Por qué un nodo podado conserva todos los encabezados?

Porque los encabezados son la forma en que comprueba que un bloque nuevo encaja. Un nodo podado elimina los archivos de bloques antiguos para ahorrar espacio en disco, pero necesita la cadena ininterrumpida de encabezados de 80 bytes para confirmar que cualquier bloque entrante se construye sobre el historial que ya validó.

¿La cadena de encabezados más larga es siempre la correcta?

No, la correcta es la que tiene más prueba de trabajo acumulada. El número de bloques y el trabajo total suelen ir de la mano, pero la regla que siguen los nodos es el trabajo, y por eso una cadena de muchos bloques fáciles no puede superar a una cadena más corta de bloques difíciles.

Para seguir leyendo

Términos relacionados

Más en la sección Nodos y software

Leer esta página en inglés