计算机系统应用  2018, Vol. 27 Issue (12): 9-17   PDF    
基于区块链的供应链可信数据管理
黄宇翔, 梁志宏, 黄苾, 孙永科     
西南林业大学 大数据与人工智能研究院, 昆明 650224
摘要:为解决传统供应链中贸易数据潜在伪造、篡改等安全问题, 提出了一种基于区块链技术的供应链可信数据管理方案. 首先, 以智能合约将贸易规则代码化, 防范履约风险和提高贸易数据处理可信性; 其次, 采用ZSS04方案和抽样技术交互完成贸易数据完整性检验; 再次, 设计了适用于供应链的分布式共识机制, 以提高贸易数据存储可信性; 最后, 利用区块链技术所具有的原生特性实现非可信环境下的可信数据管理. 分析以及实验结果表明, 该方案能够为供应链中贸易数据管理提供新的思路和技术支持.
关键词: 供应链    可信数据管理    区块链    智能合约    密码学    共识机制    
Supply Chain Trustworthy Data Management Based on Blockchain
HUANG Yu-Xiang, LIANG Zhi-Hong, HUANG Bi, SUN Yong-Ke     
Institute of Big Data and Artificial Intelligence, Southwest Forestry University, Kunming 650224, China
Foundation item: National Natural Science Foundation of China (61702442)
Abstract: In order to solve the security problems such as potential tampering and forgery in the traditional supply chain of transaction data, this study proposes a new trusted data management scheme based on blockchain technology. First, an intelligent contract suitable for supply chain is designed to code trade rules in order to prevent performance risks and improve the credibility of trade data processing. Then, ZSS04 scheme and sampling techniques are used to complete transaction data integrity check. Furthermore, a distributed consensus mechanism for supply chain is designed to improve the reliability of trade data storage. Finally, the trusted data management in untrusted environment is realized by using the native characteristics of blockchain. Results show that the scheme can provide new ideas and technical support for transaction data management in supply chain.
Key words: supply chain     trusted data management     blockchain     smart contract     cryptography     consensus mechanism    

自14世纪欧洲文艺复兴, 资本主义萌芽确立, 全球贸易一直是人类历史上最强大的“财富创造者”. 国务院办公厅2017年10月发布《关于积极推进供应链创新与应用的指导意见》(国办发〔2017〕84号)中把"积极稳妥发展供应链金融"列为重点任务. 然而, 在推动供应链的快速发展的实践中, 须解决的关键问题是要保证交易数据的可信[1]: 换言之, 即在组织合作关系中, 在没有监视或控制的过程, 贸易主体间所提供的交易信息是真实可靠的. 多年来, 为了建立贸易中的信任机制, 信托机构和信托工具应运而生. 然而, 这种传统中心化的第三方数据管理方式缺乏技术可信度, 且存在效率低下、成本高昂和易受攻击等诸多不可控因素[2,3]. 这些问题都严重制约了供应链的健康发展. 因此, 解决供应链中交易数据可信问题在当今经济高速发展的时代尤为重要, 关系到社会主义市场经济的繁荣.

从数据管理的角度分析, 一个可信的数据库管理系统[4]是要从三个层面来保证系统的可信, 即存储的可信性、处理的可信性和外部访问的可信性, 如图1所示. 本文在研究供应链中可信数据管理的过程中, 重点关注于数据存储的可信性和处理的可信性, 一旦交易完成, 则不会出现被攻击者恶意篡改或交易信息丢失的情况.

图 1 可信数据管理示意图

近年来, 学术界针对供应链可信数据管理的研究 大部分主要集中在B2B与B2C模式上, 然而也面临着诸多交易信任问题. 例如, 文献[5]通过借助于大数据技术来捕获交易主体交易信息的证明依据, 但是该方法的缺点在于数据来源的局限性, 无法获得完整的交易链数据, 并且由于数据源的独立性, 攻击者借助大数据技术对交易数据进行非授权改动的可能性增大. 文献[6]提出将B2B+B2C供应链上的一部分放置在ERP中, 然而ERP是企业管理中非常复杂的信息管理系统, 无法真正有效确保交易数据的完全可信. 因此, 迫切需要从技术层面给出一种操作性强的供应链可信数据管理方法.

