APP下载

Quorum区块链平台性能研究

2022-05-27陈子凡王利朋周春天潘常春贾志娟张丽

计算机时代 2022年5期
关键词:智能合约区块链吞吐量

陈子凡 王利朋 周春天 潘常春 贾志娟 张丽

摘  要: 以太坊是一种开源的支持智能合约的公共区块链,有更快的“出块”速度和更先进的奖励机制。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-),男,河南卫辉人,博士研究生,主要研究方向:虚拟化安全、云存储、并行计算。

猜你喜欢

智能合约区块链吞吐量
2017年3月长三角地区主要港口吞吐量
区块链技术在互联网保险行业的应用探讨
2016年10月长三角地区主要港口吞吐量
2016年11月长三角地区主要港口吞吐量
区块链技术的应用价值分析
“区块链”的苟且、诗和远方
基于区块链技术的数字货币与传统货币辨析
区块链技术在会计中的应用展望
智能合约与金融合约
用“区块链”助推中企走出去