Sur les données sur les dommages des témoins isolés pour le bitcoin

Plaquettes de frein : Les conseils de nos garagistes / Top Entretien #1 (avec Denis Brogniart) (Avril 2019).

Anonim

Témoin ségrégé a été le centre du débat d'envergure de Bitcoin depuis sa création il y a deux mois par le cofondateur de Blockstream et développeur de Bitcoin Core, Pieter Wuille.

Une méthode astucieuse pour déplacer des données de signature de transactions typiques dans des «blocs d'extension», Témoin séparé est configuré pour améliorer le protocole Bitcoin de plusieurs façons. De plus, la solution peut être déployée sous la forme d'une fourchette douce, ce qui signifie que seuls les mineurs doivent mettre à niveau leur logiciel; tous les autres nœuds peuvent le faire si et quand ils le souhaitent.

L'innovation est positionnée comme la première étape d'une «feuille de route» d'évolutivité telle que définie par Bitcoin Core, et est soutenue par un large segment de la communauté de développement de Bitcoin.

Mais le témoin ségrégué n'est pas exempt de controverse. Plutôt qu'une branche souple Témoin séparé, l'implémentation Bitcoin Classic récemment lancée Bitcoin prévoit d'augmenter la limite de taille de bloc de Bitcoin à 2 mégaoctets via une fourchette rigide, ce qui signifie que tous les nœuds complets du réseau doivent être mis à niveau de manière synchrone.

Voici les arguments contre une fourchette souple Témoin séparé - et leurs contre-arguments.

Il faut un code «moche»

Un argument puriste contre la proposition de Wuille est qu'une fourchette souple de témoins séparés constitue une «vilaine» solution de rechange au code. Plus important encore, il utilise des parties de la transaction Coinbase générées par les mineurs à des fins pour lesquelles ils n'étaient pas prévus à l'origine. La complexité ajoutée pourrait potentiellement causer de nouveaux problèmes à mesure que le protocole évolue.

Les contre-arguments

Alors que la plupart des développeurs s'accordent sur le fait qu'une fourchette dure serait une solution plus propre, cela ne signifie pas nécessairement qu'une fourchette souple Témoin séparé est dangereuse. L'équipe de développement Bitcoin Core a déployé plusieurs fourches souples similaires dans le passé, et maintient que celui-ci ne comporterait plus de risque.

Une fourchette dure, quant à elle, rend tous les logiciels de nœuds complets existants incompatibles avec les nouveaux logiciels de nœuds complets, ce qui n'est sans doute pas très gracieux non plus.

Il en coûte trop cher aux développeurs

Une solution de rechange à la fourchette souple pour les Témoins isolés impose un fardeau supplémentaire aux développeurs, à la fois maintenant et dans le futur. Cela est particulièrement vrai pour les développeurs de bibliothèques et de portefeuilles Bitcoin, car ils devront adapter leur logiciel pour intégrer le témoin séparé. Cela nécessitera plus d'efforts qu'une augmentation de la taille d'un bloc de fourche dur.

Le contre-argument

La plupart des développeurs de bibliothèques et de portefeuilles actuels ne semblent pas considérer le fardeau supplémentaire comme un gros problème. Beaucoup sont même très enthousiastes à propos de l'innovation, et ils considèrent généralement que les avantages supplémentaires en valent la peine. (Voir la série de développement de Bitcoin Magazine, comme indiqué ci-dessous dans cet article.)

La croissance de l'espace de bloc ajouté sera lente

Comme la fourchette rigide proposée par Bitcoin Classic, le témoin séparé offre théoriquement jusqu'à 1 mégaoctet d'espace de bloc ajouté, pour un total de 2 mégaoctets.Mais cette capacité ajoutée optimale est basée sur des transactions multisigues, car celles-ci bénéficient d'une remise comptable. "Pourtant, la plupart des transactions ne sont actuellement pas des transactions multisites. Une augmentation de la capacité plus réaliste pourrait donc être plus proche de. 6 mégaoctets d'espace supplémentaire, pour un total de 1,6 mégaoctets.

