vByte, abgekürzt vB, ist eine Einheit der virtuellen Transaktionsgröße. Die einzelnen Datenbestandteile einer Bitcoin-Transaktion zählen dabei unterschiedlich stark. Wallets berechnen damit Gebühren: Eine größere Transaktion oder ein höherer gewählter Gebührensatz führt zu einer höheren Gesamtgebühr.
Anna möchte Bitcoin versenden. Ihre Wallet schlägt einen Satz von 2 sat/vB vor. Sat steht für Satoshi, die kleinste Bitcoin-Einheit; vB beschreibt die virtuelle Transaktionsgröße. Hat die fertige Transaktion 127 vB, beträgt die Gebühr bei diesem Satz 254 sat. Der Gebührensatz, auch Fee Rate genannt, ist also nicht der gesamte Preis. Das Beispiel erklärt die Rechnung und empfiehlt keinen Satz für das heutige Netzwerk. Eine bezahlte Gebühr allein garantiert auch keinen bestimmten Bestätigungszeitpunkt. [3] [5] [7]
Eine Wallet gibt ihr Guthaben nicht als eine einzige Zahl aus. Sie verwendet früher empfangene, noch nicht ausgegebene Transaktionsausgänge, die UTXO heißen. Jeder verwendete Ausgang wird zu einem Eingang; häufig kommt ein Ausgang hinzu, der Wechselgeld an die eigene Wallet zurückgibt. Viele kleine Zahlungseingänge zusammenzufassen kann deshalb mehr Daten benötigen als eine größere Zahlung aus einem einzigen Eingang. Die Gebühr ist die Summe der Eingangswerte abzüglich der Ausgangswerte. Mit einer digitalen Signatur weist die Wallet die Berechtigung nach, die ausgewählten Mittel auszugeben. Bevor sie die Signatur erstellt, schätzt sie die Größe; erst tatsächliche Gebühr und endgültige Größe ergeben den effektiven Satz. [6] [7]
Ein Byte ist eine übliche Einheit für Datenmengen. Bei der Berechnung einer Bitcoin-Transaktionsgebühr zählt aber nicht jedes Byte gleich viel. SegWit trennt einen Teil der Daten ab, die die Berechtigung zum Ausgeben belegen, darunter Signaturen. Dieser Teil heißt Witness. Ein Byte der Basisdaten trägt 4 WU zum Transaktionsgewicht bei, ein durch das Format mit Witness hinzugefügtes Byte dagegen 1 WU. WU steht für Gewichtseinheit. Auch die Hilfsfelder Marker und Flag dieser Darstellung erhalten den Abschlag. Die Signaturen werden weiterhin geprüft: Ein geringeres Gewicht erlaubt nicht, Kontrollen wegzulassen. [1] [2]
Serialisierung bedeutet, eine Transaktion als genau festgelegte Bytefolge aufzuschreiben, die Computer übertragen und lesen können. B sei die Größe ohne Witness, T die vollständige Größe. BIP 141 definiert das Gewicht als W = 3 × B + T. Die Basisdaten stecken bereits in T; deshalb zählt die Formel sie vierfach, die zusätzlichen Witness-Daten einfach. Sie misst weder den Geldwert der Zahlung noch die benötigte Prozessorzeit. [1]
Die virtuelle Größe ist das Gewicht geteilt durch 4, auf die nächste ganze Zahl aufgerundet: vsize = ceil(W / 4). ceil bezeichnet dieses Aufrunden. Eine Transaktion mit 401 WU belegt deshalb 101 vB. Aufgerundet wird das Ergebnis für die gesamte Transaktion. Wer zunächst jeden Eingang einzeln aufrundet und dann addiert, kann ein anderes Ergebnis erhalten. [1]
Nehmen wir die Beispielgrößen B = 100 und T = 208 Byte. Die Formel ergibt W = 508 WU und vsize = 127 vB, also die Größe aus unserem Gebührenbeispiel. Die vollständige Transaktion ist dadurch aber nicht geschrumpft: Ihre komplette Darstellung überträgt weiterhin 208 Byte. Die virtuelle Größe ist ein gewichtetes Maß für Kapazität und Gebühren, keine Dateikompression. [1] [5]
Ein Blockexplorer ist eine Anwendung, mit der sich Transaktionen und Blöcke eines bestimmten Netzwerks nachschlagen lassen. Enthält eine Transaktion keine Witness-Daten, gilt B = T und somit W = 4 × T. Ihre grundlegende virtuelle Größe entspricht dann ihrer vollständigen Bytezahl. Deshalb zeigen die beiden Größenfelder in einem Explorer manchmal dieselbe Zahl und manchmal unterschiedliche Werte. Bei SegWit darf man nicht einfach alle übertragenen Bytes durch vier teilen: Die unterschiedliche Gewichtung betrifft bestimmte Datenbestandteile. [1] [2]
Ein Knoten ist ein Programm, das Transaktionen und Blöcke prüft und sich mit anderen Netzwerkteilnehmern austauscht. Bitcoin Core v29.0 verwendet für einige Betriebsregeln die angepasste Größe ceil(max(W, sigop_cost × bytes_per_sigop) / 4). sigop_cost beschreibt die gewichteten Kosten von Signaturoperationen; bytes_per_sigop ist ein Parameter dieser Regeln. max wählt den größeren Wert. Besonders aufwendige Prüfungen können die dafür verwendete Größe erhöhen. Weder das Gewicht nach BIP 141 noch die Gültigkeitsregeln für Blöcke ändern sich dadurch. Dies ist ein Detail der genannten Version, keine zusätzliche Pflichtrechnung für gewöhnliche Zahlungen. [1] [4]
Eine Zahlung kann einen Ausgang einer anderen, noch unbestätigten Transaktion ausgeben. Bei der Bewertung eines solchen Pakets lassen sich die relevanten Gesamtgebühren durch die Summe der zugehörigen virtuellen Größen teilen. Ein einfacher Mittelwert der einzelnen Sätze würde die unterschiedlichen Größen übergehen. Bitcoin Core v29.0 berücksichtigt auch lokale Prioritätsänderungen und zählt bereits im eigenen Wartebereich liegende Transaktionen nicht erneut. Ein hoher gemeinsamer Satz setzt nicht alle übrigen Regeln außer Kraft und garantiert weder Annahme noch Bestätigung. [4] [8]
Sieh dir vor dem Absenden den Satz zusammen mit der Gesamtgebühr und der geschätzten Größe an. Nach dem Erstellen kann decoderawtransaction die tatsächlichen Felder size, vsize und weight anzeigen: Bytezahl, virtuelle Größe und Gewicht. Für normale Zahlungen musst du die Formeln nicht von Hand berechnen. Verwechsle vByte auch nicht mit CompactSize: Das ist eine Kodierung ganzer Zahlen mit variabler Länge, keine andere Bezeichnung für vByte und keine Methode zum Verkleinern von Transaktionen. [5] [6]
Für ein möglichst vollständiges Bild lies diesen Eintrag zusammen mit Block Weight, Compact Blocks, Block Propagation, Initial Block Download, Bitcoin, SegWit. Auf diesen Eintrag verweisen außerdem Compact Blocks, Pruned Node, Block Weight, Package Relay.