一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于区块链供应链应用的通用来源解决方案的方法和系统与流程

2021-12-07 21:02:00 来源:中国专利 TAG:

用于区块链供应链应用的通用来源解决方案的方法和系统
1.相关申请的交叉引用
2.本技术基于并要求2019年5月23日提交的美国临时申请第62/851,998号和2019年7月16日提交的美国临时申请第62/874,720号的权益和优先权,通过引用将其整体合并于此并用于所有目的。
技术领域
3.本公开涉及使用区块链来提供关于产品来源的供应链问题的解决方案,特别是区块链和加密技术的使用以传达关于产品来源的可审计信息,该信息是加密准确的,同时保持产品和参与者的匿名性(即使是在区块链上)。


背景技术:

4.近年来,消费者比以往任何时候都更关心购买和互动的产品来自哪里。有人可能对产品的来源感兴趣的原因有很多:消费者可能希望确保制造商使用道德规范,转售商可能想要确认二手物品的所有权历史,制造商可能需要跟踪与必要召回相关的产品分发,经销商可能会担心特定产品分发过程中的泄漏等。传统上,这些问题的解决方案可能与问题本身一样变化无穷。例如,经销商可能会使用扫描系统并将自己的标签放置在包装上,但这对制造商或最终用户来说可能几乎没有用处。在另一示例中,消费者可能会发现制造商的道德规范,但无法核实他们购买的产品是否是来自制造商的正品。在又一示例中,制造商可能需要召回并且知道必须召回哪些产品,但几乎没有能力联系接收到产品的最终商家或消费者。
5.因此,现有的解决方案(诸如供应链程序、真实性证书、物流软件等)通常只针对供应链的一个方面提供特定的解决方案。同时,许多制造商和商家可能对涵盖性解决方案持谨慎态度,因为他们期望将他们的网络和实践以及其他信息(诸如销售或制造指标)保密。从而,需要一种技术系统,其可以在不损害制造商的隐私或机密性(或甚至所涉及产品的身份)的情况下做到在供应链中产品的整个生命周期中提供来源解决方案。


技术实现要素:

6.本公开提供了用于通过区块链传达关于产品来源的可审计信息的系统和方法的描述。任何时候对产品的制造商和分发采取了动作,都在区块链上为该产品创建条目。此类动作可包括产品的制造商、产品与其他产品的聚合、各个实体之间的发送和接收、产品的解聚合、产品的销售以及产品的转售。每次在区块链上创建条目时,该条目捕获由事件中涉及的实体(例如,制造商在发布产品时,经销商在从制造商接收产品时等)生成的数字签名。该条目也捕获并且在与事件(例如,产品的发布、产品的接收、产品的发送等)相关联的标识符以及对产品唯一的令牌的组合上提供签名。令牌是通过对对产品唯一的标识符进行散列生成的,该标识符只能通过产品的拥有才能获得。结果是只有能够物理获得产品的个人或实体才能识别与产品相关的任何条目,但做到的任何人能够看到产品的整个来源的图片(诸
如以便确认所购买的物品是正品)。同时,散列和签名的使用意味着涉及的每个实体保持匿名,同时允许实体本身之间的可审计性和核实。从而,本文中讨论的方法和系统提供了产品来源的完整且可审计的记录,该记录即使在区块链上也是匿名的,提供了关于产品来源的完整端到端解决方案,该解决方案为所涉及的每个实体提供服务,而不会牺牲隐私。
7.一种用于传达关于产品来源的可审计信息的方法,该信息是加密准确的,同时在区块链上保持产品和参与者的匿名性,该方法包括:由与计算设备接口的输入设备接收产品标识符;由计算设备的处理器通过将散列算法应用于产品标识符来生成数字令牌;由计算设备的处理器通过将散列算法应用于事件标识符和数字令牌的组合来生成条目值;由计算设备的处理器通过使用加密密钥对的私钥对数据包进行数字签名来生成数字签名,其中数据包包括至少区块链地址、事件标识符和数字令牌;由计算设备的发送器向区块链网络中的节点传输区块链地址、数字签名和条目值。
8.一种用于传达关于产品来源的可审计信息的系统,该信息是加密准确的,同时在区块链上保持产品和参与者的匿名性,该系统包括:包括多个节点的区块链网络;接收产品标识符的与计算设备接口的输入设备;计算设备包括处理器和发送器,其中处理器通过将散列算法应用于产品标识符来生成数字令牌,通过将散列算法应用于事件标识符和数字令牌的组合来生成条目值,以及通过使用加密密钥对的私钥对数据包进行数字签名来生成数字签名,数据包中包括至少区块链地址、事件标识符和数字令牌,以及发送器向区块链网络中的多个节点之一传输区块链地址、数字签名和条目值。
附图说明
9.当结合附图阅读时,从示例性实施例的以下详细描述可以最好地理解本公开的范围。附图中包括以下图:
10.图1是说明根据示例性实施例的用于通过区块链传达产品来源的高级系统架构的框图。
11.图2是说明根据示例性实施例的在图1的系统中使用的计算系统的框图。
12.图3是说明根据示例性实施例的在图1的系统中的供应链中产品的输送过程的流程图,其中可经由区块链获得可审计性。
13.图4是说明根据示例性实施例的用于传达关于产品的来源的可审计信息的示例性方法的流程图。
14.图5是说明根据示例性实施例的计算机系统架构的框图。
15.本公开的更多应用领域将从下文提供的详细描述中变得显而易见。应当理解,示例性实施例的详细描述仅旨在说明目的,因此并不旨在必然限制本公开的范围。
具体实施方式
16.专业术语
17.区块链

