一种基于三权分立的溯源共识方法及装置转让专利

申请号 : CN202111676724.4

文献号 : CN115700567A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 田有亮袁延森杨科迪田茂清王林冬李沓

申请人 : 贵州大学

摘要 :

本申请公开了一种基于三权分立的溯源共识方法及装置,基于改进PBFT算法确保区块上链的唯一性,不需要依靠挖矿来进行区块上链,降低了资源消耗,同时也避免了因算力中心化导致的区块链系统的安全性降低问题。由于改进PBFT算法是基于节点投票性质,每次共识仅会生成一个区块,因此不会产生分叉。通过阵营的划分将权力进一步分割,提供更加高的监管和审计效率,解决了传统的区块链共识算法存在着诸如算力浪费、易分叉、节点通信复杂度过高等技术问题。

权利要求 :

1.一种基于三权分立的溯源共识方法,其特征在于,包括:

根据监管身份属性将区块链节点划分为三个阵营,得到第一阵营、第二阵营以及第三阵营;

所述第一阵营基于改进PBFT算法进行商品生产信息的共识以及上链操作;

所述第二阵营基于改进PBFT算法进行商品流通信息的共识以及上链操作;

所述第三阵营基于改进PBFT算法进行商品消费信息的共识以及上链操作;

所述第一阵营、所述第二阵营以及所述第三阵营分别通过同步节点向另外两个阵营同步所述商品生产信息、所述商品流通信息以及所述商品消费信息。

2.根据权利要求1所述的基于三权分立的溯源共识方法,其特征在于,还包括:所述第一阵营的区块链主节点对所述商品生产信息发起审查;

所述第二阵营的区块链主节点对所述商品流通信息发起审查;

所述第三阵营的区块链主节点对所述商品消费信息发起审查。

3.根据权利要求1所述的基于三权分立的溯源共识方法,其特征在于,所述基于改进PBFT算法进行信息的共识以及上链操作具体包括:所述阵营的区块链主节点接收用户通过客户端发送的信息上链请求,所述信息上链请求中携带有消息内容、消息摘要、请求的具体操作、请求时所述客户端追加的时间戳、所述客户端的标识以及所述客户端对所述信息上链请求的第一消息签名;

所述阵营的区块链主节点验证所述第一消息签名是否来源于所述用户,若不是,则丢弃所述信息上链请求,若是,则为所述信息上链请求分配顺序编号,同时,向所述阵营的所有区块链副本发送信息上链预准备消息,所述信息上链预准备消息中携带有所述阵营的区块链主节点的主节点编号、所述消息内容、所述消息摘要、商品唯一识别码以及所述阵营的区块链主节点对所述信息上链预准备消息的第二消息签名;

所述阵营的副本节点对所述信息上链预准备消息进行合法性校验;

合法性校验通过后,所述阵营的副本节点向所述阵营的所有其他节点发送信息准备消息,所述信息准备消息中携带有所述阵营的区块链主节点的主节点编号、所述消息内容、所述消息摘要、商品唯一识别码以及所述阵营的副本节点对所述信息上链准备消息的第三消息签名;

所述阵营的其他节点对所述信息上链准备消息进行合法性验证;

若所述阵营的其他节点接收到N‑f个校验通过的所述信息上链准备消息,则向所述阵营的所有其他节点发送信息上链答复消息,所述信息上链答复消息中携带有所述阵营的区块链主节点的主节点编号、所述消息内容、所述消息摘要、以及所述阵营的其他节点对所述信息上链答复消息的第四消息签名,其中,N为所述第一阵容包含的节点数量,f为所述第一阵容中拜占庭节点的数量,3f+1≤N;

所述阵营的所有其他节点对所述信息上链指派消息进行合法性验证;

若所述阵营的其他节点接收到N‑2f个校验通过的所述信息上链指派消息,则所述阵营的其他节点运行所述请求的具体操作,同时返回信息上链答复消息至所述第一用户的,所述信息上链答复消息中携带有所述阵营的区块链主节点的主节点编号、请求时所述客户端追加的时间戳、所述客户端的标识、对所述请求的具体操作的操作结果以及所述阵营的其他节点对所述信息上链答复消息的第五消息签名。

