Das Betreiben einer Full Node ist der Weg zur vollen Autonomie im Bitcoin-Ökosystem. Auch wenn Trace Mayer nach seinem Mimblewimble-Coin-Shilling die Gnade der Bitcoin Community verspielte, beschreibt sein „First Class Citizen“ immer noch korrekt, was eine Full Node bietet. Nutzer sind so nicht einfach im Besitz der Blockchain. Durch die Wahl des Client, also der Node-Implementierung, können sie einen dramatischen Einfluss auf die Governance der Blockchain haben.
Ein historisches Beispiel hierfür ist die User-activated Soft Fork. Diese, initiiert von einem bisher nur unter dem Pseudonym Satoshifry bekannten Bitcoin-Enthusiasten, sah eine Änderung der Bitcoin Core Clients vor. Gemäß dieser Änderung wurden nur Blöcke von Minern akzeptiert, die über diese Blöcke eine Segwit-Akzeptanz signalisierten. Segregated Witness oder kurz Segwit war wiederum notwendig für das Lightning-Netzwerk. Wann immer also jemand über eine etwaige Zentralisierung der Mining Pools spricht, übersieht er das Korrektiv, welches die Full Nodes darstellen.
Dezentrales Node-Netzwerk, aber Fokus auf einen Client
Wie dezentralisiert ist die Landschaft der Full Nodes? Hier lassen sich zwei Dinge betrachten: Zum einen die Anzahl an Nodes, zum anderen die Diversität der Node-Implementierungen. Und bezüglich der Node-Anzahl ist die Anzahl wirklich hoch. Die bekannte Bitcoin-Analyseseite coin.dance zählt über 10.000 Nodes. Und selbst diese Zahl ist nur eine untere Schranke, handelt es sich doch hier nur um sogenannte „listening Nodes“, sprich gut vernetzte Nodes. Insgesamt gibt es laut Analysen von Luke Dashjr über 50.000 Bitcoin Nodes.
Anders sieht es mit der Diversität der Node-Implementierungen aus. Arbeiten alle Full Nodes mit demselben Client, könnte dies einen Single Point of Failure darstellen. Ein Beispiel für derartige Risiken gab es im September 2019. Eine Sicherheitslücke, bekannt unter dem Kürzel CVE-2018-17144, hätte Nodes abstürzen und die Limitiertheit des Bitcoin-Supplies gefährden können. Dieser Fehler betraf alle Weiterentwicklungen des Core Clients nach Anfang 2017 und damit fast alle Clients im Ökosystem:
Zum Glück haben mehr als 90 Prozent der Bitcoin-Nodes den Fehler ausgemerzt, sodass man die von CVE-2018-17144 kommenden Risiken nicht mehr fürchten muss. Dennoch: Das Risiko eines Single Point of Failure bleibt so bestehen. Nicht umsonst hatte BitMex Bestrebungen, einen eigenen Client zu entwickeln, ein Unterfangen, das nun leider seit über einem Jahr stillliegt.
Neben etwaigen Sicherheitsfragen existieren jedoch noch andere Gründe, andere Node-Implementierungen als den klassischen Bitcoin Core Client. Einige davon wollen wir uns jetzt genauer anschauen. Wir überspringen unterschiedliche Versionen, um die Liste überschaubar zu halten. Wer jedoch an einer vollständigen Liste interessiert ist, kann diese aktuell 176 unterschiedlichen Versionen auf coin.dance studieren.
Bitcoin Clients: Es muss nicht immer Core sein
Was Node-Implementierungen betrifft, ist der Bitcoin Core Client zweifellos der Goldstandard. Mit deutlich über 90 Prozent entscheidet sich auch das Gros der Node Hoster für diese Software. Aktuell arbeiten fast 10.000 Listening Nodes mit Bitcoin Core.
Eine wirklich eigene Implementierung ist bcoin. Node.js ist hier auch das Stichwort, ist diese doch von Grund auf neu und mithilfe dieses Javascript Environment geschrieben. Sie soll einfacher aufzusetzen sein als Bitcoin Core. Außerdem gehören einige Buchführungs-Funktionen zu bcoins Produktumfang.
Bitcoin Knots ist die Implementation von Luke Dashjr. Sie basiert wie auch Bitcore auf dem Bitcoin Core Client und erweitert nur seinen Funktionsumfang. Die Menge an Features ist gewaltig, wird jedoch eher für wirkliche Hardliner (oder Freunde des tonalen Zahlensystems) interessant sein.
Vollständig in der Programmiersprache Go geschrieben ist btcd. Von der Wahl der Programmiersprache abgesehen kann man in diesem Client eine Bare-Bones-Version von Bitcoin Core sehen: Bewusst haben die Entwickler darauf verzichtet, diesen Client mit einer Wallet zu kombinieren.
Der TRB Client hängt stark mit einer Organisation namens The Real Bitcoin Foundation zusammen. Sie grenzt sich mit dem Namen natürlich von der bekannten Bitcoin Foundation ab. Wirklich viel ist über diesen Client nicht in Erfahrung zu bringen. Er scheint einen sogenannten Emergent Consensus zu unterstützen. Unter diese Definition des Konsens würde beispielsweise ein sich mit der Zeit entwickelndes Blocksize Limit fallen.
libbitcoin ist streng genommen eher eine Sammlung an Libraries, mit denen Daten eines Bitcoin (Core) Clients analysiert und dargestellt werden können. Das ist beispielsweise für Bitcoin Explorer recht interessant. libbitcoin kann jedoch auch in einem Bundle mit einem Client heruntergeladen und installiert werden, sodass man derartige Kombinationen als eigene Node-Implementierung zählen kann.
Unsterblich oder Zombies? Nicht mehr weiterentwickelte Nodes
Auch jetzt, über zwei Jahre nach der Einführung von Segregated Witness, existieren noch Bitcoin UASF Clients. Bitcoin UASF unterscheidet sich von Bitcoin Core lediglich darin, dass der oben erwähnte Code für die SegWit-Aktivierung implementiert ist.
Quasi das Gegenteil stellen Bitcoin Unlimited, Bitcoin Classic und Bitcoin XT dar. In allen drei Fällen handelt es sich um Clients, welche statt Segregated Witness große Blöcke unterstützten. Bitcoin Unlimited wird im Bitcoin-Cash-Umfeld noch stark genutzt, während die Arbeit an den anderen Clients seit mindestens einem Jahr eingestellt ist.
btc1 versuchte gemeinsam mit S2X, das New York Agreement zu implementieren: Neben Segregated Witness sollte nach diesem die Block Size auf 2 MB gehoben werden. Da es nach der Einführung von Segregated Witness nie zu einer Verdoppelung der Blockgröße kam, wurde diese Node-Implementierung obsolet.
Mit rund 100 Nodes ist Bitcore noch am meisten verbreitet. Bitcore ist eine Variante des Core Client, welche die Möglichkeiten von Bitcoin Core erweitert. Sie wird in Anwendungen genutzt, welche Node.js verwenden. Seit 2018 ist die Weiterentwicklung jedoch zum Erliegen gekommen.
Was soll man nun für eine Full Node wählen?
Soweit eine Übersicht über die verschiedenen Client-Varianten. Wenn nun ein Leser überlegt, welche er davon nutzen sollte: Sofern er bisher noch keine Full Node aufsetzte, würde sich zweifellos der Core Client anbieten. Die Community, die Anzahl an Entwicklern und die Menge an Hilfen im Internet sprechen für Bitcoin Core. Es würde wenig Sinn ergeben, bei der ersten Full Node gleich auf ein Nischensystem zu setzen.
Hat man schon Erfahrung mit einer Full Node, sollte man die Wahl einer Alternative daran koppeln, was man bei dem Bitcoin Core Client konkret vermisst und was man mit dem neuen Client erreichen möchte. Für die Implementierung komplexer Anwendungen wie eines Bitcoin Explorers oder ähnlichem würden sich sicherlich libbitcoin oder bcoin anbieten, während Bitcoin Knots, TRB und btcd eher etwas für erfahrene und experimentierfreudige Profis ist.