一种基于区块链的层级化溯源的批次信息记录方法及装置与流程

文档序号:24640423发布日期:2021-04-09 20:53阅读:86来源:国知局
一种基于区块链的层级化溯源的批次信息记录方法及装置与流程

本发明涉及互联网信息技术领域,尤其涉及一种基于区块链的层级化溯源的批次信息记录方法及装置。



背景技术:

传统的区块链可以广泛用于商品的溯源与实物信息的可信记录。目前这样的区块链系统能够支持的物品的逻辑关系比较简单,就是对每一个单品做追溯。如果在流通的过程中,需要将商品组合成批次,批次在流通的过程中也需要记录各种信息。事实上,实际应用中,商品总是通过多层次的组合批次实现商品的流转。这种情况下,现有的做法是采用单独的标签来追溯批次。但是,这样造成的问题是单品和批次之间的隶属关系,需要一个中心化的数据库来记录并维护。如果单品在流通过程中需要在不同的部门/实体间实现隶属关系的解析及重构的话,采用一个单一的中心化的数据库是无法满足要求的。如果采用多个中心化数据库来记录单品和批次的关系,除了大大增加管理上的开销之外,多个中心化的数据库会重新引入数据的不一致性,也就失去了采用区块链溯源的本意。

另外,可以通过区块链上的智能合约记录单品和批次的隶属关系。但是,涉及到海量商品,以及可以动态解析组合的批次情况下,智能合约的开销将非常巨大,使得能够支撑的商品数量非常有限,失去了使用价值。



技术实现要素:

有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是解决商品溯源问题中的多层次组合批次中又包含物品的逻辑关系,因而造成溯源困难和复杂的问题。使因此,本发明提供了一种基于区块链的层级化溯源的批次信息记录方法,在不需要复杂的逻辑记录的条件下,通过区块链本身的树状结构,实现对层级隶属关系的确认和追随,能够灵活地同时对某个单品和隶属的批次进行全方面的信息追溯,使得通过区块链可以实现对这个层次包含逻辑在多个实体之间流转的时候,能够无缝地实现信息的记录以及追溯。

为实现上述目的,本发明提供了一种基于区块链的层级化溯源的批次信息记录方法,包括以下步骤:

单位时间内根据多个溯源单品或批次的基本数据,构建树状结构;

将单位时间内的所述树状结构的根哈希记录到区块链中;

当已经记录在所述树状结构中的一个或多个溯源单品或批次组合成一个新的批次时,对组合后的批次信息构建标识id和所述新的批次的记录历史;

根据所述批次信息与其他商品节点信息构建一个新的信息树,并将所述新的树状结构的根哈希记录到区块链。

进一步地,包含基本数据的所述溯源单品的树状结构包括标识id和历史记录,将一个或多个溯源单品组合成一个批次,所述批次与一个所述标识id相关联,所述批次的历史记录包含一个或多个溯源单品的最小跨越子树的根节点哈希集合。

进一步地,一个批次可以和一个溯源单品或其他一个或多个批次构建成新的批次。

进一步地,所述最小跨越子树的构建算法包括以下步骤:

a、对于某个批次内的溯源单品i,寻找所述溯源单品所在的某个历史区块对应的树状结构;

b、查询所述溯源单品i的兄弟节点对应的溯源单品j,如果溯源单品j不属于所述批次,则最小跨越子树的根节点即为溯源单品i,溯源单品i的key即为最小跨越子树的根哈希;

c、如果所述溯源单品j也属于所述批次,获得所述溯源单品i和所述溯源单品j的父节点h;

d、查询所述父节点h的兄弟节点对应的子树所包含的所有溯源单品集合{ki},如果单品集合{ki}中有一个或多个不属于所述批次,最小跨越子树的根节点为所述父节点h,所述父节点h的哈希即为最小跨越子树的根哈希;

e、如果所述溯源单品集合{ki}中都属于所述批次,重复步骤c和步骤d,如已经是c-tree的根节点,在当前c-tree即为所述区块的最小跨越子树;

f、重复步骤a-e,对批次内的所有溯源单品,都找到最小跨越子树,即构成最小跨越子树集合。

本发明的另一较佳实施例提供了一种基于区块链的层级化溯源的批次信息记录装置,包括:

构建模块,用于单位时间内根据多个溯源单品或批次的基本数据,构建树状结构;

集合模块,用于将单位时间内的所有树状结构记录构成一个所有溯源单品集合,并且将单位时间内的所述树状结构的根哈希记录到区块链中;

