浙江大学学报(工学版), 2024, 58(5): 891-899 doi: 10.3785/j.issn.1008-973X.2024.05.002

计算机技术、通信技术

营商环境评估的企业级复合区块链构建方法

李素,, 陈泽, 宋宝燕, 张浩林,

辽宁大学 信息学院,辽宁 沈阳 110036

Enterprise composite blockchain construction method for business environment evaluation

LI Su,, CHEN Ze, SONG Baoyan, ZHANG Haolin,

School of Information, Liaoning University, Shenyang 110036, China

通讯作者: 张浩林,男,工程师,博士. orcid.org/0009-0000-6652-0410. E-mail: 18911291179@189.cn

收稿日期: 2023-10-20  

基金资助: 国家重点研发计划资助项目(2023YFC3304900);辽宁省应用基础研究计划资助项目(2022JH2/101300250);辽宁省教育厅高校基本科研项目(理工类)面上项目(揭榜挂帅服务地方项目)(JYTMS20230761);教育部产学合作协同育人项目(230701160261310).

Received: 2023-10-20  

Fund supported: 国家重点研发计划资助项目(2023YFC3304900);辽宁省应用基础研究计划资助项目(2022JH2/101300250);辽宁省教育厅高校基本科研项目(理工类)面上项目(揭榜挂帅服务地方项目)(JYTMS20230761);教育部产学合作协同育人项目(230701160261310).

作者简介 About authors

李素(1997—),女,博士生,从事大规模图处理技术、大数据处理技术、区块链技术和流数据处理技术的研究.orcid.org/0000-0002-7520-509X.E-mail:liisuu@163.com , E-mail:liisuu@163.com

摘要

针对现有营商环境评估系统中企业数据可信度低、易篡改的问题,提出营商环境评估的企业级复合区块链构建方法,采用链上和链下数据协同的方式,对企业原始数据进行存储. 改进区块链哈希函数,提出基于SHA256算法的企业原始数据加密方法. 引入Key-Value存储模式进行链下基于非易失性内存的Level DB存储,降低系统的通信和存储压力. 提出数据链上存储方法,分别将Level DB中的Key值对应存储到基于DAG的Conflux公有链,企业状态数据对应存入到联盟链,为营商环境评估提供可信的存证数据. 通过与改进前的Level DB数据库和现有的区块链存储模型进行实验对比,实验结果表明,提出的企业级复合区块链构建方法在读写性能、存储效率两方面均优于现有方法.

关键词: 营商环境评估 ; Level DB ; 机器学习 ; 公有链 ; 联盟链

Abstract

An enterprise composite blockchain construction method for business environment evaluation was proposed in order to address the problems of low credibility and easy tampering of enterprise data in the existing business environment evaluation system. The synergistic approach of on-chain and off-chain data was adopted to store the original enterprise data. The blockchain hash function was improved, and an encryption method based on SHA256 algorithm was proposed for enterprise raw data. Key-Value storage mode was introduced for off-chain non-volatile memory-based Level DB storage in order to reduce system communication and storage pressure. The data on-chain storage method was proposed to store the Key values in Level DB corresponding to the DAG-based Conflux public chain and the enterprise state data corresponding to the consortium chain so as to provide trustworthy depository data for the evaluation of the business environment. Experimental comparison with the Level DB database before improvement and the existing blockchain storage model was conducted. The experimental results show that the proposed enterprise composite blockchain construction method has significantly improved read and write performance and storage efficiency.

Keywords: business environment evaluation ; Level DB ; machine learning ; public blockchain ; consortium blockchain

PDF (1227KB) 元数据 多维度评价 相关文章 导出 EndNote| Ris| Bibtex  收藏本文

本文引用格式

李素, 陈泽, 宋宝燕, 张浩林. 营商环境评估的企业级复合区块链构建方法. 浙江大学学报(工学版)[J], 2024, 58(5): 891-899 doi:10.3785/j.issn.1008-973X.2024.05.002

LI Su, CHEN Ze, SONG Baoyan, ZHANG Haolin. Enterprise composite blockchain construction method for business environment evaluation. Journal of Zhejiang University(Engineering Science)[J], 2024, 58(5): 891-899 doi:10.3785/j.issn.1008-973X.2024.05.002

营商环境包括市场主体在准入、生产经营和退出等过程中涉及的政务环境、市场环境和法治环境等有关外部因素和条件的总和[1-3]. 良好的营商环境对于现代化经济高质量发展具有重要意义[4]. 由于营商环境包含的信息源种类复杂,政务、市场、法治及企业经营等数据存在信息孤立、跨域访问效率低、中心化存储易被篡改、可信度差等问题[5-8]. 营商环境评估也对企业级复合区块链构建带来数据保护、技术标准和互操作性、风险管理与安全、资源与成本等挑战. 如何高效存储企业营商环境信息,提高信息的可信度和安全性,有效支持营商环境的评估,是领域研究的热点和难点[9].

针对上述问题,本文引入区块链技术实现多源异构的企业营商环境数据高效存储[10-12], 在满足政务、市场、法治及企业经营等数据去中心化可靠存储需求的同时,提高数据的安全性和可信性[13-15]. 本文的主要贡献如下.

(1) 为了防止营商环境评估时企业原始数据被篡改,引入改进的哈希函数SHA256算法对企业原始数据进行加密. 通过在数据块哈希运算中增加运算次数,增大SHA256算法逻辑和压缩函数复杂度,进一步提高运算的抗碰撞性及Hash 结果的雪崩效应,从而提高数据安全性.

