交易溯源是现代供应管理的一种重要手段,交易溯源中不同环节的信任问题是传统技术一直期望解决的问题,因此基于区块链[1]技术的交易溯源系统应运而生.区块链是一种点对点网络形式的去中心化数据库,也称为去中心化账本,通过运用加密算法、时间戳、树形结构、链式数据结构、共识机制和激励机制等,在互不信任的分布式网络中,构建出可信的数据账本,实现基于去中心化的点到点交易.1 相关工作1.1 溯源架构现行的溯源架构主要分为中心化溯源架构[2](基于可信的中心节点提供溯源服务)和基于区块链技术的去中心化的溯源架构(基于单链架构[3]和基于双链架构[4]).1.2 不同应用场景的溯源机制的设计在食品领域,文献[5]构建基于区块链和物联网(IoT)技术的食品供应链溯源系统,通过IoT设备进行数据采集,并通过区块链进行数据持久化,实现食品供应链溯源.在工业领域,文献[6]采用联盟链模式和Hyperledger区块链平台,开发了基于区块链的钢铁物联网质量追溯系统,有效地对钢材产品的质量进行追溯.1.3 激励机制现行的激励机制多数是以系统内的加密货币(token)作为激励方式,激励机制最主要的是如何量化衡量节点的贡献,现行的区块链主要从以下三个方向对节点的贡献进行衡量.a.计算.该方式通过每个节点求解具体难度的难题来评估节点的贡献.最典型的例子是使用工作量证明(proof of work,PoW)共识机制的比特币系统[1],它通过让节点计算一个Nonce值来确定谁获得本轮的记账权,但该Nonce值并没有实际意义,造成算力浪费;有效工作量证明(proof of useful work,PoUW)[7]将区块链与机器学习相结合,把求解难题变成训练模型,让参与共识的算力资源解决了实际难题.b.存储.该方式通过量化节点存储的区块链数据资源来衡量节点的贡献值.典型例子是filecoin[8],它基于token机制,用户使用token来存储和检索数据,而矿工通过提供存储和检索数据服务来赚取token,形成存储和检索的供求交易平台.c.背书.该方式基于在网络中具有公信力的节点对真实的交易数据进行背书处理来获取奖励.如授权股份证明算法(delegated proof-of-stake,DPoS)[9],全网中拥有股份权益的节点通过投票选举,选择出具有公信力的代表节点,由其对区块进行背书,达成共识.2 溯源协议架构2.1 角色定义本研究中角色主要划分为链委员、链管理者和普通用户,角色定义如表1所示.10.13245/j.hust.230204.T001表1角色定义角色功能职责归属数量存储链普通用户收集交易数据并提交给链委员会,对交易进行溯源一个或多个群组任意主溯源链链管理者根据摘要查询交易数据,对交易进行溯源一个群组任意主溯源链、数据链链委员构建主链、本群组内的数据链,对交易进行溯源一个群组每个群组内三个主溯源链2.2 多群组本研究提出多群组架构来存储交易数据,类似QQ和微信中的群聊功能,每个群组内都有属于该群组的交易数据,群组之间彼此独立、数据隔离,群组内成员共同存储、维护属于本群组内的所有交易数据.区块链中的普通用户节点可以根据自身业务的需求,选择一个或多个不同的群组加入,并参与到对应账本的数据共享和共识过程中.通过这样多群组存储交易数据的架构,将溯源链从原先一链一账本的存储/执行机制拓展成一链多账本的存储/执行机制,不仅能极大减少数据的冗余存储、提高系统吞吐量及业务规模,还避免了单一节点故障导致的数据消失、无法溯源认证的难题.2.3 “2+1”链架构2.3.1 主溯源链图1为主溯源链,由主链块构成,主链块由区块头和区块体两部分构成.区块头内包含当前区块头散列值、前置区块头散列值、版本号、Round(轮次)、Merkle根、Miner(主溯源链矿工)的签名.当前区块头通过包含前置区块头散列值,将主链块按时间顺序链接,构成主溯源链.Merkle根是对区块体内数据进行Merkle计算而得到的值.区块体内包含各群组的区块散列值及摘要块、对当前块投票的Leader(数据链矿工)的签名.10.13245/j.hust.230204.F001图1主溯源链各群组Leader将群组内当前Round的数据块散列值、摘要块提交给Miner,Miner将其打包成主链块,Miner与各群组的Leader之间采用实用拜占庭容错算法(practical byzantine fault tolerance,PBFT)共识机制对主链块达成共识,Miner对达成共识的主链块进行签名,并将其广播给整个溯源系统的所有用户,如算法1所述.算法1 生成主链块输入 各群组摘要块(Ablocki),数据块散列值(hashi)输出 主链块(Mblock)BEGINFor(i=0;in;i++)Leader.send(hashi,Ablocki);Mblock=Miner.block(∑(hashi,Ablocki));PBFT(Mblock);Miner.sign(Mblock);Miner.broadcast(Mblock);END2.3.2 特定商品交易全流程溯源链特定商品交易全流程溯源链不是一条须要实际存储的链,而是可以根据已有的数据逆序构建出来的链.特定商品的每条交易记录增加一条附加信息,即在每条交易记录中增加上条交易所在主溯源链区块的散列值(下文称前置散列),这样可以在每个交易中找到它的前置散列,根据前置散列找到上条交易记录所在的主溯源链区块,遍历该区块找到上一条记录的摘要值,根据摘要值去对应的群组中查询对应的交易记录,从而一层一层向前找到所有的交易.若某个商品的上一笔交易跟当前交易在主溯源链的同一个区块内(即处于同一个Round内),则当前交易的前置散列值为空.2.3.3 数据链图2为数据链,由数据块构成,数据块包含区块头和区块体两部分,与主溯源链结构相似,不同之处在于区块头内包含Leader的签名;区块体内的交易数据为本群组在当前Round产生的交易数据.10.13245/j.hust.230204.F002图2数据链普通用户将交易数据提交给当前Round的Leader,Leader将数据打包成数据块,在本群组内的链委员会内,采用PBFT共识机制就数据块达成共识,Leader对达成共识的数据块进行签名,并广播给本群组内的链管理者进行存储,如算法2所述.算法2 生成数据块输入 当前轮次产生的交易数据(Datai)输出 数据块(Dblock)BEGINFor(i=0;im;i++)User.send(Datai);Dblock=Leader.block(∑Datai);PBFT(Dblock);Leader.sign(Dblock);Leader.broadcast(Dblock);END3 激励机制在区块链网络中,通常将本系统的token作为激励机制的激励手段,用于奖励对维护系统良好运行做出贡献的用户.本研究提出了一种适合于本溯源系统的激励机制.重点将激励分为token的发行和分配两部分,这两个部分都是不可缺少的,并且是共同运行的.以下讨论仅限于有效参与者,在该机制中,主溯源链上每产生一个新的区块,参与对这个区块达成共识的Leader节点将获得相应的收益,收益公式为R=VsumBIT,式中:R为Leader获得的奖励;Vsum为该Leader提交的摘要块内交易价值总和;B为常数,表示奖励基数;I为是否有资格获得奖励,若全程参与了PBFT共识过程则I=1,否则为I=0;T为与日期有关的系数,由参与共识阶段的时间差决定,时间差越大,T越小.通过时间系数T可以进一步刺激节点参与共识,进而提高共识效率.在每个群组中,奖励R以P1∶P2∶P3的比例分别分给链委员会、链管理者和提供当前区块交易数据的普通用户.委员会内按4∶3∶3的比例划分,其中负责打包数据块的Leader占比为4;链管理者内平均划分;当前块内普通用户所提交的交易价值分别为V1,V2,…,VN,第i笔交易的交易价值占所有交易交易价值总和的比值记V¯i,即V¯i=Vi/∑j=1NVj.每笔交易参与人数为N1,N2,…,NN,参与人数须大于1,防止恶意节点不断提交信息,造成区块链数据拥堵,第i笔交易的参与人数占所有交易参与人数总和的比值记N¯i,即N¯i=Ni/∑j=1NNj.每个普通用户所获得的奖励为Ri=V¯iN¯i∑j=1NV¯jN¯jRP3.4 实验测试及安全性分析4.1 存储效率为探究存储效率,部署了以下三套溯源系统,每套系统均包含4个存储数据的节点:a.基于文献[10]抽象出来的无群组区块链溯源系统,记Ⅰ;b.多群组“2+1”三链交易溯源系统,分为两个群组,群组1与群组2的链管理者比例为1∶1,记Ⅱ;c.多群组“2+1”三链交易溯源系统,分为两个群组,群组1与群组2的链管理者比例为1∶3,记Ⅲ.利用Ⅰ与Ⅱ,Ⅲ进行对比,探究多群组“2+1”三链交易溯源系统相较于无群组溯源系统在存储效率上的提升;利用Ⅱ与Ⅲ对比,探究在各群组链管理者比例不同、群组内产生交易数据比例不同的情况下,多群组“2+1”三链交易溯源系统存储效率的对比.每轮全网产生的交易数据为1 MiB,存储资源消耗如表2所示.在Ⅰ中,由于每个节点都要存储全网产生的交易数据,因此须要消耗4 MiB的存储资源;在Ⅱ和Ⅲ中,链管理者只须要存储当前群组内产生的交易数据,在Ⅱ中,须要消耗2 MiB的存储资源,在Ⅲ中,依据各群组内产生的交易数据比例,须要消耗1~3 MiB的存储资源,具体如图3所示.10.13245/j.hust.230204.T002表2存储资源消耗有无群组编号消耗存储资源无群组Ⅰ4多群组Ⅱ2Ⅲ1~3MiB10.13245/j.hust.230204.F003图3存储资源消耗通过实验数据,可以得出以下结论.a.多群组“2+1”三链交易溯源系统相较于无群组溯源系统,在存储效率上提升显著,能减少系统的冗余存储,如Ⅱ与Ⅰ相相比,能减少50%的冗余存储,Ⅲ与Ⅰ相比,依据群组内产生数据的比例不同,减少25%~75%的冗余存储.b.对Ⅱ进行观察,可知在各群组链管理者节点数量相等的前提下,不论各群组产生的数据比例如何,全网消耗的存储资源是固定的,大小为GmHsize,其中:Gm为单个群组链管理者个数;Hsize为区块大小.c.在Ⅱ与Ⅲ交点处,可知在各群组产生的数据资源相等的前提下,不论各群组内链管理者数量的比例如何,全网消耗的存储资源固定,大小为IsizeQm,其中:Isize为单个群组产生的数据资源大小;Qm为全网链管理者数量和.d.对Ⅲ进行观察,可知链管理者数量占比越大的群组产生的数据越小,全网消耗的存储资源越少,但安全性也随之降低.4.2 数据链响应时间为探究数据链响应时间,部署了一个群组,共5个节点,其中链委员会∶链管理者∶普通用户的比例为3∶1∶1.其中用于测试的商品交易数据大小为1 MiB.测试以下两个功能的响应时间:①上链,根据商品交易数据产生摘要数据,并将商品交易数据上链;②查询,根据商品交易数据的摘要数据查询商品交易数据.对所提出的数据链的部分响应时间进行了20次测序,响应时间如图4所示.其中,商品交易数据上链花费时间在70~130 ms之间,根据商品交易数据的摘要数据查询到交易数据花费时间在148~267 ms之间.由以上数据可知:在网络环境稳定的条件下,本研究提出的数据链具有较好的响应时间.区块链是数据账本,对数据操作的响应时间尤为重要.10.13245/j.hust.230204.F004图4响应时间4.3 安全性分析本研究提出的多群组“2+1”三链交易溯源系统具有较强的安全性,具体表现如下.其一,可信性.采用联盟链及私有链相结合的多群组架构,各节点经过许可,参与到溯源系统中,通过群组关系将各节点进行耦合,有效防止节点作恶.其二,防篡改性.与传统中心化溯源系统[2]相比,通过区块链与生俱来的不可篡改性,为溯源数据的真实性提供保障.采用多群组“2+1”三链交易溯源系统中的数据链对群组内的交易数据构链,进一步保证数据的不可篡改性.其三,分叉风险低.采用轮询的方式选出Leader及Miner,保证不会出现一个群组内有多个Leader、整个系统内有多个Miner的情况,降低了分叉的风险.其四,系统具有较高的活性.与其他区块链溯源系统[3-4]相比较,设计了适合于本系统的激励机制,好的激励机制能够刺激节点参与到数据的流通和共识环节中,为维护系统做出贡献,提高系统的活性,进而保证系统的高可用性和安全性.5 结论本研究结合产品溯源中的实际情况,提出了多群组“2+1”三链交易溯源系统,得出以下结论.a.提出多群组架构,对溯源系统的参与者按照其功能权限进行角色的定义划分,提高系统的并发交易、存储、溯源检索的能力,实现溯源系统的高可用性.b.相较于传统区块链溯源系统,本研究在主溯源链、特定商品交易全流程溯源链的双链式结构的基础上提出了将交易数据与摘要数据分离,在每个群组内构建各自的数据链,构成“2+1”三链架构下的交易溯源链,进而减少主溯源链上数据,提高可用性,提高溯源检索效率.c.提出了一种激励机制,并就激励机制做出具体定义,有效调动系统中的成员参与构建、维护系统的积极性.

使用Chrome浏览器效果最佳,继续浏览,你可能不会看到最佳的展示效果,

确定继续浏览么?

复制成功,请在其他浏览器进行阅读