技术领域
[0001] 本申请涉及区块链技术领域,具体涉及一种溯源方法、溯源装置、溯源系统和存储介质。
相关背景技术
[0002] 相关技术通常由供应链中的核心企业做为信息中心,将所有供应链上所有环节产生的溯源信息录入核心企业建立的数据库,并使用扫描二维码等方式向用户提供查询服务。也即是说,相关技术通常由供应链中的核心企业建立中心化溯源系统。然而,这种溯源系统具有信息闭塞、监管追溯难、无直接效益产出、数据滥用等缺陷。
具体实施方式
[0029] 下面详细描述本申请的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。
[0030] 在本申请的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
[0031] 在本申请的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接或可以相互通信;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。
[0032] 下文的公开提供了许多不同的实施方式或例子用来实现本申请的不同结构。为了简化本申请的公开,下文中对特定例子的部件和设置进行描述。当然,它们仅仅为示例,并且目的不在于限制本申请。此外,本申请可以在不同例子中重复参考数字和/或参考字母,这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施方式和/或设置之间的关系。此外,本申请提供了的各种特定的工艺和材料的例子,但是本领域普通技术人员可以意识到其他工艺的应用和/或其他材料的使用。
[0033] 请参阅图1、图2和图3,本申请实施方式提供一种基于区块链的溯源方法。区块链包括侧链110和主链120。溯源方法包括:
[0034] 步骤S14:获取溯源信息;
[0035] 步骤S15:将溯源信息存储到侧链110;
[0036] 步骤S16:处理溯源信息以得到溯源验证码;
[0037] 步骤S17:将溯源验证码存储到主链120。
[0038] 本申请实施方式提供一种基于区块链的溯源系统100。区块链包括侧链110和主链120,溯源系统100包括处理器101和与处理器101连接的存储器102,存储器102存储有溯源程序,溯源程序被处理器101执行时实现上述的溯源方法。
[0039] 也即是说,处理器101用于获取溯源信息;及用于将溯源信息存储到侧链110;及用于处理溯源信息以得到溯源验证码;以及用于将溯源验证码存储到主链120。
[0040] 本申请实施方式的溯源方法和溯源系统100,将溯源信息存储到侧链110,并将溯源验证码存储到主链120,利用侧链110技术对主链120扩容,简单方便地实现了对溯源信息的存储,大大提高了交易的吞吐量,降低了交易延迟,减少了交易成本,并保证了溯源信息的安全性。
[0041] 在本申请本实施方式中,侧链110为联盟链,主链120为公有链,例如以太坊。可以理解,在其他的实施方式中,侧链110和主链120可以为公有链、私有链或其他类型的区块链。在此不对侧链110和主链120的具体形式进行限定。
[0042] 本申请本实施方式的溯源方法和溯源系统100,可应用于供应链的信息溯源。为方便说明,接下来以溯源方法和溯源系统100应用于供应链的信息溯源为例进行解释和说明。可以理解,这并不代表对溯源方法和溯源系统100的应用场景的限制。
[0043] 供应链溯源系统,是对供应链上的产品从生产到消费的各个阶段进行全生命周期追踪的系统。建立安全高效可信任的供应链溯源系统是促进供应链产品质量安全、保障消费者权益的重要手段。由于供应链涉及主体众多、主体之间数据不对称、数据共享无直接经济效益产出等原因,导致供应链溯源体系管理难度大,效率低,特别是在数据存储安全的方面面临众多挑战。
[0044] 相关技术通常由供应链中的核心企业做为信息中心,将所有供应链上所有环节产生的溯源信息录入核心企业建立的数据库,并使用扫描二维码等方式向用户提供查询服务。也即是说,相关技术通常由供应链中的核心企业建立中心化溯源系统。然而,这种溯源系统具有信息闭塞、监管追溯难、无直接效益产出、数据滥用等缺陷。
[0045] 具体地,首先,供应链由众多参与主体构成,由于缺乏信任,很多信息被离散地保存在主体各自的系统中,导致信息中心难以建设。同时,供应链的主体间需要大量交互与协作,而中心化的系统使信息单向流通,这不利于供应链企业间的协同与合作。其次,企业难以平衡数据公开与隐私保护的关系,对监管部门数据开放不够友好,一旦产品出现质量问题,信息追溯容易中断,举证追责困难。再次,由于供应链溯源系统无直接效益产出,因此,供应链溯源系统需要增加成本,但并没有直接经济效益的产出,导致供应链上的企业无力维护。最后,中心化供应链系统由于数据集中、数据流通单向、缺乏监管,易产生溯源数据造假、数据篡改、数据泄露等安全问题,严重降低了溯源数据的真实性。
[0046] 而区块链是一种去中心化的分布式存储技术,它能够在一个无中心网络中建立信任,保证数据的不可篡改、公开透明以及可追溯性。区块链技术的天然特性刚好与供应链溯源的痛点相契合,为供应链溯源提供了新的解决方案。
[0047] 具体地,首先,区块链利用共识算法和密码学技术保证账本数据不可篡改,使得链上信息真实可靠;其次,区块链是一个分布式账本,能够解决中心化系统中企业不愿意向溯源平台建设方单向交付数据的信任问题;最后,区块链技术使用智能合约能够促成更高效的供应链交易和数据共享,形成供应链可追溯、可信体系标准。
[0048] 现有的使用区块链技术实现的供应链溯源系统通常使用IBM公司研发的超级账本Hyperledger作为底层技术支撑。Hyperledger是一种联盟链技术,它只允许特定群体成员和有限的第三方接入的区块链网络。由于存在准入机制、节点数量较少、使用高性能的共识算法(类BFT算法)等原因,联盟链相较于公有链通常拥有更高的交易性能。但在现有应用中,联盟链通常部署成图4和图5所示的两种模型。
[0049] 在图4的联盟链模型2000中,共识节点2001常常部署在大企业中以及一些第三方机构中。例如图4中的认证机构、监管机构、核心企业。而供应链中的小微企业,如原材料供应商、经销商(即图4中的伙伴企业),一般只有终端2001或物联网采集设备2003,不会配置共识服务器。这就导致了联盟链中共识权利的失衡,也会因为共识节点过少导致共识策略失效。
[0050] 在图5的联盟链模型3000中,核心企业将共识节点3001部署在同一个共识域下,或者在同一台服务器上利用Docker容器技术生成四个共识节点3001用于共识,供应链上的其他企业利用客户端节点3002接入联盟链。这种做法可以节约成本,方便小型应用以及前期调试,但违背了联盟链的初衷和原则,无法发挥联盟链的作用,与中心化的系统别无二致。
[0051] 2013年,Vitalik Buterin提出一种下一代加密货币与去中心化应用平台——以太坊(Ethereum)。以太坊智能合约的出现加速了区块链技术的发展与应用,各种传统的应用场景开始寻求与区块链技术的结合,如供应链溯源、慈善公益、合同防伪、电子发票、版权保护等,尤其是供应链溯源。
[0052] 以太坊是一种公链技术,在以太坊上实现供应链溯源,必须考虑如何解决交易开销大的问题。供应商需要对每一批原材料信息进行上链,加工商需要对每一批产品的加工信息进行上链,经销商需要将销售信息上链。这些数据会对以太坊主网造成巨大压力,也会带来高昂的交易手续费,还会存在较高的确认延迟,这是令人难以接受的。
[0053] 因此,将公链技术应用于供应链溯源必须对其进行扩容。现有的扩容技术有闪电网络、雷电网络、状态通道、分片、侧链等等。其中,侧链技术是一种可以让主链代币安全地转移到其他区块链,又可以从其他区块链安全返回到主链的一种协议。该协议将一些频繁的、小额的交易转移到侧链上进行,不但提高了公链主网的运行效率,也大大降低了交易手续费。
[0054] 然而,使用侧链技术对区块链进行扩容,具有以下缺陷:侧链技术只包含了代币转移,它可以将代币交易转移到侧链进行,以获得更高的吞吐量和更低的手续费,但无法对供应链溯源系统中产生的非交易型信息进行扩容,也无法对溯源系统产生的大量数据进行低成本存储。
[0055] 基于此,本申请本实施方式的溯源方法和溯源系统100,基于区块链技术中的侧链技术,通过以太坊智能合约实现供应链中的货物管理、信息共享与产品溯源,同时,利用侧链技术对以太坊进行扩容,使溯源系统100满足实际应用的需求。
[0056] 请参阅图3,溯源系统100可包括侧链110、主链120和客户端模块130。
[0057] 侧链110为溯源信息上链提供扩容服务,增加以太坊的吞吐量,减少交易确认时间,降低交易成本。侧链110包含了智能合约单元112与数据同步单元114。其中智能合约单元112负责处理业务逻辑,数据同步单元114负责将每批交易数据进行处理后同步到以太坊主链120。
[0058] 主链120基于以太坊实现,它将数据同步单元114发来的数据锁定到以太坊上,并在溯源系统100需要验证溯源信息时提供验证查询功能。
[0059] 客户端模块130负责人机交互。客户端模块130分为信息录入端与信息查询端。信息录入端依靠供应商等主体将溯源信息上链,信息查询端则由系统开放的接口进行查询。
[0060] 请参阅图6,溯源系统100可通过智能合约来规范用户权限和/或操作流程。智能合约可用于用户注册、原料录入、产品生产、产品经销、监管与查询等方面。
[0061] 在某些实施方式中,溯源方法用于供应链,溯源方法包括:
[0062] 获取供应链的用户数据和用户组号;
[0063] 根据用户组号和用户数据进行用户注册。
[0064] 如此,实现溯源系统100中用户的注册,使得每一条供应链的用户具备相同的用户组号。具体地,由于公链本身没有身份认证机制,因此可通过智能合约来实现用户准入。可以理解,由于同一条供应链的用户具有相同的用户组号,因此,可以根据用户组号,设置用户的权限,以使用户组号的组内用户只能对该用户组号对应的区块链添加溯源信息,不能对其他区块链添加溯源信息。这样可以将对不同供应链的溯源信息的操作隔离,可提高数据的安全性。
[0065] 用户组号可由同一条供应链的用户商定,也可由系统随机分配,在此不对用户组号的来源进行限定。在获取了供应链的用户数据和用户组号后,可通过执行userRegister()函数进行用户注册,可根据用户组号将同一条供应链的用户编入同一个用户组,用户组内的用户才有权限对该用户组号对应的区块链添加溯源信息。
[0066] 溯源系统100中用户注册的算法伪代码如下。
[0067] 算法1supplyChain合约中的userRegister()函数
[0068] 已知:supplyChain合约地址base_addr,用户组号user_group,用户编号user_id,用户角色user_name,合约发布者为owner。
[0069] 求:完成或失败
[0070]
[0071]
[0072] 在完成用户注册后,供应链的用户可通过步骤S14-S17录入溯源信息。具体地,溯源信息可由供应商、生产商和经销商中的至少一个录入。
[0073] 在步骤S14中,溯源信息可通过物联网设备进行采集,也可由供应商自行上传,在此不对溯源信息的来源进行限定。
[0074] 供应商是供应链的信息源头。在供应链的该环节,溯源信息可为原材料建立初始档案并分配产品批号。
[0075] 在一个例子中,通过物联网设备对原材料的生产环境、生产周期、操作负责人、原料生产日期等数据进行采集,然后调用rawRegister()函数将数据上链。某批次原材料的溯源档案被建模为:
[0076]
[0077] 生产商可对供应商提供的原材料进行加工,产出商品的最小售卖单元。在供应链的该环节,基于溯源信息的商品档案正式建立,并可以二维码的形式提供给消费者查询。溯源信息可包括原材料信息,生产商可调用newProduct()函数对原材料信息进行整合上链,还可以在product_info字段写入生产环境、生产视频等大文件的URL。
[0078] 来自于经销商的溯源信息,可记录产品的流通情况,能够帮助消费者查询商品来源,帮助生产商防止窜货。溯源信息包括经销信息。经销商或物流企业在经手货物后,可使用product_deal()函数为商品添加经销信息。经销商的数量可为一个或多个,因此,溯源信息的结构体中可使用动态数组bytes32[]retailerNames进行存储。由于代码逻辑与原料录入较为相似,此处不再赘述生产与经销函数的伪代码。
[0079] 请参阅图7,在某些实施方式中,溯源方法包括:
[0080] 步骤S11:获取登录数据,登录数据包括身份信息;
[0081] 步骤S12:确定身份信息的录入权限;
[0082] 步骤S13:在录入权限为有权的情况下,进入步骤S14。
[0083] 对应地,处理器101用于获取登录数据,登录数据包括身份信息;确定身份信息的录入权限;在录入权限为有权的情况下,获取溯源信息。
[0084] 如此,使得有录入权限的用户才能录入溯源信息,可以保证溯源系统100的安全性。具体地,本申请实施方式的溯源方法可用于服务器,用户可通过客户端与溯源系统100的客户端模块130进行交互,从而登录到溯源系统100和录入溯源信息。客户端例如为手机、平板、笔记本电脑、个人电脑、车载终端、穿戴设备等。
[0085] 在步骤S11中,用户可通过客户端向溯源系统100输入登录数据。在步骤S12中,溯源系统100可解析登录数据,得到身份信息,并根据智能合约确定该身份信息的录入权限。
[0086] 在一个例子中,根据智能合约,该身份信息不具有对产品批次为0001的供应链进行溯源信息录入的权限,而该用户请求将溯源信息录入产品批次为0001的供应链。此时,可返回提示信息:“您不具备录入权限。”
[0087] 在另一个例子中,根据智能合约,该身份信息具有对产品批次为0001的供应链进行溯源信息录入的权限,且该用户请求将溯源信息录入产品批次为0001的供应链。此时,可返回提示信息:“请输入您需要录入的溯源信息。”
[0088] 请参阅图8,在某些实施方式中,待溯源信息的数量为多个,步骤S16包括:
[0089] 步骤S162:计算每个待溯源信息的验证值;
[0090] 步骤S164:根据全部验证值确定溯源验证码。
[0091] 对应地,处理器101用于计算每个待溯源信息的验证值;根据全部验证值确定溯源验证码。
[0092] 如此,实现处理溯源信息以得到溯源验证码。在本实施方式中,在溯源信息存储到侧链110上以后,可使用哈希(Merkle Tree)算法进行哈希锁定,并将得到的根哈希(Merkle Root)作为溯源验证码同步到以太坊主链120。请注意,一旦溯源信息改变,Merkle Root也会随之改变。
[0093] 具体地,步骤S164包括:将全部验证值分组以得到多个验证组;根据每个验证组的验证值确定验证组值;根据多个验证组值确定溯源验证码。如此,实现根据全部验证值确定溯源验证码。
[0094] 请参阅图9,在本实施方式中,在一轮交易结束后,可将侧链上供应商、生产商、经销商等节点上传的溯源信息作为Merkle Tree的叶子节点,计算其哈希值。在存在多个供应商或经销商的情况下,可把不同节点的信息分别作为叶子节点处理。得到若干个哈希值(H1,H2,H3…)以后,再对(H1,H2,H3…)进行两两运算,求哈希值。如此循环,直到得到根哈希Merkle Root。Merkle Tree算法伪代码如下。
[0095] 算法3.2Merkle Tree算法
[0096] 已知:供应链溯源信息list_info=[T1,T2,T3,…]
[0097] 求:根哈希merkle_root
[0098]
[0099] 请参阅图10,在某些实施方式中,溯源信息包括产品批号,溯源方法包括:
[0100] 步骤S18:关联溯源验证码和产品批号以得到对应关系。
[0101] 对应地,处理器101用于关联溯源验证码和产品批号以得到对应关系。
[0102] 如此,实现溯源验证码和产品批号的绑定。可以理解,溯源验证码与产品批号的一一对应,可使得在产品批号确定的情况下,唯一确定在主链120对应的溯源验证码,从而唯一确定该溯源验证码在侧链110对应的溯源信息。这样可以使得后续对溯源信息的查询清楚且规范。
[0103] 另外,对应关系可以表的形式存储在溯源系统100的存储器中。当然,也可以其他的形式存储,也可存储在与溯源系统100通信的设备。在此不对对应关系的具体存储方式和具体存储位置进行限定。
[0104] 请参阅图11,在某些实施方式中,溯源方法包括:
[0105] 步骤S21:获取登录数据,登录数据包括身份信息;
[0106] 步骤S22:确定身份信息的查询权限;
[0107] 步骤S23:在查询权限为有权的情况下,获取输入的查询信息;
[0108] 步骤S26:返回与查询信息对应的溯源信息。
[0109] 对应地,处理器101用于获取登录数据,登录数据包括身份信息;确定身份信息的查询权限;在查询权限为有权的情况下,获取输入的查询信息;返回与查询信息对应的溯源信息。
[0110] 如此,使得有查询权限的用户才能查询溯源信息,可以保证溯源系统100的安全性。如前所述,查询权限可由智能和约确定。具体地,本申请实施方式的溯源方法可用于服务器,用户(例如消费者、监管者)可通过客户端与溯源系统100的客户端模块130进行交互,从而登录到溯源系统100并查询溯源信息。客户端例如为手机、平板、笔记本电脑、个人电脑、车载终端、穿戴设备等。
[0111] 在一个例子中,根据智能合约,该身份信息不具有对产品批次为0001的供应链进行溯源信息查询的权限,而该用户请求查询产品批次为0001的供应链的溯源信息。此时,可返回提示信息:“您不具备录入权限。”
[0112] 在另一个例子中,该用户请求查询产品批次为0001的供应链的溯源信息。根据智能合约,该身份信息具有对产品批次为0001的供应链进行溯源信息查询的权限。此时,可返回产品批次为0001的供应链的溯源信息。
[0113] 请参阅图12,在某些实施方式中,查询信息包括产品批号,溯源方法包括:
[0114] 步骤S24:在主链120根据预存的对应关系确定产品批号对应的溯源验证码;
[0115] 步骤S25:在侧链110获取溯源验证码对应的溯源信息。
[0116] 对应地,处理器101用于在主链120根据预存的对应关系确定产品批号对应的溯源验证码;在侧链110获取溯源验证码对应的溯源信息。
[0117] 如此,实现根据产品批号查找到溯源信息,以将溯源信息返回给用户。可以理解,由于溯源验证码与产品批号一一对应,因此,用户输入产品批号,处理器101即可找到对应的存储在主链120的溯源验证码。而存储在主链120的溯源验证码又与存储在侧链110的溯源信息一一对应,因此,可根据对应的溯源验证码,找到对应的存储在侧链110的溯源信息。
[0118] 请参阅图13,在某些实施方式中,溯源方法包括:
[0119] 步骤S27:根据溯源验证码确定溯源信息是否被篡改。
[0120] 对应地,处理器101用于根据溯源验证码确定溯源信息是否被篡改。
[0121] 如此,可以实现对溯源信息是否被篡改进行确定,进一步保证数据的安全性。具体地,可根据获取到的溯源信息,按照前述的确定溯源验证码的方式,再次确定溯源验证码。若再次得到的溯源验证码与主链120存储的溯源验证码不一致,则可判定该溯源信息被篡改。
[0122] 在一个例子中,请参阅图9,当用户查询到商品溯源信息后,再使用前述同样的方法得到Merkle Root,与以太坊上可靠的值相比较,若两个值不一致,监管方可使用Merkle Tree算法更加快速的定位被篡改数据来自哪一分支,并对应到供应链中的具体环节进行追责。
[0123] 请参阅图14,本申请实施方式提供一种基于区块链的溯源装置10。区块链包括侧链110和主链120,溯源装置10包括获取模块14、第一存储模块15、处理模块16和第二存储模块17,获取模块14用于获取溯源信息;第一存储模块15用于将溯源信息存储到侧链110;处理模块16用于处理溯源信息以得到溯源验证码;第二存储模块17用于将溯源验证码存储到主链120。
[0124] 本申请实施方式的溯源装置10的具体实施例与上述溯源方法的各个实施例基本相同,在此不做赘述。
[0125] 在某些实施方式中,获取模块14用于获取登录数据,登录数据包括身份信息;确定身份信息的录入权限;在录入权限为有权的情况下,获取溯源信息。
[0126] 在某些实施方式中,处理模块16用于计算每个待溯源信息的验证值;根据全部验证值确定溯源验证码。
[0127] 在某些实施方式中,获取模块14用于获取登录数据,登录数据包括身份信息;确定身份信息的查询权限;在查询权限为有权的情况下,获取输入的查询信息;返回与查询信息对应的溯源信息。
[0128] 在某些实施方式中,溯源装置10包括查询模块,查询模块用于在主链120根据预存的对应关系确定产品批号对应的溯源验证码;在侧链110获取溯源验证码对应的溯源信息。
[0129] 在某些实施方式中,查询模块用于根据溯源验证码确定溯源信息是否被篡改。
[0130] 本申请实施例还提出一种计算机可读存储介质,计算机可读存储介质上存储有溯源程序,溯源程序被处理器执行时实现如上述任一实施方式的溯源方法。
[0131] 例如执行:步骤S14:获取溯源信息;步骤S15:将溯源信息存储到侧链110;步骤S16:处理溯源信息以得到溯源验证码;步骤S17:将溯源验证码存储到主链120。
[0132] 本申请实施方式的溯源系统和计算机可读存储介质,将溯源信息存储到侧链110,并将溯源验证码存储到主链120,利用侧链110技术对主链120扩容,简单方便地实现了对溯源信息的存储,大大提高了交易的吞吐量,降低了交易延迟,减少了交易成本,并保证了溯源信息的安全性。
[0133] 本申请实施方式的计算机可读存储介质的具体实施例与上述溯源方法的各个实施例基本相同,在此不做赘述。
[0134] 综合以上,本申请实施方式的溯源方法、溯源装置10、溯源系统100和存储介质,实现了一个供应链全生命周期的溯源系统,同时利用以太坊侧链技术对区块链进行扩容,提高了溯源系统的交易效率,满足了实际生产的需求。
[0135] 具体地,本申请实施方式的溯源方法、溯源装置10、溯源系统100和存储介质,基于公链。使用公共区块链技术可以大大降低企业部署系统的成本,并且保证了供应链中所有参与方的共识权,增加系统的可靠性,维护溯源数据的真实性。
[0136] 另外,传统的扩容方法一般只针对比特币或以太坊中的代币交易。而本申请实施方式的溯源方法、溯源装置10、溯源系统100和存储介质,将侧链扩容技术应用于供应链溯源数据的扩容中,首先将溯源数据存储在侧链110,再通过侧链110上的数据同步模块,将数据的哈希值存储在以太坊主链120。这样能够得到较好的存储性能,并保证数据的安全性。
[0137] 在本说明书的描述中,参考术语“某些实施方式”、“一个实施方式”、“一些实施方式”、“示意性实施方式”、“示例”、“具体示例”、或“一些示例”等的描述意指结合实施方式或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。
[0138] 尽管上面已经示出和描述了本申请的实施方式,可以理解的是,上述实施方式是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施方式进行变化、修改、替换和变型,本申请的范围由权利要求及其等同物限定。