Was wäre bei 100 % Segwit-Transaktionen die maximal mögliche Anzahl an Transaktionsbestätigungen in einem Block?
Und wie viele utxo können durch einen Block voller Segwit-Transaktionen aktualisiert werden?
Sehr interessante Frage, mal sehen, was die kleinste Transaktion ist, die wir aufbauen können. Damit es minimal ist, muss es einen einzigen Eingang und einen einzigen Ausgang geben. Der Nicht-Segwit-Teil würde etwa so aussehen:
0x00
)0x0014{20-byte keyhash}
)Dies summiert sich auf insgesamt 82 Bytes für den Nicht-Zeugen-Teil. Bei einer Gesamtblockgröße ohne Zeugen von 1 Million Bytes erhalten wir also maximal 12195 Transaktionen. Unter der Annahme, dass alle ausgegebenen Ausgaben P2WPKH waren, besteht der Zeugenteil für jede Transaktion aus zwei Pushs: einer für die Signatur und einer für den Pubkey. Diese sind etwa 72 Bytes und 33 Bytes lang und benötigen jeweils ein Längenpräfix von 1 Byte. Zusätzlich gibt es eine 1-Byte-Witness-Version. Die gesamte Zeugengröße beträgt also 108 Bytes. Mit 3 MB verbleibendem Speicherplatz im Witness-Block bringt uns dies auf etwa 27777 Witnesses pro Block. Der begrenzende Faktor ist also der Platz im Nicht-Zeugen-Teil des Blocks, das ist also die letzte Zahl, die wir berücksichtigen sollten.
Beachten Sie, dass ich die Nicht-Segwit-Serialisierung für den Nicht-Segwit-Teil verwendet habe, da dies für nicht aktualisierte Knoten gilt. Beachten Sie auch, dass dies ein extremes Beispiel ist, da die meisten Transaktionen nicht Single-Input-Single-Output sind. Eine entsprechende Nicht-Segwit-Transaktion hätte eine Größe von 192 Bytes, was uns zusammen mit der Größenbeschränkung von 1 MB auf 5208 Transaktionen pro Block bringt, verglichen mit 12195 maximalen Segwit-Transaktionen pro Block.
Der zweite Teil Ihrer Frage zum maximalen UTXO in einem Block ist ziemlich einfach. Wir möchten den Overhead aus der Transaktionsstruktur amortisieren und Inputs + Outputs maximieren. Da die Eingänge größer als die Ausgänge sind, verwenden wir einfach einen einzelnen Eingang und berechnen die maximale Anzahl von Ausgängen, die in einen Block passen, der 32256 ist. Da die Ausgänge Nicht-Segwit-Daten sind, ändert sie sich auch minimal vor der Segwit-Aktivierung (nur die Signatur von der einen Eingabe wird in den Segwit-Teil verschoben). Daher beträgt die maximale UTXO-Abwanderung 1 UTXO wird entfernt, 32256 werden hinzugefügt. Zum Vergleich: Ohne Segwit war die maximal hinzugefügte Anzahl 32252. Beachten Sie, dass es möglicherweise andere Limits gibt, die ich nicht berücksichtigt habe, aber dies sind definitiv die oberen Limits, und diese Limits haben sich wahrscheinlich während der Aktivierung von Segwit nicht geändert.
SIGHASH_ALL
von , was die häufigste Verwendung ist. Da wir nur einen einzigen Eingang und einen einzigen Ausgang haben, passt dies auch zu SIGHASH_SINGLE
.
rny
vi.su.
rny