Lightning-Network
為什麼我們在承諾交易的 HTLC 輸出中使用 CLTV 而不是 CSV?
在閃電網路承諾交易中,HTLC 提供/接收的輸出通常在使用 CLTV 編寫的超時後支付給提供節點。在承諾交易的其他部分(例如
to_self_delay
)中,我們使用 CSV 來確保它的輸出在特定時間過去之前是不可花費的。為什麼選擇 CLTV 作為 HTLC 輸出的設計選擇?
創建承諾交易時,您將資金交易的多重簽名輸出作為輸入。CSV 是一個相對時間鎖操作碼,這意味著 CSV 中指定的時間是資金交易何時被探勘的函式。例如,如果您創建 100 個區塊的 CSV 輸出,則該輸出僅在資金交易創建後經過 100 個區塊後才能使用。
發送 HTLC 時,它通過的第一個節點將是您具有直接通道的節點。
to_self_delay
由於您和您的渠道交易對手位於與資金交易相關的同一頁面上,因此您可以在為本地節點輸出進行時間鎖定時自由使用 CSV 操作碼。但是,從那裡開始,它將被發送到您沒有直接開放通道的節點。這些節點與其他節點開放通道,這些節點的資金交易時間將不同於您與通道對手方打開的通道。因此,在 HTLC 輸出中指定 CSV,從不同渠道方的角度來看,會產生模棱兩可的超時。為了確保一致性,您需要使用絕對鎖定時間,這就是選擇 CLTV 的原因。
正如您自己所說,CSV 是相對於交易出現在區塊鏈中的時間,而 CLTV 是絕對的。它們只是具有不同的含義,對不同的事物有用:
RSMC 超時僅在有人將承諾 tx 推送到區塊鏈時才開始。所以必須是相對的。
另一方面,HTLC 超時實際上是為了使 HTLC 成為臨時的,即使在大多數情況下它永遠不會命中區塊鏈。所以它必須是絕對的。