Signature
為什麼我們在計算每個輸入簽名雜湊時需要用之前的 ScriptPubKey 替換 ScriptSig?
我正在閱讀程式比特幣。並且在第七章中,作者談到瞭如何將交易的 ScriptSig 替換為之前對應的 ScriptPubKey 來計算簽名雜湊的方法。我知道我們無法計算帶有簽名的交易的簽名。但是為什麼不直接刪除 ScriptSig 部分而不是用之前的 ScriptPubKey 替換它呢?順便說一句,我對 p2sh 也產生了同樣的困惑,其中 ScriptSig 被相應的 RedeemScript 替換。
sighash 中包含的任何數據都必須向簽名者公開。這也意味著簽名本身直接送出該資訊,因此必須如實提供給簽名者,否則會創建無效簽名。
通過包含 scriptPubKey 或redeemScript,我們確保簽名者知道他們的簽名將涉及的腳本。這消除了一類潛在的攻擊,其中籤名者對該輸入中涉及的腳本撒謊。可能是簽名者不想為某些腳本簽名,因此將腳本作為簽名的一部分意味著簽名者將始終知道它為哪個腳本簽名。