(2) 为了降低区块链系统的通信和存储压力,提出链上和链下相结合的存储模式. 引入改进的基于非易失性内存(non-volatile memory, NVM)的Key-Value型数据库Level DB,实现在链下存储企业原始数据. Key值为经过改进后的SHA256算法加密的Hash值,Value值为企业原始数据.

(3) 针对传统区块链存在交易确认速度慢、吞吐量小的问题,提出企业级复合区块链的构建方法. 公有链采用基于有向无环图(directed acyclic graph, DAG)的Conflux存储链下Level DB中企业原始数据对应的Key值,联盟链存储企业状态数据,确保企业原始数据去中心化存储,不可篡改和可追溯.

1. 相关工作

目前,国内外许多专家学者对区块链链上链下的存储优化方法进行研究,取得了一定的研究成果.

在Level DB优化方面,Lu等[16]针对Level DB写放大提出WiscKey方法,该方法将键从值中分离出来,同时只在Compaction时合并键,利用该方法可以大大降低写放大,但它使得垃圾回收和范围查询复杂化. Lepers等[17]提出的Kvell模型采取每一项键值在磁盘上乱序的方式,可以减轻基于NVMe SSD键值存储的写停顿,但不适用于通用的SSD系统. Kaiyrakhmet等[18]提出SLM-DB存储结构,该结构采用单级的 LSM-tree,适用于具有NVM-SSD存储的系统,通过NVM上的B+树来索引SSD上面的单层LSM-tree,以实现快速读,但该方式引入了维护B+树和LSM-tree一致性的额外开销. Kannan等[19]提出的NoveLSM在NVM 上采用持久化可变内存表,可以在某种程度上减少访问时延,但造成了更严重的写入停顿.

在结构链优化方面,Lewenberg等[20]提出构建Inclusive区块链,Inclusive将Nakamoto共识和GHOST规则扩展到DAG,设计了框架,以包括链外交易. Leonov等[21]提出PHANTOM平台,参与节点为本地区块DAG找到近似的k-cluster解决方案,以修剪潜在的恶意区块. 对剩余区块进行拓扑排序,获得最终的区块总顺序. 当区块生成率很高时,Inclusive和PHANTOM都很容易受到有效性攻击. Eyal等[22]提出构建Bitcoin-NG区块链,Bitcoin-NG通过定期选举一个Leader,并允许该Leader在一段时间内指定交易全序的方式提高吞吐量,但没有减少交易的确认时间. Derek等[23]提出Vault区块链,Vault选择分片技术对区块链进行构建,以便降低存储成本,权衡网络带宽成本的增加. 虽然所有分片的综合吞吐量很大,但分片间交易的吞吐量有限.

综上所述,现有方法存在读写性能差、存储效率低、交易确认速度慢和吞吐量小等问题. 本文综合考虑Level DB优化和区块链存储效率问题,提出营商环境评估的企业级复合区块链构建方法.

2. 企业原始数据链下存储

企业级复合区块链总体架构由Level DB、公有链和联盟链组成,以实现链上链下数据协同. 链上通过链下实现计算和存储能力的扩展,链下与链上对接实现异构信息的共享. 如图1所示,在企业级复合区块链架构中,Level DB数据库存储企业原始数据信息,Value为原始数据,Key为通过改进的哈希函数SHA256算法加密后的Hash值. 负责交易的公有链存储Level DB数据库中企业原始数据对应的Key值,负责状态的联盟链存储企业的状态数据.

图 1

图 1   企业级复合区块链的架构图

Fig.1   Architecture diagram of enterprise composite blockchain


2.1. 企业原始数据的加密计算

为了进一步提高数据的安全性,在将原始数据存入链下Level DB前,采用改进的哈希函数SHA256算法对企业原始数据进行加密. SHA256算法采用6个逻辑函数和1组常数$ {K_t} $,输入为512 bit的消息块$ {x_i} $,将$ {x_i} $分为16组32 bit的字$ {M_0},{M_1},\cdots ,{M_{15}} $,输出为256 bit的报文摘要[24]. SHA256算法的过程如下.

1) 初始化.

$ \left. \begin{split} H_0^{(0)} = & {\mathrm{0x6a09e667}},\;H_1^{(0)} = {\mathrm{0xbb67ae85}}, \\ H_2^{(0)} = & {\mathrm{0x3c6ef372}},\;H_3^{(0)} ={\mathrm{ 0xa54ff53a}}, \\ H_4^{(0)} = & {\mathrm{0x510e527f}},\;H_5^{(0)} = {\mathrm{0x9b05688c}}, \\ H_6^{(0)} = & {\mathrm{0x1f83d9ab}},\;H_7^{(0)} = {\mathrm{0x5be0cd19 }}.\end{split} \right\}$

2) 准备消息列表$ {W_t} $

$ {W_t} = M_t^{(i)}{\text{ }}(0 \leqslant t \leqslant 15) , $

$ \begin{split} {W_t} =\; &\sigma _1^{\{ 256\} }({W_{t - 2}})+{W_{t - 7}}+\sigma _0^{\{ 256\} }({W_{t - 15}})+\\&{W_{t - 16}}{\text{ }}(16 \leqslant t \leqslant 163) . \end{split}$

逻辑函数的计算方式为

$ \sigma _0^{\{ 256\} } = {\mathrm{ROTR}}{^7}(x) \oplus {\mathrm{POTR}}{^{18}}(x) \oplus {\mathrm{ROTR}}{^3}(x) , $

$ \sigma _1^{\{ 256\} } = {\mathrm{ROTR}}{^{17}}(x) \oplus {\mathrm{POTR}}{^{19}}(x) \oplus {\mathrm{ROTR}}{^{10}}(x) . $

