Multiple Bitcoin Implementations Are Dangerous – Bitcoin Magazine

Multiple Bitcoin Implementations Are Dangerous – Bitcoin Magazine

Dies ist eine redaktionelle Meinung von Bill Scoresby, einem Bitcoin-basierten Kleinunternehmer 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.

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

Bitcoin Core begann als die Software, die Satoshi Nakamoto in C++ schrieb und für die Welt veröffentlichte. Es wurde mit neuen Versionen aktualisiert, die bis heute reichen. Eine alternative Implementierung ist Software, die dasselbe tut wie Bitcoin Core – dieselben Konsensregeln erzwingt – aber anders geschrieben ist, meistens in einer anderen Programmiersprache.

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

Eine der wichtigsten Lightning Network Node-Versionen (LND) basiert auf einer alternativen Bitcoin-Implementierung namens btcd. Als ein Entwickler eine sehr große Multisig-Transaktion erstellte, sah btcd diese nicht als gültig an, da sie zu viele Zeugendaten enthielt. Andere Bitcoin-Implementierungen – vor allem 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 Miner der Kette immer wieder neue Blöcke hinzufügten, weil sie btcd nicht verwendeten und gemäß ihren Regeln nichts falsch war, aber LND Lightning-Knoten konnten keinen dieser neuen Blöcke erkennen, weil sie auf dem Block aufgebaut waren, der sie enthielt diese eine Transaktion, die sie als ungültig betrachteten.

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

Die Begrenzung der Größe von Zeugendaten existiert, um DoS-Angriffe zu verhindern, und ist auch ein Teil von Bitcoin Core (obwohl Core eine größere Begrenzung für Taproot-Transaktionen hat). Es scheint, dass die anderen beiden Implementierungen, die nicht mehr synchron waren, Code hatten, der die kleinere Grenze beibehielt.

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

Mehrere Implementierungen von Bitcoin zu haben, ist gefährlich

Satoshi mochte die Idee mehrerer Implementierungen von Bitcoin nicht. „Ich glaube nicht, dass eine zweite, kompatible Implementierung von Bitcoin jemals eine gute Idee sein wird.“ Als Grund gab er an: „Das Design hängt so stark davon ab, dass alle Knoten exakt identische Ergebnisse im Gleichschritt erzielen, dass eine zweite Implementierung eine Bedrohung für das Netzwerk darstellen würde.“

Bedrohung? Was ist die große Sache?

Sie haben wahrscheinlich gehört, dass die Kette mit den meisten Proof-of-Work die wahre Kette ist. Wenn zwei verschiedene Miner gleichzeitig einen Block finden, teilt sich die Kette und andere Miner bauen auf dem Block auf, von dem sie zuerst hören.

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

Da die durchschnittliche Zeit zwischen den 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 erhält, den er für ungültig erklärt, spielt es keine Rolle, wie viel Arbeit auf diesem Block geleistet wird, der Knoten akzeptiert diese Kette nicht.“ – Andrew Chow

Das Schlüsselwort ist „gültig“. Die Bedrohung zeigt sich, wenn ein Miner einen Block findet, den einige andere Miner und Nodes für ungültig halten. Bergleute, die glauben, dass es gültig ist, werden versuchen, neue Blöcke auf dieser Kette zu bauen. Bergleute, die denken, dass es nicht gültig ist, werden versuchen, auf dem letzten gültigen Block aufzubauen, von dem sie wissen. Das Ergebnis: Zwei Ketten und keine Möglichkeit zu wissen, welche wahr ist.

Wie um alles in der Welt sollte so etwas zustande kommen?

Nun, wie wir im Fall des jüngsten Fehlers mit LND-Knoten gesehen haben, kann ein Fehler in einer Implementierung von Bitcoin, der in anderen Implementierungen nicht vorhanden ist, zu einem Mangel an Konsens darüber führen, ob ein Block gültig ist oder nicht.

Bitcoin hat keinen Mechanismus, um dies zu beheben. Die Gemeinschaft außerhalb des Protokolls muss entscheiden, was als nächstes passiert. Es klingt sehr unangenehm.

So sehr, dass der Bitcoin-Entwickler Peter Todd gesagt hat, dass andere Implementierungen Fehler für Fehler mit Bitcoin Core übereinstimmen müssen.

Bitte schön: Mehrfachimplementierungen sind gefährlich!

Was sind die anderen Implementierungen von Bitcoin und warum existieren sie?

Zunächst einmal läuft fast jeder Bitcoin Core.

Luke Dashjr sieht ungefähr 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 sieht es also so aus, als würden nur sehr wenige Leute alternative Implementierungen verwenden.

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

Jameson Lopp hat eine ausgezeichnete Seite mit einer umfassenderen Liste und Links zu allen anderen Implementierungen.

An all diesen Projekten arbeiten äußerst talentierte Entwickler, und jedes existiert 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 die Kette herunterladen; jeder kann mit dem Netzwerk interagieren; und niemand kann Sie daran hindern, eine alternative Implementierung zu programmieren oder auszuführen.

Dennoch sind eindeutig einige Leute dafür verantwortlich, Ä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 grober Konsens eine Stärke sein. Wenn der Prozess der Änderung von Bitcoin schwierig und unklar ist, bedeutet dies, dass Änderungen gründlicher überprüft werden.

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

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

Es besteht kein Zweifel daran, 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 lohnendes Ziel werden. Zumindest wird ihre Aufmerksamkeit erbeten, um sich für verschiedene Einschlüsse oder Ausschlüsse in der nächsten Softwareversion einzusetzen.

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

Wie Politiker heute, werden sie den Eindruck haben, Zugang zu Macht zu haben. 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 das 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 Commit-Zugriff auf ein GitHub-Repository haben. Vielleicht gar nicht so verschieden von dem globalen Finanzsystem, von dem wir wegzukommen 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 mindern, indem es für einen böswilligen Akteur viel schwieriger wird, das Bitcoin-Protokoll zu ändern.

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

Die Verwendung unterschiedlicher Implementierungen von Bitcoin erhöht eindeutig 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 es würde die erlaubnislose Natur von Bitcoin nicht bedrohen.

Eine zentralisierte Entwicklungsumgebung, in der jeder nur auf Bitcoin Core aufbaut, könnte die Erlaubnislosigkeit bedrohen. Das Gespräch über das Thema muss sich mit den Risiken befassen, sich so stark auf Bitcoin Core zu verlassen, anstatt sich nur darauf zu konzentrieren, welche Probleme durch eine alternative Implementierung verursacht werden könnten.

Zu dieser Debatte gibt es einen tollen, älteren Artikel von Aaron van Werden. Sie können auch einen neueren, informativen Thread darüber lesen.

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert