Lightning-Network

如何使用 BOLT #9 解碼 Lightning 節點的特徵字元串?

  • July 10, 2021

鍵入以下命令*(使用正在執行的閃電)*:

lightning-cli listpeers

例如,我得到了所有都有features標誌的同行0252a1。它在手冊頁lightning-listpeers(7)中說,它對應於 BOLT #9 中提到的功能。

如何獲得BOLT #9 文件0252a1中表格中列出的功能?

位是**二進制數****,**用兩個可能的表達式 0 和 1 進行探勘。二進制數據通常以書面形式表示為十六進制,因為這樣更緊湊且更易於閱讀。十六進制(以 16 為基數)使用符號 0-9 和 AF(其中 AF 代表 10-15)對(十進制)數字 0 到 15 進行編碼。

幾個例子(下標表示基數):

1 10 = 1 16 = 0001 2

5 10 = 5 16 = 0101 2

10 10 = A 16 = 1010 2

13 10 = D 16 = 1101 2

您引用的標誌數組0252a1將轉換為二進制數組100101001010100001

要將其用作標誌數組,我們不會將其解釋為數字,而是將 1 解釋為已設置的特徵,將 0 解釋為未設置的特徵。我們通過從最右邊開始計數的位置來引用每個位。最右邊是第零位和偶數。

Lightning 中的功能標誌 (BOLT #9)始終成對分配。偶數位是指我們的節點將認為是強制性的功能,奇數位是指我們的節點支持的可選功能。其他節點將忽略他們不理解的奇數位(“可以是奇數。”),但如果設置了他們不支持的偶數位,則會斷開連接。

1001010010101000_01_

位 0/1 指的是功能option_data_loss_protect。該標誌位於偶數位(第 0 位),因此該功能是強制性的。

10010100101010_00_01

位 2/3 指的是initial_routing_sync. 由於沒有設置任何位,我們的節點不支持該功能。

100101001010_10_0001

位 4/5 信號option_upfront_shutdown_script。該標誌位於第 5 位,因此它是一個可選功能。

1001010010_10_100001

位 6/7 信號gossip_queries。該標誌位於第 7 位,也是可選的。

10010100_10_10100001

位 8/9 信號var_onion_optin。由於標誌位於奇數位,因此它是一個可選功能。

100101_00_1010100001

位 10/11 用於gossip_queries_ex. 我們的節點不支持此功能。

1001_01_001010100001

位 12/13 表示option_static_remotekey對於該節點的對等點是強制性的,因為它在位 12(偶數位)上設置。

10_01_01001010100001

位 14/15 指的是payment_secret這也是強制性的。

_10_0101001010100001

第 17 位上的標誌表示這basic_mpp是可選的。

第 18-27 位沒有特徵標誌表明該節點不辨識任何相應的特徵。

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