4.根据权利要求3所述的基于三权分立的溯源共识方法,其特征在于,所述阵营的副本节点对所述信息上链预准备消息进行合法性校验具体为:所述第二消息签名是否来源于所述阵营的区块链主节点,若是则为合法消息,若否则为非法消息,丢弃所述信息上链预准备消息;

所述阵营的副本节点是否已经收到了所述主节点编号下的所述顺序编号一致,但所述消息摘要不同的所述信息上链预准备消息,若未收到则为合法消息,若已收到则为非法消息,丢弃所述信息上链预准备消息;

所述消息摘要与所述消息内容是否一致,若一致则为合法消息,若不一致则为非法消息,丢弃所述信息上链预准备消息。

5.根据权利要求3所述的基于三权分立的溯源共识方法,其特征在于,所述阵营的其他节点对所述信息上链准备消息进行合法性验证具体为:所述第三消息签名是否来源于所述阵营的副本节点,若是则为合法消息,若否则为非法消息,丢弃所述信息上链准备消息;

所述阵营的其他节点若为副本节点,则判断所述阵营的其他节点是否已经收到了所述主节点编号下的所述顺序编号一致的所述信息上链准备消息,若未收到则为合法消息,若已收到则为非法消息,丢弃所述信息上链准备消息;

判断所述信息上链准备消息中的消息摘要与所述信息上链预准备消息的消息摘要是否一致,若一致则为合法消息,若不一致则为非法消息,丢弃所述信息上链准备消息。

6.根据权利要求3所述的基于三权分立的溯源共识方法,其特征在于,所述阵营的所有其他节点对所述信息上链指派消息进行合法性验证具体为:所述第四消息签名是否来源于所述阵营的其他节点,若是则为合法消息,若否则为非法消息,丢弃所述信息上链指派消息;

判断所述阵营的其他节点是否已经收到了所述主节点编号下的所述顺序编号一致的所述信息上链指派消息,若未收到则为合法消息,若已收到则为非法消息,丢弃所述信息上链指派消息。

7.根据权利要求3所述的基于三权分立的溯源共识方法,其特征在于,所述通过同步节点向另外两个阵营同步信息具体为:所述阵营的区块链主节点将数据块进行签名后,得到加密数据块;

所述阵营的区块链主节点将所述加密数据块发送至同步节点,同时将N‑f条来自不同节点的所述信息上链指派消息发送至所述同步节点;

所述同步节点验证所述加密数据块是否为所述阵营的区块链主节点的签名,若是则验证通过,否则丢弃所述加密数据块;

所述同步节点验证所述N‑f条来自不同节点的所述信息上链指派消息是否为所述数据块的证明,若是则验证通过,否则丢弃所述加密数据块;

所述同步节点将所述数据块的签名进行缓存;

每隔第一预设时间,所述同步节点根据所述数据块的时间戳进行排序;

所述同步节点将排序后前第二预设时间内的所有数据块打包后签名,得到加密数据块集合;

所述同步节点向另外两个阵营的区块链主节点发送所述加密数据块集合,使得另外两个阵营的区块链主节点验证所述加密数据块集合的签名通过后,将所述加密数据块集合各自进行签名后发送给各自阵营的其他节点。

8.根据权利要求7所述的基于三权分立的溯源共识方法,其特征在于,所述将所述加密数据块集合各自进行签名后发送给各自阵营的其他节点之后还包括:另外两个阵营的其他节点验证所述加密数据块集合的签名是否为各自阵营区块链主节点的签名,若是,则验证所述加密数据块集合的签名是否来自于所述同步节点,若是,则接受所述加密数据块集合,并将所述加密数据块集合中的数据块添加至本地的区块链上,否则丢弃所述加密数据块集合。

9.一种基于三权分立的溯源共识装置,其特征在于,包括:

划分单元,用于根据监管身份属性将区块链节点划分为三个阵营,得到第一阵营、第二阵营以及第三阵营;

