Warum ein Bug in Bitcoin Unlimited den Pool von Roger Ver 12,5 Bitcoin gekostet hat

"Bug" von Steve Bremer via flickr.com. Lizenz: Creative Commons

Der Mining Pool von Bitcoin.com, der mit Bitcoin Unlimited arbeitet, hat am Sonntag-Abend versehentlich einen ungültigen Block gebildet und damit die Belohnung verloren. Schuld war ein Bug in der neuesten Version des alternativen Bitcoin Clients. Der Beliebtheit bei den Minern tat dies jedoch keinen Abbruch; in der Abstimmung mit der Hashrate überholte Bitcoin Unlimited sogar Cores SegWit.

Es ist nicht ganz frei von Ironie, dass Bitcoin Unlimited der am Freitag veröffentlichten neuesten Version des Clients die Seriennummer 1.0.0 gegeben und sie mit den Worten angekündigt hat, die Bitcoin-Software habe “einen Meilenstein der Funktionalität, Stabilität und Skalierbarkeit erreicht.” Denn nur kurz darauf zeigte sich, dass exakt jene Software neben einer Menge noch nicht dokumentierter Updates einen Bug hatte, der den Mining-Pool von Bitcoin.com den Blockreward von 12,5 Bitcoin kosten sollte.

Folgendes war passiert: Der Pool fand am Sonntag-Abend einen Block, veröffentlichte ihn – und stellte fest, dass er vom Netzwerk zurückgewiesen wurde. Der Grund war, dass der Block die maximal zulässige Blockgröße um 23 Byte überschritten hatte. Anstatt 1.000.000 umfasste er 1.000.023 Byte. Dies war kein Versuch, eine Hardfork zu größeren Blöcken einzuleiten, wie manche Beobachter zunächst vermuteten, sondern ein Fehler, der sich aus einer kleinen Änderung im Code der neuesten Bitcoin Unlimited Version ergab.

Und zwar, um ein wenig technisch zu werden: Es gibt einen Algorithmus, der den Minern hilft, einen Block zu bilden. Dieser Algorithmus soll dafür sorgen, dass ein Block nicht größer als 1 MB ist bzw. allen Regeln gehorcht, um vom Netzwerk akzeptiert zu werden. Bei Core und den alten Unlimited Versionen reserviert dieser Algorithmus ein Kilobyte für die sogenannte Coinbase-Transaktion, mit der sich die Miner selbst den Block-Reward auszahlen können. Um ein paar Transaktionen mehr in den Block zu bringen, wurde dieser Platz von Bitcoin Unlimited jedoch auf 100 Byte gesenkt. An sich ist das keine doofe Idee, da man so 3-4 Transaktionen mehr in einen Block reinbringt, aber es ist auch nicht wirklich kriegsentscheidend, da es die Kapazität um kaum ein Promille erhöht. Vor allem aber ist diese Reservierung deutlich zu knapp bemessen, da die Coinbase-Transaktionen in der Regel eher 150-200 Kilobyte groß sind.

Nachdem Bitcoin.com nun also einen ungültigen Block gemined hat, geschah folgendes, wie der Pool-Administrator Magma Hindenburg berichtet: Zuerst wurde der Block absurderweise von Bitcoin.com selbst zurückgewiesen, da der Algorithmus, der bestimmt, welche Blöcke akzeptiert werden, bei Bitcoin.com auf 1 MB eingestellt ist und unabhängig vom Algorithmus funktioniert, der den Block bildet. Dieselbe Software, die eben den Block gemined hat, hat ihn augenblicklich abgelehnt. Da der Pool aber ein Netzwerk zur Streuung von frisch gefunden Blocks betreibt, in dem Bitcoin Unlimited mit einer maximalen Blockgröße von 2 MB läuft, wurde der Block dennoch im Netzwerk verbreitet und von allen Bitcoin Unlimited Knoten, deren Einstellungen dies erlauben, angenommen und weiter verbreitet.

Interessanterweise haben auch zahlreiche andere Mining-Pools (ViaBTC, BTC.Top, HaoBTC, BTCC, F2Pool, Bitclub) begonnen, auf Basis von diesem ungültigen Block zu minen. Der Grund ist, so Magma Hindenburg, dass “die meisten Pools entweder spy minen (den anderen Pools über Stratum direkt zuhören), oder nur header minen, also nur die header validieren, bevor sie mit dem Minen beginnen.” Dass alle Pools 30-40 Sekunden später umgeschwenkt sind, zeige, “dass die Pools checks und balances eingerichtet haben, um sicher zu gehen, dass sie nicht neue Blöcke auf ungültigen aufbauen.” Nachdem die Pools den ungültigen Block verworfen und einen neuen, gültigen gefunden haben, sind auch die Bitcoin-Unlimited Knoten zurückgeschwenkt und haben ihren Ausflug auf eine falsche Kette beendet. Das Netzwerk hat genau so auf den ungültigen Block reagiert, wie es sollte.