式中:$ {\mathrm{ROTR}}(x) $为循环右移函数,$ {\mathrm{POTR}}(x) $为循环左移函数.

3) 根据$ H_0^{(0)}\sim H_7^{(0)} $初始化8个工作变量$ A、B、C、D、E、F、G、{H}_{0} $,用每一轮Hash值的中间结果为其赋值.

4) 当$ 0 \leqslant t \leqslant 63 $时,执行压缩函数Ch:

$ {T_1} = h+\sum\nolimits_1^{\{ 256\} } {(e)} +{\mathrm{Ch}}(e,f,g)+K_t^{(256)}+{W_t} , $

$ {T_2} = \sum\nolimits_0^{\{ 256\} } {(a)} +{M_{{{{\mathrm{aj}}}}}}(a,b,c) , $

$ h = g,g = f,f = e,e = d+{T_1},d = c,c = b,b = a,a = {T_1}+{T_2} . $

逻辑函数的计算方式为

$ {\mathrm{Ch}}(x,y,z) = (x \wedge y) \oplus (\neg {\text{ }}x \wedge z) , $

$ \sum\nolimits_1^{\{ 256\} } {(x)} = {\mathrm{ROTR}}{^6}(x) \oplus {\mathrm{POTR}}{^{11}}(x) \oplus {\mathrm{ROTR}}{^{25}}(x) , $

$ {M_{{\mathrm{aj}}}}(x,y,z) = (x \wedge y) \oplus (x \wedge z) \oplus (y \wedge z) , $

$ \sum\nolimits_0^{\{ 256\} } {(x) = {\mathrm{ROTR}}{^2}(x)} \oplus {\mathrm{POTR}}{^{13}}(x) \oplus {\mathrm{ROTR}}{^{22}}(x) . $

5) 计算每个分组的中间散列值:

$ \left.\begin{split} H_0^{(i)} = & a+H_0^{(i - 1)},\;H_1^{(i)} = b+H_1^{(i - 1)}, \\ H_2^{(i)} = & c+H_2^{(i - 1)},\;H_3^{(i)} = d+H_3^{(i - 1)}, \\ H_4^{(i)} = & e+H_4^{(i - 1)},\;H_5^{(i)} = f+H_5^{(i - 1)}, \\ H_6^{(i)} = & g+H_6^{(i - 1)},\;H_7^{(i)} = h+H_7^{(i - 1)}.\end{split}\right\} $

式中:$ i $为消息的第$ i $个分组,所有分组处理完毕后,输出256 bit的Hash值.

在对SHA256算法进行改进时,在每个512 bit的数据块哈希运算中增加16次运算,保证消息的每个bit可以影响到更多的bit位,进一步改善算法的非线性扩散性. 加大SHA256算法逻辑和压缩函数的复杂度,以加速消息的差分扩散程度,使得递推过程具有更强的随机性,消除局部碰撞的依从条件. 改进后SHA256算法过程如下.

1) 对消息块$ {M^{(i)}},i = 1,2,\cdots ,N $,进行如下循环.

a) 准备消息列表$ {W_t} $

$ {W_t} = M_t^{(i)}{\text{ }}(0 \leqslant t \leqslant 15) , $

$ {W_t} = {W_{t - 4}}+{\sigma _0}({W_{t - 9}})+{\sigma _1}({W_{t - 12}})+{W_{t - 16}}{\text{ }}(16 \leqslant t \leqslant 79) . $

b) 工作变量初始化:

$\left. \begin{gathered} A = H_0^{(i - 1)},\;B = H_1^{(i - 1)},\;C = H_2^{(i - 1)},\;D = H_3^{(i - 1)}, \\ E = H_4^{(i - 1)},\;F = H_5^{(i - 1)},\;G = H_6^{(i - 1)},\;H = H_7^{(i - 1)}. \\ \end{gathered} \right\}$

式中:$ A\sim H $为8个长度为32 bit的工作变量;$ H_0^{(i - 1)}\sim H_7^{(i - 1)} $为上一轮计算中的Hash值,当$ i = 1 $时,$ H_0^{(0)}\sim H_7^{(0)} $为常数初始值,可随机选择,参照未改进的SHA256算法,设为

$\left.\begin{aligned} H_0^{(0)} = &{\mathrm{0x6a09e667}},\;H_1^{(0)} = {\mathrm{0xbb67ae85}}, \\ H_2^{(0)} = & {\mathrm{0x3c6ef372}},\;H_3^{(0)} = {\mathrm{0xa54ff53a}}, \\ H_4^{(0)} = & {\mathrm{0x510e527f}},\;H_5^{(0)} = {\mathrm{0x9b05688c}}, \\ H_6^{(0)} = & {\mathrm{0x1f83d9ab}},\;H_7^{(0)} = {\mathrm{0x5be0cd19}}. \end{aligned}\right\} $

2) 当$ 0 \leqslant t \leqslant 79 $时,执行如下压缩函数:

$ {T_1} = h+\sum\nolimits_0 {(e)+{\mathrm{Ch}}(e,f,g)+{K_t}+{W_t}} , $

$ {T_2} = \sum\nolimits_1 {(a)+{M_{{\mathrm{aj}}}}(a,b,c)} , $

$ \left.\begin{gathered} h = g+{T_1},g = f+{T_2},f = e+{T_1},e = d+{T_2}, \\ d = c+{T_1},c = b+{T_2},b = a+{T_1},a = {T_1}+{T_2}. \\ \end{gathered} \right\}$

式中:$ {T_1}、{T_2} $为中间变量. 压缩函数采用80个32 bit的字$ {K_t}^{\{ 256\} }{\text{ (0}} \leqslant {{t}} \leqslant {\text{79)}} $常数序列,前64个32 bit的字见文献[25],后16个32 bit的字定义如下:

