Hyperledger技術專家首談 FISCO BCOS
金融行業是最早開始採用區塊鏈技術,也是目前應用最成熟、案例最多的行業。受國情影響,我國金融業有很大的特殊性。另外,金融行業應用場景複雜,對效能要求也高,尤其是資料安全和資料隱私方面。所以針對這一特殊行業開發一個能解決行業特點的區塊鏈平臺也是情理之中的事情。
關注區塊鏈的朋友最近應該注意到一個活動,那就是基於底層開源平臺FISCO BCOS(以下簡稱“BCOS”)的金鍊盟區塊鏈應用大賽。BCOS是企業級的區塊鏈底層開源平臺,特別是針對國內金融行業有顯著優勢,同時也也存一些改進空間。
筆者從3個角度談談BCOS平臺體現出的一些優勢,並在最後附上了一些改進建議:
首先,在適應業務的複雜性方面優勢極強
一、許可權控制。
BCOS引入了CA證書以有效管理使用者和分配許可權,還針對金融行業複雜的業務環境設計出了ARPI(Account—Role—Permission—Interface)模型,即賬號、角色、許可權、介面。
賬號和角色的對應關係為N:1,即一個賬號(個人或組織)只能對應到一個角色,但一個角色可以包含零個到多個賬號。在實際操作中,同一角色可能有多個賬號,但每個賬號使用獨立且唯一的公私鑰對,發起交易時使用其私鑰進行簽名,接收方可通過公鑰驗籤知道交易具體是由哪個賬號發出,實現交易的可控及後續監管的追溯。角色與許可權的對應關係為N:M,即一個角色擁有多個許可權的集合,同時一個許可權也能被多個角色所擁有。
二、群簽名、環簽名
群簽名是驗籤時,只能獲取簽名者來自哪個群組,例如可以知道簽名者來自某個公司或部門,但是無法知道是某個人,此功能可以保證簽名的匿名性,但是簽名信息仍然可以通過第三方可信機構獲得。而環簽名則可以徹底隱藏簽名者身份,無法追蹤,環簽名可用於匿名交易,徵信,匿名存證等環境。BCOS還提供了比較複雜的許可權控制功能,例如可以防止同一個人具有兩個相互排斥的角色,防止“既當運動員又當裁判員”,還提供了多個賬號對應一個角色的功能
三、是彈性聯盟鏈共識框架方案
BCOS不僅可以支援PBFT和RAFT兩種演算法,還對PBFT改進,支援不同投票折有不同權重,有點類似於PoS,BCOS還允許使用者把業務資料納入共識機制等特性。例如某一業務的共識必須有指定的A機構投票,或者多少ABCDE中的任意兩家投票就可達成共識等等。
其次,在效能提升方面做足了功課
區塊鏈作為一個分散式、不同的節點都儲存和維護一份資料,資料冗餘大,資料交換也多,所以效能一直都是區塊鏈的瓶頸之一,再加上金融行業的節點通常分佈在各自的私有網路環境中,效能問題就更突出了。為了提升效能,BCOS提出了三大改進。
一、鏈上信使協議
BCOS提供了一個專門的P2P通訊協議——鏈上信使協議 AMOP(Advanced Messenger On-chain Protocol)以提高跨機構節點之間的通訊效率,提供鏈上鍊下資料交換介面,同時還有容錯機制。
金融機構的網路環境通常是比較複雜的,內外網通過多層防火牆隔離,不同機構直接直接通訊的難度大、速度慢,而AMOP可以提供點對點的快速直接通訊。那麼AMOP肯定在很多場景下發揮巨大的優勢。
區塊鏈系統的一大目的就是提高聯盟成員直接的相互協作和資料共享,區塊鏈和現有業務系統資料交換是必不可少的,現在大部分的做法都是業務系統呼叫區塊鏈系統的API來完成資料往區塊鏈讀寫。而BCOS允許區塊鏈系統呼叫鏈下系統的介面,這無疑可以提高資料互動能力,但是區塊鏈的智慧合約是部署在不同節點的,這要求每個部署節點都存在這樣的業務系統介面,同時還要控制好許可權 。
二、多鏈平行計算
BCOS支援多鏈和跨鏈,即根據不同的業務場景開設不同的鏈,這樣不同的業務在不同的鏈上可以平行計算,這不但可以大大提高整個系統的效能,同時還可以達到把不同業務資料相隔離的目的。
三、共識並行 。
BCOS通過平行計算提供PBFT提供共識速度。在標準PBFT共識演算法中打包驗證交易和驗證交易分別是領導節點和隨從節點對交易進行確認的操作,這是整個共識過程中最耗時的環節,而經過BCOS的改進,這兩步可以並行進行,從而大大提高共識達成的速度。
最後,易用性提升了使用者粘性
一、合約命名服務
合約命名服務CNS(Contract Name Service)
一個區塊鏈應用系統內很多智慧合約,要準確記住這些智慧合約的名字和作用是非常困難的。CNS 允許合約部署者給智慧合約指定一個容易記憶和辨識的名字,如“DepositContract”,顯而易見這是一個存款合約。業務層只需知道這個名字,就可以向存款合約發起交易,CNS 會在處理交易之前確認名字對應的合約地址,並執行合約。
二、瀏覽器
通過瀏覽器可以檢視和監控區塊鏈上實時發生的業務,便於管理;同時還支援監管節點及AML反洗錢介面,滿足金融監管需要。
三、擴充套件虛擬機器指令
BCOS智慧合約用Solidity語言編寫,但是Solidity執行效率低,為此BCOS提供了一個EthCall連線Solidity和C++的程式設計介面,複雜的業務可以使用C++編寫以提高效率。
回首,如何更進一步
BCOS針對金融行業,確實抓住了金融行業的不少痛點,也提供了相應的解決辦法,但是目前落地的專案數量較少,具體效果如何還需進一步觀察。BCOS技術上吸收了以太坊智慧合約易於開發的特性,增加了業務系統呼叫的能力。但是,有些特點顯得有些過激,比如BCOS增加了有“上帝”許可權的超級賬戶許可權,對於一個去中心化的區塊鏈系統這多少有點不妥;另外,BCOS的官方文件有的地方的更像是技術部落格。
BCOS從2017年開源開始,託管在github上(https://github.com/FISCO-BCOS), 採用GPL3.0開源協議,BCOS已經發展到1.5版本。成功開源一個軟體是需要多方相互協作的系統工程,騰訊和華為在這方面有很強的實力和經驗。華為貢獻的ServiceComb也剛剛從Apache基金會孵化以Top-Level的成績畢業就是一例。
金鍊盟區塊鏈應用大賽還處於專案資料提交階段,有興趣的朋友還可以報名參賽。筆者也相信通過這個比賽BCOS會吸引到不少企業和開發者關注、參與。
作者介紹:趙振華,Hyperledger技術專家,具有超過15年專業工作經驗,關注並研究IT前沿技術、培養技術人才,關注區塊鏈、人工智慧領域的應用研究。目前是超級賬本中國工作組聯席主席。