Lightning-Network

為什麼錨輸出需要強制 nSequence 為 1?

  • September 3, 2020

引自*<https://bitcoinops.org/en/topics/anchor-outputs>*:

在撰寫本文時,最新版本的設計為承諾交易添加了兩個輸出——一個用於每個 LN 方——並要求承諾交易中的所有其他輸出的腳本受到1 OP_CHECKSEQUENCEVERIFY (CSV)阻止它們被花費的條件的阻礙。至少一個街區。

據我了解<https://github.com/lightningnetwork/lightning-rfc/blob/master/03-transactions.md#offered-htlc-outputs>,添加 1 OP_CHECKSEQUENCEVERIFY (CSV)是唯一在輸出腳本中發生變化的東西閃電協議使用的比特幣交易。

但為什麼這是必要的?為什麼我們不能只使用 CPFP 而沒有 1 個塊的相對延遲?

因為每一方必須始終只有一個可直接花費的輸出,以避免一方能夠“耗盡”分割。

使用兩個 CPFP-ble 輸出,一方都可以在第一個輸出上創建一個後代交易鏈,以滿足標準的記憶體池限制,然後使用自己的第二個輸出觸發剝離機制。

這樣,HTLC 交易不包含在記憶體池中,也不能用於創建長鏈後代,也不能用作剝離交易。

外部參照:

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