De plus, cet espace supplémentaire pourrait ne pas être entièrement utilisé immédiatement. Il ne peut être utilisé qu'après la mise à jour des portefeuilles et autres applications. En réalité, il pourrait prendre un certain temps avant même que 1, 6 mégaoctets soit atteint.

Et tandis que la fourchette souple Témoins séparés est prévue pour avril, il reste à voir si cela peut être réalisé. La solution nécessite beaucoup de codage et de tests avant de pouvoir être déployée, ainsi que l'approbation par les mineurs.

Les contre-arguments

Une version testnet publique de Segregated Witness - SegNet - est déjà disponible pour l'expérimentation. Cela suggère que le développement est dans les temps.

Par ailleurs, de nombreux développeurs de bibliothèques et de portefeuilles estiment qu'il faudrait entre quelques jours et plusieurs semaines pour intégrer le témoin séparé. Une version d'avril devrait, par conséquent, fournir suffisamment de temps pour que la majeure partie du portefeuille et des logiciels d'application soient mis à niveau.

Dès que le témoin séparé est activé, tous les logiciels de portefeuille et d'applications peuvent utiliser immédiatement les avantages, tels que des frais moins élevés. Que d'autres utilisateurs utilisent aussi l'espace supplémentaire n'a pas vraiment d'importance pour eux. (Et si l'espace de bloc ajouté n'est pas utilisé, cela pourrait simplement suggérer que le besoin d'espace de bloc supplémentaire n'a jamais été aussi important en premier lieu.)

Il convient également de noter que les transactions multisig le développement du protocole Bitcoin progresse, car les couches ajoutées au-dessus de Bitcoin - telles que les canaux de paiement et le réseau Lightning - utilisent généralement de telles transactions. La capacité effective pourrait donc se rapprocher de 2 mégaoctets plus tard.

Et bien que l'équipe de Bitcoin Classic affirme qu'une fourchette dure peut être lancée avant avril, elle est considérée comme ouvertement agressive et carrément risquée par de nombreux membres de la communauté du développement. Selon eux, la nécessité pour tous les opérateurs de nœuds complets d'examiner et d'adopter la mise à niveau nécessite au moins six mois à un an.

It Skews Incentives

La suppression des signatures des blocs d'origine d'un mégaoctet peut augmenter la taille des blocs de Bitcoin. Mais le Témoin séparé introduit un nouveau type de taille de bloc maximum. Grossièrement: Un bloc sans le témoin, plus un quart de la taille du témoin, ne doit pas dépasser 1 mégaoctet. En tant que tels, les nœuds mis à niveau verront des blocs qui dépassent 1 mégaoctet, puisque la taille réelle du témoin séparé est plus grande que le quart représenté.

Cela signifie que les transactions multisignées, qui incluent davantage de données de signature, bénéficient d'une remise plus importante. Et puisque les transactions multisig sont utilisées pour établir des couches au-dessus de Bitcoin, le témoin séparé incline artificiellement des incitations vers ces couches supplémentaires.

Les conséquences à long terme de telles couches - telles que l'effet sur les redevances minières - sont controversées.

Les contre-arguments

L'actualisation des données de signature est la façon dont le témoin séparé permet d'ajouter de l'espace au bloc sans avoir besoin d'une fourchette rigide. Bien que cela soit effectivement accompli grâce à une mesure comptable, il est utile.

De plus, les données des témoins peuvent raisonnablement être considérées comme consommables après un certain laps de temps, ce qui réduit le besoin de nœuds complets pour les stocker à perpétuité. Il a donc un coût moindre pour le réseau, ce qui rend raisonnable de facturer des frais moins élevés.

De plus, le Bitcoin ne peut atteindre des millions d'utilisateurs qu'en restant décentralisé, sécurisé et résistant à la censure grâce à l'utilisation de couches supplémentaires. Encourager le développement et l'utilisation de ces couches supplémentaires n'est pas une mauvaise chose.

