Script
在 segwit 的交易摘要中包含輸入的 scriptCode 有什麼意義?
BIP143規定了“一種新的交易摘要算法”。
- 輸入的 scriptCode(序列化為 CTxOuts 中的腳本)
scriptCode of the input
如果沒有包含在摘要中,可能會出現什麼問題?
如果輸入的 scriptCode 沒有包含在摘要中,會出現什麼問題?
幾乎可以肯定沒有。
這樣做的原因是一個非常有意的設計選擇,以限制 SegWit 所做的更改數量。鑑於它具有腳本版本控制,如果需要,以後很容易引入不同的 sighashing 方案,我們可以選擇只進行預期的更改,而不是從頭開始重新設計。對 sighash 算法的有意更改是:
- 使用共享的預先計算的每個事務雜湊來避免 O(n^2)
- 承諾花費的金額
所以雜湊結構保持不變,並且包含所有相同的數據。sighash 標誌仍然具有相同的效果。BIP143 中唯一的變化是一些數據現在組織在預先計算的雜湊下,並且輸入量進入其中。其他一切都是一樣的,其中包括對 scriptCode 的承諾——即使不再有充分的理由。
編輯:請參閱下面的 Russell O’Connor 的回答,了解一個小案例。