针对这些挑战, 本文基于区块链技术[7], 提出了一种新的供应链可信数据管理方案, 以保证交易数据的处理可信性和存储可信性. 在交易初始阶段, 贸易主体之间可以自由定制符合各方利益的交易规则, 引入交易中心, 并采用智能合约[8]将交易规则计算机代码化; 在交易确认阶段, 采用ZSS04短签名方案[9]对交易数据取验证标签, 可以利用同态标签[10]的同态性来保持交易数据结构的不变; 在交易验证阶段, 引入审核中心, 审核中心基于隐私保护数据持有性证明[11]和抽样技术[12]来完成交易数据完整性轻量级验证工作. 最后, 在登记上链阶段, 基于区块链的原生特性(防篡改、无中心、强一致性等)实现交易结果与相关交易证据在链上的高度钩稽, 以确保交易结果的高可信. 本文力图从技术上杜绝传统中心化数据管理模式下的数据易篡改、低可信, 确保供应链中各参与方的利益, 为稳定供应链生态提供技术支持.

本文第1节简要介绍双线性对、ZSS04短签名方案、同态标签、智能合约和区块链; 第2节提出一种供应链可信数据管理方案; 第3节对供应链可信数据管理方案进行可行性分析和共识算法验证; 最后总结全文并对下一步工作进行展望.

1 预备知识 1.1 双线性对

定义1. 假设 ${G_1}$ 是一个阶为质数 $q$ 的乘法循环群, ${G_2}$ 是一个阶为质数 $q$ 的乘法循环群, ${G_1}$ 的一个生成元为 $p$ . 假设 ${G_1}$ ${G_2}$ 上的离散对数问题都是困难的, 若满足以下三个性质, 则把映射 $e:{G_1} \times {G_1} \to {G_2}$ 称之为双线性映射.

(1) 双线性性: 对于 $\forall Q \in {G_1}$ , ${\rm{\{ }}a,b{\rm{\} }} \subseteq Z_q^ * $ , 有 $e\left( {ap,bQ} \right) =$ $e{\left( {p,Q} \right)^{ab}}$ ;

(2) 非退化性: $\exists \left\{ {p,Q} \right\} \subseteq {G_1}$ , 满足 $e\left( {p,Q} \right) \ne 1$ ;

(3) 可计算性: 对于 $\forall \left\{ {Q,R} \right\} \subseteq {G_1}$ , $\exists $ 多项式时间算法能够计算 $e\left( {Q,R} \right)$ .

1.2 ZSS04短签名方案

假设乘法循环群 $G$ 的阶为质数 $n$ .

(1) 离散对数问题(DLP)定义为: 令 $a \in Z_n^ * $ , $\left\{ {g,{g^a}} \right\} \subseteq$ $G$ , 求 $a$ ;

(2) 计算Diffie-Hellman问题(CDH)定义为: 令 $\left\{ {a,b} \right\} \subseteq Z_n^ * $ , $\left\{ {g,{g^a},{g^b}} \right\} \subseteq G$ , 求 ${g^{ab}}$ ;

(3) 判定Diffie-Hellman问题(DDH) 定义为: 令 $\left\{ {a,b,z} \right\} \subseteq Z_n^ * $ , $\left\{ {g,{g^a},{g^b},{g^z}} \right\} \subseteq G$ , 判定 $z = abod n$ 是否成立.

假设 $e:G \times G \to {G_T}$ 的双线性映射(此处的 ${G_T}$ 亦为阶为质数 $n$ 的乘法循环群), 那么 $G$ 中的DLP可归纳为计算 ${G_T}$ 中的DLP. 然而, $G$ 中的DDH不再困难: 令 $\left\{ {a,b,z} \right\} \subseteq Z_n^ * $ , $\left\{ {g,{g^a},{g^b},{g^z}} \right\} \subseteq G$ , 判定等式 $e\left( {g,{g^z}} \right) = e\left( {{g^a},{g^b}} \right)$ 是否成立即能解决 $G$ 中DDH问题. 求逆Diffie-Hellman问题(Inv-CDHP: $g,{g^z} \Rightarrow {g^{1/z}}$ )与平方Diffie-Hellman问题(Squ-CDHP: $g,{g^z} \Rightarrow {g^{{{z}} \times z}}$ )是CDHP的两个变型.

ZSS04短签名方案是由Zhang等人[9]所提的基于双线性对的短签名方案, 其构造和安全性是基于求逆Diffie-Hellman问题(Inv-CDHP), 这个问题等价于CDHP. ZSS04方案要比BLS方案更加有效, 并不需要特殊的散列函数. ZSS04短签名方案由4个算法构成: 参数生成算法ParamGen, 密钥生成算法KeyGen, 签名生成算法Sign, 签名验证算法Ver, 具体如下:

