Lightning-Network
如何通過預定義的路線發送付款?
嘗試通過預定義的路線付款,使用:
lncli -network=testnet queryroutes 02e34c1b4c5f8e7419cf4d10e3bc9651d46dc1af68df6a7b81a24951a9192aa9c4 25000 | lncli -network=testnet sendtoroute -pay_hash=45b9255c8648c6c1f60e394e555f745af31ed7fab385d0cf9e82b62ce8e8dfba -
總是給我回:
{ "payment_error": "FinalExpiryTooSoon", "payment_preimage": "", "payment_route": null }
不管我在 addinvoice 命令中設置的到期時間。有人可以澄清為什麼嗎?此外,如何使用之前從 queryroutes 命令獲得的 routes.json 使用 sendtoroute 命令?
TL;博士。您需要在命令中指定
--final_cltv_delta=144
選項。lncli queryroutes
更長的答案……當通過閃電網路進行支付時,每個中間節點都有可能竊取正在轉移的資金。為了防止這種情況發生,中間節點不能立即轉移資金,而只能在一定時間後轉移。在此期間,合法所有者可以收回資金。
final_cltv_delta
選項為躍點鏈中的最後一個節點指定這段時間(以塊數衡量)。當您查詢路線時,預設值很小(我相信它在某個時候是 9)。但大多數節點不接受這個值,預設lnd
需要更長的時間144
。