Lightning-Network

如何通過閃電向自己發送付款以重新平衡 2 個通道?

  • August 20, 2019

我有一個帶有 bitstamp 的活動頻道,我這邊有餘額。Bitstamp 有一個活躍的通道,帶有輕量級的電力使用者 (lpu),並在他們身邊保持平衡(我用 進行了檢查lncli queryroutes 0331f80652fb840239df8dc99205792bba2e559a05469915804c08420230e23c7c 70000)。Lpu 與我有一個渠道,他們有餘額(我使用他們的服務來租用流入流動性)。

現在,由於我只從 lpu 租用了幾天的流動性,我很快就會失去流入的流動性。我想像這樣向自己付款:我 -> bitstamp -> lpu -> me。這將導致在 lpu 關閉我們的頻道後保持一些入站流動性(在我的帶有 bitstamp 的頻道中)。

我想我需要使用lncli sendtoroute通過特定路線發送付款。為此,我需要一個支付雜湊和一個路由。我生成了一個支付雜湊lncli addinvoice 70000並複制了 r_hash 值。我嘗試使用lncli queryroutes 0364f45ee43cd4b1d6db08972dfd6ab227e47adccee80ca7d76ae0bd107334c2aa 70000(即我的 pub_key)生成路由,但出現“無法找到通往目的地的路徑”錯誤。

第一個問題:有沒有辦法通過 queryroutes 獲得最佳路線?

然後我嘗試自己建構 queryroutes 響應。我找到了一條有 3 跳的路線,並試圖逆向工程費用的運作方式。似乎在啤酒花中只有收件人收取費用。所以第一跳是從我到bitstamp(bitstamp收費),第二跳是從bitstamp到lpu(lpu收費),最後一跳是從lpu到我(我自己不收費)。

第二個問題:上面的收費邏輯正確嗎?

好的,我用所有這些數據在下面生成了 queryroutes 響應

{ "routes": [ { "total_time_lock": 590112, "total_fees": "373", "total_amt": "70373", "hops": [ { "chan_id": "648038959352250368", "chan_capacity": "100000", "amt_to_forward": "70373", "fee": "0", "expiry": 590072, "amt_to_forward_msat": "70373500", "fee_msat": "70", "pub_key": "02a04446caa81636d60d63b066f2814cbd3a6b5c258e3172cbdded7a16e2cfff4c" }, { "chan_id": "630596306830950400", "chan_capacity": "2500000", "amt_to_forward": "70360", "fee": "360", "expiry": 589928, "amt_to_forward_msat": "70360000", "fee_msat": "13500", "pub_key": "0331f80652fb840239df8dc99205792bba2e559a05469915804c08420230e23c7c" }, { "chan_id": "648098333019668480", "chan_capacity": "500000", "amt_to_forward": "70000", "fee": "360", "expiry": 589928, "amt_to_forward_msat": "70000000", "fee_msat": "360000", "pub_key": "0364f45ee43cd4b1d6db08972dfd6ab227e47adccee80ca7d76ae0bd107334c2aa" } ], "total_fees_msat": "373570", "total_amt_msat": "70373570" } ] }

然後我嘗試發送這個cat my.route | lncli sendtoroute --pay_hash=hashIgenerated -並得到一個"payment_error": "FeeInsufficient...錯誤。

我應該如何建構這個工作的路線?

首先,已經有腳本可以自動執行此過程。例如,檢查C-Otto 的重新平衡腳本

其次,我不會假設通過 queryroute 找到路由可以保證所用渠道中的餘額實際上可以支持您的付款。我認為這僅意味著您的節點對 LN 的理論容量是足夠的。知道路線是否真的有效涉及嘗試穿過它。

為了解決您的具體問題,我現在不知道 queryroute 是否支持循環,但從上面的腳本來看,它似乎應該支持。

至於您的第二個問題,費用始終由轉發付款以通過渠道發送的節點收取,而不是由渠道中的接收者收取。所以如果你嘗試路由you-bitstamp-lpu-you,這裡只有兩個轉發跳,bitstamp和lpu。他們將要求他們為頻道 bitstamp-lpu(由 bitstamp 公佈和收集)和 lpu-you(由 lpu 公佈和收集)公佈的費用。

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