Website-Icon BitcoinBlog.de – das Blog für Bitcoin und andere virtuelle Währungen

Bitcoin Core 0.15: Performance-Upgrades, RBF in der GUI und ein bißchen Drama

Bitcoin Core hat die Version 0.15 des Referenz Clients für das Bitcoin-Netzwerk veröffentlicht. Der Major-Release wartet mit mehreren Performance-Verbesserungen auf, ermöglicht es, Bitcoin Core mit mehreren Wallets zu benutzen und bringt Replace-by-Fee (RBF) in die Benutzeroberfläche. Begleitet wird der Release von einem Drama um einen Exploit und etwas Ärger, weil Core ab Version 0.15 automatisch btc1-Nodes blockiert.

Ein neuer Major-Release von Bitcoin Core hat es immer wieder in sich. Nach den Versionen 0.12, 0.13 und 0.14 setzt auch die Version 0.15 diese Tradition fort und bringt einige mächtige Upgrades unter der Haube mit. Sichtbar sind dagegen lediglich kleine Veränderungen in der Benutzeroberfläche und neue API-Befehle.

Nachdem es bei manchen Systemen zu einem Crash beim Start der Software kam, hat Bitcoin Core kurzfristig einen BugFix mit Version 0.15.0.1 herausgebeben. Die maßgeblichen Änderungen sind jedoch alle bereits Teil der Version 0.15.

Neue Chainstate-Datenbank

Core Maintainer Wladimir van der Laan schreibt in den Release Notes, dass Core 0.15 „mehrere signifikante Performance-Verbesserungen enthält, die den ersten Block-Download, das Laden, Transaktionen und Block-Validierung viel schneller machen.“ Das wohl wichtigste Upgrade dürfte eine Änderung der Chainstate Datenbank sein, die genutzt wird, um UTXOs – die unausgegebenen Outputs, oder, in Klartext: die Guthaben auf Adressen – zu erhalten. Diese Datenbank wird nun nicht mehr nach Transaktionen, sondern nach Outputs aufgebaut. Dies erhöht den notwendigen Speicherplatz zwar um etwa 15 Prozent, reduziert jedoch die CPU-Arbeit und macht den Bedarf von Arbeitsspeicher besser berechenbar. Laut Wladimir van der Laan resultiert dies in einer 30 bis 40 Prozent schnelleren Synchronisierung von neuen Nodes.

Der Umbau der Chainstate-Datenbank hat im Vorfeld für ein ordentliches Drama gesorgt. Denn es verhielt sich wohl so, dass das alte Datenbank-Modell eine Art Bug hat. Man kann es ausnutzen, indem man spezielle Transaktionen schreibt, die beim Eingang in die Chainstate Datenbank ungeheuer viel Arbeitsspeicher brauchen. Der Bug wurde von bcoin Entwickler Chris JJ entdeckt – allerdings erst nachdem Core das neue Datenbankformat entwickelt hat. Laut Chris JJ wusste Core jedoch nichts von dem Exploit. Der bcoin-Entwickler hat den Exploit im Juli mit den Entwicklern aller Implementierungen – Core, btcd, Bitcoin Unlimited, Bitcoin Classic, Bitcoin ABC – besprochen. Auf der vor kurzem stattgefundenen Konferenz Breaking Bitcoin hat Chris JJ dann den Exploit öffentlich gemacht – sehr zum Ärger einiger Core Entwickler, die zu diesem Zeitpunkt den Bug zwar längst gefixt, aber die entsprechende Version noch nicht veröffentlicht hatten. Wegen des Dramas um den Exploit hat Core dann den Release der Version 0.15 vorgeschoben.

Weitere Performance-Verbesserungen

Zurück zu den Performance-Verbesserungen. Wladimir van der Laan nennt noch weitere Neuigkeiten des neuen Releases: So wurde die Nutzung von Arbeitsspeichern beim Schreiben des UTXO auf die Festplatte optimiert, wodurch der RAM-Bedarf gleichmäßiger verläuft, was es den Systemen wiederum ermöglicht, einen größeren Anteil des reservierten Speichers auch tatsächlich zu nutzen. Weiter cached Core 0.15 nun auch die gesamte Script-Validierung einer Transaktion, anstatt bisher nur die Signatur-Validierung. Dies macht die Validierung von Signaturen und Blocks deutlich schneller. Ein Upgrade der von Core verwendeten Datenbank-Engine, LevelDB, erhöht die Synchronisierung und Validierung weiter, und eine Verbesserung des SHA256 Hashing Algorithmus holt schließlich nochmal einige Prozentpunkte mehr Performance heraus.

Bessere Gebührenberechnung und RBF in der GUI

Neben diesen massiven Verbesserungen unter der Haube präsentiert van der Laan noch einige weitere Update, die vor allem die Nutzererfahrung betreffen: So wurde der Algorithmus zur Gebührenberechnung überholt, so dass die Wallet nun präziser kalkuliert, mit welcher Höhe von Gebühren eine Bestätigung nach wie vielen Blöcken zu erreichen ist. Weiter wurde Replace-by-Fee in das graphische Benutzerinterface integriert, so dass es nun möglich ist, eine Transaktion mit RBF-Flag zu senden, und diese dann, wenn sie zu lange auf die Bestätigung wartet, per „Bumb Fee“-Knopf nochmals mit einer höheren Gebühr abzusenden.

Multiwallet-Support in der API

Core 0.15 ist nun auch erstmals in der Lage, mit mehreren Wallets zu arbeiten. Bislang ist diese Funktion nur per RPC API ansprechbar und noch nicht Teil der Benutzeroberfläche. Sie macht es möglich, gleichzeitig mehrere Wallet-Dateien mit separaten Schlüsseln und Adressen zu laden. Gerade in Hinsicht auf den Datenschutz ist dies ein nicht zu unterschätzendes Feature, das der Wallet von Bitcoin Core schon lange gefehlt hat.

BTC1-Knoten werden automatisch getrennt

Zu diesen Änderungen kommt eine lange Liste von kleinen Upgrades und Updates, von neuen RPC API Befehlen und vielem mehr. Nicht ganz unkontrovers ist die Neuheit, dass Core-Nodes ab Version 0.15 die Verbindung zu btc1-Knoten kappen. btc1 ist der Client des SegWit2x-Teams, die die Aktivierung von SegWit mit einer Hardfork auf 2 Megabyte verbinden wollen. Nachdem SegWit nun dank SegWit2x aktiviert wurde, scheint Core nun die für November anvisierte Hardfork mit allen Mitteln zu bekämpfen. Etwas unangenehm stößt auf, dass Wladimir van der Laan diese eher politisch als technisch motivierte Änderung in den Release-Notes nicht separat erwähnt. Sie verbirgt sich unter dem Pull Request „Disconnect network service bits 6 and 8 until Aug 1, 2018 #10982„.

Die mobile Version verlassen