為什麼資金交易應該消耗 BIP 141 輸入?
在 BOLT 02 中,我們讀到資金 TX 應該只消耗 segwit 輸入。
發件人:創建資金交易時:應僅使用 BIP141(隔離見證)輸入。
這是什麼原因?如果是為了防止 tx 延展性,它應該是必須的。此外,我認為消耗的輸入對於這種情況無關緊要。
以下是我的拙見,我不是BOLT的專家。
首先,包含此要求的原因確實是交易延展性。如果資金交易消耗了可延展的輸出,那麼:
funding_txid
交易廣播後可能會發生變化;- 檢查 tx 的狀態可能會失敗(
funding_locked
);- 即使發送了資金交易,也永遠不會建立通道。
其次,關於為什麼這是一個應該而不是一個必須。這與IETF 定義有關:
應該這個詞,或形容詞“推薦”,意味著在特定情況下可能存在忽略特定項目的正當理由,但在選擇不同的課程之前必須理解並仔細權衡全部含義。
應該對規範並不重要,一些客戶可能有理由忽略此建議。例如,我可能會編寫一個客戶端,它不包含僅支持 BIP141 的鏈上比特幣錢包,而是連接到現有的比特幣錢包。這將使某些使用者的設置更容易、更便宜(無需額外的鏈上交易)。但我需要了解其中的含義並處理可延展的交易,以防它們
txid
發生變化。
如果 [僅消耗 segwit 輸入的資金交易] 是為了防止 tx 延展性,它應該是必須的。
略高於引用的文本,它說:“發件人必須設置:[…]
funding_txid
為不可延展交易的交易 ID。”如果發件人知道一種非隔離見證方式來創建抗延展性資金交易,則不需要隔離見證輸入。例如,發送者可能是一個礦工,他自己探勘交易並且不期望重組(我承認這是一個愚蠢的例子)。
值得考慮的是,如果資金交易發生突變會發生什麼。資金交易支付 2-of-2 多重簽名,但我們希望確保如果接收方不合作,發送方可以取回他的錢,因此接收方在資金交易廣播之前簽署第一個承諾交易(初始通道餘額) ,因此如果資金交易的 txid 發生變化,第一個承諾無效,發送方只能通過請求接收方為 2-of-2 多重簽名提供另一個簽名來收回其初始存款。在這種失敗的情況下,接收者不會有任何損失,甚至可以通過收取簽名費用而受益。這意味著只有發送者需要關心選擇抗延展性輸入。既然如此,