Glossar / Mining und Konsens
Blockgewicht
- Was ist das Blockgewicht?
- Das Blockgewicht misst einen Bitcoin-Block auf einer Skala, auf der ein Byte Witness-Daten 1 Einheit kostet und jedes andere Byte 4, begrenzt auf 4.000.000 Einheiten.
Spezifiziert im BIP-141.
Das Gewicht gibt es, weil Bytes für einen Node nicht alle gleich teuer sind. Signaturdaten können verworfen werden, sobald eine Transaktion tief genug in der Blockchain liegt, deshalb bepreiste BIP141 sie mit einem Viertel von allem anderen und setzte das Budget auf 4.000.000 Einheiten pro Block. Ihre Auszahlung konkurriert um dieses Budget, und wegen des Rabatts kostet das Senden von einer modernen Adresse weniger als das Senden von einer alten.
So funktioniert es
Die Formel in BIP141 lautet: Das Gewicht entspricht der Basisgröße multipliziert mit drei, plus der Gesamtgröße. Die Basisgröße ist der Block in der alten Serialisierung, ohne Witnesses; die Gesamtgröße ist die vollständige Serialisierung. Andersherum formuliert besagt dieselbe Regel vier Einheiten pro Byte ohne Witness und eine Einheit pro Witness-Byte, und diese Version lohnt sich zu merken.
Teilen Sie das Gewicht durch vier und runden Sie auf, erhalten Sie virtuelle Bytes, die Einheit, die jeder Gebührenschätzer und jede Wallet verwendet. Eine Zahlung mit zwei Eingängen und zwei Ausgängen, alle native SegWit, kommt auf rund 208 virtuelle Bytes oder etwa 832 Gewichtseinheiten. Füllen Sie einen Block mit nichts anderem, passen knapp 4.800 davon hinein. Dieselbe Zahlung, die aus alten Pay-to-Public-Key-Hash-Adressen gebaut wird, misst etwa 374 Bytes, was 1.496 Einheiten wiegt, weil nichts davon für den Rabatt in Frage kommt, sodass nur etwa 2.670 hineinpassen würden.
Diese Lücke ist der ganze Sinn des Designs. Der Rabatt auf Witnesses machte die Einführung von SegWit zu einer Investition, die sich selbst bezahlt: Eine Wallet, die aktualisierte, zahlte bei jeder Transaktion geringere Gebühren, ohne dass jemand davon überzeugt werden musste, dass ein größerer Block sicher ist. Außerdem lenkt es das Verhalten in eine Richtung, die das Netzwerk will, denn alte Ausgänge auszugeben und sie in neue zusammenzufassen, ist pro Eingang billiger als früher.
Zwei Details bringen Leute durcheinander. Das Gewicht wird pro Transaktion berechnet und dann summiert, das Gewicht eines Blocks ist also die Summe seiner Transaktionen plus Header und Zähler, und ein Miner, der einen Block packt, löst ein Rucksackproblem gegen das Budget von 4.000.000 Einheiten statt gegen eine Byte-Anzahl. Und das Gewicht hat keine Beziehung zum Wert: Eine Transaktion mit 900 Gewichtseinheiten, die 40 Bitcoin bewegt, und eine, die 40.000 Satoshis bewegt, zahlen identische Gebühren, weil das Netzwerk für den Platz berechnet, nie für den Betrag.
Wo Sie es sehen
Jeder Block-Explorer zeigt das Gewicht neben der Größe an, und der RPC-Aufruf getblock von Bitcoin Core liefert weight, size und strippedsize als drei getrennte Felder. Auch Mempool-Visualisierungen bauen darauf auf: Die Balken, die zeigen, was auf die Bestätigung wartet, sind nach der Gebührenrate in sat/vB gestapelt, wobei im Nenner das Gewicht geteilt durch vier steht.
Das Gewicht ist auch das, wofür eine Börse Ihnen bei einer Auszahlungsgebühr tatsächlich etwas berechnet. Eine Plattform, die eine Pauschalgebühr in Bitcoin nennt, mittelt über das Gewicht der Transaktionen, die sie zu bauen erwartet, und sie verdient, wenn der Mempool ruhig ist, und verliert, wenn er voll ist. Eine Plattform, die bündelt und Dutzende Kundenauszahlungen als Ausgänge einer einzigen Transaktion sendet, zahlt für einen Satz Eingänge statt für Dutzende, weshalb bündelnde Börsen sich viel niedrigere Gebühren leisten können als die, die jede Auszahlung einzeln senden.
Blockgewicht vs. virtuelles Byte
Das Blockgewicht ist die Rohmessung und ein virtuelles Byte ist dieselbe Messung geteilt durch vier. Beide beschreiben dieselben Daten; nur die Skala unterscheidet sich. Das Gewicht ist die Einheit, die in den Konsensregeln steht, deshalb erscheint die Zahl 4.000.000 im Code als Gewicht. Virtuelle Bytes sind die Einheit, die in Wallet-Oberflächen steht, weil eine Gebührenrate von 8 sat/vB leichter einzuordnen ist als 2 sat pro Gewichtseinheit. Wenn eine Wallet sagt, Ihre Transaktion sei 141 vbytes groß, hat der Block, in dem sie landet, 564 Einheiten weniger Platz.