解讀閃電網路丨鏈下交易的安全怎麼破?

買賣虛擬貨幣

2008年比特幣誕生以來熱度漸增,每個區塊1MB大小,每秒可處理的交易7筆,是無法滿足激增的需求,社羣也是一直積極討論擴容的解決方案,鏈下擴容就是其中之一。鏈下擴容是相對於鏈上(On-chain)擴容而言,鏈上擴容指的是直接發生在區塊鏈上,透過改變區塊大小或資料結構從而達到提高處理交易能力的解決方案,比如分片技術(Sharding)、隔離見證(Segregated Witness,簡稱SegWit)和增加區塊容量。而鏈下擴容則指的是在主鏈之外,建立外圍或第二層交易網路,比如狀態通道(States Channels)、側鏈(SideChains)和DAG(Directed Acyclic Graph)。今天的故事從狀態通道講起。

狀態通道(States Channels)

狀態通道的總體思路是將本來在鏈上結算的交易放在鏈下,交易方透過狀態通道維護中間態,並將最終結果上鍊。若發生糾紛時回到鏈上仲裁,鏈上仲裁的公平性和安全性在博弈論上保證了交易對手不會作惡。

狀態通道也分幾個層級,對應著不同程度的鏈上功能替代度,概括如下圖:

狀態通道是更通用的支付通道形式,它不僅可以用於支付,還可以用於狀態更新。狀態通道在2015年由Ledger 實驗室的創始人傑夫·科爾曼(Jeff Coleman)首次詳細描述。狀態通道在比特幣上的實現稱為閃電網路(Lightning network),用來實現區塊鏈上的小額支付。以太坊網路上的相關技術叫RDN/" target="_blank"">雷電網路(Raiden network),它允許使用者透過狀態通道和另一個連線更大通道網路的實體相關聯,從而用很低的成本和區塊鏈網路上的任何人做交易。

而具體技術上,*雜湊時間鎖(Hashed-Time Lock Contract,簡稱HTLC)是閃電網路支付路徑得以實現的關鍵,而雷電網路利用以太坊支援智慧合約的條件,引入了更為通用的 “智慧條件(Smart Condition)”,實現智慧轉賬(Smart Transfers)。智慧條件可接受任何格式的報文為引數,執行後對支付通道上的餘額進行調整。智慧轉賬能夠根據鏈上智慧合約可讀取的條件進行結算,提供較雜湊時間鎖更為豐富的功能,如支援預測市場、期貨等條件,實現更多應用。閃電網路中的雜湊時間鎖,是智慧轉賬可實現的條件之一。

閃電網路(Lightning network)

閃電網路和雷電網路所使用的技術統稱為狀態通道,都屬於鏈下擴容。歷史程序上,閃電網路概念的出現和中本聰釋出的比特幣一樣古老。經不斷討論最佳化,2015年一篇題為《比特幣閃電網路:可擴充套件的鏈下即時支付》(The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments)的白皮書最終成為規則的制定者。江湖號稱僅次於比特幣白皮書的【閃電網路白皮書】,該文作者原是智慧合約交易平臺 Mirror 技術長——約瑟夫·樸恩(Joseph Poon)和薩帝厄斯·追亞(Thaddeus Dryja),兩人同年秋天成立了美國舊金山閃電支付實驗室Lightning Labs,創始成員還有伊麗莎白·斯塔克(Elizabeth Stark)。2018年3月釋出了第一個比特幣主流網路閃電網路(LN),該公司稱這是一個“重要的里程碑”。

同年開始致力於閃電網路的還有另外兩家公司:澳大利亞區塊鏈流公司Blockstream,是一家區塊鏈軟硬體解決方案的服務商,公司聯合創始人兼執行長 Adam Back 博士是英國的密碼學家,也是雜湊現金機制的發明者,是被中本聰的比特幣白皮書引用之一。聯合創始人 Pieter Wuille 是比特幣核心開發者之一,基礎架構師羅斯迪·羅素(Rusty Russell) 擅長 Linux 核心的網路子系統和檔案系統層次標準方面的工作,並起草了閃電網路協議規範的大部分內容。另一家,法國巴黎的初創公司阿斯安可Acinq,執行長是皮埃爾-瑪麗·帕迪歐(Pierre-Marie Padiou),原從事硬體錢包業務,受到比特幣礦業巨頭Bitfury倡議Flare的啟發,開始閃電支付專案Eclair。

從比特幣容量的問題思考,若交易雙方頻繁交易,是否可一段時間後只將最終結果全網廣播?又或者建立一個雙方交易通道,無需信任第三方中介也可確保資金安全?閃電網路白皮書詳細講解雙向支付通道、可撤銷的順序成熟度合同(Recoverable Sequence Maturity Contract,簡稱RSMC)、雜湊時間鎖HTLC等解決方式,試圖逐一解決鏈下支付通道的交易問題。接下來重點解讀這個三個技術。

1. 雙向支付通道

交易雙方彼此熟悉相互信任,即可鏈下通道內完成多次交易,最後交易餘額上鍊廣播。這樣眾多微小支付變成交易集,他們可能會選擇在未來某一日期上鍊公佈。透過推遲交易的公佈,將大大降低最終被公佈的主鏈交易數量,達到擴容效果。

