陳子凡 王利朋 周春天 潘常春 賈志娟 張麗
摘? 要: 以太坊是一種開源的支持智能合約的公共區(qū)塊鏈,有更快的“出塊”速度和更先進(jìn)的獎勵機(jī)制。Quorum是一種支持隱私交易和隱私合約的聯(lián)盟鏈,相比于以太坊而言,Quorum提供了交易和智能合約私有化功能、多種共識機(jī)制以及具有更高的性能。Quorum作為一個(gè)新生區(qū)塊鏈平臺,有關(guān)其性能的研究還很少。本文研究了Quorum在不同工作負(fù)載和一致性算法下的吞吐量,并且通過一系列微觀基準(zhǔn)測試后,更進(jìn)一步探討了事務(wù)和智能合約參數(shù)對吞吐量的影響。
關(guān)鍵詞: 區(qū)塊鏈; 聯(lián)盟鏈; Quorum; 吞吐量; 智能合約
中圖分類號:TP311.13? ? ? ? ? 文獻(xiàn)標(biāo)識碼: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年,一位名為中本聰?shù)纳衩厝税l(fā)表的關(guān)于“一個(gè)點(diǎn)對點(diǎn)的電子貨幣交易的機(jī)制”[1]的論文出現(xiàn)在網(wǎng)上,它使得交易去中心化,使之變成點(diǎn)對點(diǎn)的可溯源,形成防篡改的分布式賬本,由此進(jìn)入?yún)^(qū)塊鏈1.0時(shí)代。智能合約與貨幣相結(jié)合,使區(qū)塊鏈對金融領(lǐng)域提供更廣泛的應(yīng)用場景,區(qū)塊鏈被真正應(yīng)用,進(jìn)入?yún)^(qū)塊鏈2.0時(shí)代[2]。除了金融領(lǐng)域的需求外,各行業(yè)的應(yīng)用場景浮出水面,當(dāng)區(qū)塊鏈被應(yīng)用到更多行業(yè)時(shí),標(biāo)志區(qū)塊鏈3.0時(shí)代到來[3]。為了滿足不同的需求,不同特征的區(qū)塊鏈平臺被提出,如聯(lián)盟鏈中的Quorum和Libra。區(qū)塊鏈已成為加密貨幣系統(tǒng)的核心技術(shù),被譽(yù)為數(shù)字經(jīng)濟(jì)的基石[4]。
區(qū)塊鏈分兩大類,私有鏈條和公有鏈[5],兩者根據(jù)不同的應(yīng)用場景被提出。還有一種叫聯(lián)盟鏈的區(qū)塊鏈,它屬于私有鏈。衡量區(qū)塊鏈要考慮的指標(biāo)是性能和可擴(kuò)展性。比特幣和以太坊是公有鏈的代表[6],共識機(jī)制通常使用工作量證明,此機(jī)制安全性高,但會導(dǎo)致高延遲和較低的交易吞吐量,它的交易吞吐量在100之內(nèi),Visa的交易吞吐量在2000左右[7],Libra的交易吞吐量為600左右[8],因此公有鏈很難應(yīng)用于交易量極大且產(chǎn)生極快的全球經(jīng)濟(jì)。Hyperledger Fabric[9]是私有鏈代表,共識機(jī)制通常用拜占庭和拜占庭容錯(cuò),后者的性能往往比前者更好。Quorum被JP Morgan推出,屬于聯(lián)盟鏈。很少有關(guān)于Quorum的性能數(shù)據(jù)。本文主要做了以下研究。
⑴ 對Quorum2.0區(qū)塊鏈平臺做了實(shí)驗(yàn)評估,展示了其性能特征。
⑵ 通過為Quorum定制的一套微觀基準(zhǔn)測試,研究了不同的智能合約如何影響交易的處理。
1 背景知識
1.1 Quorum介紹
Quorum是企業(yè)級區(qū)塊鏈平臺,是一種支持隱私交易和隱私合約的聯(lián)盟鏈。它支持智能合約和交易的機(jī)密性和隱私性以及拜占庭容錯(cuò)共識算法。
Quorum是以太坊Go語言實(shí)現(xiàn)版本的一個(gè)分支,復(fù)用并擴(kuò)展了以太坊的一些特性。其邏輯架構(gòu)主要由以下部分組成:對geth進(jìn)行修改之后的節(jié)點(diǎn)、交易管理器和Enclave。如圖1所示。交易管理器負(fù)責(zé)交易的保密性,允許訪問私人事務(wù)的加密交易數(shù)據(jù)并且可以與其他節(jié)點(diǎn)上運(yùn)行的交易管理器通信。它利用Enclave執(zhí)行加密,實(shí)現(xiàn)數(shù)據(jù)安全加密。Enclave的存在保證了區(qū)塊鏈記帳真實(shí)性和安全性,所有公私鑰生成、數(shù)據(jù)的加密/解密都由Enclave模塊完成。
1.2 PBFT和RAFT共識算法
PBFT算法根據(jù)密碼學(xué)算法保證節(jié)點(diǎn)之間的消息不可篡改,其能容忍最大無效或惡意節(jié)點(diǎn)數(shù)為f;而要保證網(wǎng)絡(luò)可以正常工作,則要在網(wǎng)絡(luò)中存在2f+1個(gè)正常節(jié)點(diǎn);即系統(tǒng)的總節(jié)點(diǎn)數(shù)則為R=3f+1,容忍小于1/3個(gè)R個(gè)無效或者惡意節(jié)點(diǎn)數(shù)[11]。PBFT通常用于聯(lián)盟鏈,文獻(xiàn)[13]對PBFT用在聯(lián)盟鏈中進(jìn)行了優(yōu)化。
RAFT算法有三種角色,分別是:跟隨者、候選人和領(lǐng)導(dǎo)者。正常狀態(tài)下,節(jié)點(diǎn)中只有一個(gè)節(jié)點(diǎn)作為領(lǐng)導(dǎo)者,剩下的節(jié)點(diǎn)作為跟隨者。跟隨者不會主動發(fā)出信息,只是反饋領(lǐng)導(dǎo)者或者候選人的信息以及轉(zhuǎn)發(fā)客戶端的請求發(fā)送給領(lǐng)導(dǎo)者。而候選人角色只是一種短暫的狀態(tài)。RAFT算法支持最大的無效或者惡意節(jié)點(diǎn)數(shù)是(R-1)/2,其中R為節(jié)點(diǎn)總數(shù)量。RAFT算法大致分為兩步:第一個(gè)步:領(lǐng)導(dǎo)者選舉;第二步:日志復(fù)制。而日志復(fù)制又可以細(xì)分記錄日志和提交數(shù)據(jù)兩個(gè)過程[12]。
2 實(shí)驗(yàn)評估
2.1 實(shí)驗(yàn)設(shè)備
Quorum區(qū)塊鏈網(wǎng)絡(luò)含3~6個(gè)用戶賬戶。每個(gè)賬戶運(yùn)行在不同的物理機(jī)。物理機(jī)有16GB內(nèi)存,通過1Gbps交換機(jī)相互連接,表1列舉了相關(guān)配置等信息。
2.2 客戶端安裝
實(shí)驗(yàn)使用nodejs的版本為14.10.0,使用geth軟件連接用戶賬戶、進(jìn)入命令行模式和執(zhí)行js腳本。Quorum官方提供了一種可以快速搭建一個(gè)簡單的Quorum網(wǎng)絡(luò)方式,其包含多個(gè)腳本,每個(gè)腳本都封裝了geth命令,實(shí)驗(yàn)使用了封裝后的腳本。docker的版本為7.6.0。實(shí)驗(yàn)用Quorum-maker框架快速便捷地在多個(gè)物理機(jī)之間搭建Quorum網(wǎng)絡(luò)。在進(jìn)行搭建時(shí),需要設(shè)置賬戶的標(biāo)識符、IP地址和RPC端口號等信息,默認(rèn)為22000。當(dāng)?shù)谝粋€(gè)賬戶創(chuàng)建成功后,會自動啟動以及其所在的網(wǎng)絡(luò)。在瀏覽器輸入http://localhost:22004(默認(rèn)端口號)即可查看網(wǎng)頁形式的Quorum網(wǎng)絡(luò)信息,包含用戶賬戶數(shù)目、交易數(shù)量以及區(qū)塊數(shù)量等信息。其他賬戶若要加入網(wǎng)絡(luò),則選擇對應(yīng)的加入網(wǎng)絡(luò),并且設(shè)置本賬戶的標(biāo)識符、IP地址、所加入目標(biāo)網(wǎng)絡(luò)中賬戶的IP地址等信息。此時(shí)目標(biāo)網(wǎng)絡(luò)中對應(yīng)IP地址的賬戶會收到這個(gè)申請,若同意則加入成功,反之則反。
2.3 實(shí)驗(yàn)設(shè)計(jì)
2.3.1 實(shí)驗(yàn)步驟
對實(shí)驗(yàn)劃分了三個(gè)步驟,創(chuàng)建賬戶和Quorum網(wǎng)絡(luò)、加入Quorum網(wǎng)絡(luò)以及產(chǎn)生并查詢交易情況。
⑴ 創(chuàng)建帳戶和Quorum網(wǎng)絡(luò)。在創(chuàng)建網(wǎng)絡(luò)時(shí)會根據(jù)輸入的用戶賬戶信息創(chuàng)建賬戶和網(wǎng)絡(luò)。信息包括本用戶賬戶的標(biāo)識符、IP地址、RPC端口號、網(wǎng)絡(luò)監(jiān)聽端口號、RAFT端口號以及節(jié)點(diǎn)管理器端口號等數(shù)據(jù)。若顯示創(chuàng)建成功,則系統(tǒng)會生成用戶賬戶的公鑰、賬戶地址以及給賬戶分配1019wei的以太幣,反之則反。用戶可以使用本用戶賬戶公鑰發(fā)起私有交易或部署私有智能合約,用戶賬戶地址可以作為交易中接收方地址或作為智能合約的調(diào)用方。
⑵ 加入Quorum網(wǎng)絡(luò)。加入網(wǎng)絡(luò)同樣也需要填寫信息生成一個(gè)用戶賬戶并且自動發(fā)起加入網(wǎng)絡(luò)的申請。信息為加入目標(biāo)網(wǎng)絡(luò)的賬戶IP地址和其管理器端口號,剩余信息標(biāo)題和第一步相同。若信息無誤則需要目標(biāo)網(wǎng)絡(luò)中賬戶的同意,若同意,則加入網(wǎng)絡(luò),反之則反。
⑶ 產(chǎn)生并查詢交易情況。每個(gè)用戶賬戶都以極小間隔為周期調(diào)用智能合約對Quorum進(jìn)行一個(gè)壓力測試,每調(diào)用一次智能合約都會產(chǎn)生一筆交易。再由另一個(gè)賬戶使用腳本查詢。本文實(shí)驗(yàn)部分將會統(tǒng)計(jì)不同智能合約產(chǎn)生的交易被處理速度的情況。
2.3.2 性能測試
為了全面地測試出Quorum網(wǎng)絡(luò)的綜合性能,本實(shí)驗(yàn)采用了三種不同的智能合約,每種智能合約除了測試其交易吞吐量,還根據(jù)智能合約自身的特性,對Quorum網(wǎng)絡(luò)中不同的層次進(jìn)行了測試。三種智能合約部分代碼具體如下。
⑴ Transfer智能合約:該智能合約的作用是從本智能合約中向指定賬戶轉(zhuǎn)入金額,主要是針對轉(zhuǎn)賬層的執(zhí)行性能,具體代碼如表2所示。
⑵ Do-nothing智能合約:該智能合約的作用是衡量共識機(jī)制的性能,具體代碼如表3所示。通過調(diào)用fun函數(shù)執(zhí)行。因?yàn)樵撝悄芎霞s只有一行return代碼,所以運(yùn)行時(shí)對Quorum網(wǎng)絡(luò)性能的影響很小。又因?yàn)槠溥壿嫼唵?,不會產(chǎn)生額外的操作,也就是說,當(dāng)運(yùn)行此智能合約時(shí),Quorum平臺的性能主要取決于共識機(jī)制的性能。
⑶ VM-heavy智能合約:該智能合約作用是衡量Quorum平臺的健壯性,具體如表4所示。通過調(diào)用fabonacci函數(shù),返回出第100個(gè)斐波那契數(shù),這樣可以使得此函數(shù)需要較長的時(shí)間來運(yùn)行,因此可以評估Quorum網(wǎng)絡(luò)的健壯性。
在實(shí)驗(yàn)中,用戶賬戶調(diào)用智能合約。開始時(shí),每個(gè)賬戶以極小間隔為周期調(diào)用3種智能合約,調(diào)用一次可以產(chǎn)生一筆交易。待Quorum網(wǎng)絡(luò)穩(wěn)定后,啟動腳本獲得交易吞吐量。獲得交易吞吐量要進(jìn)行n組記錄。在每組中,交易總量除以時(shí)間得到交易吞吐量。每組交易吞吐量相加除以n,得出一個(gè)平均值,此值則為最終的交易吞吐量(Transaction Per Second,TPS)。但要獲得每組的交易總量,首先要獲得每組包含的區(qū)塊數(shù)目,再調(diào)用接口得到區(qū)塊包含的交易數(shù)。但是,每組中第一個(gè)區(qū)塊可能包含已經(jīng)存在的交易,因此,需要在記錄開始和結(jié)束時(shí)都獲得第一個(gè)區(qū)塊包含的交易數(shù)量,若相同則說明此區(qū)塊在該組記錄中沒有產(chǎn)生新的交易。綜上,TPS的計(jì)算公式可以寫為:
其中n表示實(shí)驗(yàn)包含n組記錄,ts+x表示某組記錄的最后一時(shí)刻,ts表示某組記錄最開始一時(shí)刻,x表示某組記錄的時(shí)間間隔,TXS表示某組記錄的交易總量,i表示第i組記錄。而每組交易總量的計(jì)算公式可以寫為:
其中bid1代表第一個(gè)區(qū)塊號,bid2代表最后一個(gè)區(qū)塊號。對于第二個(gè)及之后的區(qū)塊,txs表示區(qū)塊所包含的交易量,對于第一個(gè)區(qū)塊,txss+x表示最后時(shí)刻所含交易數(shù),txss表示最開始時(shí)刻所含交易數(shù)。
2.4 衡量指標(biāo)
TPS即區(qū)塊鏈網(wǎng)絡(luò)每秒成功處理的交易數(shù)量,其反應(yīng)了區(qū)塊鏈系統(tǒng)在單位時(shí)間內(nèi)處理交易的能力。當(dāng)系統(tǒng)進(jìn)入高壓力區(qū)時(shí),TPS會有所下降,如果再繼續(xù)加壓的話,會出現(xiàn)少量的失敗交易[14]。
2.5 測試結(jié)果
圖2橫軸代表交易數(shù)量,縱軸代表TPS。由圖2可得,TPS隨著交易量的增長穩(wěn)定在一個(gè)數(shù)值附近。其中,Do-nothing產(chǎn)生的TPS最高,大約在450左右,不過在交易數(shù)為6000時(shí),其TPS最低,原因是Quorum進(jìn)入高壓力區(qū)出現(xiàn)失敗交易,導(dǎo)致發(fā)起交易的賬戶暫時(shí)停頓,停頓片刻后,交易吞吐量回歸正常。其次是VM-heavy,TPS在320左右,不過在交易數(shù)量為40000時(shí),其TPS出現(xiàn)最低,原因同上。最后是Transfer,TPS在300左右,運(yùn)行時(shí)比較穩(wěn)定,沒有出現(xiàn)交易失敗的現(xiàn)象。數(shù)據(jù)見表5。
圖3橫軸代表用戶賬戶數(shù)目,縱軸代表TPS。由圖3可得,TPS隨著用戶賬戶數(shù)的增加而緩慢增加。因?yàn)樵黾淤~戶數(shù)目,就會增加交易發(fā)起方數(shù)目,單位時(shí)間內(nèi)交易發(fā)起量也會隨之增加,若要將所得到的TPS除以用戶賬戶數(shù),則會發(fā)現(xiàn)TPS出現(xiàn)下降,因?yàn)橛脩糍~戶數(shù)目增加使共識時(shí)延的增加。數(shù)據(jù)見表6。
3 結(jié)論
本文采用三種不同的智能合約對Quorum區(qū)塊鏈平臺的性能和可擴(kuò)展性進(jìn)行了研究。研究結(jié)果表現(xiàn)出Quorum的交易吞吐量雖然比公有鏈區(qū)塊鏈的交易吞吐量高,但是和聯(lián)盟鏈中的Hyperledger Fabric相比還是較低。因此,我們后續(xù)將會以如何提高Quorum的性能為出發(fā)點(diǎn)進(jìn)行研究。
參考文獻(xiàn)(References):
[1] Bitcoin: A Peer-to-Peer Electronic Cash System[J]. Social
Science Electronic Publishing
[2] 李赫.區(qū)塊鏈2.0架構(gòu)及其保險(xiǎn)業(yè)應(yīng)用初探[J].金卡工程,
2017,Z1(209):50-54
[3] 王海濤,韓冬暉.區(qū)塊鏈技術(shù)在融媒體時(shí)代的應(yīng)用探索[J].廣播
電視信息,2020,338(6):19-20
[4] 馬瑞鵬,張珂雯.區(qū)塊鏈發(fā)展歷程與研究初探[J]. 數(shù)碼世界,
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] 方燚飚,周創(chuàng)明,李松,等.聯(lián)盟鏈中實(shí)用拜占庭容錯(cuò)算法的
改進(jìn)[J/OL].計(jì)算機(jī)工程與應(yīng)用:1-10[2021-10-18].http://kns.cnki.net/kcms/detail/11.2127.tp.20210224.
1322.014.html.
[14] 王銳.區(qū)塊鏈系統(tǒng)的性能評估與優(yōu)化[D].中國科學(xué)院大學(xué)
(中國科學(xué)院深圳先進(jìn)技術(shù)研究院),
基金項(xiàng)目:國家重點(diǎn)研發(fā)計(jì)劃(2020YFB1005404); 河南省高等學(xué)校重點(diǎn)科研項(xiàng)目(22A520048); 鄭州師范學(xué)院大學(xué)生科研創(chuàng)新基金資助(DCY2020017)
作者簡介:陳子凡(2000-),男,河南安陽人,本科,主要研究方向:區(qū)塊鏈、軟件工程。
通訊作者:王利朋(1987-),男,河南衛(wèi)輝人,博士研究生,主要研究方向:虛擬化安全、云存儲、并行計(jì)算。