改进后的SHA256算法使用的6个逻辑函数基于32 bit的字(如$ x、y、z $)进行操作,每个逻辑函数的操作结果是新的32 bit的字,具体定义如下:

$ \left.\begin{gathered} {\sigma _0}(x) = {\mathrm{ROTR}}{^8}(x) \oplus {\mathrm{ROTR}}{^{18}}(x) \oplus {\mathrm{SHR}}{^5}(x), \\ {\sigma _1}(x) = {\mathrm{ROTR}}{^{10}}(x) \oplus {\mathrm{ROTR}}{^{23}}(x) \oplus {\mathrm{SHR}}{^{16}}(x), \\ \sum\nolimits_0 {(x) = } {\mathrm{ROTR}}{^6}(x) \oplus {\mathrm{ROTR}}{^{14}}(x) \oplus {\mathrm{ROTR}}{^{21}}(x), \\ \sum\nolimits_1 {(x) = } {\mathrm{ROTR}}{^3}(x) \oplus {\mathrm{ROTR}}{^{11}}(x) \oplus {\mathrm{ROTR}}{^{27}}(x), \\{\mathrm{Ch}}(x,y,z) = (x \wedge y) \oplus (\neg {\text{ }}x \wedge z) \oplus (\neg {{ y}} \wedge \neg {\text{ }}z), \\ {M_{{\mathrm{aj}}}}(x,y,z) = (x \wedge y) \oplus (x \wedge z) \oplus ({{y}} \wedge z). \\ \end{gathered}\right\} $

式中:$ {\mathrm{SHR}}(x) $为逻辑右移函数,每一组的循环操作如图2所示.

图 2

图 2   改进后的SHA256算法操作

Fig.2   Improved SHA256 algorithm operation


采用改进后的哈希函数SHA256算法,对企业原始数据加密生成相应的Hash值,作为链下Level DB数据库中的Key值,开展后续的存储操作.

2.2. 基于NVM的链下Level DB存储模型构建

将企业原始数据加密后的Hash值作为Key值,原始数据作为Value值,对应存入链下Level DB中. Level DB是基于LSM-tree(log-structured merge tree)架构的Key-Value非关系型数据库存储系统,它写入快,占用空间少,但LSM-tree架构有写停顿、写放大和不利于读的缺点. 在LSM-tree架构的基础上,提出基于NVM的LSM-tree存储模型. 利用该模型,可以提高访问速度、持久性、并发性和扩展性,同时具有更好的集成性. 链下Level DB存储模型架构如图3所示.

图 3

图 3   链下LevelDB存储模型架构

Fig.3   Off-chain LevelDB storage model architecture


图3所示,将原有LSM-tree架构中的$ {L_0} $层放在NVM上,$ L{}_1 $~$ {L_n} $层存储在固态硬盘(solid state disk, SSD) 上,解决数据合并时的写时延问题. 对$ {L_0} $层的文件引入学习索引,使得$ {L_0} $层文件之间有序,在降低读时延的同时提高$ {L_0} $层文件中数据的查找速度. 在NVM层上使用学习索引,利用学得的模型对数据的位置进行预测,以便加快数据在NVM上的查找速度. 通过学习索引,可以找到$ {L_0} $层中某一个key的位置. 每个NVMTable需要单独学习一个索引模型. 建立key到数据位置的近似映射. 从近似映射的位置开始,和目标 key进行大小比较,通过向前或向后线性搜索,确定正确的位置. 如图4所示,选择分段集合模型索引(piecewise geometric model index, PGM-index)进行位置定位.

图 4

图 4   PGM索引示例图

Fig.4   Example diagram of PGM index


在PGM索引第1层,将数据分成3个分区,每个分区由简单的线性模型$ ({f_1},{f_2},{f_3}) $表示. 通过构建这些线性模型,每个线性模型能够利用预先设定的误差,在各自的分区内进行相应的key值预测. 将第1层的划分边界当作其自身的排序数据集,计算另一个误差有界的分段线性回归. 如此反复,直至顶层的 PGM变得足够小,以加快数据查找速度.

3. 链上企业级复合区块链的构建

3.1. Conflux公有链构建

为了提高区块链的性能,从有向无环图(DAG)的特殊结构出发,采用基于主干链的DAG共识协议Conflux共识,构建企业级复合区块链中的Conflux公有链. Conflux公有链的架构如图5所示.

图 5

图 5   Conflux公有链架构图

Fig.5   Architecture diagram of Conflux public blockchain


Conflux中的交易由2.2节链下Level DB中企业原始数据对应的Key值组成. Conflux从预定义的创世区块开始,确定区块链的初始状态,所有区块和边构成一个DAG结构. Conflux中的所有参与节点通过Gossip网络连接,每当一个节点发起一项交易或生成一个新区块,它将通过 Gossip网络将交易广播给所有其他节点. Conflux底层区块的数据结构如图6所示,采用树图的形式,通过并行处理方式加大出块速度,且不会因为链分叉问题降低安全性,使得每个企业都可以并行地上传交易,即企业原始数据对应的Hash值,使得整个系统可以更高效地处理区块和交易.

图 6

图 6   Conflux公有链的数据结构

Fig.6   Data structure diagram of Conflux public blockchain