問題來了,如果雙方第一次交易,怎麼建立支付通道呢?

引入“2-of-2雙重簽名地址”,指需要雙方的簽名才能進行轉賬的地址。2-of-2 是指總簽名數為 2 個,一筆交易得拿到 2 個簽名後生效。對應地, 2-of-3 多重簽名地址就是指總簽名數為 3 個,一筆交易得拿到其中 2 個簽名後就可以生效。

基本規則:
Alice 和 Bob 有一個2-of-2雙重簽名認證的地址,然後各自把資金存到這個地址;
任何一方都能單獨地把這個地址上的屬於自己資金轉回;
如果是交易,則需要雙方的簽名達成共識。

栗子:Alice 和 Bob分別往一個2-of-2雙重簽名地址轉入一定數量比特幣,比如(A: 1 BTC; B: 2 BTC),1 BTC屬於Alice,2 BTC屬於Bob。這個2-of-2簽名地址及這個餘額分配狀態就是一個雙向支付通道。如果在通道里Alice要向Bob支付0.5 BTC,那Alice 和 Bob就要對這個2-of-2簽名地址進行簽名,調整餘額狀態為(A: 0.5 BTC;B: 2.5 BTC)。

2. RSMC

RSMC是基於“支付通道”技術而開發的新型合約,解決了在支付通道環境下幣的單向流動問題,使撤銷上一個交易成為可能,並由此奠定了雙向支付的基本工作方式。

問題來了,如果其中一方想要撤銷交易,應該怎麼辦呢?


引入FT= Funding Transaction 資金交易,CT= Commitment Transaction 承諾交易,序列數Sequence”。


資金交易FT,由交易方提供資金形成一個初始通道 FT,雙方均為此交易建立 inputs 和 outputs,但不簽署交易。


承諾交易CT,可以表示當前雙方餘額。如果雙方僅交換一份2-of-2雙重簽名的CT,那麼雙方確定能在 FT 上主鏈後收回資金。


序列數sequence是合約的一個確定引數。比如說一個RSMC的序列數為1000,如果其父交易所在區塊是10000,那麼如果這個RSMC被寫在了區塊10999上,則這個RSMC不會被執行(相當於自動作廢了)。為了確保該RSMC能被執行,我們等到當前區塊為11000時,再在比特幣網路中廣播這個RSMC。這樣,RSMC所在區塊的高度一定會大於11000,該RSMC才能執行。

基本規則:
1.交易雙方將協議的資金放入資金交易FT中,並在互相簽署合約後,將其廣播記入主鏈;
2.交易雙方在不超過總金額的前提下,在鏈下進行交易,次數無限制;
3.每一次交易都必須簽署全新的合約,即承諾交易CT,僅在支付通道中流轉,並未廣播記入主鏈區塊;
4.當最後雙方協議不再進行新交易,準備取回各自資金時,將由其中一方發起廣播請求;
5.如果其中一方發現交易結果不正確,可以根據雙方交易合約中的前置協議條件,在有效時間內提出真假合約驗證請求;廣播虛假交易合約一經證實,作假方在資金池內所有的自持資金將會作為賠償支付給另一方。
6.在簽署資金交易FT之前先簽署一份承諾交易CT並交給對方。因為CT可以保證自己放到FT中的資金可以贖回,所以雙方可以放心地簽署 FT 並廣播。

栗子:Alice 和 Bob建立一個通道FT,相當於資金池,存放著Alice和Bob的資金。這個FT有兩個輸出,分別是承諾交易C1a和C1b。這兩個合約是互斥的(只有一個能在比特幣網路上廣播),即Alice只能廣播C1a,Bob只能廣播C1b。每個CT又有兩個輸出,一個是普通輸出,一個是RSMC合約。


Alice將C1a廣播到比特幣網路上,根據C1a的普通輸出D1a,Bob立即可以使用0.5個比特幣。RD1a是RSMC合約,當C1a被廣播到主鏈後的1000個區塊之後,Alice可以廣播這個RSMC (RD1a),從而可以使用另外0.5個比特幣。

問題來了,如果資金分配狀態更新後,一方在主網上廣播錯誤的CT,怎麼辦呢?

引入“違規補償交易(breach remedy transaction)”, 防止在新確認交易達成後一方仍然廣播舊交易,違規補償交易用來代替舊CT中的RSMC,其規定交易對手方可以立即獲得所有剩餘資金。

栗子:Alice 和 Bob產生新交易C2a,C2b的同時,生成違規補償交易BR1a和BR1b,違規補償交易有效廢止了上一個CT中的RSMC合約。若Alice將C1a廣播到主鏈上,C1a普通輸出D1a,Bob立即獲取0.5個比特幣。而C1a的RSMC合約輸出RD1a被違規補償交易BR1a替代,Bob又獲得了剩餘0.5個比特幣。至此,RD1a已經無效。透過設計這樣的違規補償交易,保證了雙方只能廣播最新的承諾交易CT。

按常理,下一個部分應該進入第三點雜湊時間鎖 HTLC,非常重要的技術點,但是苦於知識消化能力有限,產出效率較低,該部分無法在本週完成,只能放一放,找個時間,看心情再補上。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;