比特幣閃電網(wǎng)絡(luò)的運作機制進展與挑戰(zhàn)分析
比特幣閃電網(wǎng)絡(luò)曾發(fā)展迅猛,如今為何又陷入停滯?
是時候認真研究一下比特幣閃電網(wǎng)絡(luò)的技術(shù)、解決方案和近期發(fā)展了。閃電網(wǎng)絡(luò)曾經(jīng)被詬病的資產(chǎn)安全問題在 2019 年得到大幅度改進,用戶體驗也有所優(yōu)化。過去閃電網(wǎng)絡(luò)限于小額支付的問題,也藉由支付路徑的擴增而得到解決。
在未來,原子多路徑支付伴隨 HTLC(哈希時間鎖定合約)將會成倍增加路由選擇,有望大幅增加通道流動性。但挑戰(zhàn)依然存在:閃電網(wǎng)絡(luò)系統(tǒng)的穩(wěn)定度和支付規(guī)模尚且不足,且無法支持多數(shù)應(yīng)用層,因此離規(guī)?;纳虡I(yè)應(yīng)用及用戶大幅擴增還有一段距離。此外,閃電網(wǎng)絡(luò)通道手續(xù)費收費過低,節(jié)點數(shù)量上升緩慢,如何激勵運營節(jié)點加入也將是一大考驗。
閃電網(wǎng)絡(luò)是一種比特幣鏈下支付協(xié)議,目標是解決比特幣的可擴展性問題。盡管閃電網(wǎng)絡(luò)還處在早期發(fā)展階段,但比特幣支付網(wǎng)絡(luò)加上閃電網(wǎng)絡(luò),利用鏈下支付和「凈額軋差」概念,有助于提高比特幣交易效率,降低交易成本,一定程度上加強了比特幣作為交易媒介的屬性。
本文將通過三個方面,闡述和分析比特幣閃電網(wǎng)絡(luò)的進展與挑戰(zhàn):
· 第一部分介紹閃電網(wǎng)絡(luò)運作機制;
· 第二部分介紹 2019 年閃電網(wǎng)絡(luò)技術(shù)進展;
· 第三部分介紹閃電網(wǎng)絡(luò)落地概況和有待解決的問題。
閃電網(wǎng)絡(luò)運作機制
閃電網(wǎng)絡(luò)基于微支付通道(雙向支付通道)演進而來,由微型銀行和支付通道兩個概念所構(gòu)筑,并就支付通道概念設(shè)計出了兩種類型的交易合同——可撤銷的序列成熟度合約 RSMC (Revocable Sequence Maturity Contract)和哈希時間鎖定合約 HTLC (Hashed Timelock Contract)。其中,RSMC 解決通道中貨幣單向流動及確權(quán)問題,HTLC 解決貨幣跨節(jié)點傳遞通道的問題。
閃電網(wǎng)絡(luò)的優(yōu)點包括:一是交易費用低廉,無需礦工參與,用戶只需為中間節(jié)點支付通道費用。二是交易時間迅速,只有少數(shù)節(jié)點參與,維持秒級交易時間。三是數(shù)據(jù)存儲負擔小,大多數(shù)數(shù)據(jù)存儲在鏈下,對鏈上存儲壓力不大。四是隱私性,交易數(shù)據(jù)不上鏈,隱私性得到一定的保護。
接下來依次介紹閃電網(wǎng)絡(luò)中的關(guān)鍵組成部分:智能合約(微型銀行)、支付通道(RSMC 和 HTLC)、路由和費用機制。
智能合約
閃電網(wǎng)絡(luò)鏈上智能合約如同微型銀行運作。用戶 A 與 B (相互為交易對手) 如同微型銀行的存款人,而支付通道中的交易就是雙方調(diào)整各自存款余額的行為。微型銀行存在以下要素 :
· 點對點 : 只存在 A、B 雙方
· 無須信任 : 公開、透明、不可篡改、不可偽造
· 自治 : A、B 共同管理鏈上資產(chǎn)
· 雙簽 : 鏈上資產(chǎn)分配需要雙方簽名
· 承諾 : 雙方對存款余額調(diào)整方案達成?致,并且雙方簽名。此消息并不立刻廣播到鏈上,而是由雙方存儲在本地,并可經(jīng)由雙方同意進行覆蓋。
支付通道
支付通道是支付雙方以閃電網(wǎng)絡(luò)托管雙方的資產(chǎn),通過共同承諾重新清算雙方的存款余額,以達到價值轉(zhuǎn)移的效果,由 RSMC 及 HTLC 兩個合約所組成。
RSMC
首先假定交易雙方之間存在一個支付通道。交易雙方先預(yù)存一部分資金到微支付通道里,初始情況下雙方的分配方案等于預(yù)存金額。每次發(fā)生交易后,需要對調(diào)整后的資金分配方案共同進行確認,同時簽字把舊版的分配方案作廢。任何一方需要提現(xiàn)時,將他手里雙方簽署過的交易結(jié)果寫到區(qū)塊鏈網(wǎng)絡(luò)中并確認。需要強調(diào)的是,只有在提現(xiàn)的時候才需要通過區(qū)塊鏈。
任何一個版本的資金分配方案都需要經(jīng)過雙方的簽名認證才合法。任何一方在任何時候都可以提出提現(xiàn)的請求,提現(xiàn)時需要提供一個雙方都簽名過的資金分配方案(意味著某次交易后的結(jié)果,被雙方確認過,但未必是最新結(jié)果)。在一定時間內(nèi),如果另外一方拿出證明表明這個方案并非最新的交易結(jié)果,則提出方的資金歸于質(zhì)疑方(罰金機制);否則按照提出方的結(jié)果進行分配。罰金機制可以確保用戶不會故意拿舊交易結(jié)果來提現(xiàn)。即使雙方都確認了某次提現(xiàn),提出方的資金到賬時間要晚于對方。
· RSMC 交易構(gòu)造
圖 1:RSMC 交易構(gòu)造,來源:https://blocking.net/1516/bitcoin-lightning-network-rsmc/
假設(shè) Alice 及 Bob 想進行鏈下閃電網(wǎng)絡(luò)交易,并且雙方預(yù)存金額均是 0.5 BTC。
首先,Alice 和 Bob 各自將 0.5 BTC 的保證金打到一個 2-2 多重簽名地址當中 (即 Funding Tx)。Funding Tx 交易暫不被簽名,也不被廣播到鏈上。
接著,Alice 構(gòu)造一筆承諾交易 C1a,其中包含一筆退款交易 RD1a。C1a 的第一個輸出是 RD1a,由 Alice 另一個私鑰 Alice2 和 Bob 私鑰的多重簽名向 Alice 的地址轉(zhuǎn)入 0.5 BTC。但 RD1a 包含一個 seq 變量以防止其馬上進入?yún)^(qū)塊,而是要等 seq=100 個區(qū)塊。C1a 的第二個輸出是向 Bob 的地址轉(zhuǎn)入 0.5 BTC。Alice 將 C1a/RD1a 交給 Bob 簽名。
與此同時,Bob 構(gòu)造一筆承諾交易 C1b,其中包含一筆退款交易 RD1b。C1b 的第一個輸出是 RD1b,由 Bob 的另一個私鑰 Bob2 和 Alice 的私鑰的多重簽名向 Bob 的地址轉(zhuǎn)入 0.5 BTC。但 RD1b 包含一個 seq 變量,防止其馬上進入?yún)^(qū)塊,而是要等 seq=1000 個區(qū)塊確認。C1b 的第二個輸出是向 Alice 的地址轉(zhuǎn)入 0.5 BTC。Bob 將 C1b/RD1b 交給 Alice 簽名。
然后,Bob 對 C1a/RD1a 簽名并返給 Alice,同時 Alice 對 C1b/RD1b 簽名并返給 Bob。
最后,Alice 檢查 C1a/RD1a 以及 Bob 的簽名,確認后自己簽名。同時,Bob 檢查 C1b/RD1b 以及 Alice 的簽名,確認后自己簽名。
可以看出兩點:第一,C1a/RD1a 和 C1b/RD1b 在結(jié)構(gòu)上相互對稱,實際上是站在 Alice 和 Bob 各自立場上,對雙方預(yù)存金額均是 0.5 BTC 這一事實的不同表述(「一個產(chǎn)權(quán)關(guān)系,各自表述」)。這有點類似中國古代「券」的概念:以竹片寫作契約,分左右兩券,各執(zhí)其一,其中左券為契約中履約索償?shù)膽{證。但 C1a/RD1a 和 C1b/RD1b 在地位上比左右券平等。
第二,C1a 和 C1b 花費的是同一個交易輸出,因此 C1a 和 C1b 中只有一個能被打包進區(qū)塊。如果 Alice 廣播 C1a,那么 Bob 馬上就能拿到 0.5 BTC,而 Alice 要等 seq=1000 個區(qū)塊的確認后才能拿到 0.5 BTC。反之,如果 Bob 廣播 C1b,那么 Alice 馬上就能拿到 0.5 BTC,而 Bob 要等 seq=1000 個區(qū)塊的確認后才能拿到 0.5 BTC。換言之,如果交易的一方單方面廣播交易以關(guān)閉支付通道,他將延遲拿回自己的資金,而對方則可以馬上拿回自己的資金。這種安排構(gòu)成對后者的保護。
· RSMC 交易更新
假設(shè) Alice 向 Bob 支付 0.1 BTC,那么雙方在支付通道內(nèi)的資金分配方案將從 0.5/0.5 變?yōu)?0.4/0.6。與前文一樣,按照「一個產(chǎn)權(quán)關(guān)系,各自表述」的原則,Alice 和 Bob 將分別構(gòu)造 C2a/RD2a 和 C2b/RD2b,以確認調(diào)整后的資金分配方案(圖 2)。
圖 2:RSMC 交易更新,來源:https://blocking.net/1516/bitcoin-lightning-network-rsmc/
與此同時,雙方需要將舊版的資金分配方案(C1a/RD1a 和 C1b/RD1b)簽名作廢掉。這就要用到「顯示以撤銷」安排(Reveal to Revoke)。
在 C1a 的第一個輸出 RD1a 中,Alice 把自己的另一個私鑰 Alice2 交給 Bob,這意味著 Alice 放棄 C1a 而認可 C2a。如果 Alice 反悔,那么 Bob 可以用 Alice2 構(gòu)造一個懲罰交易 BR1a。懲罰交易把 Alice 的資金轉(zhuǎn)入 Bob 的地址,并且不受 seq 變量的制約。如果 Alice 廣播 C1a/RD1a,那么 Bob 將廣播 BR1a。BR1a 將在 RD1a 之前執(zhí)行,從而對 Alice 構(gòu)成懲罰。
圖 3:懲罰交易,來源:https://blocking.net/1516/bitcoin-lightning-network-rsmc/
反之,在 C1b 的第一個輸出 RD1b 中,Bob 把自己的另一個私鑰 Bob2 交給 Alice,這意味著 Bob 放棄 C1b 而認可 C2b。類似地,Alice 可以構(gòu)造懲罰交易對 Bob 進行反制。
由上面不難看出,seq 變量提供了一個實施懲罰和反制的時間窗口。
· RSMC 交易終止
關(guān)閉支付通道,并根據(jù)雙方最終認可的資金分配方案構(gòu)造交易并廣播。
HTLC
RSMC 已可以滿足基礎(chǔ)清算要求,但也存在明顯的局限性:通過 RSMC 方案進行結(jié)算的雙方,必須建立直連的支付通道才能支付。基于此痛點,閃電網(wǎng)絡(luò)需要另一個協(xié)議 HTLC。
HTLC 支持「條件支付」(CondiTIonal Payment),通過多個首尾相連的支付通道串聯(lián)起來形成的支付路徑,支持首尾雙方通過支付路徑完成支付。
HTLC 的核心是時間鎖和 Hash 鎖。時間鎖是交易雙方約定在某個時間 T 之內(nèi)提交才有效,超時則承諾方案失效(無論是提出方或接受方)。哈希鎖可以理解為,對一個哈希值 H,提供原像 R,使得 Hash(R) = H,承諾有效;否則失效。如果支付交易因為各種原因未能成功,時間鎖能夠讓交易參與各方收回自己的資金,避免欺詐行為。
假設(shè) Alice 想要開啟一個與 Bob 的交易,交易金額為 0.5 BTC,但 Alice 需要通過 Carol 才能與 Bob 建立通道進行交易(圖 4):
第一步:Bob 設(shè)定原像 R (也被稱為暗示數(shù)),把哈希值 H=Hash(R) 告訴 Alice。
第二步:Alice 通過 HTLC 向 Carol 進行條件支付:當且僅當 Carol 在 T 時刻前提供與哈希值 H 對應(yīng)的原像,Alice 才向 Carol 支付 0.5 BTC。類似地,Carol 通過 HTLC 向 Bob 進行條件支付:當且僅當 Bob 在 t 時刻前提供與哈希值 H 對應(yīng)的原像,Carol 才向 Bob 支付 0.5 BTC。其中,t