Um wie viel wird Segwit *tatsächlich* die Bitcoin-Kapazität für realistische Transaktionen erhöhen?

Ich sehe oft Behauptungen, dass Segwit die Transaktionen pro Block um das 1,7- bis 2-fache erhöht. Ich bin mir nicht sicher, ob das stimmt, aber wenn ich selbst nachrechne, bekomme ich diese Zahl nicht.

Mein Verständnis ist:

1) Die Berechnung „Gewicht“ ändert sich von:

weight = transaction size
to:
weight = non_sig_siz * 4 + sig_size

wobei das gesamte maximale "Gewicht" pro Block von 1024^2 to 4*(1024^2).

Wirkliches Gewicht ist ein neues Konzept, früher wurde es in Bytes gemessen.

2) Dass typische Transaktionen etwa 500 Milliarden betragen und dass Signaturen 65 Milliarden davon ausmachen. Sie variieren, aber Sie können hier nach durchschnittlichen historischen Transaktionsgrößen suchen:

https://tradeblock.com/bitcoin/historical/1h-f-tsize_per_avg-01101

3)

((500.0 – 65.0)*4+65)/4.0 = 451.25
1-(451.25/500) = 9.7% 

Das deutet darauf hin, dass wir mit Segwit nur etwa 10 % und nicht 70 - 100 % mehr Transaktionen erzielen würden.

Ich bin mir nicht sicher, ob es einen Fehler in meiner Mathematik oder meinem Verständnis von Segwit-Gewichten oder typischen TX-Größen oder etwas anderem gibt. Ich habe 1,7 bis 2x in Beiträgen von Leuten gesehen, die besser informiert sind als ich, also wäre ich daran interessiert zu sehen, wie das funktioniert.

Wenn Transaktionen nicht typisch wären und fast nichts als Signaturdaten enthielten, könnten Sie natürlich weitaus mehr Transaktionen in einen Block packen. Wenn Sie beispielsweise einen Weg finden könnten, eine Transaktion zu erstellen, die nur aus Signaturdaten besteht, könnten Sie etwa 8-mal so viele Transaktionen pro Block unterbringen, obwohl diese Transaktionen nutzlos wären.

Ist meine Zahl von 10 % für typische realistische Anwendungsfälle in der richtigen Größenordnung, oder fehlt mir etwas, das doppelt so viele realistisch nützliche Transaktionen ermöglichen würde?

Es gibt eine verwandte Antwort, die ebenfalls von Wert sein könnte: bitcoin.stackexchange.com/a/69678/75001

Antworten (1)

Beachten Sie, dass das scriptSig-Feld nicht nur die ECDSA-Signatur selbst (65 Bytes) ist, sondern auch der öffentliche Schlüssel im Fall einer P2PKH-Eingabe oder das Einlöseskript für eine P2SH-Eingabe und ein paar weitere Bytes für Größen. Außerdem gibt es für jede Eingabe eine scriptSig, nicht nur eine pro Transaktion. Sie sehen sich die durchschnittliche Transaktionsgröße an, von denen die meisten mehrere Eingaben enthalten, nehmen dann aber nur eine Signatur von 65 Bytes an.

Nehmen wir eine Beispieltransaktion mit einer einzigen Eingabe und Ausgabe: https://blockchain.info/tx/82d62d5f4e69ae8338c39b7ae2e1d33db59bdf62c869ded7344adc936bab8653

Diese Transaktion ist 226 Bytes groß, von denen 108 Bytes die scriptSig (einschließlich des Längenbytes) sind, was fast der Hälfte der Größe der Transaktion entspricht. Da die durchschnittliche Transaktion mehr als nur eine Eingabe hat, machen die mehreren scriptSigs einen höheren Prozentsatz der gesamten Transaktionsgröße in diesen Transaktionen aus – im Durchschnitt etwa 60 % der Transaktion. Wenn Sie dies berücksichtigen, erhalten Sie die geschätzte durchschnittliche Erhöhung, die auf Simulationen basiert, die mit den neuen Regeln gemäß der aktuellen Verwendung durchgeführt wurden, glaube ich.

Wirkliches Gewicht ist ein neues Konzept, früher wurde es in Bytes gemessen.

In der Tat ist es irreführend zu sagen, dass das Gewicht die Transaktionsgröße in Bytes war, bevor dieses neue Gewicht definiert wurde. Sie sollten die alte Größe mit der neuen virtuellen Transaktionsgröße vergleichen (was Sie im Grunde sowieso getan haben, indem Sie durch 4 dividiert haben).