導讀:制約區(qū)塊鏈投入大規(guī)模應用的瓶頸很多,很難在一篇文章里完全介紹,所以我們做了一個系列四篇文章來逐個探討。這個系列分為四篇,分別從數(shù)據(jù)同步的吞吐量,跨中心的控制管理機制,多參與方的安全隱私交易,以及殺手級應用的實踐與特點幾個方面來解析。我們首先來談談區(qū)塊鏈數(shù)據(jù)同步及吞吐量方面的難點及發(fā)展。
制約區(qū)塊鏈投入大規(guī)模應用的瓶頸很多,很難在一篇文章里完全介紹,所以我們做了一個系列四篇文章來逐個探討。這個系列分為四篇,分別從數(shù)據(jù)同步的吞吐量,跨中心的控制管理機制,多參與方的安全隱私交易,以及殺手級應用的實踐與特點幾個方面來解析。我們首先來談談區(qū)塊鏈數(shù)據(jù)同步及吞吐量方面的難點及發(fā)展。
公有鏈和聯(lián)盟鏈的區(qū)別
簡單來說,區(qū)塊鏈是一種分布式數(shù)據(jù)庫,其特殊之處在于無(弱)中心化。從面向人群來分類,區(qū)塊鏈可分為公有鏈和聯(lián)盟鏈(或私有鏈)兩大類。公有鏈面向所有參與者開放,所有人都可以參與;聯(lián)盟鏈,通常認為與私有鏈類似,面向特定的組織團體或者單獨的個人或?qū)嶓w開放。公有鏈和聯(lián)盟鏈在實現(xiàn)上有很多不同,其中最顯著的不同點就是共識機制的差異。
公有鏈共識機制的制約
區(qū)塊鏈網(wǎng)絡上的多個參與方,在每次更新鏈上數(shù)據(jù)時(例如轉(zhuǎn)賬)必須要獲得一定數(shù)量的參與方認可才可以進行,這個認可過程就是共識機制。該機制的主要目標是在參與方控制多個節(jié)點的情況下,杜絕多個參與方聯(lián)合造假的可能性。
目前,以比特幣、以太坊為代表的公有鏈,其共識機制并不適合商業(yè)場景使用,主要有三個原因。第一是性能遠低于商用需求,以金融系統(tǒng)為例,延遲1秒已經(jīng)難以適用于多數(shù)場景。 而延遲1秒會帶來什么?除了降低用戶體驗以外和熱點賬戶使用率外,第三方也會獲得充足時間通過高頻交易策略給交易人帶來損失,但最為恐怖的是, 這區(qū)區(qū)幾秒的延遲可能會破壞整個體系個個子系統(tǒng)對交易”超時“的定義從而導致生產(chǎn)系統(tǒng)故障。因此目前耗時數(shù)秒,甚至數(shù)分鐘的共識機制基本無法列入候選;第二是弱最終一致性,會導致參與方無法在固定時間內(nèi)100%確定交易的成功與否,例如公有鏈上的一個現(xiàn)象是,一筆最初顯示成功的交易有可能在幾個小時后判定為失敗,這在現(xiàn)實金融業(yè)場景中是無法接受的,因為這種特性同樣可能帶來金錢上的損失;第三是安全性,公有鏈的安全機制一般是靠參與者算力或者代幣持有量來維持的,對資金額巨大的金融機構(gòu)或者國家機關(guān)來說,是完全有能力創(chuàng)建或直接控制大部分資源,進而徹底破壞整個區(qū)塊鏈網(wǎng)絡。因此僅僅通過算力或代幣規(guī)模進行利益綁定保證的安全機制是難以承擔關(guān)系到金融體系的大格局網(wǎng)絡的。
聯(lián)盟鏈共識機制及瓶頸
為了解決公有鏈共識機制的問題,業(yè)內(nèi)引入了聯(lián)盟鏈。在聯(lián)盟鏈場景中,共識機制里防止造假節(jié)點的問題通常稱為拜占庭將軍問題;能夠防止惡意造假節(jié)點的算法,也被統(tǒng)稱為拜占庭將軍算法(BFT)。用通俗的話講,共識機制就是讓參與方來一起投票來決定是否接受一筆交易。其中較有代表性的是PBFT算法(PBFT誕生于1999年,因為區(qū)塊鏈的推動終于在沉睡十幾年后獲得長足發(fā)展的可能)。這些年中PBFT算法的衍生品能叫得出來名字的也有不下20種?;赑BFT的聯(lián)盟鏈共識機制,雖然在理論上大大減輕了公有鏈問題的嚴重性,但其自身的一些劣勢也長期限制了它們的發(fā)展。理想的商用共識機制必須是完整、穩(wěn)定的,并且能夠應對所有可能發(fā)生的異常。什么是異常?簡單說就是如果你去銀行轉(zhuǎn)賬,但銀行系統(tǒng)由于之前被黑客攻擊或者網(wǎng)絡堵塞等各種原因不能工作了。而xBFT系列算法的最大問題,正是由于需要處理各種異常而引入的復雜性。以2003年發(fā)表的第二版完整版本PBFT算法論文為例,文中只有一小部分論述算法的正常流程,絕大部分內(nèi)容都在探討各種可能出現(xiàn)的異常情況以及處理方案。目前國際上一般認為可用性最高的超級賬本Fabric 0.6版本中的PBFT實現(xiàn),也只實現(xiàn)了PBFT的基本功能,在“正常環(huán)境”下可以工作,離真正完整、穩(wěn)定、可商用的目標還尚需時日。至于后面的S(P)BFT,目前也還是在前期開發(fā)中。
除了以上問題,xBFT系類算法的另一個通病是多節(jié)點數(shù)據(jù)執(zhí)行的確定性,節(jié)點分布在各個不同的地點,但是要求它們對同樣指令的計算結(jié)果必須是一致的。雖然概率很低,但同樣指令在不同環(huán)境不同物理機下執(zhí)行結(jié)果不一致的情況也確實發(fā)生過。不解決這個問題,就無法應用在一些相對嚴苛的系統(tǒng)環(huán)境里,如金融類系統(tǒng)。解決這個問題需要對預計算的結(jié)果進行背書,雖然PBFT算法設計之初這類問題就被提及,遺憾的是目前各種xBFT實現(xiàn)中極少考慮到這個問題。
除此之外,xBFT算法下如何動態(tài)增加節(jié)點也是一個多故障點的復雜工程,雖然已經(jīng)有一些這方面的嘗試(如BFT-SMaRt,已經(jīng)開發(fā)5年 ),但是由于高復雜性目前還很難保障最基本的穩(wěn)定運行,離商用需求的穩(wěn)定性需求和各種異常處理機制的完善也還相差甚遠。對這些問題的深入理解,也是平安壹賬通在設計FiMAX產(chǎn)品時在共識機制的選擇及開發(fā)上,盡量采用成熟度可商用且容易被接受的機制。
擴大吞吐量的嘗試
在公有鏈上,擴大吞吐量近年來一直有很多嘗試。使用的策略大多分為兩類,第一類是鏈下清結(jié)算模式,在必要的時候才將交易寫到鏈上,這類以閃電網(wǎng)絡為代表;另一類是多鏈分片模式。
前者(鏈下清結(jié)算模式)雖然概念新穎,涉及點除了技術(shù)層面,還新增加了鏈下商業(yè)角色,對商業(yè)模式也有創(chuàng)新。該模式在公有鏈網(wǎng)絡上才剛剛開始測試,并且功能上單一,短時間內(nèi)還無法適用在需求繁瑣的商業(yè)場景中。相比前者,后者(分鏈模式)雖然現(xiàn)在有了很多變種(如DAG)但難點則都主要集中在技術(shù)層面,由于分布式存儲特性的限制,為換取更大的吞吐量往往要犧牲部分數(shù)據(jù)一致性,勢必會為保證準確性而增加交易延遲,甚至是長時間不確定延遲。對于最終一致性問題本身已經(jīng)不盡人意的區(qū)塊鏈系統(tǒng)來說,分鏈分片的引入也許在公鏈環(huán)境能被接受,但在現(xiàn)實金融關(guān)鍵任務系統(tǒng)中的運用上不現(xiàn)實。
跨鏈的問題
近年來各種區(qū)塊鏈和代幣越來越多,代幣之間的交易也隨之增長,一個逐漸變?yōu)闊狳c的話題就是“跨鏈”交易。從分布式數(shù)據(jù)庫領(lǐng)域來看,跨鏈并不是一個新話題,如何實現(xiàn)兩個不同數(shù)據(jù)庫之間的更新同步,在該領(lǐng)域已經(jīng)被探討和實踐了幾十年。其中最重要的問題就是,如何保證兩個或多個數(shù)據(jù)庫上的信息更新是同時成功或者同時失敗的,對區(qū)塊鏈而言,就是不同區(qū)塊鏈網(wǎng)絡上的同一筆交易,要被兩個網(wǎng)絡同時認定為成功或失敗,不能一邊認定成功,另一邊認定失敗。舉個例子,如果一個客戶用現(xiàn)金購買股票,當現(xiàn)金轉(zhuǎn)出的同時股票必須同時轉(zhuǎn)給這個客戶,不能出現(xiàn)款扣了但股票轉(zhuǎn)讓失敗,或者股票成功轉(zhuǎn)給了客戶但沒有扣款。目前,業(yè)內(nèi)提出來的“跨鏈”技術(shù)雖然多種多樣,但其原理都是分布式數(shù)據(jù)庫理論中“二階段提交”方法的變種。相比傳統(tǒng)的二階段提交,更為復雜的是,區(qū)塊鏈的最終一致性導致“跨鏈”時的交易失敗率提高。尤其在二階段提交中對“超時”的定義和判斷上,這個原本制約二階段提交廣泛應用的問題,會讓區(qū)塊鏈交易延遲不可控的問題進一步惡化。
因此,我們在設計FiMAX產(chǎn)品中秉承的理念是,突破吞吐量的限制必須,也只能,從單鏈開始,多鏈、跨鏈等機制都要盡量避免,不到迫不得已不要輕易使用。目前,F(xiàn)iMAX網(wǎng)絡上每個節(jié)點只需要2.1Ghz 8核CPU、無跨鏈、無分鏈分片的情況下,支持每秒5000+筆的交易吞吐量,并能夠通過簡單方便的硬件升級迅速成倍提高單鏈吞吐量到數(shù)萬級別,綜合性能與傳統(tǒng)數(shù)據(jù)庫已很接近,已具備支撐大規(guī)模商業(yè)應用的能力。
在跨鏈方面,F(xiàn)iMAX系列體系為客戶提供三套方案。因為由于網(wǎng)絡延遲,算法復雜等原因造成的一些無法避免問題, FiMAX的三套跨鏈方案的理念是讓客戶根據(jù)自身的需求在復雜度和效率上做出平衡選擇。
發(fā)展方向
雖然還在起步階段,但平安投產(chǎn)的區(qū)塊鏈應用已經(jīng)超過14個,國際國內(nèi)專利也發(fā)表了60份以上。以我們的實踐經(jīng)驗來看,要想說服大型機構(gòu)真正采用區(qū)塊鏈技術(shù)作為生產(chǎn)應用,而非僅僅是PoC實驗項目,首先最值得關(guān)注的就是數(shù)據(jù)同步的穩(wěn)定性和一致性,因為只要涉及真實生產(chǎn)數(shù)據(jù)的場景就必須是穩(wěn)定壓倒一切。 因為在關(guān)鍵任務系統(tǒng)中,任何“暫時”性的數(shù)據(jù)不一致或者理論上的“小概率”事件都會帶來災難性的后果。