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

原文標題:《 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 的信息和額外的反饋。

本文鏈接:https://www.8btc.com/article/6667647

轉載請註明文章出處

(0)
上一篇 2021-07-30 19:19
下一篇 2021-07-30 19:19

相关推荐