在Conflux公有链中,提出基于主干链的DAG共识协议进行共识操作. 该共识可以处理并发区块,不会丢弃任何并发区块作为分叉. 除创世区块外,每个区块都有一条出度的父边(见图6的实线箭头),表示区块之间的投票关系. 每个区块可以有多条出度的引用边(见图6的虚线箭头),表示区块的生成顺序. DAG中的所有父边一起形成一棵父树,其中创世区块是根. 在父树中,Conflux选择一条从创世区块到其中一个叶区块的链作为主链. Conflux采用Ghost协议选取主链,从创世区块开始,计算每个节点的子树大小,拥有最大子树的节点成为主链上的一个节点.

每当一个节点生成一个新的区块时,它首先计算其本地DAG状态下的主链,并将主链中的最后一个区块设置为新区块的父块. 在DAG中查找没有入度边的所有端区块,创建从新区块到每个端区块的引用边. 给定一个从创世区块开始、只包含父边的主链,排序算法利用主链将DAG中的所有区块划分为epoch,主链上的每个区块都对应一个epoch. 当进行共识确定区块总序时,Conflux对epoch进行排序,根据epoch的拓扑顺序对每个epoch中的区块进行排序. 当确定交易顺序时,交易的顺序由包含这笔交易的区块总序确定先后顺序.

按照上述过程,对企业上传的原始数据对应的Key值进行数据上链操作.

3.2. Fabric联盟链的构建

由于企业众多,为了进一步降低网络资源消耗,选取一定比例通过验证的企业节点构建联盟链,通过这些预选节点实现共识算法、公开验证、安全存储. 采用联盟链Hyperledger Fabric部署联盟链. 联盟链主要负责企业状态数据存储,存储过程中所使用的符号及其含义如表1所示. 在满足合约执行触发条件后,智能合约会自动地访问、共享和存储数据,根据预先定义的约束执行数据存储操作.

表 1   联盟链状态数据存储过程使用的符号及其含义

Tab.1  Symbols used by consortium chain state data storage procedure and their meanings

符号含义
$ {N_i} $$ i $个企业节点
$ {\mathrm{B}}{{\mathrm{S}}_j} $$ j $个企业总部节点
$ {\mathrm{P}}{{\mathrm{K}}_i},{\mathrm{S}}{{\mathrm{K}}_i},{\mathrm{Cer}}{{\mathrm{t}}_i} $实体$ i $的公钥、私钥和证书
$ \{ x\} $元素$ x $的集合
$ {\mathrm{Timestamp}} $时间戳
$ i \to j $实体$ i $发送信息给实体$ j $
$ x||y $元素$ x $连接元素$ y $
$ {E_{{\mathrm{P}}{{\mathrm{K}}_i}}}(m) $使用实体$ i $的公钥加密信息$ m $
$ {\mathrm{Sig}}{{\mathrm{n}}_{{\mathrm{S}}{{\mathrm{K}}_i}}}(m) $使用实体$ i $的私钥对信息$ m $进行数字签名
$ {\mathrm{Hash}}(m) $信息$ m $的哈希值

新窗口打开| 下载CSV


企业状态数据存储的主要流程如下.

1) 系统初始化. 每个企业节点须通过监管机构节点身份认证,认证通过后成为合法的联盟链网络节点. 获取$ \{ {\mathrm{P}}{{\mathrm{K}}_{{\mathrm{PID}}_i^k}},{\mathrm{S}}{{\mathrm{K}}_{{\mathrm{PID}}_i^k}},{\mathrm{Cer}}{{\mathrm{t}}_{{\mathrm{PID}}_i^k}}\} _{k = 1}^v $,分别表示用于加密数据的公私密钥对及其证书. 执行系统初始化,企业节点从邻近企业总部节点的记录池中下载当前联盟链的区块数据存储位置索引表.

2) 状态数据上传. 企业节点$ {N_i} $向本地的企业总部节点$ {\mathrm{B}}{{\mathrm{S}}_j} $发送上传请求,请求包括$ {N_i} $当前使用的$ {\mathrm{Cer}}{{\mathrm{t}}_{{\mathrm{PID}}_i^k}} $和数字签名$ {\mathrm{Sig}}\_1 $,以确保数据来源的可靠性和真实性. $ {\mathrm{B}}{{\mathrm{S}}_j} $接收并验证$ {N_i} $的请求和身份信息,以确认其合法性并作出回应. $ {N_i} $使用当前公私密钥对中的公钥$ {\mathrm{P}}{{\mathrm{K}}_{{\mathrm{PID}}_i^k}} $对状态数据$ {\text{Data}} $进行加密,并将该状态数据连同它的数字签名一起发送给$ {\mathrm{B}}{{\mathrm{S}}_j} $, 通过它的公钥$ {\mathrm{P}}{{\mathrm{K}}_{{\mathrm{B}}{{\mathrm{S}}_j}}} $$ {N_i} $发送过来的记录数据进行加密,得到最终的上传数据$ {\text{Record}} $. 上述过程的形式化语言描述如下:

其中,$ {\mathrm{Data}}\_1 = {{E}}{}_{{\mathrm{P}}{{\mathrm{K}}_{{\mathrm{PID}}_i^k}}}({\mathrm{Data}}||{\mathrm{Timestamp}}) $$ {\mathrm{Sig}}\_1 = {\mathrm{Si}}{{\mathrm{g}}_{{\mathrm{S}}{{\mathrm{K}}_{{\mathrm{PID}}_i^k}}}}({\mathrm{Data}}\_1) $.

3) 收集上传数据. 本地企业总部节点$ {\mathrm{B}}{{\mathrm{S}}_j} $对上传的$ {\text{Record}} $进行验证. 若数据安全有效,则将$ {\text{Record}} $存入本地记录池;反之则忽略.

4) 本地企业总部节点工作量证明.

