Lightning-Network

LND中RoutingPolicy對象的disabled欄位是什麼意思?

  • November 22, 2022

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]

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