La siguiente dificultad para resolver un bloque está determinada por la rapidez con que se resolvieron los bloques anteriores. Además, la dificultad solo cambia una vez cada dos semanas más o menos.
Entonces, ¿no podría cada nodo hacer un seguimiento de la dificultad esperada y no necesitar tenerla en cada encabezado de bloque? ¿O hay una razón por la cual los nodos deben comunicar la dificultad actual en cada bloque? No es que sea un gran ahorro, ni nada, simplemente parece extraño que esto se incluya cuando es solo una función de todas las demás piezas de una cadena.
¿Tal vez sea porque calcular nBits llevaría mucho tiempo si tuviera que pasar por todos los encabezados de bloque cada vez que quisiera calcular la siguiente dificultad?
Recuerde del Whitepaper de Nakamoto que para los clientes de Verificación de pago simplificada (SPV), la seguridad se mide principalmente por la cantidad de trabajo realizado para asegurar una transacción en particular. Los nodos SPV no pueden usar encabezados anteriores solos para verificar que un pago entrante es válido, por lo que técnicamente no hay mucha necesidad de almacenar encabezados anteriores[1].
Por supuesto, si no va a almacenar todos los encabezados, necesita alguna forma de medir la dificultad de los encabezados que tiene, y nBits lo proporciona.
Tenga en cuenta que almacenar encabezados recientes puede aumentar la seguridad de un cliente SPV al permitirle calcular la dificultad adecuada para encabezados posteriores. Esto asegura que un atacante que intente mentirle al cliente tenga que crear bloques de dificultad adecuada. Aún así, aquí no se necesita una cadena de encabezados completa, por lo que nBits sigue siendo útil como valor inicial.
[1] Pero BitcoinJ y todos los demás clientes SPV que conozco todavía almacenan encabezados completos. Supongo que la razón por la que lo hacen es para ayudarlos a detectar reorganizaciones en cadena (reorganizaciones) que invalidarían un pago recibido anteriormente.
Nick ODell
so there's technically not much need to store past headers
¿Qué pasa con las transacciones no confirmadas? Debe buscar bloques anteriores para confirmar que sus entradas son válidas.David A. Harding
David A. Harding
Cyker
pieter wuille
nBits
valor de los encabezados ya no es útil (siempre se sabe antes de que se reciba un encabezado o bloque).