Es wurde festgestellt:
Ein großes Problem bei einfachen Ansätzen zur Erhöhung der Bitcoin-Blockgröße besteht darin, dass das Signatur-Hashing bei bestimmten Transaktionen eher quadratisch als linear skaliert.
https://bitcoincore.org/en/2016/01/26/segwit-benefits/#linear-scaling-of-sighash-operations
Was sind einige Beispiele für Transaktionen mit diesem Verhalten, und was haben sie gemeinsam?
Zeigt eine einfache Alice-pays-Bob-Transaktion mit einer Eingabe und zwei Ausgaben eine quadratische Signatur-Hashing-Skalierung?
Quadratisch bedeutet, dass etwas als quadratische Funktion von etwas anderem wächst. Wenn Sie nur von einer One-Input-Transaktion sprechen, ändert sich nichts.
Das quadratische Hashing-Problem besteht darin, dass die zu hashende Datenmenge zum Berechnen oder Verifizieren von Signaturen mit dem Quadrat der Anzahl der Nicht-Segwit-Eingaben wächst.
Das quadratische Hashing-Problem tritt bei der Überprüfung aller Pre-Segwit-Transaktionsformate auf. Es ergibt sich aus der Methode zur Überprüfung der Eingabeskripte.
Für jede Eingabe, die die Transaktion hat, werden alle anderen Eingaben von der Transaktion entfernt, um diese verbleibende Eingabe mit der ausgegebenen Ausgabe sowie der entsprechenden Signatur zu vergleichen. Da der Aufwand für das Strippen der Transaktion linear von der Anzahl der Eingaben abhängt und das Strippen für jede Eingabe wiederholt wird, leisten wir n-fache Arbeit, die linear mit n skaliert: O(n)*O(n) = O(n²)
, die Kosten wachsen quadratisch mit der Anzahl der Eingaben. Das bedeutet, dass sich bei doppelt so vielen Eingaben der Rechenaufwand für die Verifikation vervierfacht.
Rusty Russell erklärte das Rätsel in seinem Blog, als er „The Megatransaction: Why Does It Take 25 Seconds?“ analysierte. .
Murch