(1) ParamGen: 系统参数为 ${\rm{\{ }}{G_1},{G_2},e,q,p,H\} $ ;

(2) KeyGen: 挑选随机数 $x \in Z_q^ * $ , 求 ${p_{pub}} = xp$ . 其中, ${p_{pub}}$ 为公钥, $x$ 为私钥;

(3) Sign:给定私钥 $x$ , 消息内容 $m$ , 求 $S = p{\left( {H\left( m \right) + x} \right)^{ - 1}}$ , $S$ 即为签名;

(4) Ver: 给定公钥 ${p_{pub}}$ , 消息内容 $m$ 和签名 $S$ , 证明等式 $e\left( {H\left( m \right)p + {p_{pub}},S} \right) = e\left( {p,p} \right)$ 是否成立.

1.3 同态标签

同态是一种映射关系 $f:A \to B$ , 即:

$f\left( {a * b} \right) = f\left( a \right) \cdot f\left( b \right)$

其中, $ * $ A上的运算, · 是B上的运算.

由同态思想生成同态标签, 利用同态标签的同态性来完成贸易数据完整性检测. 若满足下列2个性质即为同态标签.

(1) 对 $\forall$ 数据块 ${{{d}}_i}$ ${{{d}}_j}$ , ${{{d}}_i} + {{{d}}_j}$ 的标签信息 $T\left( {{{{d}}_i} + {{\rm{d}}_j}} \right)$ 可由其本身标签信息得出, 即 $T\left( {{{{d}}_i} + {{{d}}_j}} \right) = T\left( {{{{d}}_i}} \right) * T\left( {{{{d}}_j}} \right)$ .

(2) 通过使用同态标签, 不用对所有的数据块进行验证, 只需使用少量特定数据块即可验证整个数据的完整性, 从而减少算力, 提高效率.

1.4 智能合约

智能合约[13]最早由密码学家Nick Szabo提出: 一个智能合约就是计算机协议, 它促进、检验或执行合约的协商、履行, 或者使合约条款不必要, 支持进行图灵完备的计算. 事实上, 其工作原理犹如计算机程序设计语言中的条件语句if-then. 如果条件满足, 智能合约就会被自动触发, 则执行相应条款, 否则不执行.

1.5 区块链

区块链是一项全新的分布式记账系统[14], 多个独立节点共同参与维护, 具有不可更改、无中心、可追溯等原生特性. 区块链将数据分成不同的区块, 每个区块是由块头和块身这两部分组成, 块头存放前驱区块的哈希值, 块身则负责存储数据. 区块之间前后依次钩稽, 形成一条完整数据链, 如图2所示.

图 2 区块链示意图

区块链一般分为公有链、私有链和联盟链3类, 本文采用的是Ethereum[15]项目下的联盟链. Ethereum具有以下特性: 1)智能合约支持图灵完备性, 设计了256位计算环境—以太坊虚拟机(EVM), 并支持使用Serpent, Solidity, LLL类编程语言创建应用. 2)通过叔块(uncle block)激励机制, 从而减少矿池, 使区块产生间隔由10 minutes 缩短至15 seconds, 并支持PoW、PoS共识算法. 3)为避免外界恶意循环执行攻击, 通过Gas来控制代码执行的指令次数.

2 供应链可信数据管理方案设计 2.1 系统模型

方案由四个主体单元组成: 贸易主体P, 交易中心S, 审核中心B, Ethereum区块链商业网络C. 系统模型如图3所示.

本方案的流程具体表述如下:

步骤1. 方案中的每个主体单元先向证书机构(Certificate Authority, CA)完成认证工作, 并申请公钥数字证书.

步骤2. 贸易主体P之间自由制定符合各方利益的交易规则, 交易中心S运用智能合约将交易规则计算机代码化, 当交易行为合法时, 智能合约将被触发, 交易生成. 采用ZSS04短签名方案对交易数据取验证标签, 并把验证标签、交易主体信息等与交易相关的内容发给审核中心B.

步骤3. 审核中心B通过贸易主体P的公钥来验证签名的真伪, 若为true, 则向交易中心S发出证据挑战请求.

步骤4. 交易中心S将证据发送给审核中心B, 审核中心B验证双线性性等式成立与否. 若等式成立, 审核中心B和交易中心S将挑战证据、智能合约代码、相关交易信息以JSON的格式封装后发给贸易主体P进行签名.

图 3 系统模型示意图

步骤5. 将贸易主体P签名后的交易发送至Ethereum区块链商业网络C, 通过分布式多节点共识机制算法将交易信息写入Ethereum区块链网络.