每经过一个周期 ,$ {\mathrm{B}}{{\mathrm{S}}_j} $$ T $内收集到的所有有效数据合并为一个数据集合$ {\mathrm{Data}}\_{\mathrm{se}}{\mathrm{t}}({\mathrm{Data}}\_{\mathrm{set}} = $$ \{ {\mathrm{Records||Timestamp}}\} ) $,并对其进行数据签名,以确保$ {\mathrm{Data\_set}} $来源的合法性和可验证性. 先找到有效工作量证明的$ {\mathrm{B{S}}_j} $,可以获得记录本次数据区块的权利,并获得相应奖励. 获得记账权的$ {\mathrm{B{S}}_j} $须将当前的$ {\mathrm{Data\_set}} $和计算出来的$ x $广播给其他企业总部节点,用于验证和检验. 若其他企业总部节点验证通过,则该$ {\mathrm{B{S}}_j} $$ {\mathrm{Data\_set}} $合并为新的数据区块,并存储在联盟链中,得到相应的系统奖励.

5) 企业总部节点间的区块共识.

在最短时间内计算出有效工作量证明的企业总部节点$ {\mathrm{B{S}}_j} $成为当前共识过程中的主节点($ {\text{Leader}} $),其他企业总部节点作为从节点($ {\text{Slave}} $),联盟链采用拜占庭容错(practical byzantine fault tolerance, PBFT)共识机制进行共识,共识过程如下.

a) $ {\text{Leader}} $收集各$ {\text{Slave}} $$ {\mathrm{Data\_set}} $,并将其整合到一个新的数据区块中,同时附加上$ {\text{Leader}} $的数字签名和新数据区块的$ {\text{Hash}} $以备检验. $ {\text{Leader}} $向各个$ {\text{Slave}} $广播新生成的数据区块,以等待其他节点的验证. 上述过程的形式化语言描述如下:

其中,${\mathrm{ Data\_hash}} = {\mathrm{Hash}}({\mathrm{Data}}\_{\mathrm{sets}}||{\mathrm{Timestamp}}) $$ {\mathrm{Si}}{{\mathrm{g}}_{{\mathrm{B}}{{\mathrm{S}}_j}}} = {\mathrm{Sig}}{{\mathrm{n}}_{{\mathrm{S}}{{\mathrm{K}}_{{\mathrm{B}}{{\mathrm{S}}_j}}}}}({\mathrm{Data}}\_{\mathrm{sets}}||{\mathrm{Data}}\_{\mathrm{hash}}) $.

b) $ {\text{Slave}} $收到数据区块后,对$ {\text{Leader}} $发送过来的区块$ {\text{Hash}} $和数字签名信息进行验证,确认区块$ {\text{Hash}} $和数字签名的正确性和合法性,并将验证结果$ {\text{Result}} $与自己的数字签名广播给其他$ {\text{Slave}} $,实现$ {\text{Slave}} $间互连、互查.

c) 某个$ {\text{Slave}} $$ {\mathrm{B}}{{\mathrm{S}}_l} $接收并汇总其他$ {\text{Slave}} $的验证结果,与自己的验证结果比较,验证后向$ {\text{Leader}} $发送一个回复$ {\text{Reply}} $.$ {\text{Reply}} $包括$ {\text{Slave}} $自身的验证结果($ {\mathrm{my\_result}} $)、收到的所有验证结果($ {\mathrm{Rece}}\_ {\mathrm{results}} $)、验证对比的最终结论($ {\text{Comparison}} $)和对应的数字签名. 上述过程的形式化语言描述如下:

其中,$ {\mathrm{Data}}\_3 = {\mathrm{my}}\_{\mathrm{result}}||{\mathrm{Rece}}\_{\mathrm{results}}||{\mathrm{Comparison}} $$ {\mathrm{Si}}{{\mathrm{g}}_{{\mathrm{B}}{{\mathrm{S}}_l}}} = {\mathrm{Sig}}{{\mathrm{n}}_{{\mathrm{S}}{{\mathrm{K}}_{{\mathrm{B}}{{\mathrm{S}}_l}}}}}({\mathrm{Data}}\_3) $.

d) $ {\text{Leader}} $收集汇总所有$ {\text{Slave}} $的验证回复. 若所有$ {\text{Slave}} $都验证通过当前区块的正确性和合法性, 则$ {\text{Leader}} $整合该数据区块、参与验证的$ {\text{Slave}} $的证书集合($ \{ {\mathrm{Cer}}{{\mathrm{t}}_{{\mathrm{BS}}}}\} $)以及对应的数字签名并发送给所有的$ {\text{Slave}} $. 此后,该数据区块将以时间顺序存储在联盟链中,$ {\text{Leader}} $从中获得系统的奖励. 上述过程的形式化语言描述如下:

其中,$ {\mathrm{Data}}\_4 = ({\mathrm{Data}}\_{\mathrm{sets}}||{\mathrm{Data}}\_{\mathrm{hash}}||\{ {\mathrm{Cer}}{{\mathrm{t}}_{{\mathrm{BS}}}}\} ||$Timestamp),$ {\mathrm{Si}}{{\mathrm{g}}_{{\mathrm{B}}{{\mathrm{S}}_j}}} = {\mathrm{Sig}}{{\mathrm{n}}_{{\mathrm{S}}{{\mathrm{K}}_{{\mathrm{B}}{{\mathrm{S}}_j}}}}}({\mathrm{Data}}\_4) $.

e) 若部分企业总部节点未验证通过,则$ {\text{Leader}} $将分析和查验这些企业总部节点的验证结果. $ {\text{Leader}} $重新发送该数据区块给这部分企业总部节点进行二次验证. 若仍有节点不通过,则将按照少数服从多数的原则,超过一定比例的企业总部节点验证通过该数据区块,将该数据区块按d)的方式加载到联盟链中.

