₿itcoinItaliaNetwork 

Bitcoin Core

Difficoltà: base

Argomento: tecnologia


DEFINIZIONE

Bitcoin Core viene considerato l'implementazione che attualmente rappresenta lo standard de facto per Bitcoin.

Inizialmente il client era stato chiamato semplicemente Bitcoin, poi dalla versione 0.5.0 del 2011 alla versione 0.8.6 del 2013 è stato chiamato Bitcoin-Qt.
Nel 2014 con la versione 0.9.0 viene fatto il rebranding in Bitcoin Core.

Bitcoin Core è attualmente l'implementazione di riferimento per il codice sorgente di Bitcoin, il che significa che tutte le altre implementazioni guardano a Bitcoin Core per avere indicazioni sul mantenimento del consenso e sull'aggiornamento.

Bitcoin Core fornisce il software per un nodo e un wallet, anche se la maggior parte degli utenti preferisce usare Bitcoin Core per il nodo e utilizzare software di terze parti per il wallet. Esistono alternative al software del nodo di Bitcoin Core, ma Core è l'implementazione dominante.

Chiunque desideri scaricare il software di Bitcoin ed eseguire un nodo può accedere a Bitcoin Core tramite il suo sito web bitcoincore.org o la sua pagina GitHub github.com/bitcoin/bitcoin. È qui che la maggior parte degli utenti si reca per scaricare il codice sorgente.

Inizialmente il sito considerato di riferimento era bitcoin.org, che fu originariamente registrato da Satoshi Nakamoto e Martti Malmi, uno dei primi programmatori di Bitcoin. Quando Nakamoto lasciò il progetto, estese la proprietà del dominio ad altre persone. Il sito veniva utilizzato principalmente per il rilascio di nuove versioni del software. Nel 2013, il sito è stato ridisegnato e non può più essere considerato il sito ufficiale di Bitcoin.
Nel 2021, il sito bitcoin.org ha dovuto inibire agli utenti britannici l'accesso al whitepaper a causa di una causa intentata da Craig Wright, salvo poi ripristinarlo nel 2024, dopo che un tribunale ha stabilito che Craig Wright non è Satoshi Nakamoto.

Eseguendo il codice di Bitcoin Core, un utente agisce come un nodo della rete che può verificare in modo indipendente sia la validità della creazione dei blocchi sulla rete sia le transazioni inviate dagli utenti della rete.

Bitcoin Core è stato inizialmente creato da Satoshi Nakamoto, ma non è di proprietà di una singola entità, azienda o organizzazione. Viene aggiornato, mantenuto e revisionato da una comunità globale di sviluppatori e sebbene molti aggiornamenti siano stati aggiunti al progetto, l'ultima versione e quella originale di Satoshi sono ancora compatibili.

Bitcoin Core è un progetto open source. Ciò significa che chiunque può copiare il codice sorgente e modificarlo come meglio crede. Se uno sviluppatore vuole migliorare Bitcoin, può pubblicare le modifiche apportate e proporre di includerle nel Bitcoin Core. Molti sviluppatori scelgono di contribuire a Bitcoin Core attraverso il codice, la revisione e la discussione. Tuttavia, non esiste un'entità autorevole che paghi gli sviluppatori per lavorare a Bitcoin Core. Invece, le aziende e i privati finanziano parzialmente questi sviluppatori attraverso donazioni e sovvenzioni.

Il primo software per l’utilizzo di Bitcoin, scritto in linguaggio C++ e rilasciato da Satoshi Nakamoto nel 2009 col nome Bitcoin, includeva sia la funzione di wallet, che quella di nodo e anche quella di miner e può essere considerato la prima versione di Bitcoin Core, anche se il termine Core ancora non veniva utilizzato, con versione 0.1.0 disponibile solo per Windows. Con la successiva, la 0.2.0, è stato introdotto per la prima volta il supporto per i sistemi Linux e successivamente per MacOS.