2.2 方案构造 2.2.1 参数

方案中的参数及其含义:

1)贸易主体P: 供应链上的一级、二级、三级等供应商/经销商、金融机构, 交易活动的主要参与者.

2)交易中心S: 负责交易的生成(智能合约)和一系列密钥生成工作, 为交易数据提供短暂存储.

3)审核中心B: 负责密钥验证和交易数据完整性审核事宜执行的领域专业知识机构.

4) Ethereum区块链商业网络C: 把审核中心B与交易中心S一起创建的数据登记上链. 这一网络中包含所有的共识节点单元D、贸易主体P、注册中心CA等共识主体, 各主体单元的身份核实是通过CA完成的, CA并对审核通过的主体单元分发公钥证书.

5)令 ${G_1}$ ${G_2}$ 都是阶为质数 $q$ 的乘法循环群, 且它们之间存在双线性映射 $e:{G_1} \times {G_1} \to {G_2}$ , $p$ ${G_1}$ 的一个生成元, 密码散列函数 ${H_1}:{\left\{ {0,1} \right\}^*} \to {G_1}$ , 密码散列函数 ${H_2}:{\left\{ {0,1} \right\}^*} \to Z_q^ * $ .

2.2.2 方案构造过程

本方案是由4个阶段构造完成: 交易初始阶段、交易确认阶段、交易验证阶段和登记上链阶段.

1)交易初始阶段

① 首先, 贸易主体P、交易中心S、审核中心B和其他共识主体需要在注册中心CA进行身份信息核实. 若通过, 则为其签发用于识别、认证网络主体的证书. 与此同时, 初始化一个Ethereum区块链商业网络C.

② 贸易主体P之间可以自由制定符合自身利益的交易智能合约. 以面向供应链中先货后款质押采购的智能合约模型为例, 如图4所示. 将供应链公司与供应商的采购规则、供应链公司与经销商的销售规则使用Solidity语言编写智能合约, 一个合约是由一组代码(合约函数)和数据(合约状态)构成, 并写入区块链分布式网络体系中. 贸易主体P在注册账户时注册中心CA会通过构造函数为其初始化一个合约使用身份信息identity, 在贸易主体P调用合约时, 该合约会先验证交易发起者的身份信息, 验证通过则进行合约操作. 当合约中的某一条件被触发时, 则自动执行相应的合约条款.

交易规则合约设计如下:

输入: tx, the object of transaction

输出: if success, return transaction data else throw exception

1. Procedure contract(tx)

2. if identity. sender = true then

3. tx = new Transaction();

4. tx.Content = tx.Content;

5. tx.Time = now;

6. tx.Id = tx.Id;

7. tx.Quantity = tx.Quantity;

8. return transaction data;

9. end if

10. end Procedure

图 4 面向供应链中先货后款质押采购的智能合约模型

本方案的智能合约构造是基于图灵完备的256位计算环境—以太坊虚拟机(EVM), 以EVM作为智能合约的运行环境, 可以进行多种类别的计算[16]. 智能合约运行于EVM中需要消耗一定数量的燃料Gas, 故Gas则限定最大可运行计算指令. 设 $\mu $ 为当前网络状态, $\Lambda $ 为当前状态所剩余的Gas, $F$ 为智能合约系统状态转移函数, $\bar \mu $ 为系统运行后的网络状态, $\bar \Lambda $ 为系统执行后的剩余的Gas, $\varepsilon $ 为合约终止执行的条件列表, $\lambda $ 为记录序列, $\varphi $ 为合约执行后返回剩余的Gas, $T$ 为合约输出的交易数据结果. 整个智能合约完成之后的状态转换函数表达式如式(1):

$\left( {\bar \mu ,\bar \Lambda ,\varepsilon ,\lambda ,\varphi ,T} \right) = F\left( {\mu ,\Lambda ,\lambda } \right)$ (1)

2)交易确认阶段

① 交易中心S将交易数据T按属性分成 ${{i}}$ 块, 即 ${\rm{\{ }}{t_1},{t_2}{\rm{, }}\cdots{\rm{ , }}{t_{{i}}}{\rm{\} }} \subseteq Z_q^ * $ , $q$ 是一个质数, 交易数据集合 $T = \left\{ {\left. j \right|{t_j},1 \leqslant j \leqslant {{i}}} \right\}$ . 贸易主体P挑选一个随机的签名密钥对 $(rpk,rsk)$ , $x \in Z_q^ * $ , $y \leftarrow {G_1}$ , 并计算公钥 ${p_{pub}} \leftarrow xp$ . 贸易主体P公开Param: $rpk$ , ${p_{pub}}$ , $p$ , ${\rm{i}}$ , $j$ , $y$ , $e\left( {y,{p_{Pub}}} \right)$ , 但保密Param: $x$ $rsk$ .

