Lightning-Network

單跳支付與多跳支付

  • May 1, 2021

我是閃電網路的初學者。當我大致查看閃電網路白皮書時,我對單跳和多跳中使用的合約類型感到困惑。

據我了解,在單跳(雙向支付通道)的情況下,它使用撤銷密鑰概念,並且沒有 HTLC。在多跳情況下,它使用 HTLC 概念。

但是當我閱讀白皮書第 4 章中的範例(關於 Alice 和 Bob 的範例)時,我對“單跳案例使用 HTLC 嗎?”這一事實感到困惑。

任何人都可以解釋這個嗎?

謝謝!

首先,在這個時間點,白皮書已經過時了,只能被視為一個粗略的概念指南。閃電網路協議本身在閃電 rfc 中得到更好、更準確的描述/指定

話雖這麼說,但即使在單跳支付情況下,也正在使用 HTLC。設置和結算 htlcs 吊銷密鑰和吊銷系統目前起著至關重要的作用。據我所知,原因是為了節省實現成本。

因此,如果 Alice 想通過直接渠道向 Bob 付款,過程就是這樣。

  1. Bob 創建一張發票,其中 apayment_hash是一些雜湊值pre_image
  2. Bob 不知何故將這張發票傳給了 Alice。(這可以通過任何通信渠道發生)
  3. Alice 創建了一個洋蔥包(基本上只包含向 Bob 支付的 1 跳
  4. update_add_htlcAlice 通過向 Bob 發送消息來設置一個 htlc 。commitment_signedAlice 還通過消息為下一個承諾交易提供簽名。
  5. 鮑勃解密洋蔥。看到付款是給他自己的,他認為他可以完成洋蔥。
  6. revok_and_ackBob 通過消息向 alice 發送撤銷密鑰來撤銷他的持有狀態。
  7. Bob 通過該消息為 Alice 的新承諾交易發送簽名commitment_signed
  8. revoke_and_ackAlice 通過該消息撤銷她的舊狀態。
  9. htlc 以與第 4 步到第 7 步類似的方式解決。(它update fulfill_htlc從 Bob 發送給 Alice 的消息開始,然後首先為 Alice 更新狀態,然後為 Bob。再次交換重新確認密鑰以擺脫htlc 輸出並創建付款已到達 Bob 的狀態)

這個過程的視覺化可以在這個幻燈片的幻燈片 136 到 144 中找到。該過程本身在 BOLT 02 中有更詳細的描述

我還應該注意到,對於支付通道協議(例如 Eltoo )還有其他建議,它擺脫了基於懲罰的系統和撤銷密鑰,但仍然使用 htlc 來實際轉移資金(在多跳或單跳支付中) )

歡迎來到這個社區,我希望這個技術性和詳細的答案不會太壓倒性。如有必要,請隨時提出更多問題。

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