第一操作单元,用于所述第一阵营基于改进PBFT算法进行商品生产信息的共识以及上链操作;

第二操作单元,用于所述第二阵营基于改进PBFT算法进行商品流通信息的共识以及上链操作;

第三操作单元,用于所述第三阵营基于改进PBFT算法进行商品消费信息的共识以及上链操作;

同步单元,用于所述第一阵营、所述第二阵营以及所述第三阵营分别通过同步节点向另外两个阵营同步所述商品生产信息、所述商品流通信息以及所述商品消费信息。

10.根据权利要求9所述的基于三权分立的溯源共识装置,其特征在于,还包括:第一审查单元,用于所述第一阵营的区块链主节点对所述商品生产信息发起审查;

第二审查单元,用于所述第二阵营的区块链主节点对所述商品流通信息发起审查;

第三审查单元,用于所述第三阵营的区块链主节点对所述商品消费信息发起审查。

说明书 :

一种基于三权分立的溯源共识方法及装置

技术领域

[0001] 本申请涉及区块链溯源技术领域,尤其涉及一种基于三权分立的溯源共 识方法及装置。

背景技术

[0002] 中国的消费市场正在进入一个全新的可追溯时代,产品溯源成为社会上 的热点问题。国家治理层面正在强调“可追溯”在产品,尤其是食品与药品安 全等领域,以及市场监管中的作用。溯源是一个能够连接产品生产、检验、 监管和消费各个环节的生产控制系统,能够对产品进行正向、逆向、不定向 的追踪管理,实现产品来源可查询、去向可追踪,保障产品的质量安全。
[0003] 区块链通过加密算法、点对点网络、共识算法等技术体系,为交易双方 提供了一种安全、高效、可靠、透明的商业交易模式。区块链技术以特定的 方式形成了一种新的去中心化数据记录与存储体系,并给存储数据的区块链 打上时间戳使其形成一个连续的,前后关联的信任的数据系统,这种系统的 架构与溯源的行业特征天然契合,使得区块链技术更易应用于溯源行业。在 区块链系统中,各参与方按照事先约定的规则共同存储信息并达成共识。共 识机制是区块链技术的基础和核心,共识机制决定参与节点以何种方式对某 些特定的数据达成一致.现有针对溯源链共识机制具体设计的研究较少,在国 内溯源实践过程中,企业多以借鉴国外成熟的开源项目并加以利用为主,涉 及原创性、基础性的创新较少,因而对于溯源链共识算法的创新关注度不 高,这就使基于区块链技术的溯源链的共识机制研究存在较多空白。
[0004] 目前使用的共识机制多是在原有公链或联盟链应用的基础上进行移植, 比如经典的比特币POW共识以及实用拜占庭容错协议(PBFT)等。但是POW 共识机制存在较大的资源浪费,且随着矿工加入矿池的现象越来越多,矿池 带来的算力集中化风险越来越大,一旦矿池联合起来拥有的算力超过了 51%,就可以对区块链系统发起攻击,极大地危害系统安全。属于经典分布 式共识的PBFT共识则会随着共识节点的数量增加,算法的通信复杂度会急 剧升高,极大地降低了共识效率,而且由于每一次共识的发起都需要由主节 点发起,会造成主节点负载过大,导致主节点过热或者崩溃,引起的主节点 重新选举会带来更大的资源消耗。而基于权益证明的共识机制则很容易出现 分叉现象,破坏区块链系统的一致性。
[0005] 这些传统的区块链共识算法存在着诸如算力浪费、易分叉、节点通信复 杂度过高等技术问题,无法通过简单的照搬照抄就移植到商品溯源场景,因 此设计一种符合溯源场景的共识机制可以很好地解决这些问题。

发明内容

