聯盟鏈如何突破吞吐和存儲瓶頸 | DoraSpeaker直播實錄

 

FISCO BCOS是完全開源的聯盟區塊鏈底層技術平臺,由金融區塊鏈合作聯盟(深圳)(簡稱金鍊盟)成立開源工作組通力打造。開源工作組成員包括博彥科技、華爲、深證通、神州數碼、四方精創、騰訊、微衆銀行、亦筆科技和越秀金科等金鍊盟成員機構。

代碼倉庫:https://github.com/FISCO-BCOS

 

2019年4月24日晚上7點,DoraHacks社區邀請FISCO BCOS開源社區參與了社羣直播活動「DoraSpeaker」。火訊財經主編 趙一丹作爲主持人,就《聯盟鏈如何突破吞吐和存儲瓶頸》,獨家專訪了FISCO BCOS高級架構師 莫楠。來自北京、西安、南京等地的150餘位hacker小夥伴,一起參與了本次羣直播。

本文是直播精彩回顧,如果關於這次分享你有更多的問題想要請教莫楠老師,歡迎留言聯繫。

Part 1 問答環節

 

第一問:目前區塊鏈要商用落地,在技術方面還是存在重重阻礙和挑戰,尤其是易用性、隱私性和可擴展性問題。FISCO BCOS在區塊鏈底層技術和業務架構的整體設計思路是怎樣的?在掃清阻撓技術商用的障礙上,做了哪些嘗試?

 

莫楠:

FISCO BCOS作爲支持“分佈式商業”模式的新一代公衆聯盟鏈,對於區塊鏈底層技術提出了新的要求,除了標準的區塊鏈特性之外,還有專門服務於公衆聯盟鏈的數個特性。

首先,由於公衆聯盟鏈並不是單一鏈條,所以需要具備支持多鏈並行以及跨鏈通信的技術,同時需能夠支撐來自互聯網海量交易請求的能力。
其次,需要具備快速、低成本地組建聯盟和建鏈的能力,便於各個需求方能夠高效建立聯盟鏈網絡,讓企業間建鏈合作變得像現在建立“聊天羣”一樣高效便捷。

最後,需要開源和開放,實現聯盟成員之間的充分信任。公衆聯盟鏈不僅有利於降低企業快速試錯的成本,有效提升商業上的容錯性,也促進商業社會朝着可信化、透明化的方向深化發展,全面降低合作的操作風險、道德風險、信用風險、信息保護風險。

爲此,FISCO BCOS 2.0在擴展性、易用性、隱私隔離等方面開闢了不少新思路,提出了“一體兩翼多引擎”架構。

一體,指羣組架構,允許網絡中存在多個不同的賬本,每個賬本是一個獨立的小組,節點可以選擇加入某些小組,參與到該組賬本的共識和存儲,隨着小組數量的增加,系統的吞吐能力能夠橫向擴展。

羣組的需求,是我們在業務的實踐中發現的。在區塊鏈仲裁項目中,需要聯通多家不同的仲裁機構,而每家仲裁機構之間,並不願意分享數據。如果爲此搭建多條區塊鏈,需要付出非常大的成本,在有了羣組架構後,所有仲裁機構都可以在同一條鏈上,他們屬於不同的羣組,數據不互通,既保證了隱私,又降低了運維和部署成本。

在羣組架構中,各羣組獨立執行共識流程,這樣的設計考慮了性能、隱私性和擴展性。按羣組的粒度劃分,由羣組內參與者決定如何進行共識,一個羣組內的共識不受其他羣組影響,羣組內維護自己的交易事務和數據,使得各羣組之間解除耦合,獨立運作,也便於進行橫向擴展。

兩翼,指並行計算模型分佈式存儲。並行計算模型,包括了一系列的並行化機制,包括交易的驗籤、執行、編解碼、存儲等等,重點是執行部分,我們引用了DAG技術,通過自定義交易衝突key,系統能夠自動識別交易依賴關係,構建一個依賴拓撲DAG圖,然後多線程基於交易的DAG拓撲關係最大化並行執行交易。通過這種方式,我們測試環境得到的數據是整個系統的吞吐量上了一個量級。