Unmittelbar nach dem Block setzte eine fieberhafte Aktivität in der Bitcoin-Welt ein. Der Administrator des Pools wies die Entwickler von Bitcoin Unlimited auf das Problem hin. Diese informierten alle anderen Miner, korrigierten den Code und veröffenlichten ein Update. Fans von Bitcoin-Core – die Bitcoin Unlimited mit Feindseligkeit beäugen – haben sich hingegen mit Häme und kaum verhaltenem Jubel über den Fehler ausgelassen, die Entwickler von Bitcoin Unlimited scharf, grundsätzlich und generell als unfähig kritisiert und den Vorfall so dramatisch wie möglich dargestellt. Blockstream CEO Adam Back ging sogar so weit, zu behaupten, das Netzwerk sei kurz davor gewesen, auseinandergerissen zu werden. Was offensichtlich nicht der Fall war.

Fragen wirft der Vorfall dennoch auf. So war der Bug nahezu undokumentiert in einem Berg anderer Updates verborgen, war der Qualitätskontrolle der Entwickler entgangen, nicht mit den Minern kommuniziert worden und in den Tests übersehen worden. Auch wenn der Schaden, den der Bug angerichtet hat, sehr überschaubar ist, stellt er doch die Eignung von Bitcoin Unlimited, ein Software-Projekt wie Bitcoin zu leiten, in Frage. Gleichzeitig hat er bei den Unlimited Entwicklern ein Bewusstsein dafür geweckt, dass sie mehr Sorgfalt walten lassen und Änderungen gründlicher testen sollten, und dass das Team sich professioneller organisieren muss, wenn es tatsächlich eine ernsthafte Konkurrenz zu Core sein will. Ob das Team diesen Anforderungen gerecht werden kann, wird sich zeigen.

Zur Überraschung vieler Core Fans hat der Vorfall das Interesse der Miner an Bitcoin Unlimited jedoch kaum geschwächt. Im Gegenteil. In der Abstimmung durch die Hashrate, die seit Mitte November läuft und in der die Miner die Wahl haben, ob sie Cores Upgrade SegWit oder Bitcoin Unlimiteds Auflösung harter Blocksize-Limits aktivieren, hat Bitcoin Unlimited auch am Montag weiter aufgeholt. Während noch im November die Pools BitFury, BitClub, BTCC und zum Teil Slush die Zustimmung zu SegWit signalisierten und damit zu Spitzenzeiten 30 Prozent der Hashrate ausmachten, konnte Unlimited im Lauf der vergangenen Monate neben Roger Vers Bitcoin.com und ViaBTC die Pools GBMiners und BTC.top gewinnen. Während die Zustimmung für SegWit seit Mitte November stagniert und in den letzten Tagen sogar auf rund 20 Prozent gefallen ist, haben in den letzten 24 Stunden 25 Prozent der Miner für Unlimited gestimmt.

Zugleich läuft Bitcoin Unlimited jedoch nur auf rund 10 Prozent der mehr als 4.000 Bitcoin-Knoten, und weder Börsen noch Wallets haben bislang eine Unterstützung des alternativen Clients angekündigt. SegWit hingegen, das von Bitcoin Core nach umfangreichen Tests veröffentlicht wurde, aber noch seiner Aktivierung durch 95 Prozent der Hashrate harrt, ist bereits bei fast 50 Prozent aller Knoten installiert und erfreut sich einer umfangreichen Zustimmung unter Börsen und Wallets.

About Christoph Bergmann (959 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

5 Comments on Warum ein Bug in Bitcoin Unlimited den Pool von Roger Ver 12,5 Bitcoin gekostet hat

  1. Es ist prozentual auch kein nennenswerter Schaden entstanden. Es ist einfach keine große Sache gewesen.

    Der Schaden, der durch fehlende BTC-Nutzung entsteht ist vermutlich 1000x mal so hoch.

  2. Gier 1.0.0 –

    ..weitere Details:

    1.Bitcoin Unlimited hat seinen Client immer nur in einer Bitcoin unlimited Umgebung getestet, daher wurde der fehler niemals ausgeloesst. – Die haben ein eigenes test net, im bitcoin netzwerk. –
    Warum sie das bestehende “alte” bitcoin testnet niemals genutzt haben, weiss ich nicht.

    2.Es gibt das Geruecht, das viele Miner zwar BitcoinCore Software fahren, aber Bitcoin Unlimited signalisieren.

    Politik halt.

  3. Irgendwie habe ich so das Gefühl, dass wir in einem Jahr immer noch über die Blocksize-Thematik diskutieren werden.

    Aber ok, immerhin muss man zugestehen, läuft das Netzwerk zwar am Rande, jedoch nach wie vor stabil.

    • Naja, trotz diesem Bug zeichnet sich seither ein immer deutlicherer Trend Richtung BU ab: https://coin.dance/blocks
      Und ich bin mir auch unsicher bezüglich der BU Entwickler, ob sie wirklich stabilen Code liefern können, da dies noch zu beweisen ist. Auch die Implementierung der drei Votes sollte simuliert werden und muss sich beweisen, ob sie nicht zu ständigen HF führt, die dann nach ein paar Blöcken doch wieder zusammenkommen etc.
      Allerdings bin ich mittlerweile auch auf ihrer Seite, nachdem ich die kindliche Position Cores verfolgt habe “Wir wollen SegWit und alle anderen Meinungen sind uns egal”…

      • goldrich // 7. February 2017 at 1:30 //

        und das ist dann weniger kindlich zu sagen, dass du nur auf der anderen seite weil die anderen keine andere meinung akzeptieren? politk/moral bedeutet also alles in der bitcoinwelt und technik ist nur nebensache? möchtest du das damit sagen? lachhaft

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