Qu'est-ce que Bitcoin Core ?
Bitcoin est un protocole informatique, c'est-à-dire un ensemble de règles qui permettent à des ordinateurs de communiquer. Pour fonctionner ce protocole a besoin d'être implémenté au travers de logiciels qui s'exécutent sur les différentes machines. Le plus connu et le plus utilisé d'entre eux est Bitcoin Core.
Acheter Bitcoin (BTC)
Partenaire Bitpanda
C'est quoi Bitcoin Core ?
Bitcoin Core est l'implémentation logicielle de référence du protocole Bitcoin (BTC). Il s'agit d'un logiciel libre disponible en source ouverte qui est géré principalement sur le dépôt GitHub bitcoin/bitcoin. N'importe qui peut copier le code source et le compiler soi-même. N'importe qui est également libre d'y ajouter des modifications, ce qui fait de Bitcoin un système complètement ouvert et décentralisé.
Bitcoin Core descend directement de la première implémentation codée par Satoshi Nakamoto et partagée publiquement le 8 janvier 2009. Initialement appelé simplement « Bitcoin », le logiciel a été renommé en « Bitcoin-Qt » en 2011, puis en « Bitcoin Core » le 19 mars 2014 afin de « réduire la confusion entre Bitcoin-le-réseau and Bitcoin-le-logiciel ».
Bitcoin Core est une implémentation de nœud complet qui permet d'accéder au réseau pair-à-pair de Bitcoin, et de recevoir, d'envoyer et de vérifier pleinement les transactions et les blocs constituants la chaîne. Il s'agit d'un logiciel programmé principalement en C++ et compatible avec les systèmes d'exploitation Linux, Windows et macOS. Celui-ci peut être utilisé sous la forme d'un logiciel à interface graphique (bitcoin-qt
), ainsi que d'un démon (bitcoind
) qui s'exécute en arrière-plan avec lequel l'utilisateur peut interagir grâce à bitcoin-cli
.
Enfin, il faut bien retenir que Bitcoin Core est l'implémentation de référence, c'est-à-dire qu'elle est utilisée pour définir de facto le protocole Bitcoin (BTC). Bien qu'il existe également d'autres implémentations comme Bitcore, Bitcoin Knots et bcoin, celles-ci sont peu utilisées de manière générale. Ainsi, à ce jour, les nœuds utilisant Bitcoin Core représentent 98,5 % des nœuds publiquement visibles du réseau.
Comment est développé Bitcoin Core ?
Bitcoin Core est un logiciel libre open source et, en tant que tel, il est développé de manière ouverte et décentralisée. Le dépôt GitHub est ouvert à tous et n’importe qui peut contribuer au développement en proposant un changement. Les contributeurs fréquents sont appelés des « core developers » ou « développeurs du noyau ».
Cependant, malgré cette ouverture, Bitcoin Core dispose d'une certaine hiérarchie. Ainsi le dépôt est géré par des mainteneurs qui sont responsables de fusionner les demandes de modification (« pull requests ») créées par les contributeurs. L'inclusion dans le code dépend ainsi de différents critères évalués par ces mainteneurs : utilité démontrable du changement, format correct suivant les lignes directrices du projet, revue par les pairs, réputation du contributeur, etc.
Les mainteneurs sont nommés par le mainteneur principal qui est la personne en charge du logiciel. Outre la nomination des mainteneurs, celui-ci décide du cycle de sortie du logiciel, de la fusion d'ensemble des modifications et de la modération. Initialement ce rôle était joué par Satoshi Nakamoto qui, avant de disparaître, a transmis la responsabilité à Gavin Andresen le 23 février 2011. Gavin Andresen s'est ensuite chargé du projet pendant plus de trois ans avant de laisser sa place à l'actuel mainteneur principal, Wladimir J. van der Laan, le 7 avril 2014.
Pour faciliter le développement, les contributeurs communiquent par différents moyens, mais les deux principaux sont le canal IRC bitcoin-core-dev où ont lieu la plupart des discussions et la liste de diffusion bitcoin-dev.
Selon une liste mise à jour en juillet 2022, les mainteneurs actuels de Bitcoin Core sont :
- Wladimir van der Laan (laanwj, wumpus) : mainteneur principal ;
- Marco Falke (marcofalke) : mainteneur de l'assurance qualité et des tests ;
- Michael Ford (fanquake) : mainteneur build et général ;
- Hennadii Stepanov (hebasto) : mainteneur de l'interface graphique ;
- Andrew Chow (achow101) : mainteneur du wallet ;
- Gloria Zhao (glozow) : mainteneur général.
Les empreintes PGP relatives à l'accès des mainteneurs sont disponibles publiquement sur le dépôt.
Il est crucial de souligner que les mainteneurs de Bitcoin Core sont également un vecteur de centralisation, puisqu'ils possèdent les clés permettant les mises à jour de l'implémentation de Bitcoin la plus répandue.
En cas d'erreur ou si leur intégrité était compromise, leur influence sur le réseau Bitcoin pourrait s'avérer dévastatrice.
En février 2024, Antoine Riard a mis en lumière des vulnérabilités dans plusieurs propositions de modification du code de Bitcoin Core, qu'il jugeait capable de compromettre les utilisateurs de Bitcoin si elles étaient intégrées au code principal.
Normalement, l'intégration d'un tel changement s'accompagne d'une période d'analyse, de tests et de révision ouverte à la communauté. Néanmoins, malgré ses préoccupations et son appel pour des tests approfondis, les alertes d’Antoine Riard sont demeurées ignorées et la modification a été intégrée au code de base.
Il a aussi relevé que la migration de certaines conversations de développement vers des cercles privés contredit les principes du logiciel open source, qui prône une totale transparence, posant un second point d'inquiétude quant à la transparence et la gouvernance de Bitcoin Core.
Quelles sont les différentes versions ?
Depuis la première version publiée par Satoshi le 8 janvier 2009, Bitcoin Core a considérablement évolué. Cette évolution s'est produite de manière graduelle au travers de différentes versions qui servent à marquer les changements majeurs. Celles-ci sont toujours numérotées sous la forme 0.x.y
pour bien rappeler de caractère « bêta » et non final du logiciel.
Les principales versions du logiciel sont listées ci-dessous. Notez que celles-ci ne correspondent pas forcément aux changements du protocole, qui peuvent avoir lieu par un soft fork et donc être appliqués uniquement au logiciel utilisé par les mineurs.
Version du logiciel | Principales modifications | Date de sortie |
---|---|---|
0.1 | Première version publiée par Satoshi | 08/01/2009 |
0.2 | Compatibilité avec Linux | 17/12/2009 |
0.3 | Compatibilité avec Mac OS X | 06/07/2010 |
0.4 | Chiffrement des clés privées | 23/09/2011 |
0.5 | Correction de la vulnérabilité CVE-2011-4447 | 21/11/2011 |
0.6 | Clés compressées, sauvegarde du portefeuille, signature de messages, P2SH | 30/03/2012 |
0.7 | Version 2 des blocs, hauteur du bloc dans la transaction de récompense, support de Tor, IPv6 | 17/09/2012 |
0.8 | Filtres de Bloom, implémentation de LevelDB | 19/02/2013 |
0.9 | OP_RETURN | 19/03/2014 |
0.10 | Encodage DER strict des signatures, synchronisation plus rapide, estimation des frais, bitcoin-tx |
16/02/2015 |
0.11 | Élagage (pruning), frais minimaux de relai | 12/07/2015 |
0.11.2 | OP_CHECKLOCKTIMEVERIFY | 13/11/2015 |
0.12 | Replace-by-Fee, limitation de la zone mémoire, libsecp256k1 | 23/02/2016 |
0.12.1 | Temps de verrouillage relatif avec le nombre de séquence, OP_CHECKSEQUENCEVERIFY, temps médian passé | 15/04//2016 |
0.13 | Blocs compacts, génération déterministique des clés et adresses, Child Pays For Parent | 23/08/2016 |
0.14 | Frais minimaux de relai | 08/03/2017 |
0.15 | Suppression de la priorité par « âge des pièces », support multi-comptes, RBF dans interface graphique | 14/09/2017 |
0.16 | Intégration complète de SegWit | 26/02/2018 |
0.17 | Sélection des pièces, transactions Bitcoin partiellement signées (PSBT) | 30/10/2018 |
0.18 | bitcoin-wallet |
02/05/2019 |
0.19.0.1 | Changements dans le protocole RPC, bech32 par défaut |
24/11/2019 |
0.20 | Suppression du message de rejet, suppression du protocole de paiement BIP-70 | 03/06/2020 |
0.21 | Descriptor Wallets, inclusion du code de Taproot | 14/01/2021 |
Comment télécharger et utiliser Bitcoin Core ?
Pour télécharger le fichier d'installation de Bitcoin Core, vous pouvez vous rendre sur le site de Bitcoin Core et cliquer sur « Download ». Vous pouvez également compiler le logiciel à partir du code source disponible sur GitHub, par exemple en téléchargeant les sources avec la commande :
git clone https://github.com/bitcoin/bitcoin.git
Pour plus d'information sur comment installer et utiliser Bitcoin Core, nous vous conseillons de lire le très bon tutoriel de Sosthène sur le sujet : Comment installer son propre nœud Bitcoin Core ?
Quelles sont les alternatives à Bitcoin Core ?
Bitcoin Core est l'implémentation de Bitcoin la plus utilisée, représentant plus de 99 % des nœuds Bitcoin. Toutefois, plusieurs alternatives ont été créées et tentent d'améliorer la façon d’appliquer les règles du consensus de la blockchain.
Répartition des différentes implémentations de nœuds Bitcoin – Source : Luke Dashjr
Bien que très peu utilisées par rapport à Bitcoin Core, 2 implémentations se démarquent : BTCsuite et Bitcoin Knots.
BTCsuite
Utilisée par 0,29 % des nœuds Bitcoin, BTCsuite est une implémentation alternative à Bitcoin Core, écrite en Go (golang), un langage de programmation plus minimaliste et plus simple que d’autres langages comme Rust.
Ce projet en phase de développement actif est utilisé en production depuis octobre 2013. Il suit rigoureusement les règles de consensus de Bitcoin Core pour le téléchargement, la validation et la mise à disposition de la chaîne de blocs, tout en réduisant les risques de fork.
BTCsuite se distingue notamment par l'absence de fonctionnalité de portefeuille, une décision de conception délibérée pour séparer les fonctionnalités de gestion des transactions et les interactions directes de paiement.
Bitcoin Knots
Conçue par Luke Dashjr en 2011, l’implémentation Bitcoin Knots est utilisée par 0,34 % des nœuds.
Ayant reçu un soutien financier significatif de Wasabi Wallet en 2021, Bitcoin Knots a pour objectif de mettre l'accent sur la confidentialité, utilisant des adresses changeantes et permettant l'usage de Tor pour protéger l'adresse IP des utilisateurs.
Il offre un contrôle total sur les frais de transaction et supporte une interface RPC pour les développeurs.