2. 西南林业大学 森林生态大数据国家林业和草原局重点实验室, 昆明 650224
2. Key Laboratory of State Forestry and Grassland Administration on Forestry and Ecological Big Data, Southwest Forestry University, Kunming 650224, China
近年来, 电子商务作为一种新兴的贸易形式, 以其开放性和高效性的特点在现代经济生活中发挥着重要作用[1]. 供应链作为电子商务的重要组成部分, 在供应商、制造商、经销商、零售商和消费者等多个节点之间建立联系, 保证电子商务平台上各种交易的处理[2].
然而, 由于每个企业都各自独立维系着一条记录自身业务数据的数据库, 致使信息相互割裂, 无法满足多方互信问题[3]. 出于风控、资质和信用的考虑, 金融机构仅愿意为核心企业提供融资服务, 而不愿意再投入额外的人力、物力去校验中小企业的数据信息的真实性. 在考虑供应链安全性前提下, 文献[4]通过使用基于物联网架构的区块链, 来构建食品供应链. 文献[5]利用区块链解决了药品安全问题, 实现了药品的可追溯. 对于供应链的按需服务, 文献[6]提出了基于区块链的汽车供应链, 重点强调区块链技术有能力提高供应链同行之间的可信度, 以减少交易欺诈.
在共识处理性能方面, 区块链去中心化特征带来的代价之一就是区块链的性能. 文献[7]提出了一种基于分层模型的多中心的共识机制, 与其他共识机制不同的是设计了主从链, 用以提高区块链系统的吞吐量. 文献[8]提出了一种针对投票过程的奖惩方案及其相应的节点信用评估方案. 文献[9]提出了基于跳跃Hash的共识机制, 引入分片概念, 为解决分片带来的隐患, 介绍了异步共识的模式. 文献[10]根据节点的服务质量来划分不同的区域, 进而基于此提出了一种更加优秀的共识协议, 在这个协议中, 整个网络被划分为小区域, 每个区域根据其QoS指定一个节点. 文献[11]提出了时间阈值的概念, 即各节点每隔一定时间会对区块的请求日志进行清除, 从而减少PBFT中垃圾回收的网络开销.
上述文献提出的解决方案, 仅是借助区块链技术特性应用在供应链领域, 并没有关注区块链+供应链中主节点的选取方法存在弊端和网络中广播消息需要频繁地验证所引发的共识性能问题. 基于此, 本文提出并设计了一种应用于供应链的区块链PBFT共识算法优化方法, 以实现供应链应用场景下, 区块链共识的高效与安全性.
1 预备知识 1.1 区块链区块链是集分布式存储、智能合约、共识算法、密码学等关键技术为一体的全新分布式记账技术, 具有多中心、难以篡改、可追溯等天然特性[12]. 具体地说, 一个区块是由块首和块体两部分所构成, 块首存放前一区块的散列值; 块体则存放数据[13]. 区块与区块之间依据出块时间依次勾稽相连, 便形成一条完整的区块链, 如图1所示.
![]() |
图 1 区块链示意图 |
依据节点共识的准入机制可将区块链分为公有链、私有链和联盟链. 由于供应链企业的交易业务特性, 本文采用Hyperledger项目下的Fabric联盟链. Fabric不仅支持实用拜占庭容错算法(practical Byzantine fault tolerance, PBFT), 而且是面向企业级的分布式账本平台[14].
1.2 PBFT共识算法2002年, Castro等人提出了PBFT共识算法, 并将其应用于解决拜占庭将军问题的分布式数据管理系统中[15]. PBFT可以在区块链网络中1/3以内共识节点恶意出错的情况下, 通过三阶段协议来保证系统的安全性与活性[16]. 在区块链网络中, 存在|R|个共识节点, 当且仅当|R|=3f+1时, PBFT方可正常运行, 并通过式(1), 来进行主节点p的选取工作.
p=vmod|R| | (1) |
其中, f为非诚实节点的个数, v表示当前主节点所运行的视图号. PBFT运行流程如图2所示.
![]() |
图 2 PBFT运行流程 |
1.3 K-近邻
K-近邻算法是一种基本分类和回归方法[17]. 即给定一个训练数据集, 对新的输入实例, 在训练数据集中找到与该实例最邻近的k个实例, 这k个实例的多数属于某个类, 就把该输入实例分类到这个类中[18]. 常见度量最近邻有以下几种方式.
设特征空间
LP(xi,xj)=(n∑l=1|x(l)i−x(l)j|p)1p | (2) |
此处
L2(xi,xj)=(n∑l=1|x(l)i−x(l)j|2)12 | (3) |
当
L1(xi,xj)=n∑l=1|x(l)i−x(l)j| | (4) |
当
L∞(xi,xj)=maxl|x(l)i−x(l)j| | (5) |
在第4节中, 将给出本文选择K-近邻分类算法的依据.
2 区块链与供应链集成的框架设计由于区块链在隐私保护和防篡改上具有独特优势, 其可以满足供应链中供应商和买方之间的信任需求. 因此, 本文构造了区块链+供应链的集成框架. 在这个框架下, 区块链为供应链提供了一个良好的信息共享渠道, 节点与节点之间可以充分信任, 如图3所示.
![]() |
图 3 区块链与供应链集成的框架 |
在图3中, 区块链网络中的共识节点是由供应链各参与主体所构成. 同时, 根据参与主体的信任评估来确定主节点和备份节点的选择. 在经过多方严格共识的基础上, 一个新的区块得以生成, 并链接到区块n之后, 从而保证供应链中存储的信息的安全性和隐私性.
3 区块链与供应链集成的框架设计 3.1 节点信任评估本文研究所需供应链数据集是由课题合作单位所提供的真实数据, 单位管理人员已对数据进行初步处理. 根据数据驱动的方法, 利用K-近邻分别从{资产负债、应收账款周转率、总资产周转率、存货周转率、销售利润率、净值产收益率、净利润增长率}等7个属性特征来评估供应链中共识节点的信任情况, 选择信任最高的节点担任主节点.
为了保证主节点的可信和共识效率, 每个交易周期都会重新评估基于最新交易数据的所有节点的信任情况. 根据新数据, 重新挑选出新的主节点.
3.2 优化后的PBFT执行流程本文经过优化后的PBFT共识算法在保持原有三阶段广播协议的基础上, 增加了一个初始化处理过程, 如图4所示.
![]() |
图 4 优化后的PBFT运行流程 |
(1)初始化阶段(init): 对区块链网络中的共识节点通过K-近邻分类模型进行信任评估. 依据信任评估结果挑选主节点, 从而替换依据式(1)的选主方式. 此时, 区块链网络中共识节点的初始化工作完成. 如果供应链中没有新的节点加入或旧的节点退出, 则就不需要重新启动共识节点信任评估操作.
(2)预准备阶段(pre-prepare): 主节点(Replica 0)给接收到客户端(Client c)的请求分配提案编号n, 并将预准备消息<<PRE_PREPARE, v, n, digest>, message>列表多播至各个备份节点(Replica 1, Replica 2, Replica 3). 其中, message为客户端的请求消息, digest为message摘要.
(3)准备阶段(prepare): 备份节点接收到主节点发送的预准备消息列表后, 开始检验message摘要的合法性, 并确保提案编号n满足水线的取值范围. 如果验证通过, 则向全网多播准备消息<PREPARE, v, n, digest, k >, 并将预准备消息和准备消息写入消息日志中; 否则, 备份节点不做任何操作. 共识节点收集来自其他节点的准备消息, 如果共识节点集齐超过全网一半的准备消息时(也包含自己的), 则该节点进入准备就绪状态; 否则, 将一致性共识验证失败的消息<FAILURE, v, t, c, k >发送至客户端c.
(4)确认阶段(commit): 进入准备就绪状态的共识节点, 则向全网多播一条确认消息<COMMIT, v, n, D(m), k >, 并收集来自其他节点的确认消息. 如果共识节点集齐超过全网一半的确认消息时(也包含自己的), 则该节点就进入提交状态, 执行客户端(Client c)的请求, 最后将处理成功的结果<SUCCESS, v, t, c, r, k >返回至客户端c, 其中r为最终的执行结果; 否则, 将一致性共识验证失败的消息<FAILURE, v, t, c, k >发送至客户端c.
3.3 算法描述本文优化后的PBFT共识算法伪代码如算法1和算法2所示.
算法1. 信任评估选取主节点p
输入: 供应链节点特征属性数据集
输出: 主节点p
1) for int k = 0 to |R|–1 do
2) K-近邻(对节点k进行信用分类);
3) 将k节点信用等级存入集合R中;
4) end for
5) R = {R0, …, R|R|–1};
6) if Rk是信用最高的节点 then
7) 供应链中第k个节点为主节点;
8) end if
9) return p
算法2. 本文优化后的PBFT算法
输入: 客户端c请求消息
输出: 处理结果r
1) if (供应链中有节点数据更新) then
2) for int k = 0 to |R|–1 do
3) 由算法1, 选出主节点p;
4) end for
5) p接收的请求消息, 并分配编号n;
6) 执行PBFT三阶段协议;
7) end if
8) if (共识节点通过验证) then
9) return <SUCCESS, v, t, c, r, k >;
10) 生成一个新的区块;
11) else
12) return <FAILURE, v, t, c, k >;
13) end if
3.4 算法的时间复杂度分析由于K-近邻的时间复杂度为O(m×n). 其中, m为共识节点数据集的特征个数, n为共识节点的个数; PBFT共识算法的时间复杂度为O(n2). 经过上面小节处理流程分析, 可以计算出本文经过优化之后的PBFT共识算法最坏情况下的时间复杂度为O(n2+m×n). 虽然本文算法最坏情况下的时间复杂度有所增加, 但仍处于平方阶级别.
4 实验验证与分析 4.1 分类算法的选择本文使用WEKA开源软件对C4.5[19]、K-近邻[20]、朴素贝叶斯[21]、支持向量机[22]、贝叶斯网络[23]等机器学习分类算法建立分类模型, 并采用十折交叉验证法(10-fold cross validation)测试数据集. 最后, 通过式(6)计算出分类准确率(Precision):
Precision=TPTP+FP | (6) |
其中, TP和FP分别为分类正确和分类错误的实例, 测试数据集分类准确率如表1所示.
![]() |
表 1 5种分类算法的模型分类准确率比较 |
由表1可知, K-近邻分类算法的准确率略高于其他4种. 因此, 本文选择其作为共识节点信任评估分类的方法.
4.2 实验环境本文使用Caliper区块链性能测试工具, 来展开性能测试与分析. 首先, 在PC机上配置好Ubuntu操作系统和虚拟机, 并为虚拟机分配内存和磁盘大小. 然后, 针对Hyperledger Fabric 的实现所需要的基础编程环境Go语言及其相关工具进行安装配置. 最后, 编译安装fabric-peer、fabric-orderer、fabric-ca组件. 实验使用的硬件配置如表2所示.
4.3 实验分析为了和优化前的PBFT共识算法作对比, 本文选取区块大小在[50, 350]范围内的交易数量进行模拟测试, 经过10次实验计算出平均值, 得到了不同区块大小下的交易时延, 如图5所示. 并选取40次实验的平均值作为优化后的PBFT共识算法的TPS值, 并将其与目前其他成熟的区块链平台的吞吐量作比较, 对比结果如图6所示.
![]() |
表 2 实验环境配置表 |
![]() |
图 5 不同区块大小的交易时延 |
![]() |
图 6 本文方法与其他主流区块链平台共识算法TPS比较 |
本文分别依次模拟取f的值为0, 1, 2, 3, 4, 5来进行实验比较, 每个取值实验10次, 取10次实验的平均值作为该次实验的最终处理结果, 并与原PBFT共识算法的实验结果作对比, 如图7所示.
由图7可知, 本文算法若出现3个以上拜占庭节点时, 时延会趋向于正无穷, 即无法在有限的时间内正常完成一致性共识验证工作. 相较于原PBFT共识算法, 可以容忍更多区块链网络中的共识节点出错.
![]() |
图 7 时延与出错节点数目关系 |
5 结论与展望
本文提出一种应用于供应链的区块链PBFT共识算法优化方法. 根据数据驱动的方法, 运用K-近邻来优化PBFT共识算法的主节点选取规则, 从而解决区块链共识过程中, 因视图切换所引发的效率问题. 实验结果表明, 与现有方法相比, 本文方法在吞吐量、时延、容错性等共识性能上均有一定的提升, 验证了所提方法的有效性. 下一步, 将区块链与数字农业相结合进行应用研究.
[1] |
Cui Y, Mou J, Cohen J, et al. Understanding information system success model and valence framework in sellers’ acceptance of cross-border e-commerce: A sequential multi-method approach. Electronic Commerce Research, 2019, 19(4): 885-914. DOI:10.1007/s10660-019-09331-0 |
[2] |
Guo WJ, Qi H, Guo QJ. An E-commerce based supply chain model of chain catering enterprises. Proceedings of the 2009 International Conference on Management of E-commerce and E-government. Nanchang: IEEE, 2009. 322–325.
|
[3] |
Wang YY, Hua ZS, Wang JC, et al. Equilibrium analysis of markup pricing strategies under power imbalance and supply chain competition. IEEE Transactions on Engineering Management, 2017, 64(4): 464-475. DOI:10.1109/TEM.2017.2693991 |
[4] |
Mondal S, Wijewardena KP, Karuppuswami S, et al. Blockchain inspired RFID-based information architecture for food supply chain. IEEE Internet of Things Journal, 2019, 6(3): 5803-5813. DOI:10.1109/JIOT.2019.2907658 |
[5] |
Kumar R, Tripathi R. Traceability of counterfeit medicine supply chain through Blockchain. Proceedings of the 11th International Conference on Communication Systems & Networks. Bengaluru: IEEE, 2019. 568–570.
|
[6] |
Sharma PK, Kumar N, Park JH. Blockchain-based distributed framework for automotive industry in a smart city. IEEE Transactions on Industrial Informatics, 2019, 15(7): 4197-4205. DOI:10.1109/TII.2018.2887101 |
[7] |
She W, Gu ZH, Liu W, et al. A channel matching scheme for cross-chain. International Journal of Embedded Systems, 2020, 12(4): 500-509. DOI:10.1504/IJES.2020.107646 |
[8] |
Wang YH, Cai SB, Lin CL, et al. Study of blockchains’s consensus mechanism based on credit. IEEE Access, 2019, 7: 10224-10231. DOI:10.1109/ACCESS.2019.2891065 |
[9] |
Sonkamble RG, Phansalkar SP, Potdar VM, et al. Survey of interoperability in electronic health records management and proposed blockchain based framework: MyBlockEHR. IEEE Access, 2021, 9: 158367-158401. DOI:10.1109/ACCESS.2021.3129284 |
[10] |
Li HD, Gao P, Zhan Y, et al. Blockchain technology empowers telecom network operation. China Communications, 2022, 19(1): 274-283. DOI:10.23919/JCC.2022.01.020 |
[11] |
Liang ZH, Huang YX, Cao ZC, et al. Creativity in trusted data: Research on application of blockchain in supply chain. International Journal of Performability Engineering, 2019, 15(2): 526-535. |
[12] |
黄宇翔, 梁志宏, 张梦迪, 等. 面向学分银行的区块链学习成果管控模型. 计算机工程, 2019, 45(5): 18-24. |
[13] |
徐恪, 凌思通, 李琦, 等. 基于区块链的网络安全体系结构与关键技术研究进展. 计算机学报, 2021, 44(1): 55-83. |
[14] |
Androulaki E, Barger A, Bortnikov V, et al. Hyperledger fabric: A distributed operating system for permissioned blockchains. Proceedings of the 13th EuroSys Conference. Porto: ACM, 2018. 30.
|
[15] |
Castro M, Liskov B. Practical byzantine fault tolerance and proactive recovery. ACM Transactions on Computer Systems, 2002, 20(4): 398-461. DOI:10.1145/571637.571640 |
[16] |
黄宇翔, 梁志宏, 黄苾, 等. 基于区块链的供应链可信数据管理. 计算机系统应用, 2018, 27(12): 9-17. DOI:10.15888/j.cnki.csa.006674 |
[17] |
Cover T, Hart PE. Nearest neighbor pattern classification. IEEE Transactions on Information Theory, 1967, 13(1): 21-27. DOI:10.1109/TIT.1967.1053964 |
[18] |
丁世飞, 徐晓, 王艳茹. 基于不相似性度量优化的密度峰值聚类算法. 软件学报, 2020, 31(11): 3321-3333. DOI:10.13328/j.cnki.jos.005813 |
[19] |
Mantas CJ, Abellán J. Analysis and extension of decision trees based on imprecise probabilities: Application on noisy data. Expert Systems with Applications, 2014, 41(5): 2514-2525. DOI:10.1016/j.eswa.2013.09.050 |
[20] |
Al-Yaseen WL, Othman ZA, Nazri MZA. Intrusion detection system based on modified K-means and multi-level support vector machines. Proceedings of the 1st International Conference on Soft Computing in Data Science. Putrajaya: Springer, 2015. 265–274.
|
[21] |
Aljawarneh S, Aldwairi M, Yassein MB. Anomaly-based intrusion detection system through feature selection analysis and building hybrid efficient model. Journal of Computational Science, 2018, 25: 152-160. DOI:10.1016/j.jocs.2017.03.006 |
[22] |
Hashem SH. Efficiency of SVM and PCA to enhance intrusion detection system. Journal of Asian Scientific Research, 2013, 3(4): 381-395. |
[23] |
刘鹤, 季宇, 韩建辉, 等. 面向阻变存储器的长短期记忆网络加速器的训练和软件仿真. 计算机研究与发展, 2019, 56(6): 1182-1191. DOI:10.7544/issn1000-1239.2019.20190113 |