② 在交易中心S中, 对交易中的数据 ${t_j}$ 取验证标签 ${\gamma _j} \leftarrow p{\left( {x + {H_2}\left( {\omega j} \right){y^{{t_j}}}} \right)^{ - 1}} \in {G_1}$ , 其中, $1 \leqslant j \leqslant {\rm{i}}$ , $\omega j$ 是随机数 $RN$ ( $RN \in Z_q^ * $ , 用于标识交易数据 $T$ )与 $j$ 的连接. 数据验证标签记作集合 $\xi = \left\{ {\left. j \right|{\gamma _j},1 \leqslant j \leqslant {\rm{i}}} \right\}$ .

③ 为了使交易数据 $T$ 标识符 $RN$ 不会被恶意更改, 计算交易数据 $T$ 的标签 $tag = RN \left\|\right.$ Signrsk( $RN$ ), 其中Signrsk( $RN$ ) 使用私钥 $rsk$ 来对 $RN$ 进行的签名.

3)交易验证阶段

① 交易中心S将验证所需的数据( $\xi $ , $rpk$ , ${\rm{i}}$ , ${p_{pub}}$ )发送到审核中心B. 审核中心B接收验证数据后, 若外界再对交易数据进行非法篡改则会在证据挑战阶段被检测到, 从而保障交易数据T的安全性和完整性.

② 审核中心B使用公钥 $rpk$ 来验证Signrsk( $RN$ ), 如果验证success, 则输出 $RN$ 信息; 如果false, 则中止验证.

③ 审核中心B通过单向散列函数: $g$ , 在交易数据 $T$ 中的 ${{i}}$ 个数据块里随机抽取 $m$ 个块索引{ ${x_1}$ , ∙∙∙, ${x_m}$ }:

${x_k} = \left( {\left( {{g^k}\left( {tag} \right)} \right)od {\rm{i}}} \right) + 1,\left\{ {\left. k \right|1 \leqslant k \leqslant m} \right\}.$ (2)

其中,

${g^k}\left( {tag} \right) = \left\{ {\begin{array}{*{20}{c}} {g\left( {tag} \right) , k \in \left\{ 1 \right\}} \\ {g\left( {{g^{k - 1}}\left( {tag} \right)} \right),k \in \left[ {2,m} \right]} \end{array}} \right..$ (3)

挑战请求:

${\rm{Challenge = }}\left\{ {\left. {\left( {j,{\Gamma _j}} \right)} \right|{x_1} \leqslant j \leqslant {x_m},{\Gamma _j} \in Z_q^ * } \right\}.$ (4)

式(3)发送给交易中心S后, 其计算:

$\Phi = I + \zeta \cdot \mathop \sum \limits_{j = {x_1}}^{{x_m}} {t_j}{\Gamma _j}od q.$ (5)
$\gamma = \mathop \prod \limits_{j = {x_1}}^{{x_m}} \gamma _j^{{\Gamma _j}}.$ (6)

式(4)中 $I \in Z_q^ * $ , $E = e{\left( {y,{p_{pub}}} \right)^I} \in {G_2}$ , $\zeta = {H_2}\left( E \right) \in Z_q^ * $ .

最后, 交易中心S将 $\gamma $ , $\Phi $ , $E$ 作为验证凭证返还至审核中心B, 审核中心B验证等式 $\zeta = {H_2}\left( E \right) \in Z_q^ * $ 是否成立, 并通过式(7)验证接收的数据正确性.

$\mathop \prod \limits_{j = {x_1}}^{{x_m}} e\left( {{H_2}\left( {\omega j} \right){y^{{t_j}}}p + {p_{pubj}},{\gamma _j}} \right) = e\left( {p,p} \right)$ (7)

4)登记上链阶段

审核中心B验证通过后, 其便将交易数据、贸易主体信息和验证数据、参数等一起经过ZSS04短签名方案签名后发送至区块链商业网络C. 审核中心B和交易中心S封装已验证通过的交易 $Tr{a_i}$ , 将交易 $Tr{a_i}$ 发送给贸易主体P进行核对, 核对无误后用自己的私钥进行签名. 之后, 将交易 $Tr{a_i}$ 在区块链商业网络C中进行广播, 所有节点接收并验证交易, 经过优化的共识算法(CVBFT)共识之后将交易 $Tr{a_i}$ 写入区块链网络中, 如图5所示.