Dalla versione 0.5.0 del 2011, il client con l'interfaccia grafica ha iniziato a chiamarsi Bitcoin-QT.
Nel 2016 viene definitivamente rimossa la funzione di mining, e nella versione 0.9.0 viene reintrodotto il nome Bitcoin Core.
La necessità di rinominare il client deriva dal fatto che con Bitcoin si intende oggi la rete intera, composta da numerosi diversi client, scritti in linguaggi di programmazione differenti, i quali tuttavia seguono un protocollo comune che assicura la corretta interazione fra tutti i nodi della rete. Le repository considerate “ufficiali” di Bitcoin Core sono mantenute dal team “Core” sulla piattaforma github.

Sono anche stati resi disponibili nel tempo dei client per implementare un full node, quali

Su btcd ad esempio è implementato la più diffusa versione del nodo Lightning Network: LND.

Chiunque è libero di creare un progetto alternativo, creando un nuovo branch su github a partire dal codice di Bitcoin Core, che se non rispettano il protocollo possono generare dei fork incompatibili.

Versioning

Il 9 gennaio 2009 con il rilascio da parte di Satoshi Nakamoto della versione 0.1 del software Bitcoin su SourceForge. Questa fu la prima implementazione del protocollo Bitcoin descritto nel white paper pubblicato nell'ottobre 2008. Satoshi continuò a lavorare attivamente sul software, rilasciando diverse versioni di debug e miglioramenti minori nel corso del 2009 e del 2010. Il suo coinvolgimento diretto nello sviluppo del codice sorgente è documentato fino alla fine del 2010.

La Transizione e il Rebranding a Bitcoin Core

Dopo che Satoshi Nakamoto si allontanò dal progetto, il testimone passò a una comunità di sviluppatori. Inizialmente, il software era semplicemente chiamato "Bitcoin". Tuttavia, con la crescita e la diffusione di Bitcoin come rete e coin, divenne evidente la necessità di distinguere il software di riferimento dal concetto più ampio di Bitcoin.

Il rebranding del software in "Bitcoin Core" avvenne nel 2014. Questa ridenominazione servì a chiarire che il software era l'implementazione di riferimento del protocollo Bitcoin e per evitare confusione tra il client software e la rete Bitcoin stessa.

Il Major Versioning di Bitcoin Core

Attualmente, Bitcoin Core segue uno schema di versioning MAJOR.MINOR. Le regole generali per il versioning sono le seguenti:

Release Maggiori: Vengono rilasciate approssimativamente ogni sei-sette mesi e incrementano il numero "MAJOR" (es. dalla v0.21 alla v22.0, dalla v22.0 alla v23.0 e così via). Queste release introducono nuove funzionalità significative, miglioramenti delle prestazioni e aggiornamenti al protocollo. A partire da una certa fase dello sviluppo, si è passati da un versioning che iniziava con "0." (come 0.1, 0.2, ... 0.19) a un major versioning che parte da numeri interi più alti (come 22.0, 23.0, ecc.). Questo cambiamento riflette la maturità raggiunta dal software.
Release Minori (o di Manutenzione): Vengono rilasciate per correggere bug critici, vulnerabilità di sicurezza e, talvolta, per backportare modifiche alle regole di consenso (come soft fork) che sono state precedentemente introdotte nelle release maggiori o in release di manutenzione precedenti. Queste release incrementano il numero "MINOR" (es. v26.1, v26.2 dopo la v26.0). Generalmente non introducono nuove funzionalità importanti, a meno che non siano strettamente legate a correzioni o miglioramenti necessari.
Le release candidate (RC) vengono suffissate con rc1, rc2, ecc., prima del rilascio ufficiale di una versione maggiore.

Questo approccio al versioning consente agli utenti e agli sviluppatori di avere un'idea chiara della stabilità e delle modifiche attese in ciascun rilascio, facilitando la gestione degli aggiornamenti e l'adozione delle nuove versioni del software di riferimento di Bitcoin.


aggiornato il 2021-10-26