基于区块链的资产的所有交易的分类账,无论是公共的还是私有的,许可的还是非许可的。一个或多个计算设备可以包括区块链网络,其可以被配置成作为区块链中的区块的一部分来处理和记录交易。一旦完成某个区块,该区块则被添加到区块链中,从而更新交易记录。在许多情况下,区块链可以是按时间顺序的交易分类账,也可以以任何其
他适合区块链网络使用的顺序呈现。在一些配置中,区块链中记录的交易可以包括目的地地址和货币金额,以便区块链记录多少货币归属于指定地址。在一些情况下,交易是金融的,而其他交易不是金融的,或者可以包括额外的或不同的信息(诸如源地址、时间戳等)。在一些实施例中,区块链也可以或替代地包括几乎任何类型的数据,作为已经或需要被放置在分布式数据库中的交易的形式,该数据库维护不断增长的数据记录列表,该数据记录列表针对即使由其操作员进行的篡改和修改进行加固,并且区块链可以通过工作证明和/或与此相关联的任何其他合适的核实技术被区块链网络确认和验证。在一些情况下,关于给定交易的数据还可以包括附加到交易数据的不直接是交易的一部分的附加数据。在某些情况下,区块链中此类数据的包含可以构成交易。在这种情况下,区块链可以不与特定的数字、虚拟、法定或其他类型的货币直接相关联。
18.经由区块链的产品来源系统
19.图1说明了用于传达产品的来源的系统100,具有可审计的、加密准确的和可证明的、同时保留区块链上涉及的产品和实体的匿名性的信息,该区块链能够独立于任何认证或授权机制,从而对任何区块链平台具有潜在的效用,无论是公共的还是私有的,许可的还是非许可的。
20.系统100可以包括区块链网络102。区块链网络102可以由多个区块链节点104组成(为了说明的清楚,仅示出了潜在的很多区块链节点中的一些)。每个区块链节点104可以是计算系统(诸如图2和图5所说明的),下面将更详细地讨论,该系统被配置成执行与区块链的处理和管理相关的功能,包括区块链数据值的生成、提议的区块链交易的核实、数字签名的核实、新区块的生成、新区块的验证以及区块链的副本的维护。区块链可以是由至少多个区块组成的分布式分类账。每个区块可以包括至少区块头和一个或多个数据值。每个区块头可以包括至少时间戳、区块引用值和数据引用值。时间戳可以是生成区块头的时间,并且可以使用任何合适的方法(例如,unix时间戳、datetime等)来表示。区块引用值可以是引用区块链中较早的区块(例如,基于时间戳)的值。在一些实施例中,区块头中的区块引用值可以是对在相应区块之前最近添加的区块的区块头的引用。在示例性实施例中,区块引用值可以是经由最近添加的区块的区块头的散列生成的散列值。数据引用值可以类似地是对存储在包括区块头的区块中的一个或多个数据值的引用。在示例性实施例中,数据引用值可以是经由一个或多个数据值的散列生成的散列值。例如,区块引用值可以是使用一个或多个数据值生成的默克尔树的根。
21.在每个区块头中使用区块引用值和数据引用值可能会导致区块链是不可变的。对数据值的任何尝试修改将需要为该区块生成新的数据引用值,从而需要新生成后续区块的区块引用值,进一步需要在每个后续区块中生成新的区块引用值。在新区块的生成以及将其添加到区块链中之前,这必须在区块链网络中的每个节点中执行和更新,以便使更改成为永久性的。计算和通信限制可能会使这种修改极其困难(如果不是不可能的话),从而使区块链不可变。
22.如本文所讨论的,区块链数据值可以被配置成存储关于产品来源的数据。在系统100中,制造商106可以制造用于销售的产品,并且可能对使用与区块链网络102相关联的区块链来保存他们制造的产品的来源的记录感兴趣。如本文所讨论的,产品可以指其供应链中涉及的实体可能对跟踪其来源感兴趣的任何对象、物品、商品、物质等。例如,产品可以是
鞋子、珠宝、车辆、处方药、实验室样品、体育纪念品、奥运奖牌、体育竞赛设备、食品等,或几乎任何其他东西。
23.在系统100中,制造商106可以制造随后被分发并被最终销售的产品。系统100说明了涉及制造商106、单个经销商108、商家110和用户114的制造产品的示例供应链。然而,如本文所述,这里讨论的方法和系统适用于涉及执行与可以在区块链上捕获的产品来源相关的任何功能的任何数量的实体的任何供应链。例如,供应链可以涉及多个经销商108(诸如全国经销商、国际托运人和本地承运商),以及多个商家110(诸如批发商、零售商和转售商),其中本文讨论的方法和系统将相应地适用于所涉及的实体。
24.在示例系统100中,制造商106可以制造多个产品,这些产品可以被包装在一起并提供给经销商108用于分发。经销商108可以将产品包运输到商家110,商家110然后可以将包分成单独的产品并且使它们可用于销售给消费者。作为用户114的消费者然后可以从商家110购买产品。如下文更详细讨论的,用户114可以拥有用户设备112,其可以用于在购买之前或之后识别产品的来源,以及在适用的情况下,作为产品的接收者和/或发送者参与供应链中。
25.在供应链中在产品的生命周期中与产品的每次交互可以在区块链中被捕获。如本文所讨论的,这些交互可被称为“事件”。事件可以包括,例如,产品的发布(例如,制造)、产品的发送(以任何形式,诸如装运、交付、运输或提取/转移访问权限)、产品的接收、多个产品聚合在一起、多个产品的分解以及产品的销售或消费。每次事件发生时,相关实体可以执行多个动作,导致向区块链网络102中的区块链节点104的信息提交。区块链节点104可以将信息包括在新的区块链数据值中,该数据值被包括在其他区块链节点104使用传统方法和系统在确认后生成并添加到区块链的新区块中。在某些情况下,与提交到区块链相关的实体执行的动作可以根据事件和其他实体的参与而有所不同。例如,如本文所讨论的,与发布或聚合事件相比,可能更多地涉及发送或接收事件,如下所述。
26.作为事件的一部分,实体可以首先识别产品的产品标识符。产品标识符可以是与产品唯一相关联的唯一标识符,并且在该产品的所有实例中可以是唯一的(例如,标识符可以在特定产品线的每只鞋中是唯一的,但在所有鞋中可以不是唯一的))。在某些情况下,产品标识符可能在所有产品中普遍唯一(诸如具有相当长或复杂的标识号,或者作为值的组合)。例如,产品线中的每只鞋子可能有序列号,其中产品标识符可以是序列号与产品线的组合(例如,12345678

cloudshoe6)。实体可以使用任何合适的方式来识别产品标识符。例如,产品标识符可以直接印在产品上,或者以机器可读代码(例如,条形码、快速响应代码等)编码,附在产品上(例如,可移动标签),嵌入在产品中并经由合适的设备读取等。实体可以使用任何合适的方式(诸如经由用户手动输入、通过与计算设备接口的输入设备传输等)将产品标识符输入到计算设备中。
27.然后,实体的计算系统可以通过将散列算法应用于产品标识符来生成产品的数字令牌。散列算法可以是任何合适类型的算法(诸如sha

256算法)。在示例性实施例中,散列算法可以是单向算法,使得所得数字令牌不能被反转,以识别底层产品标识符。在某些情况下,所得的数字令牌值可能具有相当长的长度和复杂性以防止冲突。一旦获得数字令牌,实体就可以使用他们的计算系统生成数据包。数据包可以包括至少区块链地址、数字令牌和事件标识符。区块链地址可以使用任何合适的方法生成,并且可以例如经由与实体相关联
的公钥(例如,在与其相关联的加密密钥对中)或使用预定算法来生成。事件标识符可以是指示所得区块链条目对应的事件的值。例如,事件标识符可以是“发布”、“发送”、“接收”、“聚合”、“分解”或“消费”。
28.一旦生成数据包,实体就可以使用与实体相关联的加密密钥对的私钥对数据包进行数字签名。可以使用使用私钥的任何合适的算法来生成数字签名,其中可以使用加密密钥对的对应公钥来核实所得的签名。实体也可以为事件生成条目值,其中条目值是通过对事件标识符和产品的数字令牌的组合进行散列来生成的。然后,条目值、数字签名和地址可以各自被传输到区块链网络102中的区块链节点104作为产品的事件的提交。该数据然后可以被包括在新的区块链数据值中,该新的区块链数据值被包括在新区块中,其由多个区块链节点104确认,然后分发到区块链网络1024中的所有区块链节点104并添加到区块链。
29.添加到区块链的产品的每个事件可以被系统100中涉及的其他实体核实。例如,制造商106可以使用区块链向区块链提交用于产品制造的发布事件。用户114可能对确定他们在商家110处发现的待售产品是否是制造商的正品而不是假货感兴趣。用户114可以使用他们的用户设备112从产品读取产品标识符。用户设备112可以是被专门编程为适合于执行这里讨论的功能的任何计算设备(诸如图2和图5的计算系统)。然后用户114可以经由用户设备112通过对产品标识符进行散列来生成产品的数字令牌,然后使用“发布”事件标识符和数字令牌的组合来生成条目值。用户设备112可以检查从区块链网络1024可用的区块链以识别包括其生成的条目值的区块链数据值。如果不存在这样的条目值,则该产品可能不是真品,因为制造商106还没有或没有针对具有读取的产品标识符的产品提交发布事件,这可以指示该产品是假的。用户114然后可以避免购买该产品。
30.如果发现包括条目值的区块链数据值,则用户114可以尝试使用来自他们的加密密钥对的制造商的公钥来验证被包括在区块链数据值中的数字签名。例如,制造商106可以使他们的公钥可用(例如,在他们的网站上,通过应用程序等)以帮助用户114核实他们的产品。用户114可以使用公钥来尝试验证数字签名。如果验证成功,则可以发现产品的发布事件是由制造商提交的,从而用户114可以发现产品是正品。如果验证不成功,则发布事件可能已经由制造商106以外的不同实体提交,从而可能被认为对用户114不可信。用户114然后可以避免购买产品。
31.在事件中可能涉及多个实体的情况下,可以使用确认值代替条目值和数据包中的数字令牌。这种情况可以包括,例如,将产品从制造商106发送到经销商108用于分发,或将产品从经销商108发送到商家110用于销售,或接收产品。在这些情况下,可以使用数字令牌、与其他所涉及实体(例如,“发送”事件的接收者)相关联的公钥和确认密钥的组合来生成确认值。可以使用合适的密钥推导算法(诸如称为“hdkf”的基于散列的消息认证代码(hmac)密钥推导函数(kdf))来生成确认密钥。可以从数字令牌和在两个实体之间共享的共享秘密的组合中推导出确认密钥。在示例性实施例中,可以使用提交实体(例如,“发送”事件中的发送者)的私钥和所涉及实体(例如,“发送”事件中的接收者)的公钥,使用合适的算法(例如elliptic

curve diffie

hellman(ecdh)密钥协商协议)来生成共享秘密。然后可以使用所得确认值代替为其生成数字签名的数据包中的数字令牌,并且代替被包括在区块链数据值中的条目值中的数字令牌。
32.使用确认值代替数字令牌的区块链数据值中的数字签名仍可由任何感兴趣的实
体使用提交事件条目的实体的公钥进行验证。然而,由于共享秘密的使用,条目中使用的确认值只能由所涉及的实体或由此明确授权的任何一方进行验证。例如,在上述示例中,作为发送者的经销商108可以使用他们的私钥和作为接收者的商家110的公钥来生成用于生成作为确认值的一部分的确认密钥的共享秘密。只有经销商108、商家110或授权的第三方(诸如审计师),才能够生成与数字令牌组合的共享秘密,以能够在区块链数据值中生成其自己版本的条目值用于其验证。
33.产品的聚合事件可能涉及将多个产品一起聚合到在分发中使用的单个单元中(诸如以简化转移产品占有的物流过程)。例如,经销商108手动扫描数以千计的产品可能是耗时且困难的(例如,由于包装和体积)。相反,产品可以聚合到单个托盘中,该托盘被固定并被赋予单个值,以产品标识符的方式用于发送和接收。然而,可能需要跟踪将产品聚合在包中,诸如以确保每个产品的来源的完整捕获,以及在包中的产品在过程中丢失时的可审计性。对于聚合,实体可以为包中的所有产品生成每个数字令牌的列表,其中从列表生成的单个值可以用作包的产品标识符。例如,在示例性实施例中,可以使用数字令牌生成默克尔树,其中默克尔树的根可以用作聚合包的产品标识符。对于“聚合”事件,可以将区块链数据值添加到区块链中,其中条目值和数据包利用默克尔根作为其产品标识符。对于分解,相同的产品标识符可以与“分解”事件一起使用,每个产品的任何后续转移使用其单独的数字令牌来识别。
34.对于聚合或分解事件,实体可能能够通过使用默克尔根进行审计以确保所有产品的转移。例如,制造商106可以在区块链上发布十几种产品并将这十几种产品聚合成单个包。包可以被给予经销商108,其中制造商106提交具有包的令牌的“发送”事件并且经销商108可以提交具有包的相同令牌的“接收”事件。经销商108然后可以将包运送到商家110以进行交付。经销商108可以向商家110提交其自己的“发送”事件。商家110可以扫描接收到的包中的每一个产品以生成其默克尔根,用于其自己的包的“接收”事件的提交。商家110可能会发现它生成的默克尔根与经销商108提交的“发送”事件中使用的标识符不同。商家110由此可以意识到包中的产品之一丢失了。由于在物流过程中提交的事件,实体可能能够识别包在交付过程中的某个时刻丢失,这是由于在发布、聚合和先前的发送和接收事件期间正确的默克尔根的使用。因此,由于每个产品和包的来源被捕获的结果,实体可能能够准确地识别出哪个产品丢失以及何时丢失。
35.在一些实施例中,可以利用关于产品制造的附加事件来提供关于产品的创建和制造的附加信息。例如,对于鞋子,鞋子中利用的每种成分的来源也可以在区块链中进行跟踪,诸如使用户114能够确保为鞋子采购的皮革是由合乎道德的皮革生产商提供的,其中能够使用本文讨论的方法对皮革从供应商到制造商106的转移及其使用在区块链中进行核实。类似地,也可跟踪可消费食品的生命周期(诸如在食品可能被污染或发现其他问题的情况下提供帮助)。例如,如果发现牛肉被污染,可以通过区块链追溯到原始农场,在原始农场可以发现其他被污染的牛肉,并且可以快速且容易地识别收到被污染牛肉的商家110,以确保被污染的产品被下架并且购买受污染牛肉的用户114更快速、更容易地被通知。结果是所有类型的产品来源更快、更准确、更有效的跟踪。
36.因此,本文讨论的方法和系统使系统100中涉及的每个实体以及任何其他相关方能够查看和验证产品的来源。由于数字令牌、数字签名和散列的使用,不会使关于产品本身
或所涉及实体的信息公开可用,该信息包括任何产品的令牌,更不用说产品标识符了。因此,每个实体的匿名性得到保护,并最小化了不法行为者提交虚假信息的能力。结果是这样的系统,在该系统中,关于供应链中产品来源的信息是加密准确且公开可用的,而不会影响所涉及产品和实体的匿名性。
37.计算系统
38.图2说明了计算系统200的实施例。对于相关领域的技术人员来说,显而易见的是图2中说明的计算系统200的实施例仅作为说明提供,并且可能对适用于执行如本文所讨论的功能的计算系统200的所有可能配置不是详尽的。例如,图5所说明的并且在下面更详细讨论的计算机系统500可以是计算系统200的合适配置。在一些情况下,系统100中的每个区块链节点104、制造商106、经销商108、商家110或用户设备112可以被配置成类似于图2中的计算系统200或图5中的计算机系统500(诸如包括其中所说明的组件)。
39.计算系统200可以包括接收设备202。接收设备202可以被配置成经由一个或多个网络协议在一个或多个网络上接收数据。在一些情况下,接收设备202可以被配置成经由一种或多种通信方法(诸如射频、局域网、广域网、蜂窝通信网络、蓝牙、因特网等)接收来自区块链节点104、制造商106、经销商108、商家110、用户设备112和其他系统和实体的数据。在一些实施例中,接收设备202可以包括多个设备(诸如用于通过不同网络接收数据的不同接收设备(诸如用于通过局域网接收数据的第一接收设备和用于经由因特网接收数据的第二接收设备))。接收设备202可以接收电子传输的数据信号,其中可以叠加或以其他方式将数据编码在数据信号上,并经由接收设备202对数据信号的接收进行解码、解析、读取或以其他方式获得。在一些实例中,接收设备202可以包括用于解析接收到的数据信号以获取叠加在其上的数据的解析模块。例如,接收设备202可以包括解析器程序,该解析器程序被配置成接收接收到的数据信号并将其转换成用于处理设备执行的功能的可用输入,以执行这里描述的方法和系统。
40.接收设备202可以被配置成接收由制造商106、经销商108、商家110、用户设备112和其他计算系统以电子方式传输的数据信号,可以将这些数据信号与被包括在区块链数据值中的数据(诸如地址、条目值和数字签名)叠加或以其他方式编码。在一些情况下,可以将从这样的计算系统接收的数据信号与对区块链数据值的请求(诸如通常可以包括对区块链数据的请求或对区块链数据值被请求的特定条目值的请求)叠加或以其他方式编码。接收设备202也可以被配置成接收由区块链节点104以电子方式传输的数据信号,诸如可以将这些数据信号与区块链数据值、用于确认的新区块、对区块的确认、已确认的区块和如本文所讨论的其他数据叠加或以其他方式编码。
41.计算系统200还可以包括通信模块204。通信模块204可以被配置成在计算系统200的模块、引擎、数据库、存储器和其他组件之间传输数据,用于执行这里讨论的功能。通信模块204可以包括一种或多种通信类型并且利用各种通信方法用于在计算设备内的通信。例如,通信模块204可以包括总线、触针连接器、电线等。在一些实施例中,通信模块204也可以被配置成在计算系统200的内部组件和计算系统200的外部组件(诸如外部连接的数据库、显示设备、输入设备206等)之间进行通信。计算系统200也可以包括处理设备。处理设备可以被专门配置为执行这里讨论的计算系统200的功能,基于本说明书,这对于相关领域的技术人员是显而易见的。在一些实施例中,处理设备可以包括和/或由多个引擎和/或模块组
成,这些引擎和/或模块被专门配置为执行处理设备的一个或多个功能(诸如查询模块214、生成模块216、验证模块218等)。如这里所使用的,术语“模块”可以是编译在硬件上的软件,或者以其他方式特别被编程的硬件,以接收输入、使用输入执行一个或多个过程以及提供输出。基于本公开,由各种模块执行的输入、输出和处理对于本领域技术人员将是显而易见的。
42.计算系统200也可以包括或以其他方式与一个或多个输入设备206接口。输入设备206可以在计算系统200内部或在计算系统200外部并且经由一个或多个连接(例如,有线或无线)与之连接,用于向和/或从其传输数据。输入设备206可以被配置成从计算系统200的用户接收输入,该输入可以被提供给计算系统200的另一模块或引擎(例如,经由通信模块204),以相应地用于处理。输入设备206可以包括适合于接收输入以执行这里讨论的功能的任何类型的输入设备(诸如键盘、鼠标、点击轮、滚轮、麦克风、触摸屏、轨迹板、相机、光学成像器等)。输入设备206可以被配置成例如接收与产品相关联的产品标识符(诸如可以由光学成像器读取、由用户手动输入、通过近场通信接收等)。
43.计算系统200也可以包括存储器208。存储器208可以被配置成存储计算系统200在执行这里讨论的功能时使用的数据(诸如公钥和私钥、对称密钥等)。存储器208可以被配置成使用合适的数据格式化方法和模式存储数据并且可以是任何合适类型的存储器(诸如只读存储器、随机存取存储器等)。存储器208可以包括例如加密密钥和算法、通信协议和标准、数据格式化标准和协议、处理设备的模块和应用程序的程序代码,以及可能适合计算系统200在执行本文公开的功能时使用的其他数据。在一些实施例中,存储器208可以包括或者可以以其他方式包括关系数据库,该关系数据库利用结构化查询语言用于其中存储的结构化数据集的存储、识别、修改、更新、访问等。存储器208可以被配置成存储例如用于后端系统的加密密钥、盐(salt)、随机数、通信信息等。
44.存储器208可以被配置成存储用于生成推导密钥、共享秘密、数字签名、散列值、区块和这些数据的验证的算法。如果适用,存储器208也可被配置成存储包括私钥和公钥的加密密钥对的密钥。存储器208也可以被配置成存储区块链或与其相关联的数据。
45.计算系统200可以包括查询模块214。查询模块214可以被配置成对数据库执行查询以识别信息。查询模块214可以接收一个或多个数据值或查询串并且可以基于此在指示的数据库(诸如计算系统200的存储器208)上执行查询串,以识别存储在其中的信息。查询模块214然后可以根据需要将所识别的信息输出到计算系统200的适当引擎或模块。查询模块214可以例如对存储器208执行查询以识别用于生成数字令牌的散列算法、识别用于对数据包进行数字签名的私钥、识别用于验证数字签名的公钥,等等。
46.计算系统200也可以包括生成模块216。生成模块216可以被配置成生成计算系统200在执行这里讨论的功能时使用的数据。生成模块216可以接收指令作为输入,可以基于指令生成数据,并且可以将生成的数据输出到计算系统200的一个或多个模块。例如,如本文所讨论的,生成模块216可以被配置成通过使用数据、适当的密钥、算法等,生成数字令牌,数据包、确认值、派生密钥、共享秘密、数字签名、区块链数据值、区块头、区块、默克尔树、区块引用值、数据引用值或也如本问所讨论的任何其他数据。
47.计算系统200还可以包括验证模块218。验证模块218可以被配置成执行计算系统200的验证,以验证本文讨论的数据。验证模块218可以接收指令作为输入,该指令也可以伴
随着要在验证中使用的数据或用于验证的数据,可以按照指令执行验证,并且可以将验证的结果输出到计算系统200的另一模块或引擎。验证模块218可以被配置成例如验证数字签名、验证条目值、验证数字令牌或确认值、验证默克尔根、或执行如本文所讨论的其他检查或验证。
48.计算系统200也可以包括传输设备224。传输设备224可以被配置成经由一个或多个网络协议在一个或多个网络上传输数据。在一些情况下,传输设备224可以被配置成经由一种或多种通信方法、局域网、无线局域网、蜂窝通信、蓝牙、射频、因特网等向区块链节点104、制造商106、经销商108、商家100、用户设备112和其他实体传输数据。在一些实施例中,传输设备224可以包括多个设备,诸如用于在不同网络上传输数据的不同传输设备(诸如用于在局域网上传输数据的第一传输设备和用于经由因特网传输数据的第二传输设备)。传输设备224可以电子地传输具有可以由接收计算设备解析的数据叠加的数据信号。在一些情况下,传输设备224可以包括一个或多个模块,用于叠加、编码或以其他方式将数据格式化为适合传输的数据信号。
49.传输设备224可以被配置成将数据信号电子地传输到区块链节点104,可以将该数据信号与要被包括在区块链数据值中的数据(例如地址、条目值和数字签名)叠加或以其他方式编码。在一些情况下,可以将电子地传输到区块链节点104的数据信号与对区块链数据值的请求(诸如通常可以包括对区块链数据的请求或对区块链数据值被请求的特定条目值的请求)叠加或以其他方式编码。传输设备224也可以被配置成将数据信号电子地传输到制造商106、经销商108、商家100、用户设备112等,诸如可以将数据信号与区块链数据值、用于确认的新区块、用于区块的确认、已确认区块和本文讨论的其他数据叠加或以其他方式编码。
50.经由区块链捕获产品来源的过程
51.图3说明了在系统100中执行的示例过程300,用于通过区块链使用上面讨论的数字令牌和事件捕获用于销售的制造和分发的产品的来源。
52.在步骤302中,制造商106可以制造将可用于销售的产品,并且作为制造的一部分,可以向产品分配产品标识符并提交产品的“发布”事件。“发布”事件的提交可以包括数字令牌、新地址、数据包、数字签名、条目值的生成以及将区块链数据值的数据向区块链网络102中的区块链节点104的提交。制造商106为“发布”事件利用的代码可以包括如下:
53.create(value);
54.token=hash(value);
55.event=“issue”;
56.address==new address();
57.signature=sign({“issue” address token},issuer_private);
58.chain_entry={address,hash(“issue token),signature};
59.其中“issue”事件和数字令牌的散列可以是条目值,而issuer_private可以指示用于数字签名的制造商的私钥的使用。制造商106可以针对多个产品的制造和发布重复步骤302,每个产品具有其自己的唯一产品标识符以及随后的数字令牌。在步骤304中,制造商106(或取决于产品类型的经销商108)可以将制造的产品聚合成单个包(诸如通过将产品一起包装成单个的用于运输的包装托盘)。作为聚合的一部分,制造商106可以向区块链网络
1024中的区块链节点104提交“聚合”事件,其中使用被包括在包中的产品的所有产品标识符的默克尔树的根。制造商106为“聚合”事件利用的代码可以包括如下:
60.package_token=merkle_root(list(token));
61.signature=sign({“aggregate” address package_token},aggregator_private);
62.chain_entry={address,hash(“aggregate” package_token),signature};
63.其中aggregator_private可以指示用于生成数字签名的制造商的私钥的使用。一旦执行了聚合,在步骤306中,商家1104可以提交包的“发送”条目,以指示将包发送给经销商108,用于运输和分发给商家110。在一些实施例中,可以为包提交单个“发送”条目。在其他实施例中,制造商106可以为每个产品提交单独的“发送”条目,其中包可以仅在“聚合”和“分解”事件中被提及。制造商106为“发送”事件利用的代码可以包括如下:
64.sender_confirmation={token receiver_public hkdf(token ecdh(receiver_public,sender_private))};
65.signature=sign({“send” address sender_confirmation},sender_private);
66.chain_entry={address,hash(“send” sender_confirmation),signature};
67.其中receiver_public可以是经销商108的公钥,sender_private可以是制造商106的私钥,如果正在发送产品,则token可以是数字令牌,或者如果“发送”事件是用于整个包的,则token可以是包令牌,hkdf可以指示确认密钥的推导,而ecdh可以用于共享秘密的生成。在步骤308中,经销商108可以从制造商106取得产品包,用于运输到商家110以供最终销售。
68.一旦经销商108接收到包,他们就可以在步骤310提交他们自己的关于从制造商106接收到产品包的“接收”步骤。如对于“发送”事件那样,“接收”事件可以是对多个产品的包的单个接收,或包的接收可能需要针对其中包括的每个产品的“接收”事件的提交。经销商108为“接收”事件利用的代码可以包括如下:
69.receiver_confirmation={token sender_public hkdf(token ecdh(sender_public,receiver_private))};
70.signature=sign({“receive” address receiver_confirmation},receiver_private);
71.chain_entry={address,hash(“receive” reciver_confirmation),signature};
72.其中sender_public可以是制造商106的公钥,receiver_private可以是经销商108的私钥,token可以是产品的数字令牌或包的包令牌,hkdf可用于确认密钥的推导,并且echd可以指示共享秘密的生成。经销商108然后可以使用其物流系统将产品包运输到商家110。在一些情况下,经销商108可以在其物流系统的每个步骤(例如,从一名员工、车辆等移交给另一员工、车辆)中添加新的“发送”和“接收”事件(诸如为了关于产品和/或包位于哪里的更全面的信息,诸如如果产品丢失,为了更强的可审计性和检测)。一旦经销商108完成其运输过程并准备好将包交付给商家110,经销商108可以在步骤312中提交用于将包发送到商家110的最后“发送”事件。经销商108可以使用与上面针对步骤306指示的“发送”事件相同的代码,其中经销商108可以是发送者,而商家110可以是接收者。
73.在步骤314中,商家110可以占有包。为了指示包的接收,商家110可以在步骤316中将其自己的“接收”事件提交给区块链网络1024中的区块链节点104。商家110可以对步骤310中的“接收”事件利用上面指示的代码,其中经销商108可以是发送者,商家110可以是接收者。一旦接收到包并将其指示记录在区块链中,商家110(或经销商108,取决于产品类型)可以在步骤318中将包分解成其组成产品。作为分解的一部分,商家110可以向区块链提交“分解”事件,其中商家110利用的代码可以包括如下:
74.package_token=merkle_root(list(token));
75.signature=sign({“disaggregate address package_token},vendor_private);
76.chain_entry={address,hash(“disaggregate” package_token),signature};
77.其中vendor_private可以指示商家的私钥的使用。商家110然后可以将每个单独的产品分解并且可用于销售给消费者。在步骤320中,用户114可以接近商家110并购买其中一种产品。在一些实施例中,向用户114的转移可以经由商家110“发送”事件的提交来表示,其中用户的用户设备112作为该事件的接收者。在一些这样的实施例中,用户设备112可以提交其自己的“接收”事件。在其他实施例中,“消费”事件可由商家110提交到区块链,以指示产品已被“消费”或被最终用户购买用于其使用,其中跟踪可能不再可用。在这种情况下,商家110为“消费”事件利用的代码可以包括如下:
78.signature=sign({“consume” address token),vendor_private};
79.chain_entry={address,hash(“consume” token),signature};
80.其中vendor_private可能是指在对数据包进行数字签名时商家的私钥的使用。过程300的结果是产品从制造到用户114最终购买的完整来源,其中每个涉及的实体可能能够在过程的每个步骤期间检查该来源。例如,审计员可能能够确保该产品从未在未经授权方手中,因此在其可在商家110处购买时是正品。同样,用户114可能能够检查他们购买的产品是来自制造商106的正品。
81.用于传达可审计来源信息的示例性方法
82.图4说明了在某些实施例中用于传达关于产品来源的可审计信息的方法400,该信息是加密准确的,同时在区块链上保持产品和参与者的完整匿名性。
83.在步骤402中,产品标识符可由与计算设备(例如,计算系统200)接口的输入设备(例如,输入设备206)接收。在步骤404中,计算设备的处理器(例如,生成模块216)可以通过将散列算法应用于产品标识符来生成数字令牌。在步骤406中,计算设备的处理器可以通过将散列算法应用于事件标识符和数字令牌的组合来生成条目值。
84.在步骤408中,计算设备的处理器可以通过使用加密密钥对的私钥对数据包进行数字签名来生成数字签名,其中数据包包括至少区块链地址、事件标识符和数字令牌。在步骤410中,区块链地址、数字签名和条目值可以由计算设备的发送器(例如,传输设备224)发送到区块链网络(例如,区块链网络102)。
85.在一些实施例中,方法400还可以包括由计算设备的处理器通过将密钥推导算法应用于数字令牌和共享秘密值的组合来生成确认密钥,其中确认包包括数字令牌、二级公钥和确认密钥,确认包被包括在条目值和数据包中,而不是数字令牌中。在进一步的实施例中,事件标识符可以指示与产品标识符相关联的产品的发送并且二级公钥可以与产品的接
收者实体相关联。
86.在一个实施例中,方法400也可以包括:由区块链网络中的节点从计算设备接收区块链地址、数字签名和条目值;由区块链网络中的节点生成包括区块头和一个或多个区块链数据值的新区块,该一个或多个区块链数据值包括新的区块链数据值,该区块链数据值包括区块链地址、数字签名和条目值;由区块链网络中的节点将生成的新区块传输给区块链网络中的多个附加节点。在一些实施例中,方法400还可以包括由区块链网络中的节点使用加密密钥对的公钥来验证数字签名。
87.在一个实施例中,方法400也可以包括:由第二计算系统接收数字签名;以及由第二计算系统使用加密密钥对的公钥来验证数字签名。在一些实施例中,方法400还可以包括:由第二计算系统接收条目值;由第二计算系统接收产品标识符;由第二计算系统通过将散列算法应用于接收到的产品标识符来生成比较散列值;以及由第二计算系统通过将接收到的条目值与生成的比较散列值进行比较来验证接收到的条目值。
88.在一个实施例中,方法400也可以包括:由与计算设备接口的输入设备接收多个附加标识符;由计算设备的处理器通过将散列算法应用于相应的附加标识符,为多个附加标识符中的每一个生成附加令牌;由计算设备的处理器通过使用产品标识符和多个附加标识符生成默克尔树来识别包令牌,其中包令牌是默克尔树的根值,包令牌被包括在数据包中并用于条目值而不是数字令牌。
89.计算机系统架构
90.图5说明了计算机系统500,其中本公开的实施例或其部分可以被实现为计算机可读代码。例如,图1的区块链节点104、制造商106、经销商108、商家110和用户设备112以及图2的计算系统200可以使用硬件、编译在硬件上的软件、固件、其上存储有指令的非暂时性计算机可读介质或其组合在计算机系统500中实现,并且可以在一个或多个计算机系统或其他处理系统中实现。专门配置的硬件、软件、固件、存储器或其任何合适的组合可以体现用于实现图3和图4的方法的模块和组件。
91.如果使用可编程逻辑,则这种逻辑可以在由可执行软件代码配置的商用处理平台上执行以成为专用计算机或专用设备(例如,可编程逻辑阵列、专用集成电路等)。本领域普通技术人员可以理解,所公开主题的实施例可以用来实践各种计算机系统配置,包括多核多处理器系统、小型计算机、大型计算机、具有分布式功能的链接或集群的计算机,以及普适的或可以嵌入到几乎任何设备中的微型计算机。例如,可以使用至少一个处理器设备和存储器来实现上述实施例。
92.如本文所讨论的处理器单元或设备可以是单个处理器、多个处理器或其组合。处理器设备可以具有一个或多个处理器“内核”。如本文所讨论的术语“计算机程序介质”、“非暂时性计算机可读介质”和“计算机可用介质”通常用于指有形介质(诸如可移动存储单元518、可移动存储单元522和安装在硬盘驱动器512中的硬盘)。
93.根据该示例计算机系统500描述了本公开的各种实施例。在阅读了该说明书之后,相关领域的技术人员将清楚如何使用其他计算机系统和/或计算机架构来实现本公开。尽管操作可以被描述为顺序过程,但是一些操作实际上可以并行、并发和/或在分布式环境中执行,并且具有本地或远程存储的程序代码用于单处理器或多处理器机器的访问。此外,在一些实施例中,可以在不脱离所公开主题的精神的情况下重新排列操作的顺序。
94.处理器设备504可以是专门配置为执行本文讨论的功能的专用或通用处理器设备。处理器设备504可以连接到通信基础设施506(诸如总线、消息队列、网络、多核消息传递方案等)。网络可以是适合于执行如本文公开的功能的任何网络并且可以包括局域网(lan)、广域网(wan)、无线网络(例如wifi)、移动通信网络、卫星网络、因特网、光纤、同轴电缆、红外线、射频(rf),或其任何组合。其他合适的网络类型和配置对于相关领域的技术人员来说将是显而易见的。计算机系统500还可以包括主存储器508(例如,随机存取存储器、只读存储器等),并且还可以包括辅助存储器510。辅助存储器510可以包括硬盘驱动器512和可移动存储驱动器514(诸如软盘驱动器、磁带驱动器、光盘驱动器、闪存等)。
95.可移动存储驱动器514可以以众所周知的方式从可移动存储单元518读取和/或写入。可移动存储单元518可以包括可由可移动存储驱动器514读取和写入的可移动存储介质。例如,如果可移动存储驱动器514是软盘驱动器或通用串行总线端口,则可移动存储单元518可以分别是软盘或便携式闪存驱动器。在一实施例中,可移除存储单元518可以是非暂时性计算机可读记录介质。
96.在一些实施例中,辅助存储器510可以包括用于允许将计算机程序或其他指令加载到计算机系统500中的替代装置(诸如,可移动存储单元522和接口520)。这种装置的示例可以包括程序盒和盒式接口(例如,如在视频游戏系统中发现的)、可移动存储芯片(例如,eeprom、prom等)和相关联的插槽,以及其他可移动存储单元522和接口520,这对于相关领域的技术人员来说将是显而易见的。
97.存储在计算机系统500中(例如,在主存储器508和/或辅助存储器510中)的数据可以存储在任何类型的合适的计算机可读介质上,诸如光存储(例如,压缩盘、数字多功能盘、蓝光光盘等)或磁带存储(例如硬盘驱动器)。数据可以在任何类型的合适的数据库配置(诸如关系数据库、结构化查询语言(sql)数据库、分布式数据库、对象数据库等)中被配置。合适的配置和存储类型对于相关领域的技术人员来说将是显而易见的。
98.计算机系统500也可以包括通信接口524。通信接口524可以被配置成允许软件和数据在计算机系统500和外部设备之间传送。示例性通信接口524可以包括调制解调器、网络接口(例如,以太网卡)、通信端口、pcmcia插槽和卡等。经由通信接口524传送的软件和数据可以是信号的形式,其可以是电子、电磁、光学或其他相关领域技术人员显而易见的信号。信号可以经由通信路径526传播,通信路径526可以被配置成携带信号并且可以使用电线、电缆、光纤、电话线、蜂窝电话链路、射频链路等来实现。
99.计算机系统500还可以包括显示器接口502。显示器接口502可以被配置成允许在计算机系统500和外部显示器530之间传送数据。示例性显示器接口502可以包括高清晰度多媒体接口(hdmi)、数字视觉接口(dvi)、视频图形阵列(vga)等。显示器530可以是用于显示经由计算机系统500的显示器接口502传输的数据的任何合适类型的显示器,该显示器包括阴极射线管(crt)显示器、液晶显示器(lcd)、发光二极管(led)显示器、电容式触摸显示器、薄膜晶体管(tft)显示器等。
100.计算机程序介质和计算机可用介质可以指存储器(诸如主存储器508和辅助存储器510),其可以是存储器半导体(例如,dram等)。这些计算机程序产品可以是用于向计算机系统500提供软件的装置。计算机程序(例如,计算机控制逻辑)可以存储在主存储器508和/或辅助存储器510中。也可以经由通信接口524接收计算机程序。这样的计算机程序在被执
行时可以使计算机系统500能够实现如本文所讨论的本方法。特别地,计算机程序在被执行时,可以使处理器设备504能够实现由图3和图4和说明的方法,如这里所讨论的。因此,这样的计算机程序可以代表计算机系统500的控制器。在使用软件实现本公开的情况下,可以将软件存储在计算机程序产品中,并且使用可移动存储驱动器514、接口520、和硬盘驱动器512,或通信接口524将软件装载到计算机系统500。
101.处理器设备504可以包括被配置成执行计算机系统500的功能的一个或多个模块或引擎。每个模块或引擎可以使用硬件来实现,并且在一些情况下,也可以利用软件(诸如对应于存储在主存储器508或辅助存储器510中的程序代码和/或程序)。在这种情况下,程序代码可以在计算机系统500硬件执行之前由处理器设备504(例如,由编译模块或引擎)编译。在这种情况下,程序代码可以在由计算机系统500的硬件的执行之前,由处理器设备504(例如,由编译模块或引擎)编译。例如,程序代码可以是以编程语言编写的源代码,该源代码被翻译成较低级别的语言(诸如汇编语言或机器代码),用于由处理器设备504和/或计算机系统500的任何附加硬件组件的执行。编译过程可以包括使用词法分析、预处理、解析、语义分析、语法定向翻译、代码生成、代码优化、以及可能适合于将程序代码翻译成适合于控制计算机系统500以执行本文公开的功能的较低级语言的任何其他技术。对于相关领域的技术人员来说显而易见的是,这样的过程导致计算机系统500成为被唯一地编程以执行上述功能的专门配置的计算机系统500。
102.除了其他特征之外,与本公开一致的技术提供用于传达关于产品来源的可审计信息的系统和方法,该信息是加密准确的,同时在区块链上保持产品和参与者的完整匿名性。虽然上面已经描述了所公开的系统和方法的各种示例性实施例,但是应当理解,它们仅用于示例目的而不是限制来呈现。它不是详尽的,并且不将公开内容限制为所公开的精确形式。在不脱离广度或范围的情况下,根据上述教导修改和变化是可能的,或可以从本公开的实践中获得修改和变化。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献