图 5 区块链网络示意图

至此, 在供应链中一笔交易数据上链存储工作完成.

2.3 优化的共识机制

区块链技术最大的优势在于能够在高度分散的去中心化系统中通过激励机制, 使各节点积极参与验证区块数据的真实性共识工作[17]. 但该机制在供应链贸易可信数据管理的应用中存在明显的不足: 主要集中在以工作量证明(PoW)为代表的共识算法具有高耗、低效等性能瓶颈, 在比特币交易系统中TPS仅有6.67, 一个区块的产生需要10 minutes, 并且需要花费高达1个小时的时间全网确定1次交易, 这些性能问题是难以满足供应链贸易数据管理应用的实际需求. 本文在研究工作量证明(PoW)、权益证明(PoS)、股份授权证明(DPoS)等共识算法的基础上, 对拜占庭容错算法(PBFT)进行优化, 提出了适用于供应链可信数据管理的信用投票机制(CVBFT): 每个节点通过其主链上的公证单元被引用的次数作为投票的凭据进行投票, 得票最高的10个节点被选举为公证节点并提供公证单元; 经过一段时间后, 对数据进行刷新, 再进行新一轮的投票选举. 经过优化的共识算法(CVBFT)过程如图6所示.

图 6 CVBFT算法流程图

3 方案可行性分析 3.1 正确性分析

引理1. 证明式(7)的正确性.

证明: 由于 ${\gamma _j} \leftarrow p{\left( {x + {H_2}\left( {\omega j} \right){y^{{t_j}}}} \right)^{ - 1}} \in {G_1}$ , $\gamma = \mathop \prod \limits_{j = {x_1}}^{{x_m}} \gamma _j^{{\Gamma _j}},$ $I \in Z_q^ * $ , 故有式(8).

首先, 令 $A{\rm{ = }}{H_2}\left( {\omega j} \right){y^{{t_j}}}p + {p_{pubj}}$ ; $B{\rm{ = }}{H_2}\left( {\omega j} \right){y^{{t_j}}}$ $p + {p_{pubk}}$ ; $C{\rm{ = }}\displaystyle\mathop \sum \limits_{j \ne k} {I_j}\left( {{H_2}\left( {\omega j} \right){y^{{t_j}}}p + {p_{pubj}}} \right)$ ; 当且仅当 $j \ne k$ 时, 则有:

$\begin{array}{l}\prod\limits_{j = {x_1}}^{{x_m}} e \left( {{H_2}\left( {\omega j} \right){y^{{t_j}}}p + {p_{pubj}},{\gamma _j}} \right) \\ =\prod\limits_{j \ne k} e \left( {A,{I_j}p} \right).e\left( {B,{{\left( {{H_2}\left( {\omega j} \right){y^{{t_j}}}p + {\gamma _k}} \right)}^{ - 1}}\left( {p - C} \right)} \right) \\=e\left( {C,p} \right).e\left( {p, - C} \right).e\left( {p,p} \right) = e\left( {p,p} \right)\end{array}$ (8)

综上所述, 式(6)成立, 证毕.

3.2 共识算法验证 3.2.1 功耗

功耗是衡量一个系统对资源所利用的能力, 也是衡量系统对资源消耗的重要指标, 本文使用每轮共识的消耗(Consume Per Trun, CPT)来表示. 基于DAG的区块链应用中的功耗是指每一轮公证人共识节点选举所需要的时间 ${\Delta _L}$ 内, 对 CPU的使用率, 如式(9). 其中 ${\Delta _L}$ 为当前L轮共识的时间间隔, $ConsensusConsum{e_{{\Delta _L}}}$ 为该时间间隔内CPU的使用率.

$CP{T_{{\Delta _L}}}{\rm{ = }}ConsensusConsum{e_{{\Delta _L}}}$ (9)

通过运行共识算法, 取 ${\Delta _L}$ 为60 s, 然后测试CPU在这段时间内的使用率. 每次选举都测试10轮, 取10轮的平均值作为各不同选举的公证人共识节点数量的 $CP{T_{{\Delta _L}}}$ . CVBFT共识算法与POW共识算法功耗比较如图7所示.

图 7 CVBFT算法和PoW算法的CPU消耗比较图

