Warum definiert BIP141 sowohl die virtuelle Transaktionsgröße als auch das Gewicht?

Warum definiert BIP 141 (Segwit) sowohl die virtuelle Transaktionsgröße als auch das Gewicht ?

Das Gewicht scheint nur das Vierfache der virtuellen Transaktionsgröße zu sein (oder umgekehrt, je nachdem, was Sie zuerst definieren). Warum werden beide benötigt?

Antworten (1)

Das Transaktionslimit unter Segwit ergibt sich ausschließlich aus dem Transaktionsgewicht und dem Blockgewichtslimit von 4.000.000 Gewichtseinheiten.

Die virtuelle Transaktionsgröße wurde nicht für die Limitberechnung verwendet, da sie bei genauer Berechnung gebrochen ist. Bitcoin Core verwendet nur Ganzzahlen im Consensus-Code und ist daher mit der Aktivierung von Segwit auf Transaktionsgewicht umgestellt.

Die virtuelle Transaktionsgröße wird lediglich als bequeme Möglichkeit bereitgestellt, die effektive Transaktionsgröße von Segwit mit den Transaktionsgrößen vor Segwit zu vergleichen.


Hinzufügen eines Zitats des Abschnitts zur Verdeutlichung: BIP141 spezifiziert die folgenden Begriffe in Bezug auf die Transaktionsgröße:

Das Transaktionsgewicht
ist definiert als Basistransaktionsgröße * 3 + Gesamttransaktionsgröße (d. h. die gleiche Methode wie die Berechnung des Blockgewichts aus Basisgröße und Gesamtgröße).

Die virtuelle Transaktionsgröße
ist definiert als Transaktionsgewicht / 4 (aufgerundet auf die nächste Ganzzahl).

Die Basistransaktionsgröße
ist die Größe der Transaktion, die mit entfernten Zeugendaten serialisiert wird.

Die Gesamttransaktionsgröße
ist die Transaktionsgröße in Byte, serialisiert wie in BIP144 beschrieben, einschließlich Basisdaten und Zeugendaten.

Ich bin mir nicht sicher, was "nicht in Segwit verwendet" bedeutet. :) Es wird in Bitcoin-Core verwendet. Zum Beispiel gibt Bitcoin vsize– virtuelle Größe – von RPC zurück, nicht Gewicht.
@KarelBílek: Dann war meine Antwort falsch und du hättest sie nicht akzeptieren sollen. ;) Du wartest besser auf jemanden, der wirklich weiß, wovon er spricht, wie PWuille.
Murch hat Recht. vsize hat außer für Menschen keine Bedeutung. Es soll einen reibungslosen Übergang zwischen Transaktionsgrößen und -gewichten (die eine andere Skalierung haben) ermöglichen. Beispielsweise werden Gebühren derzeit in Satoshi/Byte ausgedrückt. Um einen Vergleich zu ermöglichen, erwarte ich, dass satoshi/vbyte anstelle von satoshi/weight verwendet wird (was eine drastische Zahlenänderung wäre, um dasselbe zu bedeuten).
Warum definiert Bitcoin in diesem Fall nicht nur die virtuelle Größe und nicht das Blockgewichtslimit, sondern das virtuelle Größenlimit, das viermal kleiner wäre und dasselbe bedeuten würde, ohne zwei fast gleichwertige Begriffe zu definieren? Vielleicht bin ich zu pingelig, aber ich sehe keinen Grund für das Konzept des Gewichts.
Weil die virtuelle Größe bei genauer Berechnung ein Bruchteil ist. Gewicht ist eine ganze Zahl. Wir verwenden nur Ganzzahlen im Konsenscode.
@PieterWuille das ist ein guter Grund! Können Sie das der Antwort hinzufügen? (Nicht sicher, ob Sie Bearbeitungsrechte haben)
Ich kann die Antwort tatsächlich selbst bearbeiten. Das werde ich tun und akzeptieren