Ist es gefährlich, mehrere Bitcoin-Implementierungen zu haben?


Was sind die Auswirkungen mehrerer Implementierungen des Bitcoin-Protokolls? Überwiegen die positiven Aspekte die potenziellen Fehler und andere Probleme?

Dies ist eine Meinungsredaktion von Bill Scoresby, Inhaber eines kleinen Bitcoin-basierten Unternehmens und Autor mehrerer Leitfäden zur Bitcoin-Selbstverwahrung.

Die Fehler, die kürzlich dazu führten, dass viele LND-Knoten nicht mehr mit der Bitcoin-Blockchain synchron waren, wurden wahrscheinlich durch eine alternative Implementierung verursacht.

Sie fragen sich vielleicht: „Wer in aller Welt verwendet etwas anderes als Bitcoin Core?“ Sie haben vielleicht nicht gewusst, dass es andere Bitcoin-Implementierungen gibt. Vielleicht sind Sie sich nicht sicher, was eine andere Implementierung bedeutet.

Bitcoin Core begann als die Software, die Satoshi Nakamoto in C++ schrieb und der Welt zur Verfügung stellte. Es wurde mit neuen Versionen aktualisiert, die bis zum heutigen Tag führen. Eine alternative Implementierung ist Software, die dasselbe tut wie Bitcoin Core – dieselben Konsensregeln anwendet – aber anders geschrieben ist, meistens in einer anderen Programmiersprache.

Wie hat eine alternative Implementierung Knoten im Lightning-Netzwerk beschädigt?

Eine der Hauptknotenversionen des Lightning Network (LND) basiert auf einer anderen Bitcoin-Implementierung namens btcd. Wenn ein Entwickler eine sehr große Multisig-Transaktion erstellte, betrachtete btcd diese nicht als gültig, da sie zu viele Cookie-Daten enthielt. Andere Bitcoin-Implementierungen – insbesondere Bitcoin Core – hatten keine solche Begrenzung der Zeugendaten von Taproot-Transaktionen und akzeptierten daher die Transaktion und den Block, der sie enthielt, als gültig.

Das Ergebnis war, dass die Miner der Kette ständig neue Blöcke hinzufügten, weil sie btcd nicht verwendeten und gemäß ihren Regeln nichts falsch war, aber die LND Lightning-Knoten keinen dieser neuen Blöcke erkennen konnten, weil sie darauf aufgebaut waren der Block, der diese Transaktion enthält, die sie für ungültig hielten.

Als der Fehler am 1. November erneut auftrat, waren nicht nur die LND-Knoten betroffen. Einige Electrs-Instanzen (eine Backend-Server-Implementierung für Electrum Wallet) konnten ebenfalls keinen Konsens mit dem Rest der Kette erzielen. Während LND-Knoten aufgrund eines ähnlichen Problems in btcd aus dem Konsens genommen wurden, war es eine in Rust geschriebene Implementierung von Bitcoin, die dazu führte, dass Elektrs-Knoten zurückfielen, einschließlich einiger gut sichtbarer Server. betrieben von mempool.space.

Größenbeschränkung für Cookie-Daten vorhanden um DoS-Angriffe zu verhindern, und ist auch Teil von Bitcoin Core (obwohl Core ein größeres Limit für Taproot-Transaktionen hat). Es sieht so aus, als hätten die anderen beiden Implementierungen, die nicht mehr synchron waren, diesen Code hielt die kleinste Grenze.

Sehr kleine Unterschiede in der Implementierung können zu einem Mangel an Konsens führen.

Mehrere Bitcoin-Implementierungen zu haben, ist gefährlich

Satoshi mochte die Idee mehrerer Bitcoin-Implementierungen nicht. „Ich glaube nicht, dass eine zweite kompatible Bitcoin-Implementierung jemals eine gute Idee sein wird.“ Als Begründung gab er an: „Ein Großteil des Designs hängt davon ab, dass alle Knoten genau identische Ergebnisse mit der gleichen Geschwindigkeit erzielen, dass eine zweite Implementierung eine Bedrohung für das Netzwerk darstellen würde.“

Droht? Was ist das Problem ?

