區(qū)塊鏈架構(gòu)存在的問題和挑戰(zhàn)
現(xiàn)實(shí)世界不可能是完美的,我們往往在各種三元悖論的權(quán)衡之中尋找平衡點(diǎn)。在經(jīng)濟(jì)學(xué)上有個(gè)“蒙代爾不可能三角”(Mundellian Trilemma),指的是一個(gè)國家不可能把獨(dú)立貨幣政策(Monetary Policy)、固定匯率(Exchange Rate)和資本自由流動(dòng)(Capital Mobility)三者兼顧到,往往只能三取二舍一。在分布式計(jì)算領(lǐng)域,也有人們認(rèn)可并熟知的CAP理論,即一致性(Consistence)、可用性(Availability)和分區(qū)容錯(cuò)性(Network Partitioning)三者不能得兼,只能三選二,如圖10-1所示。
蒙代爾不可能三角和CAP理論
而在區(qū)塊鏈領(lǐng)域,目前公認(rèn)的一個(gè)“不可能三角”是在去中心化(Decentralization)、安全性(Security)和擴(kuò)展性(Scalability)上也只能三者選其二,如圖10-2所示。完全去中心的區(qū)塊鏈架構(gòu)會(huì)帶來性能和安全性方面的問題。傳統(tǒng)的分布式架構(gòu),例如云計(jì)算,是通過把一個(gè)任務(wù)切片,分發(fā)到多個(gè)節(jié)點(diǎn)來并行計(jì)算,最后將結(jié)果匯總回單一節(jié)點(diǎn),因此效率很高,但中心化程度也很高。完全去中心的區(qū)塊鏈架構(gòu)是把同一個(gè)任務(wù)放在多個(gè)節(jié)點(diǎn)同時(shí)運(yùn)行,結(jié)果最后進(jìn)行共識(shí),共識(shí)的結(jié)果成為最終狀態(tài)。可想而知,其效率會(huì)遠(yuǎn)遠(yuǎn)低于前者,但在安全性和可信任程度上又遠(yuǎn)遠(yuǎn)高于前者。
區(qū)塊鏈不可能三角理論
根據(jù)區(qū)塊鏈的不可能三角理論,很明顯目前以太坊架構(gòu)是以犧牲擴(kuò)展性來換取去中心和安全性的。以太坊上平均每秒大約能做15筆交易,所以至今為止,除了ICO或數(shù)字資產(chǎn)發(fā)行這種應(yīng)用外,以太坊還沒有出現(xiàn)上規(guī)模的應(yīng)用。2017年出現(xiàn)的一個(gè)區(qū)塊鏈養(yǎng)貓游戲“CryptoKitties”就造成了以太坊網(wǎng)絡(luò)的擁堵。因此,標(biāo)榜區(qū)塊鏈3.0的其他各類區(qū)塊鏈平臺(tái)項(xiàng)目,紛紛針對比特幣、以太坊的性能問題提出了自己的改進(jìn)方案。然而,目前區(qū)塊鏈落地應(yīng)用少,卻不只是因?yàn)閰^(qū)塊鏈性能上的問題。我們首先來看看當(dāng)前區(qū)塊鏈平臺(tái)的問題和痛點(diǎn)。
交易性能限制:比特幣的理論設(shè)計(jì)限制了其每秒只能完成7筆交易,通常每秒只能完成1~2筆;以太坊大約每秒處理10~20筆交易。另外,PoW這種最終一致性共識(shí)算法,使得如比特幣的交易需要獲得6個(gè)以上的確認(rèn)才能在很大概率上保證交易的最終確定性,因此交易確認(rèn)的時(shí)間也長
擴(kuò)展性限制:在需要立即交易確定性的場景,例如聯(lián)盟鏈或私有鏈的場景中,一般節(jié)點(diǎn)數(shù)會(huì)受限。例如使用基于Paxos或BFT(拜占庭容錯(cuò))等基于狀態(tài)機(jī)復(fù)制(SMR)共識(shí)算法的區(qū)塊鏈平臺(tái),參與共識(shí)的節(jié)點(diǎn)數(shù)一般不能超過兩位數(shù)。
易用性:目前智能合約的開發(fā)、部署和調(diào)用都需要由專業(yè)區(qū)塊鏈編程人員進(jìn)行,區(qū)塊鏈在易用性和對應(yīng)用的支持上還存在較大障礙。
兼容性和互操作性:目前大部分的區(qū)塊鏈平臺(tái)都是獨(dú)立系統(tǒng),不支持區(qū)塊鏈上的資產(chǎn)在不同鏈之間的流轉(zhuǎn),不同鏈上的應(yīng)用也沒有辦法做到跨鏈的集成和整合。
數(shù)據(jù)存儲(chǔ):區(qū)塊鏈上數(shù)據(jù)存儲(chǔ)容量有限制,特別是每個(gè)全節(jié)點(diǎn)需要存儲(chǔ)的數(shù)據(jù)量越來越大,急需更低成本和高效的分布式存儲(chǔ)方案。
智能合約形式化證明:形式化證明(Formal Verification),出于成本的考慮,以前往往只應(yīng)用在硬件設(shè)計(jì)中,后來慢慢被引入軟件行業(yè)。形式化證明通過數(shù)學(xué)方法來證明代碼中是否存在漏洞或缺陷。與傳統(tǒng)的軟件測試不同,形式化證明能夠證明一個(gè)系統(tǒng)沒有任何可以想到的缺陷,這可以從根本上杜絕軟件漏洞。由于區(qū)塊鏈上的智能合約一經(jīng)部署就不能修改,安全性至關(guān)重要,一旦有未被檢測出的漏洞和缺陷,就會(huì)給黑客大肆作惡的機(jī)會(huì)。形式化證明是在未部署合約前對智能合約代碼做邏輯上的證明,證明合約的執(zhí)行具有正確性。形式化的證明一般要求編程語言具備嚴(yán)格的邏輯完備性和自動(dòng)推理能力。目前以太坊的智能合約編程語言Solidity并不具備這種能力,而傳統(tǒng)上的一些形式證明工具和編程語言還沒有和區(qū)塊鏈做有效結(jié)合。
數(shù)據(jù)同步性能限制:鏈上數(shù)據(jù)每時(shí)每刻的增長,帶來的問題就是網(wǎng)絡(luò)上數(shù)據(jù)同步的負(fù)擔(dān)越來越大,同步速度也越來越慢。
共識(shí)機(jī)制數(shù)學(xué)證明:很多區(qū)塊鏈平臺(tái)使用的共識(shí)算法并沒有給出嚴(yán)格的數(shù)學(xué)證明,證明其在假設(shè)的網(wǎng)絡(luò)通信環(huán)境內(nèi),能夠在少數(shù)故障節(jié)點(diǎn)存在的情況下,依然能夠在有限的時(shí)間內(nèi)達(dá)成共識(shí),并保證共識(shí)結(jié)果的正確性。特別是在公有鏈情況下,很多共識(shí)算法,特別是基于權(quán)益的PoS共識(shí),缺少嚴(yán)格的數(shù)學(xué)證明。
區(qū)塊鏈平臺(tái)的典型需求和發(fā)展方向
1、區(qū)塊鏈平臺(tái)的典型需求
區(qū)塊鏈上的應(yīng)用根據(jù)場景不同,有以下不同維度的需求。
隱私保護(hù):交易參與方和交易的細(xì)節(jié)不能泄露給交易無關(guān)方。目前比特幣、以太坊等只是提供半匿名機(jī)制,不能保證在大數(shù)據(jù)分析下隱私交易信息不被泄露。
鏈上安全性:在區(qū)塊鏈網(wǎng)絡(luò),特別是公有鏈場景下如何容錯(cuò),特別是拜占庭容錯(cuò),防止女巫、重放、DDoS等攻擊是一個(gè)十分重要的需求。
數(shù)據(jù)真實(shí)性:雖然在區(qū)塊鏈上的數(shù)據(jù)不可篡改,但現(xiàn)實(shí)的數(shù)據(jù)卻沒有辦法防止人為造假。如何保障鏈下數(shù)據(jù)真實(shí)上鏈,又不重回到中心化的Oracle(預(yù)言機(jī))機(jī)制,也是非常關(guān)鍵的需求。Oracle是一個(gè)連接鏈下鏈上的數(shù)據(jù)真實(shí)性保障機(jī)制,通常需要由權(quán)威性機(jī)構(gòu)來做Oracle,但如何防止Oracle的中心化是未來預(yù)言機(jī)機(jī)制設(shè)計(jì)的關(guān)鍵考慮點(diǎn)。
有用工作量證明:比特幣挖礦造成能源的浪費(fèi)巨大,有人估算目前比特幣一年挖礦所耗費(fèi)的電量已經(jīng)相當(dāng)于愛爾蘭一年的用電量。比特幣的工作量證明只是不停地做哈希運(yùn)算,計(jì)算結(jié)果也沒有什么實(shí)際用途。如果既能做有用的工作量,又能提供一個(gè)比較穩(wěn)定的共識(shí)機(jī)制,是非常有吸引力,但也是比較難的研究方向。
密碼安全性:量子計(jì)算目前雖然還是起步的初始階段,離發(fā)展到商用可能還要一大段距離,但量子計(jì)算的Shor算法已經(jīng)在理論上能破解公鑰加密系統(tǒng),區(qū)塊鏈所基于的公鑰簽名系統(tǒng)都將面臨被量子計(jì)算破解的威脅。另一方面,量子計(jì)算的Grover算法雖然不能在數(shù)量級(jí)上降低破解哈希算法的難度,但也能減少一部分破解哈希算法的計(jì)算量。因此,抗量子密碼算法也成為目前區(qū)塊鏈的一個(gè)研究方向。
治理和監(jiān)管:很多區(qū)塊鏈項(xiàng)目目前都是依靠幾個(gè)核心開發(fā)人員維護(hù)。一些關(guān)鍵參數(shù)的修改和平臺(tái)發(fā)展方向的決策還是由幾個(gè)人決定,缺少一個(gè)比較透明、嚴(yán)格的治理架構(gòu)和監(jiān)管體系。如何設(shè)計(jì)一套適合于區(qū)塊鏈的治理和監(jiān)管體系,使得區(qū)塊鏈平臺(tái)能健康發(fā)展,是當(dāng)下很多區(qū)塊鏈項(xiàng)目面臨的一個(gè)問題。另一方面,一些采用常規(guī)計(jì)算的破解現(xiàn)有密碼學(xué)技術(shù)的算法也會(huì)被發(fā)現(xiàn),像2017年谷歌成功實(shí)現(xiàn)對SHA-1的有效碰撞,也說明即使不考慮量子計(jì)算的威脅,密碼安全性也是一個(gè)需要重點(diǎn)關(guān)注的問題。
智能合約升級(jí)、監(jiān)控:智能合約一經(jīng)部署就不能更改,但傳統(tǒng)軟件都需要不斷完善和升級(jí)。另外在很多場景下,智能合約的邏輯也需要適應(yīng)需求的變化。因此如何對智能合約升級(jí),以及如何監(jiān)控智能合約的運(yùn)行,也是一個(gè)比較常見的需求,特別是對企業(yè)客戶來說。
防止算力中心化:由于比特幣的價(jià)格攀升,利益驅(qū)使比特幣挖礦成為一場算力的軍備競爭。比特幣挖礦的算力不斷趨于中心化,目前五大礦池的算力已經(jīng)超過全網(wǎng)算力的70%。防止算力集中,目前常用的方法是設(shè)計(jì)需要存儲(chǔ)量大的工作量證明機(jī)制,這樣在成本上抵抗做專門的算力挖礦芯片(ASIC),使得普通人仍然可以用通用處理器,像CPU、GPU來參與挖礦共識(shí)。
身份認(rèn)證及權(quán)限控制:很多區(qū)塊鏈的應(yīng)用,特別是企業(yè)級(jí)的聯(lián)盟鏈應(yīng)用,需要確認(rèn)用戶的身份,并根據(jù)其身份來授予不同的權(quán)限。安全高效的身份ID管理、身份認(rèn)證和權(quán)限控制是一個(gè)重要的需求。
移動(dòng)區(qū)塊鏈:目前區(qū)塊鏈系統(tǒng)都是運(yùn)行在服務(wù)器節(jié)點(diǎn)上,手機(jī)上只是錢包或輕節(jié)點(diǎn)。但未來隨著移動(dòng)設(shè)備算力以及存儲(chǔ)能力的提升,直接在移動(dòng)設(shè)備組成的去中心化網(wǎng)絡(luò)成為可能,成為真正意義上的移動(dòng)區(qū)塊鏈平臺(tái)。
2、區(qū)塊鏈平臺(tái)的發(fā)展方向
上述對區(qū)塊鏈平臺(tái)的行業(yè)需求,驅(qū)動(dòng)著區(qū)塊鏈向?qū)嵱眯苑€(wěn)定性和安全性方向發(fā)展,而具體的技術(shù)創(chuàng)新則是在以下一些方向上拓展。
區(qū)塊鏈操作系統(tǒng):類似傳統(tǒng)電腦操作系統(tǒng)給電腦使用者和應(yīng)用開發(fā)提供底層服務(wù)一樣,區(qū)塊鏈操作系統(tǒng)也給上層去中心化應(yīng)用的開發(fā)和運(yùn)行提供支撐的功能和環(huán)境,這些功能包括認(rèn)證、權(quán)限控制、數(shù)據(jù)存取、合約編譯、測試級(jí)部署等支撐性功能。操作系統(tǒng)提供易用性,降低使用區(qū)塊鏈以及開發(fā)DApp的門檻。
區(qū)塊鏈中間件:和傳統(tǒng)中間件一樣,區(qū)塊鏈中間件屏蔽不同區(qū)塊鏈平臺(tái)的接口差異,使得應(yīng)用能夠方便地開發(fā)支持不同區(qū)塊鏈的DApp,另外也提供跨鏈整合功能,使得應(yīng)用能夠集成整合多個(gè)區(qū)塊鏈平臺(tái)。
區(qū)塊鏈網(wǎng)絡(luò)(多鏈):和比特幣或以太坊的單鏈技術(shù)不一樣,區(qū)塊鏈網(wǎng)絡(luò)提供一個(gè)網(wǎng)絡(luò)平臺(tái)。在該平臺(tái)下有多條鏈,每個(gè)鏈上都可以發(fā)行自己的虛擬資產(chǎn),鏈與鏈之間也可以通過區(qū)塊鏈網(wǎng)絡(luò)平臺(tái)中的主鏈或中繼來實(shí)現(xiàn)跨鏈互連。
側(cè)鏈技術(shù):側(cè)鏈最早來自于一個(gè)無須改變主鏈(原指比特幣的主鏈),但又能通過建立一個(gè)側(cè)鏈來擴(kuò)展主鏈功能的概念。主鏈的資產(chǎn)可以安全轉(zhuǎn)移到側(cè)鏈上流通,最好也能安全地回到主鏈。
區(qū)塊擴(kuò)容:區(qū)塊容量和能打包的交易多少有關(guān),由于區(qū)塊鏈的出塊頻率相對固定,因此當(dāng)區(qū)塊擴(kuò)容之后,每秒交易量(TPS)也會(huì)相應(yīng)提高。
鏈下計(jì)算:區(qū)塊鏈的鏈上計(jì)算雖然能安全可靠,但是共識(shí)開銷很大,因此把有些計(jì)算移到鏈下來處理,從而提升交易速度是一個(gè)必然的選擇。
分區(qū)共識(shí)、分片:以太坊的性能問題讓以太坊的開發(fā)社區(qū)也意識(shí)到,當(dāng)每個(gè)交易、每步智能合約的執(zhí)行都需要在所有的共識(shí)節(jié)點(diǎn)去完成的時(shí)候,其擴(kuò)展性是無法支撐應(yīng)用的。因此,分片處理、采用局部共識(shí)代替全局共識(shí)不可避免。
區(qū)塊鏈存儲(chǔ):區(qū)塊鏈上能存儲(chǔ)的空間有限,一般來說只是存儲(chǔ)數(shù)據(jù)的哈希值,也就是數(shù)據(jù)的指紋。因此如何解決區(qū)塊鏈數(shù)據(jù),特別是代碼或狀態(tài)數(shù)據(jù)的存儲(chǔ)是當(dāng)今區(qū)塊鏈平臺(tái)都面臨的一個(gè)問題。
共識(shí)機(jī)制:區(qū)塊鏈最核心的部分是其共識(shí)機(jī)制。不同的共識(shí)機(jī)制有著不同的共識(shí)屬性,同時(shí)也決定其每秒交易量,因此共識(shí)機(jī)制的設(shè)計(jì)也成為區(qū)塊鏈底層平臺(tái)設(shè)計(jì)的一個(gè)關(guān)鍵環(huán)節(jié)。
評(píng)論
查看更多