通过上述共识过程,企业状态数据将存入联盟链Fabric中,以便为后续对企业营商环境进行评估时提供关联数据溯源和分析支持.

4. 实验与分析

实验数据集来自区块链与智能金融研究中心InplusLab实验室开发的区块链数据智能平台XBlock中的数据集,所有数据集都进行了标准化的清洗和归类,并统一为标准的一致格式. 数据集的具体内容如表2所示.

表 2   实验数据集介绍

Tab.2  Introduction to experimental datasets

数据集说明
First-order Transaction Network of Phishing Nodes网络平均包含6万多个节点和20万条链路
Bitcoin Partial Transaction Dataset对2014年11月至2016年1月的交易数据快照进行采样,采样间隔为6个月,每个快照包含对应月份的前150万条交易记录
Second-order Transaction Network of Phishing Nodes包含1 660个目标钓鱼节点和1700个从Etherscan爬取的非钓鱼节点产生的交易数据
Ethereum On-chain Data包含14 500 000个区块信息、区块数据生成的
1 524 325 653个交易信息

新窗口打开| 下载CSV


实验从链下Level DB读写性能、企业级复合区块链存储效率2个方面,对比分析营商环境评估的企业级复合区块链构建方法的有效性.

4.1. 链下Level DB数据读写性能对比

当进行Level DB读写性能测试对比时,设置$ {L_0} $层文件数量上限为10,对比测试在4、8、16 kB 3种不同大小Value下的读写时延. 在每种 Value下,分别生成10万条均匀分布的测试数据,再生成测试数据范围内均匀分布的10万条查询. 在修改$ {L_0} $层前,读操作时延包括读内存和读磁盘. 写操作时延包括3种:1) 在数据写入内存表前,将数据及它的校验值写入磁盘的时延;2) 数据写入MemTable的时延;3) 2次合并带来的尾时延. 如图78所示分别为修改前、后的Level DB的读、写时延对比图. 图中,RLb、WLb分别为修改前Level DB的读、写时延,RLa、WLa分别为修改后Level DB的读、写时延.

图 7

图 7   修改前LevelDB读、写时延的对比图

Fig.7   Comparison of reading and writing latency of LevelDB before modification


图 8

图 8   修改后LevelDB读、写时延的对比图

Fig.8   Comparison of reading and writing latency of LevelDB after modification


图78所示,与未修改$ {L_0} $层相比,修改后的$ {L_0} $层总体读时延都降低了约50%,由于将$ {L_0} $层放在NVM上,缩短了$ {L_0} $层的查询路径,同时引入了查找学习索引,效率比传统 SSTable 的二分查找快. 总体写时延都降低了约30%. 由于内存表持久化的过程由DRAM到SSD变为DRAM到NVM,减少的大部分时延都来自合并.

4.2. 链上企业级复合区块链的存储效率对比

实验环境为20台服务器、32核CPU、128 GB内存、10 TB存储空间. 区块链采用Docker虚拟化技术部署,使用Kubernetes管理Docker集群. 对比存储模型为公有链以太坊Ethereum和联盟链Hyperledger Fabric. 实验结果如图9所示. 图中,de为存储的企业实体数据集大小,t为存储所需的时间.

图 9

图 9   企业级复合区块链的存储效率对比

Fig.9   Storage efficiency comparison of enterprise composite blockchain


图9可知,提出的企业级复合区块链存储结构的存储效率高于Ethereum和Fabric,复合区块链中的公有链采用基于DAG的区块结构和Conflux共识,加快了区块构建和共识过程,提高了存储效率.

5. 结 语

营商环境的好坏直接影响企业的经营状况和当地的经济发展. 针对营商环境评估时面临的企业原始数据质量不高的问题,本文提出营商环境评估的企业级复合区块链构建方法,采用链上和链下相结合的存储模式,对企业原始数据进行存储. 引入改进的哈希函数SHA256算法对企业原始数据进行加密,并将其存入链下基于非易失性内存的Level DB数据库中,以降低系统的通信和存储压力. 将数据上链存储,分别将Level DB中的Key值对应存储到基于DAG的Conflux公有链,将企业状态数据对应存入联盟链Hyperledger Fabric,为营商环境评估提供可信的存证数据. 通过实验对比分析,验证了所提方法的有效性.

参考文献

ZHAO X Y, YI C J, ZHAN Y, et al

Business environment distance and innovation performance of EMNEs: the mediating effect of R&D internationalization

[J]. Journal of Innovation and Knowledge, 2022, 7 (4): 100241- 100252

DOI:10.1016/j.jik.2022.100241      [本文引用: 1]

HASCHKA R E, HERWARTZ H, STRUTHMANN P, et al

The joint effects of financial development and the business environment on firm growth: evidence from Vietnam

[J]. Journal of Comparative Economics, 2022, 50 (2): 486- 506

DOI:10.1016/j.jce.2021.11.002     

BONDELI J V, HAVENVID M I

Bouncing back in turbulent business environments: exploring resilience in business networks

[J]. Industrial Marketing Management, 2022, 107: 383- 395

DOI:10.1016/j.indmarman.2022.10.022      [本文引用: 1]

LIU H J, LOVE P E D, MA L, et al

Predicting production-output performance within a complex business environment: from singular to multi-dimensional observations in evaluation

[J]. International Journal of Production Research, 2021, 59 (24): 7390- 7399

DOI:10.1080/00207543.2020.1841316      [本文引用: 1]

HASSAN M U, REHMANI M H, CHEN J

Anomaly detection in blockchain networks: a comprehensive survey

