Lightning-Network
單跳支付與多跳支付
我是閃電網路的初學者。當我大致查看閃電網路白皮書時,我對單跳和多跳中使用的合約類型感到困惑。
據我了解,在單跳(雙向支付通道)的情況下,它使用撤銷密鑰概念,並且沒有 HTLC。在多跳情況下,它使用 HTLC 概念。
但是當我閱讀白皮書第 4 章中的範例(關於 Alice 和 Bob 的範例)時,我對“單跳案例使用 HTLC 嗎?”這一事實感到困惑。
任何人都可以解釋這個嗎?
謝謝!
首先,在這個時間點,白皮書已經過時了,只能被視為一個粗略的概念指南。閃電網路協議本身在閃電 rfc 中得到更好、更準確的描述/指定
話雖這麼說,但即使在單跳支付情況下,也正在使用 HTLC。設置和結算 htlcs 吊銷密鑰和吊銷系統目前起著至關重要的作用。據我所知,原因是為了節省實現成本。
因此,如果 Alice 想通過直接渠道向 Bob 付款,過程就是這樣。
- Bob 創建一張發票,其中 a
payment_hash
是一些雜湊值pre_image
- Bob 不知何故將這張發票傳給了 Alice。(這可以通過任何通信渠道發生)
- Alice 創建了一個洋蔥包(基本上只包含向 Bob 支付的 1 跳
update_add_htlc
Alice 通過向 Bob 發送消息來設置一個 htlc 。commitment_signed
Alice 還通過消息為下一個承諾交易提供簽名。- 鮑勃解密洋蔥。看到付款是給他自己的,他認為他可以完成洋蔥。
revok_and_ack
Bob 通過消息向 alice 發送撤銷密鑰來撤銷他的持有狀態。- Bob 通過該消息為 Alice 的新承諾交易發送簽名
commitment_signed
。revoke_and_ack
Alice 通過該消息撤銷她的舊狀態。- htlc 以與第 4 步到第 7 步類似的方式解決。(它
update fulfill_htlc
從 Bob 發送給 Alice 的消息開始,然後首先為 Alice 更新狀態,然後為 Bob。再次交換重新確認密鑰以擺脫htlc 輸出並創建付款已到達 Bob 的狀態)這個過程的視覺化可以在這個幻燈片的幻燈片 136 到 144 中找到。該過程本身在 BOLT 02 中有更詳細的描述
我還應該注意到,對於支付通道協議(例如 Eltoo )還有其他建議,它擺脫了基於懲罰的系統和撤銷密鑰,但仍然使用 htlc 來實際轉移資金(在多跳或單跳支付中) )
歡迎來到這個社區,我希望這個技術性和詳細的答案不會太壓倒性。如有必要,請隨時提出更多問題。