Transactions

為什麼閃電交易不能與 sighash single 簽署以允許費用更新?

  • August 13, 2019

用於確認閃電關閉交易的帶外費用支付是管理先前簽署的承諾 tx 的 sat/kw 低於市場的情況的唯一方法嗎?

如果可以添加額外的輸入/輸出,費用可以在通道關閉期間輕鬆調整為費率,而不是在簽署 tx 時…

讓我們區分幾種情況:

合作關閉

在合作關閉的情況下,兩個渠道合作夥伴可以就他們想要的任何交易達成一致。因此,他們可以當場選擇費率。由於這兩個輸出可能沒有任何時間鎖,任何一方都可以使用 child-pays-for-parent (CPFP) 來阻止初始關閉交易。他們甚至可以最初發出 RBF 交易,如果確認不夠快,稍後再更新。

單邊收盤

發起關閉交易的一方將其資金鎖定,以允許交易對手在發布舊狀態時應用其違約補救措施。這意味著傳統上只有交易對手才能利用 CPFP 來加速完成交易。這是不方便的,因為除非交易對手目前不合作,否則不需要單方面關閉。

最近的lnd 0.7.0 發布說明提到對交易關閉程序進行了改進,以支持 RBF 和 CPFP。

用於確認閃電關閉交易的帶外費用支付是管理先前簽署的承諾 tx 的 sat/kw 低於市場的情況的唯一方法嗎?

是的,您必須在帶外進行,因為您將無法使用高於閃電網路協議框架內最後簽署的承諾交易的費率。BOLT #2規定,當資助者發送closing_signed消息時,該fee_satoshi參數應小於或等於最終承諾交易的基礎費用。如果接收器不滿足此條件,則連接應失敗。

但是,可以規避上述規則。@Murch 通過 CPFP 和 RBF 解釋了第一個解決方法。第二個可以在閃電網路協議框架內完成。資助者可以發送update_fee消息(在shutdown消息之前)將其費率更新為更高的費率。然而,資助者必須為接收節點的目前承諾交易支付新的費率,否則接收消息的對等方將導致通道失敗。然後,它可以通過該通道向其對等方發送一個虛擬交易(比如 1 個聰)。現在,發送一條與上次更新費用closing_signed相同的消息,fee_satoshi您的交易可以在閃電網路協議的範圍內進行,因為這是用於最後一次承諾交易的費用。

如果可以添加額外的輸入/輸出,費用可以在通道關閉期間輕鬆調整為費率,而不是在簽署 tx 時

這將是一把雙刃劍,可能會產生交易確認問題。說一方用 簽署SIGHASH_SINGLE,然後等待另一方簽署並廣播交易。然後,另一方可以添加多個它想要支付的地址。由於這些增加的輸出,feerate_per_kw將低於交易對手在open_channel消息時同意的時間,因此確認此交易所需的時間將高於交易對手節點的預期。這可以進一步用於 DoS 攻擊,我與參與者打開通道,然後添加盡可能多的輸出,以使費率低於礦工考慮將其包含在塊中的費用,從而將節點鎖定在他們的資金之外。

引用自:https://bitcoin.stackexchange.com/questions/83135