Sie haben wahrscheinlich schon gehört, dass die Kette mit den meisten Arbeitsnachweisen die echte Kette ist. Wenn zwei verschiedene Miner gleichzeitig einen Block finden, teilt sich die Kette und die anderen Miner beginnen, auf dem Block zu bauen, von dem sie zuerst hören.

Sobald ein neuer Block auf einer Seite des Splits hinzugefügt wird, akzeptieren die meisten Nodes und Miner ihn als neue echte Kette und lassen die andere Seite des Splits fallen. Diese Blöcke werden als veraltete Blöcke bezeichnet, obwohl manche sie auch als verwaiste Blöcke bezeichnen.

Da die durchschnittliche Zeit zwischen Blöcken in Bitcoin 10 Minuten beträgt, ist es wahrscheinlich, dass das gesamte Netzwerk von diesem neuen Block erfährt, bevor einer zur Verliererseite der Aufteilung hinzugefügt wird, und die Kette mit der meisten Arbeit gewinnt.

„Knoten werden der gültigen Kette mit der größten Arbeit folgen… Das Schlüsselwort hier ist gültig. Wenn der Knoten einen Block empfängt, den er als ungültig feststellt, akzeptiert der Knoten diese Kette nicht, unabhängig davon, wie viel Arbeit an diesem Block geleistet wurde. – Andrew Chow

Das Schlüsselwort ist “gültig”. Die Bedrohung tritt auf, wenn ein Miner einen Block findet, den andere Miner und Nodes für ungültig halten. Bergleute, die dies für gültig halten, werden versuchen, neue Blöcke auf dieser Kette zu bauen. Bergleute, die dies für ungültig halten, werden versuchen, auf dem letzten gültigen Block aufzubauen, den sie kennen. Das Ergebnis: zwei Zeichenfolgen und keine Möglichkeit zu wissen, welche wahr ist.

Wie zum Teufel sollte so etwas passieren?

Nun, wie wir im Fall des jüngsten Fehlers mit LND-Knoten gesehen haben, kann ein Fehler in einer Bitcoin-Implementierung, der nicht in anderen Implementierungen enthalten ist, zu einem Mangel an Konsens über die Gültigkeit oder Nichtgültigkeit eines Blocks führen.

Bitcoin hat keinen Mechanismus, um dieses Problem zu lösen. Die Gemeinschaft außerhalb des Protokolls muss entscheiden, was als nächstes passiert. Es wirkt sehr unangenehm.

So sehr, dass der Bitcoin-Entwickler Peter Todd sagte, dass andere Implementierungen mit dem Bug für Bug von Bitcoin Core übereinstimmen sollten.

Da haben Sie es: Mehrfachimplementierungen sind gefährlich!

Was sind andere Bitcoin-Implementierungen und warum gibt es sie?

Zunächst einmal verwendet fast jeder Bitcoin Core.

Luke Dashjr sieht rund 43.000 Knoten, von denen 98 % Bitcoin Core ausführen, und etwas namens Coin Dance sieht fast 15.000 Knoten, von denen 96 % Bitcoin Core ausführen. Im Moment scheinen also nur sehr wenige Leute alternative Implementierungen zu verwenden.

Dennoch gibt es aktive Projekte, die versuchen, andere Codebasen zu erstellen und zu pflegen, die das Bitcoin-Protokoll implementieren. Sie verstehen:

Jameson Lopp hat eine großartige Seite mit einer umfangreicheren Liste und Links zu allen anderen Implementierungen.

Alle diese Projekte haben extrem talentierte Entwickler, die an ihnen arbeiten, und jedes gibt es schon seit mehr als ein paar Jahren. Warum so viel Mühe in etwas investieren, das wie ein solches Problem erscheint?

Bitcoin ist erlaubnisfrei. Jeder kann den Kanal herunterladen; jeder kann mit dem Netzwerk interagieren; und niemand kann Sie daran hindern, eine andere Implementierung zu programmieren oder auszuführen.

Dennoch ist klar, dass bestimmte Personen dafür verantwortlich sind, Änderungen am Bitcoin-Repository vorzunehmen, und der Prozess für deren Auswahl scheint informell zu sein. Während es den Bitcoin Improvement Proposal (BIP)-Prozess gibt, um Änderungen an Bitcoin Core vorzuschlagen, ist er auch ziemlich informell.

