Est-il dangereux d’avoir plusieurs implémentations de Bitcoin ? Intelligence des données PlatoBlockchain. Recherche verticale. Aï.

Est-il dangereux d'avoir plusieurs implémentations de Bitcoin ?

Ceci est un éditorial d'opinion de Bill Scoresby, propriétaire d'une petite entreprise basée sur le bitcoin et auteur de plusieurs guides pour l'auto-garde du bitcoin.

Les bogues qui ont récemment provoqué la désynchronisation de nombreux nœuds LND avec la blockchain Bitcoin étaient probablement causé par une implémentation alternative.

Vous vous demandez peut-être : « Qui dans le monde utilise autre chose que Bitcoin Core?" Vous ne saviez peut-être pas qu'il existait d'autres implémentations de Bitcoin. Peut-être que vous n'êtes pas sûr de ce que signifie une implémentation différente.

Bitcoin Core a commencé comme le logiciel qui Satoshi Nakamoto écrit en C++ et publié dans le monde. Il a été mis à jour avec de nouvelles versions menant à nos jours. Une implémentation alternative est un logiciel qui fait la même chose que Bitcoin Core - applique les mêmes règles de consensus - mais est écrit différemment, le plus souvent dans un langage de codage différent.

Comment une implémentation alternative a-t-elle cassé des nœuds sur le réseau Lightning ?

L'une des principales versions du nœud Lightning Network (LND) repose sur une autre implémentation Bitcoin appelée btcd. Lorsqu'un développeur créait une transaction multisig très volumineuse, btcd ne la considérait pas comme valide car elle contenait trop de données témoins. D'autres implémentations de Bitcoin - surtout Bitcoin Core - n'avaient pas une telle limite sur les données des témoins de transaction Taproot, et ont donc accepté la transaction et le bloc qui la contenait comme valides.

Le résultat était que les mineurs continuaient d'ajouter de nouveaux blocs sur la chaîne parce qu'ils n'utilisaient pas btcd et selon leurs règles, rien n'allait mal, mais les nœuds LND Lightning ne pouvaient reconnaître aucun de ces nouveaux blocs car ils étaient construits au-dessus du bloc contenant cette transaction qu'ils considéraient comme invalide.

Lorsque le bogue s'est reproduit le 1er novembre, ce ne sont pas seulement les nœuds LND qui ont été affectés. Certaines instances electrs (une implémentation du serveur backend pour Electrum Wallet) n'ont pas non plus réussi à parvenir à un consensus avec le reste de la chaîne. Alors que les nœuds LND ont été mis hors consensus en raison d'un problème similaire dans btcd, c'est une implémentation de Bitcoin écrite en Rust qui fait que les nœuds electrs prennent du retard, dont certains serveurs très visibles exécuté par mempool.space.

La limite de la taille des données témoins existe pour empêcher les attaques DoS, et fait également partie de Bitcoin Core (bien que Core ait une limite plus importante pour les transactions Taproot). Il semble que les deux autres implémentations qui se sont désynchronisées avaient du code qui a maintenu la plus petite limite.

De très petites différences dans les implémentations peuvent conduire à un manque de consensus.

Avoir plusieurs implémentations de Bitcoin est dangereux

Satoshi n'aimait pas l'idée d'implémentations multiples de Bitcoin. "Je ne crois pas qu'une seconde implémentation compatible de Bitcoin sera jamais une bonne idée." La raison qu'il a donnée était la suivante: "Une grande partie de la conception dépend du fait que tous les nœuds obtiennent des résultats exactement identiques au même rythme qu'une deuxième implémentation serait une menace pour le réseau."

Menace? Quel est le problème ?

Vous avez probablement entendu dire que la chaîne avec le plus de preuve de travail est la vraie chaîne. Lorsque deux mineurs différents trouvent un bloc en même temps, la chaîne se divise et les autres mineurs commencent à construire sur le bloc dont ils entendent parler en premier.

Dès qu'un nouveau bloc est ajouté d'un côté de la scission, la plupart des nœuds et des mineurs l'acceptent comme la nouvelle véritable chaîne et abandonnent l'autre côté de la scission. Ces blocs sont appelés blocs obsolètes, bien que certaines personnes les appellent des blocs orphelins.

Étant donné que le temps moyen entre les blocs dans Bitcoin est de 10 minutes, il est probable que l'ensemble du réseau apprendra ce nouveau bloc avant qu'un ne soit ajouté au côté perdant de la scission, et la chaîne avec le plus de travail gagne.

« Les nœuds suivront la chaîne valide avec le plus de travail… Le mot clé ici est valide. Si le nœud reçoit un bloc qu'il détermine invalide, peu importe la quantité de travail effectué sur ce bloc, le nœud n'acceptera pas cette chaîne. — Andrew Chow

Le mot clé est "valide". La menace apparaît lorsqu'un mineur trouve un bloc que d'autres mineurs et nœuds considèrent comme non valide. Les mineurs qui pensent que c'est valable essaieront de construire de nouveaux blocs sur cette chaîne. Les mineurs qui pensent que ce n'est pas valide essaieront de construire sur le dernier bloc valide qu'ils connaissent. Le résultat : deux chaînes et aucun moyen de savoir laquelle est vraie.

Comment diable une telle chose arriverait-elle ?