[0006] 本申请提供了一种基于三权分立的溯源共识方法及装置,解决了传统的 区块链共识算法存在着诸如算力浪费、易分叉、节点通信复杂度过高等技术 问题。
[0007] 有鉴于此,本申请第一方面提供了一种基于三权分立的溯源共识方法, 所述方法包括:
[0008] 根据监管身份属性将区块链节点划分为三个阵营,得到第一阵营、第二 阵营以及第三阵营;
[0009] 所述第一阵营基于改进PBFT算法进行商品生产信息的共识以及上链操 作;
[0010] 所述第二阵营基于改进PBFT算法进行商品流通信息的共识以及上链操 作;
[0011] 所述第三阵营基于改进PBFT算法进行商品消费信息的共识以及上链操 作;
[0012] 所述第一阵营、所述第二阵营以及所述第三阵营分别通过同步节点向另 外两个阵营同步所述商品生产信息、所述商品流通信息以及所述商品消费信 息。
[0013] 可选地,还包括:
[0014] 所述第一阵营的区块链主节点对所述商品生产信息发起审查;
[0015] 所述第二阵营的区块链主节点对所述商品流通信息发起审查;
[0016] 所述第三阵营的区块链主节点对所述商品消费信息发起审查。
[0017] 可选地,所述基于改进PBFT算法进行信息的共识以及上链操作具体包 括:
[0018] 所述阵营的区块链主节点接收用户通过客户端发送的信息上链请求,所 述信息上链请求中携带有消息内容、消息摘要、请求的具体操作、请求时所 述客户端追加的时间戳、所述客户端的标识以及所述客户端对所述信息上链 请求的第一消息签名;
[0019] 所述阵营的区块链主节点验证所述第一消息签名是否来源于所述用户, 若不是,则丢弃所述信息上链请求,若是,则为所述信息上链请求分配顺序 编号,同时,向所述阵营的所有区块链副本发送信息上链预准备消息,所述 信息上链预准备消息中携带有所述阵营的区块链主节点的主节点编号、所述 消息内容、所述消息摘要、商品唯一识别码以及所述阵营的区块链主节点对 所述信息上链预准备消息的第二消息签名;
[0020] 所述阵营的副本节点对所述信息上链预准备消息进行合法性校验;
[0021] 合法性校验通过后,所述阵营的副本节点向所述阵营的所有其他节点发 送信息准备消息,所述信息准备消息中携带有所述阵营的区块链主节点的主 节点编号、所述消息内容、所述消息摘要、商品唯一识别码以及所述阵营的 副本节点对所述信息上链准备消息的第三消息签名;
[0022] 所述阵营的其他节点对所述信息上链准备消息进行合法性验证;
[0023] 若所述阵营的其他节点接收到N‑f个校验通过的所述信息上链准备消 息,则向所述阵营的所有其他节点发送信息上链答复消息,所述信息上链答 复消息中携带有所述阵营的区块链主节点的主节点编号、所述消息内容、所 述消息摘要、以及所述阵营的其他节点对所述信息上链答复消息的第四消息 签名,其中,N为所述第一阵容包含的节点数量,f为所述第一阵容中拜占 庭节点的数量,3f+1≤N;
[0024] 所述阵营的所有其他节点对所述信息上链指派消息进行合法性验证;
[0025] 若所述阵营的其他节点接收到N‑2f个校验通过的所述信息上链指派消 息,则所述阵营的其他节点运行所述请求的具体操作,同时返回信息上链答 复消息至所述第一用户的,所述信息上链答复消息中携带有所述阵营的区块 链主节点的主节点编号、请求时所述客户端追加的时间戳、所述客户端的标 识、对所述请求的具体操作的操作结果以及所述阵营的其他节点对所述信息 上链答复消息的第五消息签名。
[0026] 可选地,所述阵营的副本节点对所述信息上链预准备消息进行合法性校 验具体为:
[0027] 所述第二消息签名是否来源于所述阵营的区块链主节点,若是则为合法 消息,若否则为非法消息,丢弃所述信息上链预准备消息;
[0028] 所述阵营的副本节点是否已经收到了所述主节点编号下的所述顺序编号 一致,但所述消息摘要不同的所述信息上链预准备消息,若未收到则为合法 消息,若已收到则为非法消息,丢弃所述信息上链预准备消息;
[0029] 所述消息摘要与所述消息内容是否一致,若一致则为合法消息,若不一 致则为非法消息,丢弃所述信息上链预准备消息。
[0030] 可选地,所述阵营的其他节点对所述信息上链准备消息进行合法性验证 具体为:
[0031] 所述第三消息签名是否来源于所述阵营的副本节点,若是则为合法消 息,若否则为非法消息,丢弃所述信息上链准备消息;
[0032] 所述阵营的其他节点若为副本节点,则判断所述阵营的其他节点是否已 经收到了所述主节点编号下的所述顺序编号一致的所述信息上链准备消息, 若未收到则为合法消息,若已收到则为非法消息,丢弃所述信息上链准备消 息;
[0033] 判断所述信息上链准备消息中的消息摘要与所述信息上链预准备消息的 消息摘要是否一致,若一致则为合法消息,若不一致则为非法消息,丢弃所 述信息上链准备消息。
[0034] 可选地,所述阵营的所有其他节点对所述信息上链指派消息进行合法性 验证具体为:
[0035] 所述第四消息签名是否来源于所述阵营的其他节点,若是则为合法消 息,若否则为非法消息,丢弃所述信息上链指派消息;
[0036] 判断所述阵营的其他节点是否已经收到了所述主节点编号下的所述顺序 编号一致的所述信息上链指派消息,若未收到则为合法消息,若已收到则为 非法消息,丢弃所述信息上链指派消息。
[0037] 可选地,所述通过同步节点向另外两个阵营同步信息具体为:
[0038] 所述阵营的区块链主节点将数据块进行签名后,得到加密数据块;
[0039] 所述阵营的区块链主节点将所述加密数据块发送至同步节点,同时将N‑ f条来自不同节点的所述信息上链指派消息发送至所述同步节点;
[0040] 所述同步节点验证所述加密数据块是否为所述阵营的区块链主节点的签 名,若是则验证通过,否则丢弃所述加密数据块;
[0041] 所述同步节点验证所述N‑f条来自不同节点的所述信息上链指派消息是 否为所述数据块的证明,若是则验证通过,否则丢弃所述加密数据块;
[0042] 所述同步节点将所述数据块的签名进行缓存;
[0043] 每隔第一预设时间,所述同步节点根据所述数据块的时间戳进行排序;
[0044] 所述同步节点将排序后前第二预设时间内的所有数据块打包后签名,得 到加密数据块集合;
[0045] 所述同步节点向另外两个阵营的区块链主节点发送所述加密数据块集 合,使得另外两个阵营的区块链主节点验证所述加密数据块集合的签名通过 后,将所述加密数据块集合各自进行签名后发送给各自阵营的其他节点。
[0046] 可选地,所述将所述加密数据块集合各自进行签名后发送给各自阵营的 其他节点之后还包括:
[0047] 另外两个阵营的其他节点验证所述加密数据块集合的签名是否为各自阵 营区块链主节点的签名,若是,则验证所述加密数据块集合的签名是否来自 于所述同步节点,若是,则接受所述加密数据块集合,并将所述加密数据块 集合中的数据块添加至本地的区块链上,否则丢弃所述加密数据块集合。
[0048] 本申请第二方面提供一种基于三权分立的溯源共识装置,所述装置包 括:
[0049] 划分单元,用于根据监管身份属性将区块链节点划分为三个阵营,得到 第一阵营、第二阵营以及第三阵营;
[0050] 第一操作单元,用于所述第一阵营基于改进PBFT算法进行商品生产信 息的共识以及上链操作;
[0051] 第二操作单元,用于所述第二阵营基于改进PBFT算法进行商品流通信 息的共识以及上链操作;
[0052] 第三操作单元,用于所述第三阵营基于改进PBFT算法进行商品消费信 息的共识以及上链操作;
[0053] 同步单元,用于所述第一阵营、所述第二阵营以及所述第三阵营分别通 过同步节点向另外两个阵营同步所述商品生产信息、所述商品流通信息以及 所述商品消费信息。
[0054] 可选地,还包括:
[0055] 第一审查单元,用于所述第一阵营的区块链主节点对所述商品生产信息 发起审查;
[0056] 第二审查单元,用于所述第二阵营的区块链主节点对所述商品流通信息 发起审查;
[0057] 第三审查单元,用于所述第三阵营的区块链主节点对所述商品消费信息 发起审查。
[0058] 从以上技术方案可以看出,本申请实施例具有以下优点:
[0059] 本申请中,提供了一种基于三权分立的溯源共识方法,基于改进PBFT 算法确保区块上链的唯一性,不需要依靠挖矿来进行区块上链,降低了资源 消耗,同时也避免了因算力中心化导致的区块链系统的安全性降低问题。由 于改进PBFT算法是基于节点投票性质,每次共识仅会生成一个区块,因此 不会产生分叉。通过阵营的划分将权力进一步分割,提供更加高的监管和审 计效率,解决了传统的区块链共识算法存在着诸如算力浪费、易分叉、节点 通信复杂度过高等技术问题。