组合模块,用于当已经记录在所述树状结构中的一个或多个溯源单品或批次组合成一个新的批次时,并对组合后的批次信息构建标识id和所述新的批次的记录历史;

更新模块,用于根据所述批次信息与其他商品节点信息构建一个新的信息树,并将所述新的树状结构的根哈希记录到区块链。

进一步地,所述单个溯源单品的树状结构包括标识id和历史记录,将一个或多个溯源单品组合成一个批次,所述批次与一个所述标识id相关联,所述批次的历史记录包含一个或多个溯源单品的最小跨越子树的根节点哈希集合。

进一步地,一个批次可以和一个溯源单品或其他一个或多个批次构建成新的批次进一步地,所述最小跨越子树的构建算法包括以下步骤:

a、对于某个批次内的溯源单品i,寻找所述溯源单品所在的某个历史区块对应的树状结构;

b、查询所述溯源单品i的兄弟节点对应的溯源单品j,如果溯源单品j不属于所述批次,则最小跨越子树的根节点即为溯源单品i,溯源单品i的key即为最小跨越子树的根哈希;

c、如果所述溯源单品j也属于所述批次,获得所述溯源单品i和所述溯源单品j的父节点h;

d、查询所述父节点h的兄弟节点对应的子树所包含的所有溯源单品集合{ki},如果单品集合{ki}中有一个或多个不属于所述批次,最小跨越子树的根节点为所述父节点h,所述父节点h的哈希即为最小跨越子树的根哈希;

e、如果所述溯源单品集合{ki}中都属于所述批次,重复步骤c和步骤d,如已经是c-tree的根节点,在当前c-tree即为所述区块的最小跨越子树;

f、重复步骤a-e,对批次内的所有溯源单品,都找到最小跨越子树,即构成最小跨越子树集合。

本发明的又一较佳实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时,实现如上述中任一项所述的方法。

本发明的又一较佳实施例提供了一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序使计算机执行时实现如上述中任一项所述的一种基于区块链的层级化溯源的批次信息记录方法。

技术效果

本发明的一种基于区块链的层级化溯源的批次信息记录方法,在不需要外界的中心化数据记录批次隶属关系的条件下,通过区块链本身的树状结构,实现对层级隶属关系的确认和追随。这样的层级隶属关系简单高效,从而实现对海量商品的支持。同时,单品和批次的信息,都可以以不可篡改的方式记录到区块链上,实现实物所有权的可验证变更和实物的信息记录的可信追溯。

以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。

附图说明

图1是本发明的一个较佳实施例的树状结构示意图;

图2是本发明的一个较佳实施例的批次信息记录的流程图;

图3是本发明的一个较佳实施例的商品最小跨越子树的列表示意图。

具体实施方式

为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

以下描述中,为了说明而不是为了限定,提出了诸如特定内部程序、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。

实施一

本发明提供了一种基于区块链的层级化溯源的批次信息记录方法,包括以下步骤:

步骤100,单位时间内根据多个溯源单品或批次的基本数据,构建树状结构;其中,包含基本数据的所述溯源单品的树状结构包括标识id和历史记录,将一个或多个溯源单品组合成一个批次,所述批次与一个所述标识id相关联,所述批次的历史记录包含一个或多个溯源单品的最小跨越子树的根节点哈希集合。

步骤200,将单位时间内的所有树状结构记录构成一个所有溯源单品集合,并且将单位时间内的所述树状结构的根哈希记录到区块链中;

步骤300,当已经记录在所述树状结构中的一个或多个溯源单品或批次组合成一个新的批次时,并对组合后的批次信息构建标识id和所述新的批次的记录历史;其中,一个批次可以和一个溯源单品或其他一个或多个批次构建成新的批次。

步骤400,根据所述批次信息与其他商品节点信息构建一个新的信息树,并将所述新的树状结构的根哈希记录到区块链。

其中,最小跨越子树的构建算法包括以下步骤:

a、对于某个批次内的溯源单品i,寻找所述溯源单品所在的某个历史区块对应的树状结构;

b、查询所述溯源单品i的兄弟节点对应的溯源单品j,如果溯源单品j不属于所述批次,则最小跨越子树的根节点即为溯源单品i,溯源单品i的key即为最小跨越子树的根哈希;

c、如果所述溯源单品j也属于所述批次,获得所述溯源单品i和所述溯源单品j的父节点h;

