陳子凡 王利朋 周春天 潘常春 賈志娟 張麗



摘? 要: 以太坊是一種開源的支持智能合約的公共區塊鏈,有更快的“出塊”速度和更先進的獎勵機制。Quorum是一種支持隱私交易和隱私合約的聯盟鏈,相比于以太坊而言,Quorum提供了交易和智能合約私有化功能、多種共識機制以及具有更高的性能。Quorum作為一個新生區塊鏈平臺,有關其性能的研究還很少。本文研究了Quorum在不同工作負載和一致性算法下的吞吐量,并且通過一系列微觀基準測試后,更進一步探討了事務和智能合約參數對吞吐量的影響。
關鍵詞: 區塊鏈; 聯盟鏈; Quorum; 吞吐量; 智能合約
中圖分類號:TP311.13? ? ? ? ? 文獻標識碼:A? ? ? 文章編號:1006-8228(2022)05-29-04
Performance evaluation of Quorum blockchain platform
Chen Zifan Wang Lipeng Zhou Chuntian Pan Changchun Jia Zhijuan1, Zhang Li
Abstract: Ethereum is an open-source public blockchain supporting smart contracts with faster "block out" and more advanced reward mechanism. Quorum is an alliance chain supporting privacy transactions and privacy contracts. Compared with Ethereum, Quorum provides transaction and smart contract privatization functions, multiple consensus mechanisms and higher performance. As a new blockchain platform, there is little research on the performance of Quorum. In order to obtain its accurate performance data, the throughput of Quorum under different workloads and consistency algorithms is studied. After a series of micro-benchmarks, the impact of transaction and smart contract parameters on throughput is further explored.
Key words: blockchain; consortium blockchain; Quorum; throughput; smart contract
收稿日期:2021-10-25
引言
2008年,一位名為中本聰的神秘人發表的關于“一個點對點的電子貨幣交易的機制”[1]的論文出現在網上,它使得交易去中心化,使之變成點對點的可溯源,形成防篡改的分布式賬本,由此進入區塊鏈1.0時代。智能合約與貨幣相結合,使區塊鏈對金融領域提供更廣泛的應用場景,區塊鏈被真正應用,進入區塊鏈2.0時代[2]。除了金融領域的需求外,各行業的應用場景浮出水面,當區塊鏈被應用到更多行業時,標志區塊鏈3.0時代到來[3]。為了滿足不同的需求,不同特征的區塊鏈平臺被提出,如聯盟鏈中的Quorum和Libra。區塊鏈已成為加密貨幣系統的核心技術,被譽為數字經濟的基石[4]。
區塊鏈分兩大類,私有鏈條和公有鏈[5],兩者根據不同的應用場景被提出。還有一種叫聯盟鏈的區塊鏈,它屬于私有鏈。衡量區塊鏈要考慮的指標是性能和可擴展性。比特幣和以太坊是公有鏈的代表[6],共識機制通常使用工作量證明,此機制安全性高,但會導致高延遲和較低的交易吞吐量,它的交易吞吐量在100之內,Visa的交易吞吐量在2000左右[7],Libra的交易吞吐量為600左右[8],因此公有鏈很難應用于交易量極大且產生極快的全球經濟。Hyperledger Fabric[9]是私有鏈代表,共識機制通常用拜占庭和拜占庭容錯,后者的性能往往比前者更好。Quorum被JP Morgan推出,屬于聯盟鏈。很少有關于Quorum的性能數據。本文主要做了以下研究。
⑴ 對Quorum2.0區塊鏈平臺做了實驗評估,展示了其性能特征。
⑵ 通過為Quorum定制的一套微觀基準測試,研究了不同的智能合約如何影響交易的處理。
1 背景知識
1.1 Quorum介紹
Quorum是企業級區塊鏈平臺,是一種支持隱私交易和隱私合約的聯盟鏈。它支持智能合約和交易的機密性和隱私性以及拜占庭容錯共識算法。
Quorum是以太坊Go語言實現版本的一個分支,復用并擴展了以太坊的一些特性。其邏輯架構主要由以下部分組成:對geth進行修改之后的節點、交易管理器和Enclave。如圖1所示。交易管理器負責交易的保密性,允許訪問私人事務的加密交易數據并且可以與其他節點上運行的交易管理器通信。它利用Enclave執行加密,實現數據安全加密。Enclave的存在保證了區塊鏈記帳真實性和安全性,所有公私鑰生成、數據的加密/解密都由Enclave模塊完成。
1.2 PBFT和RAFT共識算法
PBFT算法根據密碼學算法保證節點之間的消息不可篡改,其能容忍最大無效或惡意節點數為f;而要保證網絡可以正常工作,則要在網絡中存在2f+1個正常節點;即系統的總節點數則為R=3f+1,容忍小于1/3個R個無效或者惡意節點數[11]。PBFT通常用于聯盟鏈,文獻[13]對PBFT用在聯盟鏈中進行了優化。
RAFT算法有三種角色,分別是:跟隨者、候選人和領導者。正常狀態下,節點中只有一個節點作為領導者,剩下的節點作為跟隨者。跟隨者不會主動發出信息,只是反饋領導者或者候選人的信息以及轉發客戶端的請求發送給領導者。而候選人角色只是一種短暫的狀態。RAFT算法支持最大的無效或者惡意節點數是(R-1)/2,其中R為節點總數量。RAFT算法大致分為兩步:第一個步:領導者選舉;第二步:日志復制。而日志復制又可以細分記錄日志和提交數據兩個過程[12]。
2 實驗評估
2.1 實驗設備
Quorum區塊鏈網絡含3~6個用戶賬戶。每個賬戶運行在不同的物理機。物理機有16GB內存,通過1Gbps交換機相互連接,表1列舉了相關配置等信息。
2.2 客戶端安裝
實驗使用nodejs的版本為14.10.0,使用geth軟件連接用戶賬戶、進入命令行模式和執行js腳本。Quorum官方提供了一種可以快速搭建一個簡單的Quorum網絡方式,其包含多個腳本,每個腳本都封裝了geth命令,實驗使用了封裝后的腳本。docker的版本為7.6.0。實驗用Quorum-maker框架快速便捷地在多個物理機之間搭建Quorum網絡。在進行搭建時,需要設置賬戶的標識符、IP地址和RPC端口號等信息,默認為22000。當第一個賬戶創建成功后,會自動啟動以及其所在的網絡。在瀏覽器輸入http://localhost:22004(默認端口號)即可查看網頁形式的Quorum網絡信息,包含用戶賬戶數目、交易數量以及區塊數量等信息。其他賬戶若要加入網絡,則選擇對應的加入網絡,并且設置本賬戶的標識符、IP地址、所加入目標網絡中賬戶的IP地址等信息。此時目標網絡中對應IP地址的賬戶會收到這個申請,若同意則加入成功,反之則反。
2.3 實驗設計
2.3.1 實驗步驟
對實驗劃分了三個步驟,創建賬戶和Quorum網絡、加入Quorum網絡以及產生并查詢交易情況。
⑴ 創建帳戶和Quorum網絡。在創建網絡時會根據輸入的用戶賬戶信息創建賬戶和網絡。信息包括本用戶賬戶的標識符、IP地址、RPC端口號、網絡監聽端口號、RAFT端口號以及節點管理器端口號等數據。若顯示創建成功,則系統會生成用戶賬戶的公鑰、賬戶地址以及給賬戶分配1019wei的以太幣,反之則反。用戶可以使用本用戶賬戶公鑰發起私有交易或部署私有智能合約,用戶賬戶地址可以作為交易中接收方地址或作為智能合約的調用方。
⑵ 加入Quorum網絡。加入網絡同樣也需要填寫信息生成一個用戶賬戶并且自動發起加入網絡的申請。信息為加入目標網絡的賬戶IP地址和其管理器端口號,剩余信息標題和第一步相同。若信息無誤則需要目標網絡中賬戶的同意,若同意,則加入網絡,反之則反。
⑶ 產生并查詢交易情況。每個用戶賬戶都以極小間隔為周期調用智能合約對Quorum進行一個壓力測試,每調用一次智能合約都會產生一筆交易。再由另一個賬戶使用腳本查詢。本文實驗部分將會統計不同智能合約產生的交易被處理速度的情況。
2.3.2 性能測試
為了全面地測試出Quorum網絡的綜合性能,本實驗采用了三種不同的智能合約,每種智能合約除了測試其交易吞吐量,還根據智能合約自身的特性,對Quorum網絡中不同的層次進行了測試。三種智能合約部分代碼具體如下。
⑴ Transfer智能合約:該智能合約的作用是從本智能合約中向指定賬戶轉入金額,主要是針對轉賬層的執行性能,具體代碼如表2所示。
⑵ Do-nothing智能合約:該智能合約的作用是衡量共識機制的性能,具體代碼如表3所示。通過調用fun函數執行。因為該智能合約只有一行return代碼,所以運行時對Quorum網絡性能的影響很小。又因為其邏輯簡單,不會產生額外的操作,也就是說,當運行此智能合約時,Quorum平臺的性能主要取決于共識機制的性能。
⑶ VM-heavy智能合約:該智能合約作用是衡量Quorum平臺的健壯性,具體如表4所示。通過調用fabonacci函數,返回出第100個斐波那契數,這樣可以使得此函數需要較長的時間來運行,因此可以評估Quorum網絡的健壯性。
在實驗中,用戶賬戶調用智能合約。開始時,每個賬戶以極小間隔為周期調用3種智能合約,調用一次可以產生一筆交易。待Quorum網絡穩定后,啟動腳本獲得交易吞吐量。獲得交易吞吐量要進行n組記錄。在每組中,交易總量除以時間得到交易吞吐量。每組交易吞吐量相加除以n,得出一個平均值,此值則為最終的交易吞吐量(Transaction Per Second,TPS)。但要獲得每組的交易總量,首先要獲得每組包含的區塊數目,再調用接口得到區塊包含的交易數。但是,每組中第一個區塊可能包含已經存在的交易,因此,需要在記錄開始和結束時都獲得第一個區塊包含的交易數量,若相同則說明此區塊在該組記錄中沒有產生新的交易。綜上,TPS的計算公式可以寫為:
其中n表示實驗包含n組記錄,ts+x表示某組記錄的最后一時刻,ts表示某組記錄最開始一時刻,x表示某組記錄的時間間隔,TXS表示某組記錄的交易總量,i表示第i組記錄。而每組交易總量的計算公式可以寫為:
其中bid1代表第一個區塊號,bid2代表最后一個區塊號。對于第二個及之后的區塊,txs表示區塊所包含的交易量,對于第一個區塊,txss+x表示最后時刻所含交易數,txss表示最開始時刻所含交易數。
2.4 衡量指標
TPS即區塊鏈網絡每秒成功處理的交易數量,其反應了區塊鏈系統在單位時間內處理交易的能力。當系統進入高壓力區時,TPS會有所下降,如果再繼續加壓的話,會出現少量的失敗交易[14]。
2.5 測試結果
圖2橫軸代表交易數量,縱軸代表TPS。由圖2可得,TPS隨著交易量的增長穩定在一個數值附近。其中,Do-nothing產生的TPS最高,大約在450左右,不過在交易數為6000時,其TPS最低,原因是Quorum進入高壓力區出現失敗交易,導致發起交易的賬戶暫時停頓,停頓片刻后,交易吞吐量回歸正常。其次是VM-heavy,TPS在320左右,不過在交易數量為40000時,其TPS出現最低,原因同上。最后是Transfer,TPS在300左右,運行時比較穩定,沒有出現交易失敗的現象。數據見表5。
圖3橫軸代表用戶賬戶數目,縱軸代表TPS。由圖3可得,TPS隨著用戶賬戶數的增加而緩慢增加。因為增加賬戶數目,就會增加交易發起方數目,單位時間內交易發起量也會隨之增加,若要將所得到的TPS除以用戶賬戶數,則會發現TPS出現下降,因為用戶賬戶數目增加使共識時延的增加。數據見表6。
3 結論
本文采用三種不同的智能合約對Quorum區塊鏈平臺的性能和可擴展性進行了研究。研究結果表現出Quorum的交易吞吐量雖然比公有鏈區塊鏈的交易吞吐量高,但是和聯盟鏈中的Hyperledger Fabric相比還是較低。因此,我們后續將會以如何提高Quorum的性能為出發點進行研究。
參考文獻(References):
[1] Bitcoin: A Peer-to-Peer Electronic Cash System[J]. Social
Science Electronic Publishing
[2] 李赫.區塊鏈2.0架構及其保險業應用初探[J].金卡工程,
2017,Z1(209):50-54
[3] 王海濤,韓冬暉.區塊鏈技術在融媒體時代的應用探索[J].廣播
電視信息,2020,338(6):19-20
[4] 馬瑞鵬,張珂雯.區塊鏈發展歷程與研究初探[J]. 數碼世界,
2020,182(12):13-14
[5] Marko Vukoli?. Rethinking Permissioned Blockchains[P].
Blockchain, Cryptocurrencies and Contracts,2017
[6] Wood G.Ethereum: a secure decentralised generalised
transaction ledger,2014
[7] Lee D, Jang Y, Jang H, et al. 80% of Block Propagation
Rate is Enough-Towards Secure and Efficient PoW-based Blockchain Consensus (poster)[C]//the 17th Annual International Conference,2019
[8] J Zhang, J Gao, Wu Z , et al. Performance Analysis of the
Libra Blockchain: An Experimental Study[C]//2019 2nd International Conference on Hot Information-Centric Networking (HotICN). IEEE,2020
[9] Androulaki E, Manevich Y,? Muralidharan S, et al.
Hyperledger fabric: a distributed operating system for permissioned blockchains[J].2018
[10] Baliga A, Subhod I, Kamat P, et al. Performance
Evaluation of the Quorum Blockchain Platform[J].2018
[11] Castro M,? Liskov B. Practical Byzantine Fault Tolerance[J].
ACM Transactions on Computer Systems (TOCS),2002
[12] Ongaro D, Ousterhout J K. In search of an understand-
able consensus algorithm[J]. draft of october,2014
[13] 方燚飚,周創明,李松,等.聯盟鏈中實用拜占庭容錯算法的
改進[J/OL].計算機工程與應用:1-10[2021-10-18].http://kns.cnki.net/kcms/detail/11.2127.tp.20210224.
1322.014.html.
[14] 王銳.區塊鏈系統的性能評估與優化[D].中國科學院大學
(中國科學院深圳先進技術研究院),
基金項目:國家重點研發計劃(2020YFB1005404); 河南省高等學校重點科研項目(22A520048); 鄭州師范學院大學生科研創新基金資助(DCY2020017)
作者簡介:陳子凡(2000-),男,河南安陽人,本科,主要研究方向:區塊鏈、軟件工程。
通訊作者:王利朋(1987-),男,河南衛輝人,博士研究生,主要研究方向:虛擬化安全、云存儲、并行計算。