[J]. IEEE Communications Surveys and Tutorials, 2022, 25 (1): 289- 318

[本文引用: 1]

HUANG J, HE D, OBAIDAT M S, et al

The application of the blockchain technology in voting systems: a review

[J]. ACM Computing Surveys, 2021, 54 (3): 1- 28

WEN Z, LIAO H, EMROUZNEJAD A

Information representation of blockchain technology: risk evaluation of investment by personalized quantifier with cubic spline interpolation

[J]. Information Processing and Management, 2021, 58 (4): 102571- 102584

DOI:10.1016/j.ipm.2021.102571     

QURESHI J N, FAROOQ M S, ABID A, et al

Blockchain applications for the internet of things: systematic review and challenges

[J]. Microprocessors and Microsystems, 2022, 94: 104632- 104671

DOI:10.1016/j.micpro.2022.104632      [本文引用: 1]

BERDIK D, OTOUM S, SCHMIDT N, et al

A survey on blockchain for information systems management and security

[J]. Information Processing and Management, 2021, 58 (1): 102397- 102425

DOI:10.1016/j.ipm.2020.102397      [本文引用: 1]

LU Q, BINH T A, WEBER I, et al

Integrated model-driven engineering of blockchain applications for business processes and asset management

[J]. Software: Practice and Experience, 2021, 51 (5): 1059- 1079

DOI:10.1002/spe.2931      [本文引用: 1]

ALI M S, VECCHIO M, PINCHEIRA M, et al

Applications of blockchains in the internet of things: a comprehensive survey

[J]. IEEE Communications Surveys and Tutorials, 2018, 21 (2): 1676- 1717

DORFLEITNER G, MUCK F, SCHECKENBACH I

Blockchain applications for climate protection: a global empirical investigation

[J]. Renewable and Sustainable Energy Reviews, 2021, 149: 111378- 111400

DOI:10.1016/j.rser.2021.111378      [本文引用: 1]

BENSALEM H, BLAQUIERE Y, SAVARIA Y. Acceleration of the secure hash algorithm-256 (SHA-256) on an FPGA-CPU cluster using OpenCL [C]// IEEE International Symposium on Circuits and Systems . Daegu: IEEE, 2021: 1-5.

[本文引用: 1]

马文龙, 朱妤晴, 蒋德钧, 等

Key-Value型NoSQL本地存储系统研究

[J]. 计算机学报, 2018, 41 (8): 1722- 1751

MA Wenlong, ZHU Yuqing, JIANG Dejun, et al

A survey on local key-value store of NoSQL system

[J]. Chinese Journal of Computers, 2018, 41 (8): 1722- 1751

高政风, 郑继来, 汤舒扬, 等

基于DAG的分布式账本共识机制研究

[J]. 软件学报, 2020, 31 (4): 1124- 1142

[本文引用: 1]

GAO Zhengfeng, ZHENG Jilai, TANG Shuyang, et al

State-of-the-art survey of consensus mecha-nisms on DAG-based distributed ledger

[J]. Journal of Software, 2020, 31 (4): 1124- 1142

[本文引用: 1]

LU L, PILLAI T S, GOPALAKRISHNAN H, et al

Wisckey: separating keys from values in SSD-conscious storage

[J]. ACM Transactions on Storage, 2017, 13 (1): 1- 28

[本文引用: 1]

LEPERS B, BALMAU O, GUPTA K, et al. Kvell: the design and implementation of a fast persistent key-value store [C]// Proceedings of the 27th ACM Symposium on Operating Systems Principles . Huntsville: ACM, 2019: 447-461.

[本文引用: 1]

KAIYRAKHMET O, LEE S, NAM B, et al. SLM-DB: single-level key-value store with persistent memory [C]// 17th USENIX Conference on File and Storage Technologies . Boston: USENIX, 2019: 191-205.

[本文引用: 1]

KANNAN S, BHAT N, GAVRILOVSKA A, et al. Redesigning LSMs for nonvolatile memory with NoveLSM [C]// USENIX Annual Technical Conference . Boston: USENIX, 2018: 993-1005.

[本文引用: 1]

LEWENBERG Y, SOMPOLINSKY Y, ZOHAR A. Inclusive blockchain protocols [C]// International Conference on Financial Cryptography and Data Security . San Juan: Springer, 2015: 528-547.

[本文引用: 1]

LEONOV D, KODENKO M, LEICHENCO D, et al

Design and validation of a phantom for transcranial ultrasonography

[J]. International Journal of Computer Assisted Radiology and Surgery, 2022, 17 (9): 1579- 1588

DOI:10.1007/s11548-022-02614-2      [本文引用: 1]

EYAL I, GENCER A E, SIRER E G, et al. Bitcoin-NG: a scalable blockchain protocol [C]// 13th USENIX Symposium on Networked Systems Design and Implementation . Santa Clara: USENIX, 2016: 45-59.

[本文引用: 1]

DEREK L, ADAM S, YOSSI G, et al

Vault: fast bootstrapping for cryptocurrencies

[J]. IACR Cryptology ePrint Archive, 2018, 21 (15): 269- 281

[本文引用: 1]

何润民

单向Hash函数SHA256的研究与改进

[J]. 信息技术, 2013, 37 (8): 22- 25

[本文引用: 1]

HE Runmin

One-way Hash function research and improved SHA-256

[J]. Information Technology, 2013, 37 (8): 22- 25

[本文引用: 1]

MELL P, GRANCE T. The NIST definition of cloud computing [EB/OL]. (2011-09-01)[2022-06-15]. https://csrc.nist.gov/publications/detail/sp/800-145/final.

[本文引用: 1]

/