从比较的结果可以看出, 基于POW工作量证明的共识算法在运行过程中, CPU的使用率接近95%, 完全占据了系统的资源使用. 而CVBFT共识算法在在每一轮选取公证人共识节点的过程中CPU的使用率仅占65%左右. 由此可以看出, 算法的改进起到了降低功耗的作用.

3.2.2 时延

时延的指标可以衡量整个系统所在的网络的通信性能和共识算法完成任务的运行时间. 在基于DAG的区块链应用中, 具备高并发是该技术的核心, 故低时延是保证整个系统平稳运行的关键. 本文使用式(10)表示时延.

$Dela{y_{_L}}{\rm{ = VoteProposa}}{{\rm{l}}_{_L}} + {\rm{Votecondir}}{{\rm{m}}_{_L}}$ (10)

其中, $Dela{y_{_L}}$ 为当前第L轮的公证人共识节点选举产生选举人所用的时间间隔(时延), ${\rm{VoteProposa}}{{\rm{l}}_{_L}}$ 为共识节点广播投票阶段到其中的共识节点确认投票信息又到全网广播确认阶段的过程, ${\rm{Votecondir}}{{\rm{m}}_{_L}}$ 为共识节点最终确认选举公证人共识节点的过程.

本文选取的公证人共识节点数量分别为4, 5, 6, 7, 8, 9. 根据不同选取的公证人共识节点数量来测试时延, 测试共识轮次为10轮, 结果如图8所示.

实验结果表明, 选取公证人数量的不同并不会对算法的时延造成太大的影响.

3.3 可信性分析

本节将从处理可信性、存储可信性这两方面来对供应链可信数据管理方案进行分析.

性质1. 该供应链可信数据管理方案满足数据处理可信性.

证明: 首先, 在方案的初始阶段, 贸易主体之间自由定制符合各方利益的交易规则, 并采用智能合约将交易规则计算机代码化. 智能合约既包含执行逻辑, 又包含执行条件, 当条件满足时, 即执行逻辑. 由数据管理的视角来看, 智能合约类似于数据管理系统中的存储过程和触发器. 但又不同于传统数据管理系统中的事务, 不仅智能合约所处理的结果需要保存在区块链里面, 而且其本身亦要存储区块链中. 在交易的确认、验证阶段, 交易中心S将交易数据定义为集合 $T = \left\{ {\left. j \right|{t_j},1 \leqslant j \leqslant {{i}}} \right\}$ , 贸易主体P挑选一个随机的签名密钥对( $rpk,rsk$ ), 并计算公钥 ${p_{pub}} \leftarrow xp$ , 并对交易数据取验证标签, 记作集合 $\xi = \left\{ {\left. j \right|{\gamma _j},1 \leqslant j \leqslant {{i}}} \right\}$ . 交易中心S将验证所需的数据( $\xi $ , $rpk$ , ${{i}}$ , ${p_{pub}}$ )发送到审核中心B. 审核中心B接收验证数据后, 若外界再对交易数据进行非法篡改则会在证据挑战阶段被检测到, 从而保障交易数据T的安全性和完整性. 综上, 所提方案满足可信数据管理的处理可信性.

性质2. 该供应链可信数据管理方案满足数据存储可信性.

图 8 选取4到9名公证人的时延对比图

证明: 存储可信性本质是解决分布式共识问题. 在登记上链阶段, 交易 $Tr{a_i}$ 在区块链商业网络C中进行广播, 所有节点接收并验证交易, 经过优化的共识算法(CVBFT)共识之后将交易 $Tr{a_i}$ 写入区块链中. 区块链中区块与区块之间通过密码散列函数依次顺序钩稽. 如果攻击者篡改或伪造交易记录, 则需构造一条长于当前主链的链. 因此, 所需要的计算力远大于合法区块链的计算力, 这样的篡改得不偿失. 所以, 链上的数据安全存储也得到有效保障.

3.4 复杂度分析

以下将对方案中交易智能合约生成、交易审核以及与相关交易数据上链三个阶段进行计算复杂度和通信复杂度分析. 其中, 方案的通信复杂度指标主要是依据事务处理过程中的通信轮数, 该方案复杂度分析结果如表1所列.

表 1 方案复杂度分析

交易智能合约生成阶段的计算复杂度是由交易中心生成合约的O(qt), 通信复杂度为O(1), 其中q是一笔交易中的交易数量, 而t则是涵盖的交易种类. 交易审核阶段的计算复杂度主要是两部分构成, 一部分是交易中心O(t), 另一部分是审核中心O(v), 通信复杂度为O(1), 其中v为按种类进行随机抽取的数据块数. 数据上链阶段的计算复杂度是由贸易主体P、审核中心B和交易中心S等一系列的验证签名构成, 为O(1), 通信复杂度为O(1).