Eh bien, comme nous l'avons vu dans le cas du bogue récent avec les nœuds LND, s'il y a un bogue dans une implémentation de Bitcoin qui n'est pas dans d'autres implémentations, cela peut conduire à un manque de consensus sur la validité ou non d'un bloc.

Bitcoin n'a pas de mécanisme pour résoudre ce problème. La communauté en dehors du protocole doit décider de ce qui se passe ensuite. Cela semble très désagréable.

À tel point que le développeur de Bitcoin, Peter Todd, a déclaré que les autres implémentations doivent correspondre bogue pour bogue Bitcoin Core.

Et voilà : les implémentations multiples sont dangereuses !

Quelles sont les autres implémentations de Bitcoin et pourquoi existent-elles ?

Tout d'abord, presque tout le monde utilise Bitcoin Core.

Luke Dashjr voit environ 43,000 XNUMX nœuds, 98% d'entre eux utilisent Bitcoin Core et quelque chose appelé Coin Dance voit près de 15,000 XNUMX nœuds, 96% d'entre eux utilisent Bitcoin Core. Donc, pour le moment, il semble que très peu de gens utilisent des implémentations alternatives.

Néanmoins, il existe des projets actifs qui tentent de créer et de maintenir d'autres bases de code qui implémentent le protocole Bitcoin. Ils comprennent:

Jameson Lopp a un excellente page avec une liste plus exhaustive et des liens vers toutes les autres implémentations.

Tous ces projets ont des développeurs extrêmement talentueux qui y travaillent, et chacun existe depuis plus de quelques années. Pourquoi mettre tant d'efforts dans quelque chose qui semble être un tel problème ?

Bitcoin est sans autorisation. N'importe qui peut télécharger la chaîne; n'importe qui peut interagir avec le réseau ; et personne ne peut vous empêcher de coder ou d'exécuter une autre implémentation.

Pourtant, clairement certaines personnes sont en charge d'apporter des modifications au référentiel Bitcoin et le processus pour les choisir semble informel. Alors qu'il y a le Processus de proposition d'amélioration Bitcoin (BIP) pour suggérer des changements à Bitcoin Core, c'est aussi assez informel.

Rien de tout cela n'est un problème direct. Comme le souligne Marty Bent, un consensus approximatif peut être une force. Si le processus de changement de Bitcoin est difficile et peu clair, cela signifie que les changements seront examinés de manière plus approfondie.

La prochaine étape d'un consensus approximatif consiste à avoir plus d'une implémentation populaire.

Ne pas avoir plusieurs implémentations pourrait être plus dangereux

Il ne fait aucun doute que c'est déjà un travail très difficile d'être l'une des personnes qui ont accès à Bitcoin Core. Dans un monde où Bitcoin joue un rôle central en tant qu'instrument monétaire, ce travail deviendra beaucoup plus difficile. Un petit groupe de développeurs pourrait devenir une cible très intéressante. À tout le moins, leur attention sera sollicitée afin de faire pression pour diverses inclusions ou exclusions dans la prochaine version du logiciel.

Pensez à l'industrie du lobbying qui existe actuellement en politique. Pourquoi une telle chose ne se développerait-elle pas autour des personnes qui ont un accès commit à la seule implémentation du protocole Bitcoin ?

Comme les politiciens aujourd'hui, ils seront perçus comme ayant accès au pouvoir. En tant que tels, les gens les cibleront, sauf que ces développeurs n'auront pas le muscle d'un État pour les défendre. Quel genre de vie cela va-t-il être ? Qui le choisirait volontairement ?

En fin de compte, le système financier mondial est un poids assez lourd qui repose sur les épaules du petit groupe de personnes qui ont accès à un référentiel GitHub. Peut-être pas si différent du système financier mondial dont nous essayons de sortir, où l'avenir monétaire des gens dépend des décisions de quelques banquiers centraux.

Plusieurs implémentations à la rescousse !

La présence et l'utilisation généralisée de multiples implémentations sur le réseau Bitcoin peuvent atténuer ces pressions en rendant beaucoup plus difficile pour un acteur malveillant de modifier le protocole Bitcoin.

Si les participants au réseau Bitcoin sont répartis plus équitablement entre les différentes implémentations, il y a plus de place pour que de bonnes idées fassent surface. Proposer des changements à Bitcoin ou les rejeter est beaucoup plus décentralisé si tout n'est pas fait dans un seul camp.

De toute évidence, l'utilisation de différentes implémentations de Bitcoin augmente le risque d'une scission de la chaîne. Une scission catastrophique de la chaîne – où une partie importante des nœuds et des mineurs ont accidentellement bifurqué – ne serait pas bonne pour Bitcoin, et certainement pas son prix. Mais cela ne menacerait pas la nature sans autorisation de Bitcoin.

Un environnement de développement centralisé où tout le monde ne construit que sur Bitcoin Core pourrait menacer l'absence d'autorisation. La conversation sur le sujet doit aborder les risques de s'appuyer autant sur Bitcoin Core plutôt que de se concentrer uniquement sur les problèmes qui pourraient être causés par une implémentation alternative.

Il y a un grand, plus ancien article sur ce débat par Aaron van Wirdum. Vous pouvez également lire une version plus récente, fil informatif à ce sujet.

Ceci est un article invité de Bill Scoresby. Les opinions exprimées sont entièrement les leurs et ne reflètent pas nécessairement celles de BTC Inc ou de Bitcoin Magazine.

Horodatage:

Plus de Magazine Bitcoin