如何使用 BOLT #9 解碼 Lightning 節點的特徵字元串?
鍵入以下命令*(使用正在執行的閃電)*:
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 位沒有特徵標誌表明該節點不辨識任何相應的特徵。