Il ne tient pas bien dans des conditions adverses

Un argument en faveur d'une limite de taille de bloc concerne la propagation de bloc et la latence. En bref: des blocs plus gros tendent à augmenter les taux d'orphelins, car de plus en plus de mineurs construisent sur de vieux blocs alors que de nouveaux blocs continuent de se frayer un chemin à travers le réseau. Ceci, à son tour, favorise les grands mineurs (ou pools): ils trouvent plus de blocs eux-mêmes, et commencent à construire sur ceux-ci tout de suite, ce qui signifie qu'ils gaspillent moins de ressources.

Cela signifie également que les grands mineurs pourraient être incités à créer des blocs artificiellement importants, spécialement conçus pour augmenter le taux d'orphelins des concurrents.

La proposition actuelle de témoins séparés permet des blocs d'environ 2 mégaoctets - bien qu'un peu moins soit plus probable. Mais en raison de la mesure comptable spécifique à utiliser, les soi-disant «mineurs égoïstes» pourraient créer des transactions synthétiques conçues pour stocker jusqu'à 4 mégaoctets de données dans un seul bloc. En tant que tel, les gros mineurs pourraient "attaquer" les concurrents avec des blocs de 4 mégaoctets valides.

Le témoin séparé exige donc que les mineurs et les nœuds complets déploient du matériel avec une marge de sécurité de 4 mégaoctets, tout en obtenant une capacité de transaction réelle nettement inférieure en retour. Et si la limite de taille de bloc d'origine est augmentée à travers une fourchette dure à un certain moment dans le futur, ce multiplicateur de risque restera probablement.

Les contre-arguments

Si 4 mégaoctets est en effet assez grand pour réussir une attaque - ce qui n'est pas clair - cette attaque obligerait le mineur attaquant à rejeter toutes les transactions réelles. La perte de frais qui en résulte a un léger effet dissuasif sur la réalisation d'une telle attaque, et il serait évident pour le reste du réseau qu'une attaque est en cours.

Et bien que le multiplicateur de risque restera probablement même si une fourche dure est déployée plus tard, elle pourrait aussi être diminuée grâce à une fourchette molle.

Il dégrade la sécurité des nœuds non mis à niveau

Un cinquième problème est que la présence d'une fourchette souple Témoin séparé pourrait dégrader la sécurité de tous les nœuds complets non mis à niveau. Ces nœuds peuvent toujours accepter des transactions de témoins séparés ou des transactions qui dépendent d'une précédente transaction témoin séparé, mais ne peuvent pas vérifier si les données de signature sont valides.En tant que tel, ils devraient compter sur la validation par les mineurs.

Les transactions de témoins séparés non confirmées seraient donc peu sûres, car elles n'ont pas encore été vérifiées par les mineurs.

Cependant, même les transactions Témoin ségrégé confirmées seraient moins sûres, car les mineurs pourraient intentionnellement minier des transactions invalides en blocs avec l'intention de dépenser deux fois les nœuds non mis à jour. Un nœud non mis à jour penserait que ces blocs sont valides jusqu'à ce que les mineurs basculent leur puissance de hachage dans la chaîne valide. Si un nœud non mis à niveau acceptait des transactions provenant de blocs non valides, il pourrait avoir perdu de l'argent.

Le coût d'une telle double dépense ressemblerait au coût de n'importe quelle autre attaque de 51%, mais avec un effet de levier supplémentaire. Attaquer les mineurs pourrait potentiellement tirer parti de la puissance de hachage des «mineurs de SPV», qui ne sauraient pas ce qui se passe, puisqu'ils ne valident pas non plus les transactions. Et l'attaquant pourrait tirer parti des fonds pour doubler ses dépenses, car il pourrait utiliser n'importe quel bitcoin protégé par témoin isolé qui ne lui a jamais appartenu en premier lieu.

