Script
簽名期間的 ScriptSig 內容(二次散列)
據我所知,二次散列問題來自這樣一個事實,即每次驗證(或簽名)交易時,散列和驗證的“未簽名交易”會根據正在分析的交易輸入而變化。基本上,目標輸入
ScriptSig
設置為ScriptPubKey
要UTXO
兌換的 ,而其他輸入為空。但是,我看不到這背後的原因是什麼。為什麼不是所有
ScriptSig
欄位都分配給他們的UTXO
ScriptPubkey
欄位,或者留空?它的設計方式似乎沒有提供任何好處(至少我看不到它),而它使您double-sha256
每次分析輸入時都重新計算,從而導致二次散列問題。
就是這樣,因為這就是 Satoshi 為它編寫程式碼的方式,而且它從未改變過。如果沒有某種分叉,它就無法改變,到目前為止,還沒有發生任何分叉來改變它(儘管一旦它啟動 segwit 就會改變它)。
然而,這樣做可以讓人們更輕鬆地進行像 CoinJoins 這樣的多方交易。他們不要求您知道
scriptPubKey
其他人的輸入,您只需簽署您能夠簽署的內容。你不知道scriptPubKey
’s 並且你不在乎,你只需要知道scriptPubKey
你正在簽名的輸入。這使得參與多方交易變得更加容易,特別是對於那些使用輕錢包的人來說,因為他們沒有設置 UTXO。