Nichts davon ist ein direktes Problem. Wie Marty Bent betont, kann ein grober Konsens eine Stärke sein. Wenn der Änderungsprozess von Bitcoin schwierig und unklar ist, bedeutet dies, dass die Änderungen weiter untersucht werden.

Der nächste Schritt im groben Konsens besteht darin, mehr als eine populäre Implementierung zu haben.

Nicht mehrere Implementierungen zu haben, könnte gefährlicher sein

Es besteht kein Zweifel, dass es bereits eine sehr schwierige Aufgabe ist, zu den Personen zu gehören, die Zugang zu Bitcoin Core haben. In einer Welt, in der Bitcoin als Geldinstrument eine zentrale Rolle spielt, wird dieser Job deutlich schwieriger. Eine kleine Gruppe von Entwicklern könnte ein sehr interessantes Ziel werden. Zumindest wird ihre Aufmerksamkeit erbeten, um sich für verschiedene Einschlüsse oder Ausschlüsse in der nächsten Version der Software einzusetzen.

Denken Sie an die Lobbyindustrie, die derzeit in der Politik existiert. Warum sollte sich so etwas nicht um Leute herum entwickeln, die Zugriff auf die einzige Implementierung des Bitcoin-Protokolls haben?

Wie die heutigen Politiker werden sie als Machthaber angesehen. Als solche werden die Leute sie ins Visier nehmen, außer dass diese Entwickler nicht die Kraft eines Staates haben werden, sie zu verteidigen. Was für ein Leben wird es sein? Wer würde sich freiwillig dafür entscheiden?

Letztendlich ist das globale Finanzsystem ein ziemlich schweres Gewicht, das auf den Schultern der kleinen Gruppe von Menschen ruht, die Zugang zu einem GitHub-Repository haben. Vielleicht nicht so anders als das globale Finanzsystem, aus dem wir herauszukommen versuchen, wo die monetäre Zukunft der Menschen von den Entscheidungen einiger weniger Zentralbanker abhängt.

Mehrere Implementierungen zur Rettung!

Das Vorhandensein und die weit verbreitete Verwendung mehrerer Implementierungen im Bitcoin-Netzwerk kann diesen Druck verringern, indem es einem böswilligen Akteur viel schwerer gemacht wird, das Bitcoin-Protokoll zu modifizieren.

Wenn die Teilnehmer des Bitcoin-Netzwerks gleichmäßiger auf die verschiedenen Implementierungen verteilt sind, gibt es mehr Raum für gute Ideen. Änderungen an Bitcoin vorzuschlagen oder abzulehnen ist viel dezentraler, wenn nicht alles auf einer Seite erledigt wird.

Offensichtlich erhöht die Verwendung unterschiedlicher Bitcoin-Implementierungen das Risiko einer Kettenspaltung. Ein katastrophaler Chain-Split – bei dem ein erheblicher Teil der Nodes und Miner versehentlich abzweigte – wäre nicht gut für Bitcoin und schon gar nicht für seinen Preis. Aber das würde die Erlaubnislosigkeit von Bitcoin nicht gefährden.

Eine zentralisierte Entwicklungsumgebung, in der jeder nur auf Bitcoin Core aufbaut, könnte einen Genehmigungsmangel bedrohen. Gespräche zu diesem Thema müssen sich mit den Risiken befassen, die damit verbunden sind, sich so stark auf Bitcoin Core zu verlassen, anstatt sich nur auf die Probleme zu konzentrieren, die durch eine alternative Implementierung verursacht werden könnten.

Es gibt einen ausgezeichneten älteren Artikel zu dieser Debatte von Aaron van Wirdum. Sie können auch einen neueren informativen Thread darüber lesen.

Dies ist ein Gastbeitrag von Bill Scoresby. Die geäußerten Meinungen sind ihre eigenen und spiegeln nicht unbedingt die von BTC Inc oder Bitcoin Magazine wider.

Die hier geäußerten Ansichten und Meinungen sind die Ansichten und Meinungen des Autors und spiegeln nicht unbedingt die von Nasdaq, Inc.


Blog In 2021 joker0o xyz

Add Comment