Les contre-arguments

Une fourchette souple Témoin ségrégué sera annoncée publiquement longtemps à l'avance et votée de manière transparente par les mineurs. En tant que tel, tout utilisateur exécutant un nœud complet aura suffisamment de temps pour prendre les précautions nécessaires.

Les utilisateurs exécutant un noeud non mis à niveau ne doivent pas faire confiance aux transactions à confirmation nulle. Mais les transactions à confirmation nulle étaient toujours dangereuses. Toute personne souhaitant effectuer une double attaque avec des transactions non confirmées peut le faire avec ou sans témoin séparé.

Le risque supplémentaire de transactions confirmées, quant à lui, peut être compensé par l'attente d'un nombre supplémentaire de confirmations. (Pour les chiffres exacts des risques supplémentaires, voir ces calculs par le développeur Bitcoin Oleg Andreev.)

Un utilisateur qui ne veut pas du tout passer à l'état de nœud complet le plus récent pourrait de plus patcher son nœud complet non mis à jour avec logiciels qui signalent les transactions suspectes - et potentiellement rejettent même complètement ces transactions.

Enfin, il convient de noter que les fourchettes dures représentent un risque beaucoup plus élevé de transactions à double dépense. Tout nœud non mis à jour pourrait, dans le cas d'une fourchette rigide, recevoir des transactions complètement invalides, sans jamais le réaliser du tout.

Il sera déployé sans le consentement explicite de l'utilisateur

Bien que sans doute faible, la dégradation de la sécurité décrite ci-dessus existe bel et bien. Et ce qui est peut-être plus important: cette dégradation de la sécurité serait appliquée sans le consentement explicite des utilisateurs. Même si les utilisateurs s'opposent fermement au témoin séparé, et préfèrent ne pas mettre à niveau, une majorité de mineurs pourrait pousser le changement malgré tout.

Ceci est en contradiction avec la promesse d'autonomie personnelle de Bitcoin; l'idée que les opérateurs d'un nœud complet devraient toujours avoir la possibilité de se retirer de toute modification.

Les contre-arguments

Les fourchettes souples ne peuvent pas être évitées. Les mineurs contrôlant une majorité de pouvoir de hachage peuvent toujours décider d'appliquer de nouvelles règles, tant qu'ils ne violent pas les règles de consensus existantes.Ceci est inhérent au protocole Bitcoin, et sera également possible après un fork dur.

En tant que tels, les utilisateurs exécutant des nœuds complets doivent toujours assumer une certaine responsabilité. Soit la responsabilité de mettre à niveau vers la dernière version du logiciel, ou la responsabilité d'attendre un nombre supplémentaire de confirmations, ou peut-être même la responsabilité de ne pas accepter les transactions après une fourchette souple est détectée.

Et même s'il est techniquement vrai que les utilisateurs n'ont pas besoin de pour changer de logiciel après un passage difficile (contentieux) et peuvent choisir de rester sur le réseau d'origine, ce ne sera certainement pas le cas. être l'option dans la pratique. Outre le risque d'attaques à double dépense, une diminution de la puissance de hachage pourrait garantir que les transactions ne confirment jamais - ou confirment très lentement.

Un scénario alternatif est que la chaîne minoritaire par la puissance de hachage introduit sa propre fourchette dure pour changer l'algorithme de preuve de travail. Bitcoin serait ensuite divisé en deux réseaux distincts, et tous les utilisateurs devraient mettre à jour leur logiciel pour prendre en charge l'une des options - ou les deux.

Merci à Jonathan Toomim et PDG de Ciphrex, Bitcoin Core, et Eric Lombrozo, développeur de Témoins Séparés, pour la relecture et la rétroaction.

Pour plus d'informations sur les Témoins Séparés, voir la série du magazine Bitcoin sur le sujet, ou partie 1, partie 2, partie 3, partie 4, partie 5, partie 6, partie 7 et partie 8 de La série de développement de Bitcoin Magazine.