分佈式存儲解決了海量數據存儲的問題。目前的區塊鏈底層平臺,大多都是採用level DB本機存儲數據的模式,存儲受限於單機容量限制,當業務量大了,數據膨脹之後,系統將面臨致命問題。而分佈式存儲是將數據存儲在遠端數據層,實現數據和計算的分離,讓數據管理交給“專業”的模塊去做。可以說,並行處理模型讓聯盟鏈飛得更高,分佈式存儲讓聯盟鏈飛得更遠。

多引擎”,指衆多功能組件的融合,例如控制檯,提供友好的交互式訪問終端,通過控制檯,可以實現區塊鏈讀寫,查看數據,發送交易,非常適合剛入門的用戶。預編譯合約,支持採用C++編寫合約,突破EVM的性能瓶頸,還有更多如平臺組件、增強虛擬機、MPC套件等等。

 

第二問:多鏈、分層架構被認爲是當前聯盟鏈的主流架構方案。前些日子,FISCO BCOS 2.0中提出了一個全新的思路——羣組架構,羣組架構相對多鏈、分層,設計上有什麼區別,它的突破性體現在哪些地方?

 

莫楠:

多鏈、分層和羣組架構,本質上都是爲了解決同一個問題——區塊鏈的水平擴展問題。

單鏈架構是最“古典”的區塊鏈架構,是公有鏈最早的模型,這個架構下,全部節點在同一個網絡,全網廣播,全網共識。這個架構最大的問題是無法擴展,無法支持海量的交易請求。無論單節點的性能如何提升,系統都存在“木桶效應”,計算能力、存儲能力、網絡能力都不具備良好的擴展性。

多鏈架構利用了傳統分佈式架構的思路去解決擴展性問題,可以較好地應付業務量增長的問題。但多鏈架構又暴露出易用性方面的問題,區塊鏈部署和維護的複雜性是該架構的缺陷,企業間維護如此衆多條鏈需要投入較大的運維成本。

FISCO BCOS在多鏈的架構上,有非常豐富的實踐經驗,在機構間對賬、仲裁和供應鏈等項目中,廣泛利用了該架構,該架構能很好地分隔業務,提升性能,但隨之而來的運維成本,讓開源工作組的開發和運維同事叫苦不堪。

分層架構將區塊鏈典型的計算和存儲分開,計算環節完成合約驗證以及共識排序,存儲環節進行區塊鏈記賬。這個架構提高了一些易用性,有望做到部署後較好地維護,但是這個架構也存在一些問題,比如計算環節的參與機構如何分配,怎樣保證公平性以及保護隱私。另外,計算環節也會隨着業務量上升成爲瓶頸,也同樣面臨擴展性方面的壓力。

羣組架構是FISCO BCOS 2.0衆多新特性中的主線,創造靈感來源於人人都熟悉的羣聊模式——羣的建立非常靈活,幾個人就可以快速拉個主題羣進行交流。同一個人可以參與到自己感興趣的多個羣裏,並行地收發信息。現有的羣也可以繼續增加成員。

採用羣組架構的網絡中,根據業務場景的不同,可存在多個不同的賬本,區塊鏈節點可以根據業務關係選擇羣組加入,參與到對應賬本的數據共享和共識過程中。

機構的區塊鏈節點只需部署一次,通過羣組設置即可參與到不同的多方協作業務中,或將一個業務按用戶、時間等維度分到各羣組,羣組架構可快速地平行擴展,在擴大了業務規模同時,極大簡化了運維複雜度,降低管理成本。

與前述的分層架構相比,羣組架構的最大特徵是每個羣組都有獨立的共識,羣組之間的數據相互隔離,不會被一箇中心化的Orderer獲取,安全性更高。

 

第三問:5G大數據時代下,存儲技術需迫切提高,FISCO BCOS在存儲技術上有什麼解決方案?

 

莫楠:

早期的公鏈項目,節點主要採用本地的存儲策略,通過LevelDB等本地數據庫,將數據存儲於本地,這種模式受限於本地磁盤大小,當業務量增大時,要進行數據遷移也非常複雜,給數據存儲帶來較大的成本和維護難度。這種模式並不適用於聯盟鏈。

以今天的視角來看,早期的公鏈,已經遇到了容量上的瓶頸,全網的全節點正在逐步減少,對生態的影響非常大。

