Glossario / Nodi e software
Initial block download
Noto anche come IBD.
- Che cos'è l'initial block download?
- L'initial block download è la fase di allineamento che un nuovo nodo bitcoin attraversa, scaricando e verificando ogni blocco dal blocco genesi fino alla punta attuale della catena.
È l'unica parte davvero lenta di gestire un proprio nodo, e avviene una sola volta. Ad agosto 2026 il nodo ha 759 GB di cronologia da raccogliere e verificare, il che richiede ore su una macchina veloce con un'unità a stato solido e giorni su una debole. Bitcoin Core sa di aver finito quando la punta della sua catena ha meno di 24 ore e la catena che detiene porta abbastanza lavoro accumulato.
Come funziona
L'initial block download è volutamente impostato per partire dalle prove più economiche.
Gli header vengono prima. Dalla versione 0.10.0, pubblicata il 16 febbraio 2015, Bitcoin Core chiede ai peer la catena di header di blocco da 80 byte prima di richiedere il corpo di qualsiasi blocco. Verificare quegli header è rapido, stabilisce quale catena ha più proof of work e significa che il software sa in anticipo quanti blocchi sta cercando. I blocchi possono poi essere richiesti a più peer in parallelo invece che uno alla volta, ed è questa la differenza tra una sincronizzazione misurata in ore e una misurata in settimane.
La verifica delle firme è la parte costosa, quindi esiste una scorciatoia con un interruttore. Bitcoin Core 0.14.0 ha introdotto un'impostazione che indica un blocco storico specifico, inserito nel codice di ogni versione dopo una revisione, e salta la verifica delle firme degli script per tutto ciò che è sepolto sotto di esso. Ogni altra regola vale ancora: importi, doppie spese, sussidi, radici di Merkle, proof of work. Imposta l'opzione a zero e il nodo verifica ogni firma dal 2009, cosa che vale la pena fare una volta se non vuoi fidarti di nulla.
Ora c'è un modo per essere utile prima di aver finito. Bitcoin Core 28.0 ha incluso i parametri per caricare un'istantanea dell'insieme degli output non spesi presa all'altezza di blocco 840.000, permettendo a un nodo di servire il tuo wallet in pochi minuti mentre ricostruisce silenziosamente la cronologia precedente dietro le quinte. Quando la sincronizzazione in background raggiunge l'altezza dell'istantanea, confronta l'hash calcolato da sé con quello presente nella versione; una discrepanza spegne il nodo.
La memoria è la leva che la maggior parte delle persone non aziona mai. La cache del database è impostata per impostazione predefinita a 450 mebibyte, e portarla a diversi gigabyte su una macchina con capacità in più mantiene l'insieme degli output non spesi in RAM invece di martellare il disco, tagliando ore dal totale.
Dove lo vedi
Incontri l'initial block download la prima volta che avvii Bitcoin Core, e di nuovo dopo aver lasciato un nodo spento per mesi.
L'interfaccia ti dirà che sta sincronizzando gli header, poi riporterà quante settimane di ritardo ha, e la stima non è affidabile all'inizio perché i blocchi del 2011 sono minuscoli e quelli dell'anno scorso no. Il progresso non è lineare, e un nodo che sembra bloccato al 60 per cento di solito sta elaborando gli anni più pesanti della catena.
Tre regole pratiche coprono quasi tutto ciò che va storto. Usa un'unità a stato solido, perché un disco meccanico trasforma un lavoro di un giorno in un lavoro di una settimana. Dai al processo banda e una connessione stabile, dato che l'intero archivio deve arrivare. E non collegare un wallet e non farti prendere dal panico per un saldo mancante finché la sincronizzazione non è davvero terminata, perché un nodo sincronizzato solo in parte non ha un parere sui bitcoin nei blocchi che non ha ancora raggiunto.
Initial block download vs sincronizzazione blocks-first
L'initial block download è l'obiettivo; la sincronizzazione blocks-first era un modo obsoleto di raggiungerlo. La distinzione conta quando si legge documentazione più vecchia, che spesso descrive le due cose come se fossero la stessa. Qualsiasi nodo che recupera il ritardo esegue un initial block download, sia richiedendo blocchi in sequenza a un solo peer, sia recuperando prima gli header e poi i corpi da molti peer contemporaneamente, sia caricando un'istantanea e riempiendo poi la cronologia precedente. La fase ha un nome perché ha caratteristiche di prestazioni diverse e una superficie d'attacco diversa dal funzionamento a regime, non perché prescriva un metodo.