附图说明

[0060] 图1为本申请实施例中一种基于三权分立的溯源共识方法的方法流程 图;
[0061] 图2为本申请实施例中一种基于三权分立的溯源共识装置的结构示意 图。

具体实施方式

[0062] 为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实 施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显 然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于 本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获 得的所有其他实施例,都属于本申请保护的范围。
[0063] 本申请设计了一种基于三权分立的溯源共识方法及装置,解决了传统的 区块链共识算法存在着诸如算力浪费、易分叉、节点通信复杂度过高等技术 问题。
[0064] 为了便于理解,请参阅图1,图1为本申请实施例中一种基于三权分立 的溯源共识方法的方法流程图,如图1所示,具体为:
[0065] 101、根据监管身份属性将区块链节点划分为三个阵营,得到第一阵 营、第二阵营以及第三阵营;
[0066] 需要说明的是,根据监管身份属性,例如质监局(负责商品生产时的质 量监督);商务厅(负责商品的贸易监管);消费者协会(负责维护消费者的 权益),将区块链节点划分为三个阵营,各自负责处理自己阵营的事务请 求,得到第一阵营“A阵营”、第二阵营“B阵营”以及第三阵营“C阵营”。
[0067] 102、第一阵营基于改进PBFT算法进行商品生产信息的共识以及上链操 作;
[0068] 103、第二阵营基于改进PBFT算法进行商品流通信息的共识以及上链操 作;
[0069] 104、第三阵营基于改进PBFT算法进行商品消费信息的共识以及上链操 作;
[0070] 需要说明的是,A、B、C三个阵营分别进行各自阵营的共识,商品生产 信息的共识以及上链由A阵营负责;商品流通信息的共识以及上链由B阵营 负责,主要是对商品在各个经销商或其他代理之间进行流通的信息进行上 链。当商品从厂家流通到经销商手中时,该商品的状态信息就发生了变更, 需要对其当前状态进行更新,该更新信息由经销商进行上传,用于商品溯 源,上传的状态区块将作为侧链追加在商品信息块之后,由B阵营进行共识 上链;商品消费信息的共识以及上链由C阵营负责,当商品到达消费者手中 时,消费者可以通过商品的唯一标识码hashid对该产品的生产信息和流通信 息进行查询和溯源,从而核实商品的真伪。若该商品质量没有问题,则可以 通过用户客户端上传该商品的最终状态信息,由C阵营进行共识上链,将该 商品的整个流通过程画上句号,也代表着该商品完成了从生产到消费的全过 程。同时也避免了不法分子重复使用商品包装或其他手段利用合法标识码进 行制假的操作。
[0071] 每个阵营假设共有N个节点,推举出一个区块链主节点负责进行客户端 消息的广播以及与其他两个阵营的区块链主节点之间的消息同步,阵营之中 的其他节点称之为副本节点。由于N个节点中可能存在f个拜占庭节点,拜 占庭节点可以发送错误消息,也可以不发送消息,采用改进PBFT算法可以 在拜占庭节点数量不超过总节点数量三分之一时,保证可用性以及一致性。
[0072] 具体地,每个阵营进行共识以及上链的步骤如下:
[0073] 1、请求阶段
[0074] 当用户X需要将信息m进行上链时,通过客户端向区块链主节点发送 <REQUEST,o,t,c>请求,其中o表示请求的具体操作,t表示请求时客户端追加 的时间戳,c表示客户端标识,REQUEST包含消息内容m,以及消息摘要 d(m),客户端在发送请求前会对<REQUEST,o,t,c>请求进行签名。
[0075] 2、预准备阶段
[0076] 根据需要上传的信息的内容,由各自阵营负责将信息m进行上链处理。 首先阵营的区块链主节点负责验证<REQUEST,o,t,c>请求的消息签名是否来源 于用户X,若为非法请求,则丢弃,若为正确请求,则为该消息分配一个编 号n,编号n主要用于对用户的请求消息进行排序。然后广播一条 <<PRE‑PREPARE,v,n,d>,m>消息给其它副本节点。其中v表示主节点编号,d表 示消息摘要,m代表消息内容。
[0077] 3、准备阶段
[0078] 副本节点i在收到主节点发送的PRE‑PREPARE消息,需要进行以下校 验:
[0079] 3.1、主节点的PRE‑PREPARE消息签名是否正确,不正确则视为非法请 求。
[0080] 3.2、当前副本节点是否已经收到了一条在同一v下并且编号也是n,但 是摘要d不同的PRE‑PREPARE信息,若已收到则视为非法请求。
[0081] 3.3、d与m的摘要是否一致,若不一致则视为非法请求。
[0082] 若为非法请求则丢弃。若为正确请求,副本节点i向其它节点包括主节 点发送一条<PREPARE,v,n,d,i>消息,发送前进行副本节点i的签名。
[0083] 4、投票阶段
[0084] 主节点和副本节点收到PREPARE消息,需要进行以下校验:
[0085] 4.1、副本节点的PREPARE消息签名是否正确,若不正确则视为非法请 求。
[0086] 4.2、当前副本节点是否已经收到了同一主节点v下的n,若已收到则视 为非法请求。
[0087] 4.3、d是否和当前已收到PRE‑PREPARE中的d相同,若不相同则视为非 法请求。
[0088] 若为非法请求则丢弃。如果副本节点i收到了N‑f个验证通过的 PREPARE消息,表明网络中的大多数节点已经收到请求信息,则向其它节点 包括主节点发送一条消息,发送之前进行副本节点i的签 名。
[0089] 5、回复阶段
[0090] 主节点和副本节点收到COMMIT消息,需要进行以下校验:
[0091] 5.1、COMMIT消息的签名是否正确,若不正确则视为非法请求。
[0092] 5.2、当前节点是否已经收到了同一主节点v下的n,若已收到则视为非 法请求。
[0093] 5.3、d与m的摘要是否一致,若不一致则视为非法请求。 若为非法请求则丢弃。如果节点i收到了N‑2f个验证通过的COMMIT消息, 说明当前网络中的大部分节点已经达成共识,随后节点i会运行用户发送的 请求操作o,同时将请求上链的信息进行上链操作,并返回 给用户,r表示请求的操作结果,hashid表示该商品 的唯一识别码,用来在以后进行该商品信息的查询和溯源。用户如果收到 f+1个相同的REPLY消息,说明用户发起的请求已经达成全网共识,否则用 户需要判断是否重新发送请求给主节点。
[0094] 105、第一阵营、第二阵营以及第三阵营分别通过同步节点向另外两个 阵营同步商品生产信息、商品流通信息以及商品消费信息。
[0095] 需要说明的是,当阵营对某个数据块达成共识并进行上链操作后,需要 向其他两个阵营同步相关数据。为保证全局一致性,设置一个同步节点D, 该节点的作用就是同步三方的数据,避免因为网络延迟或其他原因导致同步 失败。以A阵营主节点为例,具体操作如下:
[0096] 步骤1:由A阵营主节点PA将数据块TA进行签名后得到SA,将SA发送给 同步节点D。为了防止主节点作恶,还必须同时将N‑f条来自不同节点的 COMMIT消息一起发送过去作为TA的证明Z。
[0097] 步骤2:节点D在收到SA后验证是否为PA的签名,并且验证Z是否为TA的 证明。若验证通过,则对SA签名后存入自身本地缓存。为了确保上链顺序的 一致性,每十分钟根据区块时间戳进行排序,并把时间为前五分钟的数据块 打包完成后签名得到GD,之后将其发送给B阵营和C阵营主节点PB和PC。PB和PC在收到块集合GD之后,验证签名通过后,对其进行签名后发送给各自阵 营的其他节点。
[0098] 步骤3:B阵营和C阵营的副本节点在收到主节点的消息时,验证是否为 主节点的签名。以B阵营的副本节点为例,当副本节点验证签名来自于主节 点PB后,继续验证块集合的签名是否来自于同步节点D,若验证通过,则接 受该块集合,将该集合中的区块添加至本地的区块链上。
[0099] 进一步地,还包括:
[0100] 第一阵营的区块链主节点对商品生产信息发起审查;
[0101] 第二阵营的区块链主节点对商品流通信息发起审查;
[0102] 第三阵营的区块链主节点对商品消费信息发起审查。
[0103] 需要说明的是,当商品生产信息区块上链后,A阵营的区块链主节点保 有对其的责任判定权力。当商品出现质量问题时,A阵营的区块链主节点将 会通过溯源查找对商品进行审查,若是因为厂家生产导致的质量问题,则会 对该厂家进行追查。同理,若是因为流通环节的经销商问题,则由B阵营进 行审查,追查违法的经销商。若是消费者进行投诉,则由C阵营的区块链主 节点发起审查,找到责任方,并进行追责。
[0104] 请参阅图2,图2为本申请实施例中一种基于三权分立的溯源共识装置 的结构示意图,如图2所示,具体为:
[0105] 划分单元201,用于根据监管身份属性将区块链节点划分为三个阵营, 得到第一阵营、第二阵营以及第三阵营;
[0106] 第一操作单元202,用于所述第一阵营基于改进PBFT算法进行商品生 产信息的共识以及上链操作;
[0107] 第二操作单元203,用于所述第二阵营基于改进PBFT算法进行商品流 通信息的共识以及上链操作;
[0108] 第三操作单元204,用于所述第三阵营基于改进PBFT算法进行商品消 费信息的共识以及上链操作;
[0109] 同步单元205,用于所述第一阵营、所述第二阵营以及所述第三阵营分 别通过同步节点向另外两个阵营同步所述商品生产信息、所述商品流通信息 以及所述商品消费信息。
[0110] 本申请实施例中,提供了一种基于三权分立的溯源共识方法及装置,基 于改进PBFT算法确保区块上链的唯一性,不需要依靠挖矿来进行区块上 链,降低了资源消耗,同时也避免了因算力中心化导致的区块链系统的安全 性降低问题。由于改进PBFT算法是基于节点投票性质,每次共识仅会生成 一个区块,因此不会产生分叉。通过阵营的划分将权力进一步分割,提供更 加高的监管和审计效率,解决了传统的区块链共识算法存在着诸如算力浪 费、易分叉、节点通信复杂度过高等技术问题。
[0111] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描 述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应 过程,在此不再赘述。
[0112] 本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四” 等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后 次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本 申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此 外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包 含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必 限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这 些过程、方法、产品或设备固有的其它步骤或单元。
[0113] 应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个” 是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存 在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存 在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后 关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些 项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b 或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和 c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
[0114] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和 方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示 意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可 以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个 系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间 的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合 或通信连接,可以是电性,机械或其它的形式。
[0115] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作 为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方, 或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或 者全部单元来实现本实施例方案的目的。
[0116] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元 中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一 个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功 能单元的形式实现。
[0117] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售 或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本 申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的 全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个 存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机, 服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步 骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称: Read‑Only Memory,英文缩写:ROM)、随机存取存储器(英文全称: Random Access Memory,英文缩写:RAM)、磁碟或者光盘等各种可以存储 程序代码的介质。
[0118] 以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制; 尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应 当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其 中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案 的本质脱离本申请各实施例技术方案的精神和范围。