d、查询所述父节点h的兄弟节点对应的子树所包含的所有溯源单品集合{ki},如果单品集合{ki}中有一个或多个不属于所述批次,最小跨越子树的根节点为所述父节点h,所述父节点h的哈希即为最小跨越子树的根哈希;

e、如果所述溯源单品集合{ki}中都属于所述批次,重复步骤c和步骤d,如已经是c-tree的根节点,在当前c-tree即为所述区块的最小跨越子树;

f、重复步骤a-e,对批次内的所有溯源单品,都找到最小跨越子树,即构成最小跨越子树集合。

溯源信息的基本数据结构是一个树状结构。这个树状结构通常采用merkle树的方式实现。本实例中是采用的是merkle树,ctree为merkle树的一个扩展,具体来说,就是ctree的每个非叶节点可以存储额外的信息。这些信息在子节点和父节点之间的关联满足某种设定的规则。一个较佳的c-tree实例是父节点的额外信息部分是所有子节点的额外信息的和。

如图1所示,101指的是ctree的叶子节点的左节点,可以用来表示溯源单品的id,也可以是某个批次的id,102指的是ctree的叶子节点的右节点,可以用来表示溯源单品/批次的记录历史。在ctree中,单个商品和批次的id是类似的,一个较佳的实例是对应于一个二维码,可以用作溯源单品和批次的溯源码。批次的记录历史与单品的记录历史不同点在于,批次还记录批次包含的商品最小跨越子树的列表(具体见图三)。

以ctree为基础的树状结构是溯源系统的基础。单位时间内的所有溯源单品的记录集合构成一个ctree,ctree的根哈希103记录到一个可信的区块链上。这个区块链可以是一个联盟链或者公链。

在不同的时刻,本发明的溯源系统中会生成一个ctree实例,包含当前所有商品记录的更新集合,并对应于区块链上的一个区块。例如103对应的根哈希是区块链的区块号#100,104对应的根哈希是区块链的区块号#101,105对应的根哈希是区块链的区块号#102。

ctree上面的每个叶节点对应一个溯源的单品,或者是某个批次。如果需要将某些单品组合成一个批次,并对批次进行溯源的话,可以构建一个新的叶子节点。例如在如图1所述的实例中,需要将key2,key5,key6对应的单品组合成一个批次。具体如下,key5和key6位于根哈希104对应的ctree中。这里需要找到所有key5,key6的最小跨越子树的根哈希111。具体算法如下:

a.对于某个批次内的商品i,寻找其所在的某个历史区块对应的c-tree;在本例子中,从key5出发,需要找到最小跨越子树;

b.查询商品i的兄弟节点对应的商品j,如果商品j不属于所述批次,则最小跨越子树的根节点即为商品i,商品i的key即为最小跨越子树的根哈希;在本例子中,key5的兄弟节点是key6,key6同属于此批次;

c.如果商品j也属于所述批次,对所述c-tree上行,获得商品i和j的父节点h;

在本例子中,key5,key6属于同批次,由此上述到共同的父节点111;

d.查询所述父节点h的兄弟节点对应的子树所包含的所有商品集合{ki},如果商品集合{ki}中有一个或多个不属于所述批次,最小跨越子树的根节点为所述父节点h,所述父节点h的哈希即为最小跨越子树的根哈希;在本例中,父节点111的兄弟节点的叶子节点key3,key4不属于次批次,因此111即为key5,key6的最小跨越子树哈希;

e.如果商品集合{ki}中都属于所述批次,重复步骤c,d,如已经是c-tree的根节点,在当前c-tree即为所述区块的最小跨越子树;即,如果这个子树的所有节点都在当前批次中,那么可以将该子树再往上一层,看看再上一层的较大的子树覆盖的节点是否都在批次中。子树每上浮一层,覆盖的节点将加倍;

f.重复步骤a-e,对批次内的所有商品,都找到最小跨越子树,即构成最小跨越子树集合。在本例中,key2对应的最小跨越子树哈希是108。

通过上述步骤,我们可以得到所有单品{key5,key6,key3}的最小跨越子树哈希集合{哈希108,哈希111}。

因此,对应于创建的批次109,其对应的记录历史110,将初始化成上述最小跨越子树哈希集合。

这样,需要查询批次里面的单品信息时,可以从批次的标识id109出发,得到110中的记录历史。并从记录历史中得到最小跨越子树哈希集合。对于每个最小跨越子树哈希,可以从历史区块的ctree中,找到最小跨越子树哈希对应的节点。例如最小跨越子树哈希group1对应哈希111,哈希111的所有子节点都属于当前批次109。这样,我们可以得到109对应的所有批次单品列表112。

