什麼是 SIGHASH_ANYPREVOUTANYSCRIPT?
BIP 118描述了 SIGHASH_ANYPREVOUT,但也提到了 SIGHASH_ANYPREVOUTANYSCRIPT。有什麼區別,為什麼需要後面的 sighash 標誌?
Christian Decker 在 Stephan Livera播客上回答了這個問題。
ANYPREVOUT(如果您閱讀過BIP 118,您可能已經知道)放寬了輸入以花費特定輸出的要求。相反,可以使用特定的簽名來使用具有相同腳本的任何 UTXO。
ANYPREVOUT 不是通過顯式引用(例如事務 100 連接到事務 99)和腳本匹配來綁定,而是只需要腳本匹配。該腳本仍然在 sighash 中送出(散列),因此無法修改。
ANYPREVOUTANYSCRIPT 通過不送出 sighash 中的腳本(腳本未散列)進一步放寬了這一點。即使腳本不完全匹配,這也允許輸出綁定到不同的輸入。在 elto 中,輸出腳本將包含一個不同的狀態編號,該編號在 Lightning 設置中從一個狀態變為另一個狀態。使用 eltoo,我們希望獲取稍後的狀態並將其附加到任何先前的狀態。
有關 eltoo 的更多資訊,請參閱 Chaincode Labs 的 Christian Decker展示文稿。
所以 eltoo 會使用 ANYPREVOUTANYSCRIPT,但 ANYPREVOUT 仍有可能的案例:
例如,如果我們有任何類型的交易延展性,並且我們仍然想要一個連接到潛在延展性交易的交易,那麼我們可以使用 SIGHASH_ANYPREVOUT。如果交易在被確認之前在公共網路中被破壞,我們仍然可以使用輸出腳本和輸入腳本之間的連接以及支出交易中輸出腳本的承諾來連接到它。
Jeremy Rubin 有這份備忘單,其中包含他發送到 Lightning 開發郵件列表的各種現有和提議的sighashes下的簽名內容。
Richard Myers 將此表包含在一篇部落格文章中,該文章概述了 ANYPREVOUT 和 ANYPREVOUTANYSCRIPT 下散列的內容。