IBD

acronimo di: Initial Block Download

Difficoltà: intermedio

Argomento: tecnologia


DEFINIZIONE

La IBD, Initial Block Download o download iniziale della blockchain, è il processo tramite il quale un nuovo nodo, più precisamente un full node, che si unisce alla rete Bitcoin deve scaricare l'intera blockchain per convalidare tutte le transazioni nella rete. Questo è un passaggio fondamentale per la natura distribuita di Bitcoin poiché solo in questo modo un nodo può affermare di aver convalidato in modo indipendente tutte le transazioni.

Durante l'IBD, il nodo richiede copie di tutti i blocchi della blockchain ai suoi peer di rete e verifica che ogni blocco sia valido utilizzando l'algoritmo di consenso della rete Bitcoin.

Anche se i blocchi vengono richiesti a diversi nodi, il processo di IBD richiede di non fidarsi di nessuno perché un nodo potrebbe controllare i dati di diversi nodi e per la natura della catena di Proof-of-Work della blockchain.

Il nuovo nodo elabora questi blocchi e costruisce la blockchain fino a quando non si è aggiornato e sincronizzato con la rete.

Quando si inizia l'IBD, un nodo raccoglie prima tutti gli header dei blocchi da altri nodi e poi richiede ogni blocco completo. Questo viene fatto per aumentare l'efficienza e permettere agli utenti di iniziare a usare il loro nodo prima. Mentre si costruisce la blockchain blocco dopo blocco, un nodo Bitcoin costruisce anche l'insieme degli UTXO, o UTXO Set, la lista completa di tutti i bitcoin validi.

Poiché la blockchain di Bitcoin continua a crescere nel tempo, l'IBD può richiedere ore, giorni o settimane a seconda della larghezza di banda di internet e delle specifiche del computer.

Durante il processo di IBD, un nodo non accetta transazioni in entrata né richieste di transazioni mempool.

Una volta completata la fase di IBD, il nodo può iniziare a partecipare attivamente alla rete Bitcoin come peer che convalida le transazioni e contribuisce alla sicurezza della rete.

Per evitare di tenere tutta la blockchain su disco è possibile eseguire un nodo in una modalità definita Pruned mode.

Attraverso la proposta AssumeUTXO si sta predisponendo una modalità per consentire l'avvio di un full node senza la necessità di completare l'IBD.

Nel corso delle varie versioni di Bitcoin Core l'IBD ha avuto diverse evoluzioni:

  • 0.3.2 Checkpoint
  • 0.5.0 Saltata la verifica delle chechpointed signatures
  • 0.8.0 passaggio a LevelDB e validazione parallela delle firme
  • 0.10.0 Header-first sync
  • 0.12.0 passaggio a libsecp256k1
  • 0.14.0 AssumeValid
  • 0.13.1 AssumeUTXO
  • in futuro: UTREEXO


aggiornato il 2023-03-17