Bitcoin Core 0.21.0 veröffentlicht: Was ist neu?

Heute ist die offizielle Veröffentlichung von Bitcoin Core 0.21.0, der 21. Hauptversion von Bitcoin’s ursprünglichem Software-Client, der vor etwa 12 Jahren von Satoshi Nakamoto gestartet wurde.

Diese neueste Hauptversion wurde von Wladimir van der Laan, dem Hauptbetreuer von Bitcoin Core, betreut und von weit über hundert Mitwirkenden in einem Zeitraum von etwa sechs Monaten entwickelt. Bitcoin Core 0.21.0 ist das Ergebnis von über 600 zusammengeführten Pull-Anfragen und eine der größten Bitcoin Core-Versionen der letzten Jahre. Es bietet verschiedene neue Funktionen sowie Verbesserungen in Bezug auf Datenschutz und Leistung und macht gleichzeitig einen großen Schritt in Richtung des Schnorr / Taproot-Protokoll-Upgrades .

Im Folgenden sind einige der bemerkenswerteren Änderungen aufgeführt.

Descriptor Wallets

Wenn Münzen an eine Bitcoin-Adresse gesendet werden, geschieht dies tatsächlich unter der Haube, dass sie in einer nicht ausgegebenen Transaktionsausgabe (UTXO) “gesperrt” werden, um in einer späteren Transaktion nur dann “entsperrt” (ausgegeben) zu werden, wenn die Bedingungen darin verborgen sind die UTXO sind erfüllt. Eine typische Bedingung ist die Aufnahme einer gültigen Signatur, die einem bestimmten öffentlichen Schlüssel entspricht. Bedingungen können aber auch darin bestehen, einen Geheimcode aufzunehmen, eine Zeitsperre zu verlieren oder eine Kombination von Signaturen (Multisig).

Bisher wurde Bitcoin Core entwickelt, um die UTXOs in seiner Brieftasche um ihre entsprechenden privaten Schlüssel herum zu verwalten – obwohl private Schlüssel nur eine von mehreren möglichen Bedingungen für das Ausgeben von Münzen sind. Bitcoin Core 0.21.0 führt stattdessen “Descriptor Wallets” ein. Mit Descriptor Wallets können Benutzer ihre UTXOs anhand der Bedingungen kategorisieren, die für ihre Ausgaben erforderlich sind. (Zum Beispiel: eine Brieftasche für UTXOs, für die nur eine gültige Signatur erforderlich ist, und eine Brieftasche für Multisig-UTXOs.)

Descriptor Wallets sind besonders nützlich für Anwendungsentwickler, die Software auf Bitcoin Core entwerfen. Eine bestimmte Anwendung kann jetzt einfach so gestaltet werden, dass sie nur einen bestimmten UTXO-Typ wie Multisig-UTXOs verwendet und alle Nicht-Multisig-UTXOs ignoriert.

Normale Benutzer können jetzt auch einen Unterschied feststellen, da Deskriptor-Wallets implementiert sind. Am bemerkenswertesten ist vielleicht, dass beim Starten eines neuen Bitcoin Core-Knotens keine Standardmappe erstellt wird. Stattdessen wird eine neue Brieftasche nur erstellt, wenn ein Benutzer dies ausdrücklich wählt, sodass er nur den speziell gewünschten Brieftaschentyp erstellen kann. Descriptor-Wallets unterstützen auch Watch Only-Wallets besser: Wallets, die bestimmte UTXOs verfolgen, obwohl der Knoten nicht über die privaten Schlüssel verfügt, die zum Ausgeben erforderlich sind.

Bitcoin Core-Benutzer, die ein Upgrade auf Bitcoin Core 0.21.0 durchführen, können ihre Legacy-Brieftasche vorerst weiterhin verwenden. (Legacy-Wallets werden irgendwann veraltet sein, was bedeutet, dass Benutzer ihre Legacy-Wallets auf eine Deskriptor-Wallet migrieren müssen. Dies ist jedoch erst in einer zukünftigen Bitcoin Core-Version unbedingt erforderlich.)

Kompakte Blockfilter über das Peer-to-Peer-Netzwerk bereitstellen

“Light Clients” sind Bitcoin-Wallets und -Anwendungen, die nicht die gesamte Bitcoin-Blockchain herunterladen und validieren, sondern nur Teile von Blöcken und Transaktionen herunterladen und validieren, die sie speziell betreffen. Dies ist nicht optimal sicher, aber viel weniger ressourcenintensiv.

