header-langage
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
掃碼下載APP
Partnered With:

理解閃電網絡:結算並關閉支付通道

閱讀本文需 10 分鐘
目前,Alice 和 Bob 已經開通了一個雙向支付通道,並分別往通道中存入了 5btc。
原文標題:《 UNDERSTANDING THE LIGHTNING NETWORK, PART 3: COMPLETING THE PUZZLE AND CLOSING THE CHANNEL 》
原文作者: AARON VAN WIRDUM
原文編譯: 閔敏 & 阿劍,以太坊愛好者


圖片


閃電網絡


目前,Alice 和 Bob 已經開通了一個雙向支付通道,並分別往通道中存入了 5btc。他們已經來回完成了兩筆交易。在當前通道狀態下,Alice 和 Bob 可以通過終止通道各自取回 5btc。


現在,他們想要在通道中放入一個哈希時間鎖合約(HTLC),以確保 Bob 在用 1btc 交換 Carol 手中的祕密值後,Bob 可以從 Alice 那裏取回 1btc。


就像之前的步驟一樣(詳見 Part 1),Alice 和 Bob 先要各自創建一筆新的承諾事務。這兩個承諾事務跟之前創建的承諾事務很像,包含一個普通的輸出、一個帶有 CSV 時間鎖(相對時間鎖)的多籤地址輸出和一個特殊的哈希鎖。接着,像之前的步驟一樣,Alice 和 Bob 交換之前的祕密值來讓之前的通道狀態失效。一旦交換過祕密值後,Alice 和 Bob 就可以簽署各自的承諾事務,並在任何時候將這承諾事務發送到區塊鏈上。


這些步驟與之前的步驟基本相同,除了一點。Alice 和 Bob 新創建的承諾事務包含一個新的輸出,而這個輸出價值 1btc。(因此,支付通道中的 btc 餘額變成了 Alice:4;Bob:5;新的輸出:1。)


這個新的輸出本質上是哈希時間鎖合約,而且相比其它輸出更有趣,因爲有三種方式可以解鎖它。


第一種方法是,只有當後序事務包含 Bob 的簽名和祕密值時,(包含在 Alice 和 Bob 的承諾事務內的)新的輸出纔會釋放 btc。無論 Alice 或 Bob 是否簽署並廣播承諾事務,只有 Bob 可以解鎖該輸出——只要他將祕密值包含在後序事務內。但是,兩個承諾事務存在一處細微差別:如果 Bob 終止通道,會受到 CSV 時間鎖的約束。這時,Bob 必須等待 1000 個區塊才能取回自己的 btc。(如果 Alice 終止通道,Bob 就可以立即取回自己的 btc。)


爲什麼 Bob 需要等待 1000 個區塊呢?原因跟我們之前解釋的差不多:如果 Bob 試圖簽署並廣播過期的通道狀態,Alice 就可以拿走 1 btc。這就是解鎖輸出的第二種方法。如果 Alice 提供 Bob 的(最新)祕密值,就可以「偷走」通道內的資金。


Alice 和 Bob 可以玩這樣一個遊戲:如果 Alice 試圖廣播過期的通道狀態,Bob 可以使用 Alice 的祕密值取走那 1 btc(甚至無需提供祕密值)。


第三種方法是,與其它哈希時間鎖合約一樣,這兩個承諾事務也包含常見的 CLTV 時間鎖(絕對時間鎖)超時退回機制,即,如果 Bob 沒有在限期(比如兩週)內將祕密值包含在後序事務內,Alice 就可以取回自己的 1btc。在這種情況下,終止通道的人是 Alice 還是 Bob 都沒關係。


那麼,具體是如何操作的?


Alice 和 Bob 各自持有部分有效的承諾事務。如果 Alice 將自己持有的(也是 Bob 發給她的)承諾事務發送到區塊鏈上,就會立即發送 5btc 給 Bob。Alice 則需要等待 1000 區塊之後才能取回自己的 4btc。另外,Bob 有兩週時間提供祕密值,解鎖「哈希時間鎖合約輸出」對應的 1 btc。(如果他沒有在兩週內提供祕密值,Alice 就可以取回這 1btc。)


與此同時,Bob 隨時都可以將他的承諾事務上鍊,並立即將 4btc 發送給 Alice。接着,他必須等待 1000 區塊過後才能從一個地址那裏取走 5 btc,如果他在限期內提供祕密值,還能解鎖「哈希時間鎖合約輸出」對應的 1 btc。(如果他沒有在兩週內提供祕密值,Alice 就可以取回這 1btc。)


當然了,如果 Alice 或 Bob 在將來任何時候試圖作惡,簽署並廣播過期的通道狀態,另一方都可以阻止作惡方,並偷走通道內的所有 btc。


圖片


結算狀態


這時,Bob 一定會收到 1btc 來交換他手中的祕密值(假如他有的話)。他要做的只是簽署並廣播他從 Alice 那裏得到的承諾事務,將祕密值包含在一個後序事務內,然後簽署並廣播該後序事務。


Alice 知道這一點。她沒有辦法騙走 Bob 的 btc,即使她通過其它手段得到了祕密值。


因此,Alice 和 Bob 還不如在支付通道外進行「結算」。Bob 可以將祕密值給 Alice,Alice 可以同意更新通道狀態,這樣就不需要哈希時間鎖合約和截止日期了。


假設 Alice 和 Bob 都想讓通道保持開啓,這也很正常:比起在鏈上終止通道省事多了。


圖片


關閉通道

 

最後纔是閃電網絡真正強大的地方:


本系列文章中所述內容幾乎都不需要實際上用到比特幣區塊鏈。


如果 Alice 和 Bob 想要和平關閉通道,可以創建一個事務來完全覆蓋掉開啓通道事務之後的所有事務。他們可以根據最新通道狀態中所示的 btc 餘額歸屬情況,通過關閉通道事務將自己應得的 btc 餘額發送給自己。


具體來說,這意味着如果 Alice 想要關閉通道,她可以創建一個事務向自己支付 4btc,同時向 Bob 支付 6btc,然後讓 Bob 簽署並廣播該事務。Bob 沒有理由不答應這個請求,他大概率會配合 Alice 關閉該通道。


最後,只會有兩筆事務被廣播到比特幣網絡並打包進區塊:開啓通道事務和關閉通道事務。哪怕 Alice 和 Bob 之間發生了 100 萬筆交易也是這個結果,因此極大地減輕了區塊鏈的負擔。


圖片


格外感謝 Rusty Russell 和 JosephPoon 的信息和額外的反饋。


原文鏈接


歡迎加入律動 BlockBeats 官方社群:

Telegram 訂閱群:https://t.me/theblockbeats

Telegram 交流群:https://t.me/BlockBeats_App

Twitter 官方帳號:https://twitter.com/BlockBeatsAsia

举报 糾錯/舉報
選擇文庫
新增文庫
取消
完成
新增文庫
僅自己可見
公開
保存
糾錯/舉報
提交