Segregated-Witness
哪些類型的交易顯示二次簽名散列縮放?
已經說明:
增加比特幣塊大小的簡單方法的一個主要問題是,對於某些交易,簽名散列是二次而不是線性的。
<https://bitcoincore.org/en/2016/01/26/segwit-benefits/#linear-scaling-of-sighash-operations>
有哪些具有這種行為的交易範例,它們有什麼共同點?
一個簡單的一輸入二輸出 Alice-pays-Bob 交易是否顯示二次簽名散列縮放?
二次意味著某物作為其他物的平方函式增長。如果您只是在談論單筆交易,則沒有任何變化。
二次散列問題是用於計算或驗證簽名的散列數據量隨著非隔離見證輸入數量的平方而增長。
二次散列問題出現在所有 pre-segwit 交易格式的驗證中。它源於驗證輸入腳本的方法。
對於交易的每個輸入,從交易中剝離所有其他輸入,以檢查剩餘輸入與它花費的輸出以及相應的簽名。由於剝離交易的工作量線性依賴於輸入的數量,並且對每個輸入重複剝離,我們做了 n 次工作,與 n: 成線性比例
O(n)*O(n) = O(n²)
,成本隨著輸入的數量呈二次方增長。這意味著輸入數量增加一倍,驗證的計算量增加四倍。Rusty Russel 在他的部落格中解釋了這個難題,當時他分析了“大型交易:為什麼需要 25 秒?” .