如图2所示,本实施例中,树状结构选用merkle树,溯源单品为商品,其步骤如下;

步骤201,单位时间内的多个商品构建成merkle树

步骤202,将所述merkle树的根哈希记录记录到区块链中。

步骤203,如果需要把若干商品构成一个批次,通过步骤204实现:在当前merkle树种,构建批次的key/value对,key是批次的标识id,value是批次的记录历史,包含多个当前区块之前的merkle树中的节点哈希集合。

步骤205,构建完成批次的key/value对之后,批次信息与其他节点信息构建成新的merkle树。

步骤206,新的merkle树的根哈希记录到区块链,实现对批次信息的上链。

对某个单品的溯源,可以从图2中所述的步骤202到步骤207的过程实现:每个商品的merkle证明形成唯一的可信历史信息记录。如果需要对某个批次进行溯源,可以从图二中所述的步骤206到步骤208的过程实现:每个批次的merkle证明形成唯一的可信历史信息记录。每个商品单品可以通过步骤209实现单品与批次之间的关联信息。

如图3所示,ctree中叶节点用来标识商品或批次的id和历史信息记录,其中,在本实施例中,301所示的某个商品单品的id,可以对应于某个二维码。用户可以通过所述二维码获得商品的历史信息记录。302所示的是所述商品单品的历史信息记录,商品单品的历史信息记录包含一个信息头与若干信息记录,每个信息记录伴随一个用合适私钥产生的签名,确保记录产生的可信。303所示的某个批次的id,可以对应于某个二维码。用户可以通过所述二维码获得所述批次的历史信息记录。304所示的是所述批次的历史信息记录,批次的历史信息记录包含一个批次信息头与若干信息记录,批次信息头可以包括一个或多个批次商品在历史ctree中的某个最小跨越子树的哈希305、306。每个信息记录伴随一个用合适私钥产生的签名,确保记录产生的可信。

本实施例的一种基于区块链的层级化溯源的批次信息记录方法,在不需要外界的中心化数据记录批次隶属关系的条件下,通过区块链本身的树状结构,实现对层级隶属关系的确认和追随。这样的层级隶属关系简单高效,从而实现对海量商品的支持。同时,单品和批次的信息,都可以以不可篡改的方式记录到区块链上,实现实物所有权的可验证变更和实物的信息记录的可信追溯。

实施例二

本实施例提供了一种基于区块链的层级化溯源的批次信息记录装置,包括以下模块:

构建模块,用于单位时间内根据多个溯源单品或批次的基本数据,构建树状结构;

集合模块,用于将单位时间内的所有树状结构记录构成一个所有溯源单品集合,并且将单位时间内的所述树状结构的根哈希记录到区块链中;

组合模块,用于当已经记录在所述树状结构中的一个或多个溯源单品或批次组合成一个新的批次时,并对组合后的批次信息构建标识id和所述新的批次的记录历史;

更新模块,用于根据所述批次信息与其他商品节点信息构建一个新的信息树,并将所述新的树状结构的根哈希记录到区块链。

进一步地,所述单个溯源单品的树状结构包括标识id和历史记录,将一个或多个溯源单品组合成一个批次,所述批次与一个所述标识id相关联,所述批次的历史记录包含一个或多个溯源单品的最小跨越子树的根节点哈希集合。

进一步地,一个批次可以和一个溯源单品或其他一个或多个批次构建成新的批次

进一步地,所述最小跨越子树的构建算法包括以下步骤:

本实施例的装置用于实现实施例一的一种基于区块链的层级化溯源的批次信息记录方法,其实现方法与实施例一相同,此处将不再赘述。

实施例三

本发明实施例三提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时,实现上述任一项的方法。

该实施例的计算机设备包括:处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序。所述处理器执行所述计算机程序时实现上述步骤。或者,所述处理器执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能。

示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述计算机设备中的执行过程。

所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可包括,但不仅限于,处理器、存储器。

所述处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

所述存储器可以是所述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。所述存储器也可以是所述计算机设备的外部存储设备,例如所述计算机设备上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器还可以既包括所述计算机设备的内部存储单元也包括外部存储设备。所述存储器用于存储所述计算机程序以及所述计算机设备所需的其他程序和数据。所述存储器还可以用于暂时地存储已经输出或者将要输出的数据。

本发明实施例还提供了一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序使计算机执行时实现上述任一项所述的一种基于区块链的层级化溯源的批次信息记录方法。

以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1