FISCO BCOS 2.0支持分佈式的數據存儲模型,節點可以選擇將數據存儲在本地,或將數據存儲到遠端分佈式系統中,克服了本地數據存儲的諸多限制。該方案有以下優點:

  • 支持多種存儲引擎;

  • 將計算和數據隔離;

  • 數據可以在更安全的隔離區存儲,這在很多場景中非常有意義;

  • 分佈式存儲不僅支持KV形式,還支持SQL方式,使得業務開發更爲簡便;

  • 優化了數據存儲的結構,更節約存儲空間。

這是分佈式存儲的架構圖,分佈式存儲將抽象了世界狀態(State)層,用於智能合約讀寫數據;分佈式存儲(AMDB)層,抽象了數據的讀取和寫入接口,用於底層的數據訪問;數據庫層,實現了多種存儲的驅動,使得上層在無需改動代碼的情況下,能在多種存儲引擎中進行切換。

我簡單羅列一下分佈式存儲中,幾個主要的系統表,這些表存儲了區塊鏈的核心數據:

 

第四問:區塊鏈技術在現階段看來,依然是一項門檻稍高的技術。對於普通開發者,甚至是零基礎小白來說,FISCO BCOS如何在保證技術優勢的前提下,做到零門檻搭鏈?請您給新手開發者一些實操建議。

 

莫楠:

FISCO BCOS 2.0在易用性上做了很多努力,無論是搭建區塊鏈,還是使用區塊鏈。

在搭建區塊鏈方面,FISCO BCOS 2.0提供了穩定的二進制靜態程序和搭鏈腳本,可以做到“一鍵安裝”,省去了很多編譯以及手動安裝依賴的工作。

在使用區塊鏈方面,FISCO BCOS 2.0提供了命令行控制檯工具,命令行控制檯工具不僅可以管理區塊鏈,還可以完成智能合約的部署和調用,實現一站式的管理、開發和調試。

FISCO BCOS只需兩步,就可以快速搭建區塊鏈:

  • 使用build_chain.sh一鍵搭建區塊鏈

  • 使用console,開始體驗區塊鏈

如果各位聽衆有Linux環境的話,可以試着用下面的命令體驗:

# 下載build_chain.sh腳本

curl -LO https://raw.githubusercontent.com/FISCO-BCOS/FISCO-BCOS/master/tools/build_chain.sh && chmod u+x build_chain.sh

#使用build_chain.sh,搭建4節點的區塊鏈

./build_chain.sh -l "127.0.0.1:4" -p 30300,20200,8545

#啓動所有區塊鏈節點

cd nodes/127.0.0.1

./start_all.sh

#配置及使用控制檯

