科普 | 理解閃電網絡,Part-1:構建比特幣的雙向支付通道

科普 | 理解閃電網絡,Part-2:構建網絡


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

閃電網絡

目前,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。

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

結算狀態

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

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

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

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

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

關閉通道

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

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

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

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

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

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

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

(完)

(文內有許多超鏈接,可點擊左下 ”閱讀原文“ 從 EthFans 網站上獲取)


原文鏈接 :

https://bitcoinmagazine.com/technical/understanding-the-lightning-network-part-completing-the-puzzle-and-closing-the-channel-1466178980

作者 :AARON VAN WIRDUM**

翻譯 & 校對 :閔敏 & 阿劍


你可能還喜歡:

乾貨 | 閃電網絡當前的主要侷限,Part-2

Devcon4 | Josh Stark:Making Sense of Layer 2