Ein beliebter Weg, dies zu tun, ist mit Bloom Filters. Kurz gesagt, Bloom-Filter sind ein kryptografischer Trick, um relevante Daten von mehr oder weniger zufälligen Peer-Knoten im Netzwerk anzufordern. Leider hat sich im Laufe der Jahre herausgestellt, dass Bloom-Filter eher datenschutzunfreundlich sind: Sie geben im Wesentlichen alle Adressen des Benutzers an den (mehr oder weniger zufälligen) Peer-Knoten weiter, der natürlich von einem in die Privatsphäre eingreifenden Benutzer betrieben werden könnte schnüffeln.

Eine neuere und viel datenschutzschonendere Alternative zur Bloom Filter-Lösung ist die „kompakte clientseitige Blockfilterung“ (BIP 157/158). Die kompakte clientseitige Blockfilterung stellt den Bloom-Filter-Trick im Wesentlichen auf den Kopf. Anstatt Light Wallets Filter zu erstellen, die an vollständige Knoten gesendet werden sollen, erstellen vollständige Knoten Filter für jeden Block und senden diese auf Anfrage an Light Clients. Light-Clients verwenden diese Filter dann, um herauszufinden, ob für sie relevante Transaktionen möglicherweise in einem Block enthalten waren. In diesem Fall ruft die Light Wallet den gesamten Block ab und wählt alle relevanten Transaktionsdaten aus. (Es wird einige Fehlalarme geben. Blöcke enthalten keine relevanten Transaktionsdaten, obwohl der Filter dies vorgeschlagen hat.)

Bestehende Bitcoin Core-Versionen könnten die Filter bereits lokal erstellen und über einen Remote Procedure Call (RPC) für Anwendungen verfügbar machen, die auf dem Knoten ausgeführt werden (z. B. Brieftaschen). Bitcoin Core 0.21.0 enthält jetzt auch die Option, diese Filter auf Anfrage über das Peer-to-Peer-Netzwerk von Bitcoin verfügbar zu machen. Auf diese Weise können jetzt eigenständige Lichtclients mit Bloom-Filtern betrieben werden.

Weniger Rebroadcast-Versuche

Neben Bloom-Filtern können Snoops auch die Privatsphäre von Bitcoin-Benutzern durch Netzwerkanalysen verletzen. Wenn sie herausfinden können, von welchem ​​Knoten eine bestimmte Transaktion stammt, können die Bitcoin-Adresse (n) dieses Knotens mit seiner IP-Adresse verknüpft werden, was wiederum einer realen Identität zugeordnet werden kann.

Bis jetzt haben Bitcoin Core-Knoten, wenn sie eine Transaktion an das Bitcoin-Netzwerk gesendet haben, versucht, die Transaktion alle fünfzehn Minuten erneut zu senden, bis die Transaktion in einem Block enthalten war. Wenn diese Bitcoin Core-Knoten mit einem Snooping-Peer verbunden wären, wäre es für den Snoop offensichtlich, dass der Bitcoin Core-Knoten, der versucht, eine bestimmte Transaktion alle 15 Minuten erneut zu senden, auch der Knoten war, von dem diese Transaktion stammt.

Bitcoin Core 0.21.0 verringert die Häufigkeit, mit der versucht wird, Transaktionen erneut zu senden, erheblich: nur einmal alle 12 bis 36 Stunden. Wenn weniger häufig erneut gesendet werden muss, ist es viel wahrscheinlicher, dass die Transaktion seit der ersten Übertragung bestätigt wurde, sodass der Knoten weniger wahrscheinlich überhaupt erneut senden muss.

In zukünftigen Bitcoin Core-Versionen wird dieses Datenschutzleck vollständig behoben. Ein Bitcoin Core-Knoten sendet dann nur Transaktionen erneut, die aufgrund seiner eigenen Mempool- und Gebührenberechnungen hätten bestätigt werden müssen. Darüber hinaus werden auch andere Transaktionen erneut gesendet, nicht nur eigene.

Tor V3-Unterstützung