bash <(curl -s https://raw.githubusercontent.com/FISCO-BCOS/console/master/tools/download_console.sh)

cp nodes/127.0.0.1/sdk/* console/conf/

接下來執行控制檯目錄下的start.sh,就可以啓動控制檯了,控制檯啓動成功後,可以在屏幕上看到FISCO BCOS的字樣,表示啓動成功。

在我們線下的高校講座中,曾經一個學生僅用約1分鐘就完成一條鏈的搭建,以及藉助控制檯部署合約和查看數據。對於新版本的友好度我們還是很有信心的,歡迎大家體驗,對比一下差異性。

我補充一下,FISCO BCOS有9萬+字的使用文檔,涵蓋各種功能特性,可以訪問https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/index.html

 

第五問:FISCO BCOS目前有哪些落地的應用案例?它對哪些行業更有適用性?

 

莫楠:

FISCO BCOS已經落地的應用達數十個,場景覆蓋政務、金融、公益、醫療、教育、交通、版權、商品溯源、供應鏈、招聘、農業、社交、遊戲等多個領域。

對於行業的適用性需要視具體案例分析,以金融領域的場景應用來說。金融業務合作不同於一般合作,需要頻繁地進行數據交換及對賬等繁雜工作,因此“對賬”是金融機構之間最普遍的需求之一,對賬目的時效性和準確度要求尤爲苛刻。傳統的對賬方式是“批量文件對賬”:即機構之間會約定好某一個時間點對前一個交易日的所有數據進行彙總,按照約定格式輸出成文件,並以某一種技術手段交付給其他機構進行對賬。

在這種“批量文件對賬”方式下,存在着一些痛點,如:

1、合作行無法實時瞭解到引發賬戶變動的貸款借還交易明細信息

2、合作行無法及時瞭解到賬務是否不平

3、合作行需要自己開發對賬系統

4、缺乏統一全面的信息視圖

 

區塊鏈技術是一種不可篡改的分佈式賬本技術,區塊鏈技術最大的特徵是“分佈式賬本”,即鏈上的各個參與機構共同擁有一個賬本。區塊鏈上所有的交易信息都會被記錄,並且無法篡改,可確保數據的真實透明可追溯,非常適用於金融行業的交易數據同步和對賬等場景。傳統“批量文件對賬”模式長久以來未能解決的問題,正是區塊鏈技術的用武之地。

簡單的說,就是各家銀行,將自身的賬務數據,脫敏上鍊,在鏈上進行數據的比對,這樣可以在不暴露具體數據的前提下,完成數據的比對,並且利用了區塊鏈去中心化、不可篡改的特性,提升了業務的準確度。

 

第六問:FISCO BCOS作爲國內區塊鏈底層平臺的領頭羊,開源社區夥伴衆多,成績喜人,您和您的團隊是如何建設開源社區的?各角色夥伴如何真正參與進來,比如B端機構,C端開發者。

 

莫楠:

FISCO BCOS 開源社區是目前國內較爲活躍的區塊鏈開源社區之一,技術項目涵蓋底層平臺、客戶端、管理臺、瀏覽器、密鑰安全、國密支持、隱私保護、業務案例等完備的軟件架構體系,是經過廣泛應用驗證、穩定可用、且完全開源、免費使用的社區。目前社區活躍着數千名開發者和關注者,來自全國甚至全世界的幾百家企業,社區上也陸續湧現出現許多不錯的應用案例。

在金鍊盟開源工作組的協調下,活躍在社區的貢獻者羣體內,不但有開源項目的核心開發者,還有個人開發者、各行業的研發及業務團隊、大學和研究所等科研機構,共同面向社區提供形式多樣的支持,包括在線社羣、線下活動、教學培訓、項目技術支持、開發者大賽以及產業孵化等,社區目前的活躍度相當高,軟件版本迭代速度也很快。

開源工作組的技術團隊深度投入到社區建設中,我個人也是社羣裏的活躍“客服”之一,和團隊成員一起每天與開發者進行頻繁的交流,解決各種問題和探討優化方案。

 

今年全年舉行FISCO BCOS 巡迴 Meetup,基本每週一期。爲分佈在全國各地的FISCO BCOS社區成員提供一個面對面交流的空間。作爲開源開放的社區,歡迎全國各地的朋友參加,最近一期的Meetup在深圳舉行 。

 

目前我們開源社區有“體驗官”系列計劃和代碼貢獻者工作流程:

(https://github.com/FISCO-BCOS/FISCO-BCOS/blob/master/docs/CONTRIBUTING_CN.md)。

 

歡迎各方參與,共建社區。更多活動大家都可以參見社區動態:

(https://fisco-bcos-documentation.readthedocs.io/zh_CN/release-2.0/docs/community.html)。

 

Part 2 現場提問

 

網友1:請問對於無幣區塊鏈的看法?

莫楠:

在金融行業採用區塊鏈技術是爲了服務實體經濟,提升業務規模,運營效率,降低成本和風險,而且要合法合規,金融業的多方協作可以通過業務運營達成共贏,並不依賴原生幣的發行和炒賣,大家都看到基於幣的運作有一些不規範的行爲。所以聯盟鏈可以使得開發者更專注於底層技術、基礎設施的建設以及創新業務的開展。

 

網友2:做公衆聯盟鏈遇到的問題和挑戰,哪些問題是必須解決的?

莫楠:

公衆聯盟鏈爲分佈式商業而生,新型的“分佈式商業”模式,按微衆銀行整理給出的定義,是一種由多個具有對等地位的商業利益共同體所建立的新型生產關係,是通過預設的透明規則進行組織管理、職能分工、價值交換、共同提供商品與服務並分享收益的新型經濟活動行爲。在主要表現特徵上,分佈式商業顯現出多方參與、共享資源、智能協同、價值整合、模式透明、跨越國界等特點。一個成熟的分佈式商業場景具備生產資料由多方持有、產品和服務能力由多方共同構建、商業過程中的相互關係對等,產品和利益分配規則透明等要求。

分佈式商業與此前流行的連鎖加盟型商業模式及共享商業模式的最大不同之處在於,起到中間鏈接橋樑作用的不是人或產品、不是信息平臺、而只是客觀的技術本身。誠然,如果技術不開源,確實也可能演變成新的壟斷。因此,發展分佈式商業必須始終保持技術開源的態度,各個參與方通過開源社區進行分工合作,就將不再存在話語權集中和壟斷的可能性,弱肉強食的“叢林法則”在此就不復存在。這有助於中小微企業真正成爲商業價值鏈的主角,從而激發經濟增長動力、廣泛提升就業、鼓勵創業和創新,實現“反壟斷”的人類商業終極理想。

公衆聯盟鏈,對於區塊鏈底層技術提出了新的要求,除了標準的區塊鏈特性之外,還有幾個方面仍需要重點加強:首先,由於公衆聯盟鏈並不是單一鏈條,所以需要具備支持多鏈並行以及跨鏈通信的技術,同時需能夠支撐來自互聯網海量交易請求的能力。其次,需要具備快速、低成本地組建聯盟和建鏈的能力,便於各個需求方能夠高效建立聯盟鏈網絡,讓企業間建鏈合作變得像現在建立“聊天羣”一樣高效便捷。最後,需要開源和開放,實現聯盟成員之間的充分信任。公衆聯盟鏈不僅有利於降低企業快速試錯的成本,有效提升商業上的容錯性,也促進商業社會朝着可信化、透明化的方向深化發展,全面降低合作的操作風險、道德風險、信用風險、信息保護風險等。

 

網友3:聯盟鏈涉及到的利益體比較多,沒有token怎樣權衡利益,維護費用誰來買單,怎樣實現激勵?

莫楠:

聯盟鏈上的多方參與是一種協作關係,大家首先對業務模型已經有了一定的共識,並通過智能合約來制定公開、透明、高效率的運作規則,大家基於這些規則來進行交易,可以減少互相之間的磨擦,消除信息不對稱,更容易取得業務的成功,在追求業務成功的目標前提下,大家會有很強的意願共同維護網絡,共享數據,其實聯盟鏈的維護成本不太高,不需要執行“挖礦”這種高消耗的共識。

聯盟鏈上的參與者,無論是金融業還是其它行業,只要能建立一個高效、安全和去中心的信息交互方式,其產生的效益遠大於虛無縹緲的“token”。

以供應鏈區塊鏈爲例,供應鏈區塊鏈上透明、真實的信息可以解決銀行遇到的信息不透明,真實情況難以考據的問題,極大地幫助銀行做出正確的貸款決策,銀行缺的不是錢和“token”,真實可靠的信息對他們決策的幫助更爲重要。

 


 

我們鼓勵機構成員、開發者等社區夥伴參與開源共建事業,有你在一起,會更了不起。多樣參與方式:

1 進入微信社羣,隨時隨地與圈內最活躍、最頂尖的團隊暢聊技術話題(進羣請添加小助手微信,微信ID:fiscobcosfan);

2 訂閱我們的公衆號:“FISCO BCOS開源社區”,我們爲你準備了開發資料庫、最新FISCO BCOS動態、活動、大賽等信息;

3 來Meetup與開發團隊面對面交流,FISCO BCOS正在全國舉辦巡迴Meetup,深圳、北京、上海、成都……歡迎您公衆號在菜單欄【找活動】中找到附近的Meetup,前往結識技術大咖,暢聊硬核技術;

4 參與代碼貢獻,您可以在Github提交Issue進行問題交流,歡迎向FISCO BCOS提交Pull Request,包括但不限於文檔修改、修復發現的bug、提交新的功能特性。

代碼貢獻指引:

https://github.com/FISCO-BCOS/FISCO-BCOS/blob/master/docs/CONTRIBUTING_CN.md

 

本文首發於公衆號【FISCO BCOS開源社區】,如轉載請註明出處,原創不易,謝謝珍惜

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章