發布時間:2020-01-10所屬分類:科技論文瀏覽:1次
摘 要: 摘要區塊鏈技術作為分布式賬本的關鍵技術之一,其在不依賴于任何第三方可信機構的前提下,解決開放網絡中的信任問題,去中心化的特點使其有著廣泛的應用前景,但面臨著可擴展性不足的瓶頸.目前,區塊鏈可擴展性的瓶頸主要體現在2個方面:性能效率低下、功能
摘要區塊鏈技術作為分布式賬本的關鍵技術之一,其在不依賴于任何第三方可信機構的前提下,解決開放網絡中的信任問題,去中心化的特點使其有著廣泛的應用前景,但面臨著可擴展性不足的瓶頸.目前,區塊鏈可擴展性的瓶頸主要體現在2個方面:性能效率低下、功能難以擴展.以比特幣為例,從性能上講,當前僅支持7筆?秒的交易吞吐量,顯然無法滿足現今數字支付的場景,也無法承載在數字支付領域外的其他應用.從功能上講,當前不同區塊鏈系統之間的資產或數據難以交互.在現實情況中,不同的區塊鏈系統承載著不同的業務和需求.為此,需要實現鏈與鏈之間的交互,才能打通不同區塊鏈之間的信息或價值通道,避免每一區塊鏈成為信息或價值孤島,并在此基礎上實現價值互聯網.區塊鏈可擴展性的研究已經引起了學術界及產業界越來越多的關注,將從區塊鏈性能提升及功能擴展2個角度出發,分別介紹區塊鏈可擴展性領域的相關技術和研究進展,其中包括3類當前主流的、提升區塊鏈交易吞吐量的方案:鏈下支付網絡、Bitcoin-NG和分片機制;以及4類代表性的、實現區塊鏈功能擴展的跨鏈互通技術.分析對比不同方案的特性、適合場景及可能存在的不足之處,并在此基礎上給出進一步研究方向.
關鍵詞區塊鏈;可擴展性;鏈下支付通道;Bitcoin-NG;分片機制;跨鏈技術
區塊鏈技術起源于中本聰[1]提出的比特幣系統,其真正在開放式的P2P網絡中實現了不依賴于可信第三方的數字支付系統.這種去中心化的特性大大有別于現有的商業支付系統,改變了現有系統中的安全信任模型.在比特幣的信任模型中,用戶之間的信任源于對整個系統的信任,而不是任何第三方中介,只要整個系統的安全假設被滿足,這種信任關系就可以持續.去中心化的特性使得區塊鏈技術受到了越來越多的關注,有著廣闊的應用前景.
然而當前的區塊鏈系統存在嚴重的可擴展性瓶頸:
1)交易吞吐量不足.以比特幣系統為例,當前系統最高只能支持7筆?秒的交易確認(以區塊大小為1MB為例)[2],這使得其難以承擔大量交易的及時確認,無法滿足現實的應用需求.同時由于其共識過程中可能存在分叉,一筆交易至少需要6個區塊的確認(這是推薦的確認數),即至少需要等待1h才能確認單筆交易,這些都限制了其大規模的應用[3];
2)鏈與鏈之間的資產(數據)難以交互.不同的應用場景有著不同的用戶和需求,因此在現實情況中,很難要求一個區塊鏈系統來承載整個現實生活中的所有應用.為此需要實現鏈與鏈之間的交互,才能使得區塊鏈之間不會彼此成為孤島,從而實現真正的價值互聯.
本文闡述當前區塊鏈可擴展性問題的現狀,從區塊鏈提升性能和功能擴展2個方面,綜述當前主流的解決區塊鏈可擴展性的技術:鏈下支付網絡、Bitcoin-NG、分片機制和跨鏈技術,分析比較它們的優缺點,并指出現有方案所面臨的主要問題和未來研究方向.
1概述
區塊鏈技術提供了在開放網絡中新的信任模型,使得任何用戶可以在不需要第三方信任機構的情況下建立信任關系,這樣的信任關系源于用戶對整個系統的信任,而無需信任單個節點.
這樣的去中心化特性帶來的代價之一就是區塊鏈的性能,主要的指標就是系統的交易吞吐量.當前比特幣系統只能支持最高7筆?秒的交易吞吐量,而主流的支付平臺如Visa,能夠實現平均2000筆?秒,以及峰值56000筆?秒的交易處理速度[4],顯然兩者之間存在著巨大的差異.
這主要是由于比特幣系統的共識機制所帶來的代價.在傳統的數字支付平臺中,往往存在著中心化的第三方機構來完成交易的確認,系統中的其他節點無條件信任第三方機構的執行結果.而在以比特幣為代表的數字貨幣系統中,需要全網的節點來對系統中的每一筆交易進行共識,每個節點都擁有各自的賬本并且通過共識機制來完成對賬本的修改并保證一致性.在當前區塊鏈的共識機制中,無論是工作量證明機制(proofofwork,PoW)還是權益證明機制(proofofstake,PoS)本質上都是全網節點參與并競爭賬本的記賬權,并且保證了系統中的任何節點能夠獨占記賬權并進行雙花攻擊的代價極高或者攻擊成功的可能性極低.每輪擁有記賬權的用戶以區塊的形式確認交易,這樣的共識機制和區塊大小的限制使得每輪共識的交易確認數有限,造成了區塊鏈系統交易吞吐量的瓶頸.
相關知識推薦:區塊鏈技術論文容易成功發表嗎
顯然增大區塊容量是一個能夠提升區塊鏈交易吞吐量的簡單辦法[5-6].更大的區塊能夠使得一輪的共識過程中確認更多的交易.然而僅僅提高區塊大小并不能完全解決問題.首先是更大的區塊可能會導致網絡的擁塞,影響系統的性能,其次以比特幣為例,即使將當前的區塊大小提升到8MB,系統的交易吞吐量依然小于100筆?秒,依舊無法滿足現實的業務需求.
當前針對區塊鏈性能提升的主流方案主要包含3類:
1)利用支付通道技術,通過鏈下交易的方式來提升交易的吞吐量,同時保證交易的安全性;
2)Bitcoin-NG[7]等方案,將原先比特幣中的共識過程拆分成記賬人選取和交易排序2個階段,通過記賬人選取階段保證區塊鏈安全性,在交易排序階段由記賬人進行大量交易數據的處理.其在保證了分布式一致性的基礎上,提升了一輪共識過程中的交易確認數,從而在區塊鏈上增加交易吞吐量;
3)分片機制,通過將全網節點劃分成不同的集合(shard),每個集合并行地進行共識,確認交易,從而使得系統的交易吞吐量隨著全網中參與共識節點的增加而近似線性地增加.
區塊鏈的可擴展性問題除了表現在性能上,即系統的交易吞吐量外,在功能上也同樣存在瓶頸.區塊鏈技術誕生之初,主要是為了實現去中心化的數字支付系統,然而隨著人們對區塊鏈的理解和技術的發展,出現了各種區塊鏈項目,他們有著不同的特性,能夠滿足不同的業務需求.在數字支付領域,有ETH[8]基于賬戶模型實現了圖靈完備的智能合約,Zcash[9]利用零知識證明技術實現了交易過程中的隱私保護等.利用區塊鏈去中心化的特性,也可以實現除數字支付以外的應用[10],如分布式文件存儲、征信、供應鏈及金融應用等.然而在區塊鏈設計之初很少考慮到不同的鏈之間交互的需求,這使得不同的鏈之間完全割裂,不同的資產無法相互轉換,不同的應用無法相互協同,從而無法實現真正的價值互聯.為此,需構建跨鏈技術來解決鏈與鏈之間的交互問題.
當前代表性跨鏈技術主要包含4類:
1)公證人技術;
2)側鏈?中繼技術;
3)基于Hash鎖定技術;
4)分布式密鑰控制技術.
其中公證人技術引入了可信第三方,作為跨鏈過程中的資產保管人,側鏈?中繼技術利用SPV(simplifiedpaymentverification)證明、中繼鏈等技術,實現了不同區塊鏈之間的可信互通,基于Hash鎖定利用了Hash原像腳本,實現了公平的跨鏈資產交換,分布式密鑰控制技術利用分布式密鑰生成算法,使得跨鏈過程中的資產保管人角色由全網節點承擔,而不是少數第三方.
2性能擴展的主流技術
在本節中,我們主要介紹3類提升區塊鏈性能的主流技術,包括鏈下支付網絡技術,涉及經典閃電網絡及其相關改進方案的構造;提升鏈上交易容量的Bitcoin-NG方案;提升鏈上交易容量的分片機制.
2.1鏈下支付網絡
鏈下支付網絡通過將大量交易離線處理,同時將區塊鏈作為仲裁平臺,處理通道支付過程中的異常情況,如雙方對通道的狀態有分歧等,其間接地提升了系統的交易吞吐量.
雙向通道支付過程可分為3個階段:1)初始階段,用于雙方建立通道;2)支付階段,通道雙方完成支付,即通道狀態的更新;3)關閉通道階段,雙方關閉通道,贖回通道中自己的資金,在關閉通道過程中,一旦某一方作惡,即利用之前的通道狀態來謀利,將會觸發提交階段.在提交階段中,雙方提交證據(交易)使得外界(區塊鏈)確定通道內的真實狀態.
2.1.1閃電網絡
閃電網絡[11]是最早的通過鏈下支付通道形成支付網絡、提升區塊鏈交易吞吐量的方案.閃電網絡主要包含2個協議RSMC(recoverablesequencematuritycontract)和HTLC(hashedtimelockcon-tract)[12].其相關其他方案主要是在2個協議上進行修改.RSMC主要實現了雙人雙向的支付通道,使得通道雙方可以在交易不上鏈的情況下即時確認交易.HTLC則實現了系統內任意2個節點的轉賬可以通過一條支付通道來實現.通過這樣的方式,只要在系統中存在一條Alice到Bob之間的通路,Alice就可以借用他人的通道來實現支付操作,無需直接與Bob建立通道.跨通道支付協議是基于條件支付的想法,即接收者必須滿足一定的條件才能接受到錢款.在該協議中,條件支付的構造基于Hash原象,從而來同步支付路徑上所有用戶的支付情況[13].類似的條件支付在其他方案中也廣泛存在[14-15].
Spilman[16]首次提出了基于比特幣系統的通道支付協議.該協議包含2個階段,初始階段和支付階段.初始階段Alice首先向一個智能合約的腳本地址中進行充值,這個智能合約就是Alice和Bob的多簽名腳本,只有在2人共同對交易簽名時,才能從該腳本地址將錢轉出.這樣的支付通道建立后,雙方就可以在交易不上鏈的情況下即時確認交易.具體的過程:以Alice向Bob支付為例,Bob將包含此次支付后通道中金額的分配情況的交易發送給Alice,Alice確認金額后簽名并將其發送給Bob,Bob收到該交易后即確認這個支付操作的完成.當Bob想要關閉支付通道時,只需在最新的由Alice簽名的交易中附上自己的簽名后在系統中廣播,礦工確認這筆交易并上鏈后,該支付通道即為關閉.通道支付協議實現了交易的即時確認.這個通道支付協議的特點是在通道的支付過程中屬于Bob的金額始終是增長的,這保證了Bob只會向區塊鏈公布通道內的最新狀態,不然Bob就會受到損失.但是這樣的特點使得通道支付協議存在局限性,即該通道支付協議只支持單向的支付,只滿足單一的用戶向商家支付的場景.
然而當支付通道協議要支持雙向支付時,需要一種機制來保證通道雙方始終公布通道內的最新狀態,閃電網絡中的RSMC實現了這個機制.
主要原理.通過時間鎖(timelock)[17]的機制來延遲通道一方取回通道資產的時間,同時引入懲罰交易的概念來保證通道雙方的資產狀態是基于最新的交易情況,一旦某一方試圖使用之前的通道狀態來謀利,另一方可以在這段延遲時間內(timelock)發現,并沒收其通道內資產作為懲罰.
如圖1所示,每一輪通道狀態更新需要通道雙方更新Commitment交易以及上一輪Commitment交易所對應的懲罰交易.
1)初始階段.通道雙方A,B生成未簽名的funding交易,將各自的押金存入通道中,funding交易引用A與B的輸出.A,B生成初始的commitment交易C1,A,C1,B,確定通道內的初始狀態,并且交換對雙方commitment交易的簽名σA,σB.之后A,B雙方交互對funding交易的簽名,并將交易廣播到區塊鏈中.
2)支付階段.支付過程相當于通道狀態的更新,即產生新的commitment交易Cj,A,Cj,B.此時通道內上一輪狀態交易Cj-1,A,Cj-1,B和新產生的狀態交易Cj,A,Cj,B同時處于有效狀態,因此需要額外交互懲罰交易來作廢上一輪的狀態交易Cj-1,A,Cj-1,B.以A為例,A擁有狀態更新交易Cj,A,包含2筆輸出:輸出1是A在通道內的資金,輸出2是B在通道內的資金.正常情況下輸出1的花費交易RDj,A設置了時間鎖λ,即需要等待Cj,A經過λ區塊確認后,該交易才能上鏈.在懲罰交易的機制中,為了防止A公布上一輪的狀態交易Cj-1,A,A需要向B交互BRj-1,B,并簽名σA,該交易沒有時間鎖,可以在Cj-1,A上鏈后立即上鏈確認.一旦A公布Cj-1,A進行作惡,B立刻公布BRj-1,B,將Cj-1,A的輸出1作為罰金輸入到自己的地址中.
3)結束階段.關閉通道需要通道雙方公布最新的通道狀態信息Cj,A或者Cj,B.
HTLC用于跨通道支付,實現了多個支付通道間資產的公平交換.其利用的是條件支付,即支付成功的條件為收款者給出秘密(Hash的原像).在不同的通道間可以利用這個秘密完成跨通道的支付,保證了支付的原子性,即不同通道同時支付成功或者同時失敗.
如圖2所示,假設Alice需要向Dave完成支付,Alice并沒有直接和Dave建立的通道,但是Alice找到一條支付通路,即Alice,Bob,Caroline,Dave,使得Alice可以通過向Bob支付,Bob向Caroline支付,Caroline向Dave支付的方式完成支付.協議可以分為2個階段:第1階段Dave隨機生成原像R,并且將Hash值H(R)發送給Alice,Alice與Bob依此建立條件支付合約,通路上的其他節點以此類推.第2階段,當通路上所有通道都建立條件支付合約后,Dave通過出示Hash原像R,完成與Caroline的支付,Caroline獲得原像R后,能夠完成與Bob的支付,以此類推,最終Alice與Bob完成支付后整個流程結束.
2.1.2相關改進方案
針對閃電網絡的改進主要包含效率、支付成本、通信開銷、可持久化、尋路算法等.
1)Duplexpaymentchannel
Duplex[18]支付通道協議利用了比特幣系統中的時間鎖機制設計了InvalidationTree的結構,來保證通道的可持久性.同時利用2條單向通道,來實現A,B之間的雙向支付.A與B之間有2條單向支付通道,用于完成A,B間的相互支付.不同于閃電網絡需要設計懲罰機制來保證結束通道時,雙方公開最新的通道狀態,Duplex利用了單向通道支付方向單一的特點,保證了分別作為2條通道的收款者A,B只會公開各自收款通道的最新狀態.由于2條通道的金額互不聯通,在高頻交易的場景下,2條通道中付款者的押金將會很快被耗盡.因此,利用Invalidation樹和時間鎖機制設計了reset階段,使得2條通道內的資金可以相互轉移.
在reset階段中,通道雙方基于2條通道內共同的資金分配情況,調整2條單向通道的狀態,如A在通道中CAB作為付款者,在CBA中作為收款者,通過reset階段,A可以將自己在CBA中收到的資金轉入CAB中用作之后的支付.為了作廢原先的狀態,新的交易設置較小的時間鎖,使得新的狀態更新交易進入區塊鏈.每進行一輪reset將會使新的記錄通道狀態的交易上的時間鎖遞減.
支付階段和提交階段與傳統的單向通道支付協議類似,區別在于Duplex在結束通道時需要同時公開2條通道內的狀態.
2)Raidennetwork
在閃電網絡方案中存在著效率及可用性不足的缺陷.在其雙向支付通道協議中,受制于比特幣系統腳本的限制,為了防止通道某一方作惡,另一方需要存儲對方在之前的每一輪交互的懲罰交易,而伴隨著高頻交易持續的發生,存儲這些交易的代價將會越來越大,給用戶帶來極大的負擔.而在跨支付通道協議中,在當前比特幣系統中也僅支持基于Hash原象的構造,無法支持其他更靈活的條件.
這些問題在以太坊的方案中得到了解決.由于以太坊實現了圖靈完備的腳本系統,可以實現更為靈活的智能合約.因此基于以太坊模型設計的Raiden[19]網絡盡管借鑒了上述閃電網絡的構造,卻并不存在上述問題.在Raiden網絡中,通道支付的懲罰交易是基于用戶雙方對交易輪數i的簽名,只要一方出示了雙方對更高交易輪數i的交易的簽名,即可判定另一方作惡[20].
3)Sprites
Miller等人[21]提出了Sprites的方案,是針對閃電網絡方案效率方面的改進,目的是解決當跨通道支付不成功時,用戶所消耗的時間成本過大的問題.顯然,通道支付協議可以看作一種儲蓄卡機制,用戶可以通過通道內儲蓄的金額,來為他人提供跨通道支付,跨通道支付的手續費即用戶提供跨通道支付的激勵,類似儲蓄卡的利息.然而用戶在跨通道支付的過程中,用于支付的資金是處于凍結狀態,直到跨通道支付成功或者失敗.在該過程中用戶無法使用被凍結的資金,因此用戶在跨通道支付時所付出的成本可以用支付過程中被凍結的資金和所凍結的時間的乘積來衡量.
SCISSCIAHCI