Lightning-Network

閃電網路:飛行中允許的最大 HTLC 是如何計算的?

  • December 10, 2020

BOLTS將可接受的最大max_accepted_htlcs(並發轉發的 HTLC 的最大數量)指定為。483

這個值是如何選擇的?

BOLT #3給出了基本原理:commitment_signed要低於BOLT #8 允許的最大消息大小(~65kb),並且懲罰交易能夠在一個交易中掃描所有 HTLC。

這是對第二部分更適合初學者的解釋。

4000000 重量單位限制是最大比特幣塊大小限制連結到 BIP)。

400000 重量單位限制是標準交易的限制(因此中繼)。

懲罰性交易對閃電網路通道的安全至關重要,因此您需要一個可以中繼的交易,因此是一個標準大小的交易。

但是每個新的 HTLC 都是承諾交易的兩個額外輸出。因此,懲罰交易的兩個新輸入(花費它)。它是罰款交易的一個附加大小(以重量單位計算)。

因此,您必須限制接受的飛行中 HTLC 的數量(即同時添加到您的承諾交易中),以確保在出現問題時可以廣播您的懲罰交易。

現在這裡是計算的解釋:

max_num_htlcs = (400000 - 324 - 272 - (4 * 53) - 2) / 413 = 966
  • 400000: 最大交易規模,參見上文
  • 324: 對應於向您發送資金的承諾交易輸出的輸入大小。
  • 272:對應於承諾交易輸出的輸入大小,向您的同行發送資金。
  • 53: 承諾交易的非見證數據的大小,這是它被計時4以獲取權重單位的原因。
  • 2:見證標頭的大小。
  • 400000 - 324 - 272 - (4 * 53) - 2:用於添加 HTLC 輸入的剩餘空間
  • 413:花費接受的 HTLC 的大小(用於花費超過提供的 HTLC 的大小,因為它更大)。
  • (400000 - 324 - 272 - (4 * 53) - 2) / 413:您可以接受的 HTLC 的最大數量,以便它們可以通過可以由比特幣網路中繼的懲罰交易來使用。

因為每個 HTLC 創建兩個輸出,所以您將此結果除以二:

因此,483 個雙向 HTLC(包含 to_local 和 to_remote 輸出)可以在單個懲罰事務中解決。注意:即使to_remote輸出沒有掃過,得到的max_num_htlcs也是967;這產生了 483 個 HTLC 的相同單向限制。

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