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“.

About Christoph Bergmann (1108 Articles)
Das Bitcoinblog wird von bitcoin.de gesponsort, ist inhaltlich aber unabhängig und gibt die Meinung des Redakteurs Christoph Bergmann wieder. Wenn Ihnen das Blog gefällt, freuen wir uns über Spenden an 1BvayiASVCmGmg4WUJmyRHoNevWWo5snqC. Jeder Satoshi wird dazu verwendet, um das Blog besser zu machen. Weitere Infos, wie Sie uns unterstützen können, finden Sie HIER. Gastbeiträge sind ebenfalls willkommen. Meinen öffentlichen PGP-Schlüssel sowie den Bitmessage-Schlüssel finden Sie HIER

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

  1. Die Trennung von btc1 Knoten mag politisch motiviert sein. Dennoch ist sie technisch notwendig solange segwit2x keine replay protection implementiert, wie es z.b bei bitcoin Cash gemacht wurde.
    Ich für meinen Teil finde ist gut, dass ich so nach dem Fork beide Coins unabhängig von einander nutzen kann.

    • Geht so. Core Nodes (SegWit1x) würden sich sowieso von btc1-Nodes (SegWit2x) trennen, wenn es zur Fork kommt, da diese ungültige Daten liefern. Das schon jetzt zu machen und stillschweigend in die Auslieferung von Performance-Upgrades reinzuschleichen, riecht nach purer Politik, die Leute davon abhalten soll, btc1 zu benutzen. Kann sein, dass Core darüber Konsens hat. Als User stellt es für mich zumindest einen Grund dar, dieses Update leider erstmal nicht zu benutzen …

      • Schätze es läuft daraus hinaus, dass alle die Ahnung davon haben den Client so lange nicht mehr benutzen bis es zu einer weiteren Fork kommt… Schade, dass die Core-Entwickler sich soetwas extrem verweigern… Ggf. verlieren sie dadurch sogar den BTC als Coin-ID

  2. 8mb, segwit2x forkt auf 8mb Blöcke, normales segwit erlaubt ja im extremfall auch 4 mb Blöcke mit nur 1mb “BasisBlockGrösse” – nicht gerade hilfreich um dezentral zu bleiben.

    • Falsch, wenn alle Transaktionen SegWit Transaktionen sind, was meiner Meinung nach NIEMALS passieren wird, dann passen Transaktionen die normal 4MB groß wären in einen 1MB Segwit kompatiblen Block.

      Der Fork auf 2MB Blocksize wird über kurz oder lang nötig sein, allerdings ist es aktuell nötiger als in ein paar Jahren, wenn deutlich mehr SegWit-Transaktionen unterwegs sind, da diese nur ein viertel so stark ins “Blockgewicht” fallen wie normale Transaktionen

  3. Ja, OT ist sehr wichitig in diesem Punkt

  4. “eher politisch als technisch motivierte”
    BS?

  5. Vielleicht bin ich zu blind, aber kann ich zwei verschiedene wallet.dat jetzt benutzen? Und wenn wie?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s