LND中RoutingPolicy對象的disabled欄位是什麼意思?
lnd v0.15.3-測試版
的文件顯示
lnrpc.RoutingPolicy
了一個名為 的布爾欄位disabled
,但它沒有提供其含義的定義。每個通道有 2 個對等點,通道中的每個對等點都有自己的路由策略。一些通道已禁用,其中一個對等點設置為 true,另一個對等點設置為 false。這是一個例子:
$ lncli getchaninfo 697113461880782849 { "channel_id": "697113461880782849", "chan_point": "094c1a9d6cd5294847f560758e8b8d8cdb4ef386ca746112536564742a92184b:1", "last_update": 1667018957, "node1_pub": "02572c2e1b43a78bb060e7d322b033443efc0d8d60fc2b111dd8bb999aa940d1f5", "node2_pub": "02a45def9ae014fdd2603dd7033d157faa3a55a72b06a63ae22ef46d9fafdc6e8d", "capacity": "5281151", "node1_policy": { "time_lock_delta": 40, "min_htlc": "1000", "fee_base_msat": "1000", "fee_rate_milli_msat": "10", "disabled": false, "max_htlc_msat": "5228340000", "last_update": 1665821197 }, "node2_policy": { "time_lock_delta": 24, "min_htlc": "1000", "fee_base_msat": "0", "fee_rate_milli_msat": "501", "disabled": true, "max_htlc_msat": "5228340000", "last_update": 1667018957 } }
是否僅當兩個對等方的路由策略都顯示時,通道才處於活動狀態
disabled = false
?或者將路由策略設置為禁用等同於將其設置為空?一些通道具有空路由策略的對等點,如本例所示:
$ lncli getchaninfo 555817421567164416 { "channel_id": "555817421567164416", "chan_point": "43a329e374f19ac11cb8377d8d791505d27e60c221a3cfe99a2d758318803e0f:0", "last_update": 0, "node1_pub": "0207481a19a3f51a48f134e95afa67cfeffdb38a99b5ad3494a320c4918aaaf579", "node2_pub": "02ef61a252f9504a42fc264a28476f44cea0711a44b2da0bd729ad52aaee9d86b7", "capacity": "10000", "node1_policy": null, "node2_policy": null }
上面的頻道是否有效?如果是這樣,它是否使用預設路由策略值?
disabled = true
和空路由策略一樣嗎?或者,如果一個節點禁用其路由策略,它是否會禁用整個通道?
該
disabled
欄位是對一條邊的引用,而不是對整個通道的引用,但lnd中的api不顯示邊,因此必須通過資金運動的方向來推斷。很快,什麼是
edge
?在雙向圖中(目前可以看作是閃電網路),我們認為 achannel
實際上是由兩個具有方向的實體組成的,稱為edges
。例如:
┌────────┐ ┌────────┐ │ ├────edge 1────►│ │ │ alice │ │ bob │ │ │◄───edge 2─────┤ │ └────────┘ └────────┘
好吧,通道真的是兩條邊。為什麼這很重要?好吧,有時候允許資金朝某個方向流動而不允許朝另一個方向流動很重要。例如,一個流行的商家節點希望允許人們向他們的通道發送,以便他們可以在特定通道中收款,而不允許人們通過他們的節點轉發並將資金轉移出另一個通道。如果特定的傳出渠道用於退貨,商家可能希望這樣做。通過該渠道轉發的人可能會結束流動性餘額,從而無法處理對客戶的退貨。但是,至關重要的是,他們想讓人們能夠向他們全方位發送資金(畢竟他們是商人!)
我們的雙向通道沒有提供這樣的精度,因此我們必須考慮調整邊緣。由於我們不想完全“關閉”任何通道,因此我們無法將任何通道設置為
inactive
- 這將不允許向任何方向移動。所以重申一下
All channels active and none disabled ┌────────┐ ┌──────────┐ ┌────────┐ │ ├────edge 1────►│ ├────edge 3────►│ │ │ alice │ │ merchant │ │ carol │ │ │◄───edge 2─────┤ │◄───edge 4─────┤ │ └────────┘ └──────────┘ └────────┘ [active] [active] All channels active and edge 4 disabled ┌────────┐ ┌──────────┐ ┌────────┐ │ ├────edge 1────►│ ├────edge 3────►│ │ │ alice │ │ merchant │ │ carol │ │ │◄───edge 2─────┤ │◄──X─edge 4──X─┤ │ └────────┘ └──────────┘ └────────┘ [active] [active] alice to merchant inactive and and edge 4 disabled ┌────────┐ ┌──────────┐ ┌────────┐ │ ├──X─edge 1─X──►│ ├────edge 3────►│ │ │ alice │ │ merchant │ │ carol │ │ │◄─X─edge 2─X───┤ │◄──X─edge 4──X─┤ │ └────────┘ └──────────┘ └────────┘ [inactive] [active]