Aufgrund eines kürzlich durchgeführten Upgrades des datenschutzrechtlich geschützten Tor-Protokolls sind neue V3-Tor-Adressen (Version 3) länger als die zuvor angegebenen V2-Adressen (Version 2). V2-Adressen werden noch verwendet, sind jedoch in etwa einem Jahr veraltet.

Die Ablehnung von V2-Adressen hätte ein Problem für Bitcoin Core-Benutzer dargestellt, die Bitcoin über das Datenschutznetzwerk verwenden möchten. Bitcoin Core-Knoten finden Peers, indem sie Tor-Adressen bekannter Tor-verwendender Bitcoin-Knoten miteinander teilen. Sie haben dies über dieselbe Nachricht geteilt, mit der sie die regulären IP-Adressen anderer Knoten teilen. Während Tor V2-Adressen im regulären IP-Adressformat (IPV6) „versteckt“ sein könnten, sind Tor V3-Adressen dafür zu lang. Mit anderen Worten, die aktuellen Nachrichten sind zu begrenzt, um mit dem Tor-Upgrade kompatibel zu sein.

Bitcoin Core 0.21.0 führt daher ein neues Format ein, um IP / Tor-Adressen mit Peers zu teilen. Diese Nachrichten können groß genug sein, um die Tor V3-Adressen gemeinsam zu nutzen.

Schnorr / Taproot-Code und Signet / Regtest-Bereitstellung

Schnorr / Taproot steht kurz vor dem ersten Protokoll-Upgrade von Bitcoin seit Segregated Witness (SegWit) im August 2017. Der Schnorr-Signaturalgorithmus befindet sich seit mehr als zwei Jahren in der Entwicklung und gilt als umfassende Verbesserung gegenüber dem aktuellen ECDSA-Signaturalgorithmus von Bitcoin. In Kombination mit Taproot – einem cleveren Trick, um verschiedene Bedingungen für das Ausgeben von Münzen in einem kryptografischen Hash-Baum zu verbergen – verspricht das Upgrade eine intelligentere Vertragsflexibilität auf skalierbare und datenschutzschonende Weise.

Der Schnorr / Taproot-Code ist jetzt in Bitcoin Core 0.21.0 enthalten. Vorbehaltlich unerwarteter Entwicklungen bedeutet dies, dass keine weiteren Änderungen vorgenommen werden. Dies bedeutet beispielsweise, dass Anwendungsentwickler mit der Entwicklung von Software rund um das Upgrade beginnen können. Darüber hinaus ist Schnorr / Taproot jetzt auf Signet (einer neueren und zuverlässigeren Testnet-Variante, mit der Entwickler neue Bitcoin-Software testen) und möglicherweise auch auf Regtests (zusätzliche lokale Testnet-Varianten) verfügbar.

Schnorr / Taproot ist jedoch noch nicht im Hauptnetz von Bitcoin verfügbar. Dazu muss das Upgrade zuerst aktiviert werden. Dies erfordert eine Aktivierungslogik, die in dieser Bitcoin Core-Version noch nicht enthalten ist. Die Aktivierungslogik wird voraussichtlich in einer kleineren Bitcoin Core-Version enthalten sein, möglicherweise irgendwann in den nächsten Monaten.

Andere…

Zusätzlich zu den oben genannten Änderungen enthält Bitcoin Core 0.21.0 verschiedene Fehlerkorrekturen und Leistungsverbesserungen, die für normale Benutzer nicht so offensichtlich sind. Die Bitcoin Core-Brieftasche wechselt beispielsweise von der Verwendung der Berkeley-Datenbank zur SQLite-Datenbank, die sich besser als Anwendungsdatendatei eignet und verschiedene Garantien hinsichtlich Kompatibilität, Support und Test bietet. Interessant ist auch, dass Bitcoin Core 0.21.0 eine Überarbeitung der Transaktionsanforderung enthält: Das neue Nachrichtenprotokoll, mit dem Bitcoin-Knoten Informationen zu neuen Transaktionen erhalten, ist besser getestet, spezifizierter und einfacher zu warten und zu überprüfen.

Eine ausführlichere Liste der Upgrades finden Sie auch in den Versionshinweisen zu Bitcoin Core 0.21.0 oder in diesem Blogbeitrag von Bitcoin Core-Mitarbeiter Andrew Chow. Dort finden Sie eine ausführlichere Erläuterung der Deskriptor-Wallets (sowie der Legacy-Wallets) und von SQLite (sowie) als Berkeley DB).