4 结论与展望

本文通过智能合约的加入, 使贸易中交易双方或多方即可如约履行自身的义务, 实现从外挂合约到内置合约的转变, 有效管控履约风险. 鉴于传统供应链存在交易本身真实性难以验证、信任问题突出等, 通过提出适用于供应链的共识机制, 构建一种以低时延、低成本、低功耗建立的信任机制, 实现了贸易中交易数据的可信存储, 数据可信度得以提升, 并降低行业中的风控成本. 在本文工作基础上, 下一步将基于区块链构建“债转平台”, 以债权凭证为载体, 降低融资成本, 以解决供应商对外支付及上游客户的融资需求.

参考文献
[1]
Xu NR, Liu JB, Li DX, et al. Research on evolutionary mechanism of agile supply chain network via complex network theory. Mathematical Problems in Engineering, 2016, 2016: 4346580. DOI:10.1155/2016/4346580
[2]
Sarr I, Naacke H, Gueye I. Blockchain-based model for social transactions processing. Proceedings of the 4th International Conference on Data Management Technologies and Applications. Colmar, Alsace, France. 2015. 309–315.
[3]
王海龙, 田有亮, 尹鑫. 基于区块链的大数据确权方案. 计算机科学, 2018, 45(2): 15-19, 24. DOI:10.11896/j.issn.1002-137X.2018.02.003
[4]
钱卫宁, 邵奇峰, 朱燕超, 等. 区块链与可信数据管理: 问题与方法. 软件学报, 2018, 29(1): 150-159. DOI:10.13328/j.cnki.jos.005434
[5]
Tan H. Research and design on B2B E-commerce supply chain management system. Applied Mechanics and Materials, 2013, 380-384: 4771-4774. DOI:10.4028/www.scientific.net/AMM.380-384.4771
[6]
Hwang HJ, Seruga J. An intelligent supply chain management system to enhance collaboration in textile industry. International Journal of U- and E-Service, Science and Technology, 2011, 4(4): 47-62.
[7]
Nakamoto S. Bitcoin: A peer-to-peer electronic cash system. https://nakamotoinstitute.org/bitcoin/, [2008-10-31].
[8]
Watanabe H, Fujimura S, Nakadaira A, et al. Blockchain contract: Securing a blockchain applied to smart contracts. Proceedings of 2016 IEEE International Conference on Consumer Electronics. Las Vegas, NV, USA. 2016. 467–468.
[9]
Zhang FG, Safavi-Naini R, Susilo W. An efficient signature scheme from bilinear pairings and its applications. Proceedings of the 7th International Workshop on Theory and Practice in Public Key Cryptography. Singapore. 2004. 277–290.
[10]
胡德敏, 余星. 一种基于同态标签的动态云存储数据完整性验证方法. 计算机应用研究, 2014, 31(5): 1362-1365, 1395. DOI:10.3969/j.issn.1001-3695.2014.05.018
[11]
Wang C, Chow SSM, Wang Q, et al. Privacy-preserving public auditing for secure cloud storage. IEEE Transactions on Computers, 2013, 62(2): 362-375. DOI:10.1109/TC.2011.245
[12]
王苏南, 李印海, 罗兴国. 基于分层抽样算法的异常攻击流量检测. 计算机工程, 2012, 38(12): 105-109. DOI:10.3969/j.issn.1000-3428.2012.12.031
[13]
Nick S. Smart contracts: Building blocks for digital markets. http://www.alamut.com/subj/economics/nick_szabo/smartContracts.html, [1998-08-16].
[14]
袁勇, 王飞跃. 区块链技术发展现状与展望. 自动化学报, 2016, 42(4): 481-494. DOI:10.16383/j.aas.2016.c160158
[15]
Buterin V. A next generation smart contract & decentralized application platform. http://fermatslibrary.com/s/ethereum-a-next-generation-smart-contract-and-decentralized-application-platform, 2013.
[16]
鲁静, 宋斌, 向万红, 等. 基于区块链的电力市场交易结算智能合约. 计算机系统应用, 2017, 26(12): 43-50. DOI:10.15888/j.cnki.csa.006109
[17]
Gramoli V. From blockchain consensus back to Byzantine consensus. Future Generation Computer Systems, 2017. DOI:10.1016/j.future.2017.09.023