CN112016118B - 用于匿名数据库评级更新的方法和系统 - Google Patents
用于匿名数据库评级更新的方法和系统 Download PDFInfo
- Publication number
- CN112016118B CN112016118B CN202010459403.8A CN202010459403A CN112016118B CN 112016118 B CN112016118 B CN 112016118B CN 202010459403 A CN202010459403 A CN 202010459403A CN 112016118 B CN112016118 B CN 112016118B
- Authority
- CN
- China
- Prior art keywords
- value
- root node
- smart contract
- client
- blockchain
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 67
- 230000004044 response Effects 0.000 claims description 39
- 238000013475 authorization Methods 0.000 claims description 20
- 238000012795 verification Methods 0.000 claims description 17
- 238000012545 processing Methods 0.000 description 26
- 230000006870 function Effects 0.000 description 22
- 230000008569 process Effects 0.000 description 20
- 238000010801 machine learning Methods 0.000 description 15
- 238000004422 calculation algorithm Methods 0.000 description 9
- 230000006854 communication Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 9
- 238000012986 modification Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 238000005065 mining Methods 0.000 description 6
- 238000012549 training Methods 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 230000001010 compromised effect Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 230000002452 interceptive effect Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000945 filler Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003137 locomotive effect Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3821—Electronic credentials
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Accounting & Taxation (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Economics (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Databases & Information Systems (AREA)
- Development Economics (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明公开涉及匿名数据库评级更新。示例操作可以包括以下中的一个或多个:由执行客户端生成包括匿名评级、证明、无效符和根节点值的区块链交易;由智能合约接收区块链交易、与授权客户端相关的匿名评级;利用根节点值和无效符核实证明;核实根节点值是当前或先前的merkle树根节点值;将匿名评级添加到共享分类账;将无效符标记为已使用;以及将标记的无效符存储到共享分类账。
Description
技术领域
本申请一般而言涉及匿名更新供应商评级,并且更具体而言,涉及匿名数据库评级更新。
背景技术
集中式数据库在一个位置的单个数据库(例如,数据库服务器)中存储和维护数据。该位置通常是中央计算机,例如,台式中央处理单元(CPU)、服务器CPU或大型计算机。通常可以从多个不同点访问存储在集中式数据库中的信息。例如,基于客户端/服务器配置,多个用户或客户端工作站可以在集中式数据库上同时工作。集中式数据库易于管理、维护和控制,特别是出于安全目的,因为它位于单个位置。在集中式数据库中,由于所有数据存储在单个地点,因此最大程度地减少了数据冗余,这也意味着给定的一组数据仅具有一个主记录。
但是,集中式数据库存在严重缺陷。例如,集中式数据库只有一个故障点。特别地,如果没有容错考虑并且发生硬件故障(例如,硬件、固件和/或软件故障),那么数据库中的所有数据都会丢失,并且所有用户的工作都会中断。此外,集中式数据库高度依赖于网络连接。因此,连接速度越慢,每次数据库访问所需的时间就会增加。另一个缺点是当集中式数据库遭遇高流量时,由于单个位置,因此会出现瓶颈。此外,由于数据库仅维护数据的一个副本,因此集中式数据库提供对数据的有限访问。因此,多个设备在同时访问同一条数据时会产生严重问题或存在覆盖已存储的数据的风险。此外,由于数据库存储系统的数据冗余很小甚至没有,因此,意外丢失的数据除非通过手动操作从备份存储中取回,否则很难取回。因此,需要一种克服这些缺点和局限性的解决方案。
发明内容
一个示例实施例提供了一种系统,该系统包括:执行客户端,该执行客户端被配置为执行以下中的一个或多个:生成包括与授权客户端相关的匿名评级和根节点值中的一个或多个的区块链交易;以及耦合到执行客户端的区块链网络,该区块链网络包括共享分类账和智能合约中的一个或多个,共享分类账包括与授权客户端对应的merkle树,该merkle树包括根节点值,并且智能合约被配置为执行以下中的一个或多个:接收区块链交易,并且作为响应,核实根节点值是当前或先前的merkle树根节点值之一,以及将匿名评级添加到共享分类账中。
另一个示例实施例提供了一种方法,该方法包括以下中的一个或多个:由执行客户端生成包括匿名评级、证明、无效符(nullifier)和根节点值的区块链交易;由智能合约接收区块链交易、与授权客户端相关的匿名评级;利用根节点值和无效符核实证明;核实根节点值是当前或先前的merkle树根节点值;将匿名评级添加到共享分类账中;将无效符标记为已使用;以及将标记的无效符存储到共享分类账。
再一个示例实施例提供了一种包括指令的非暂态计算机可读介质,所述指令在被处理器读取时,使处理器执行以下中的一个或多个:由执行客户端生成包括匿名评级、证明、无效符和根节点值的区块链交易;由智能合约接收区块链交易、与授权客户端相关的匿名评级;利用根节点值和无效符核实证明;核实根节点值是当前或先前的merkle树根节点值;将匿名评级添加到共享分类账中;将无效符标记为已使用;以及将标记的无效符存储到共享分类账。
附图说明
图1A图示了根据示例实施例的用于处理区块链中的匿名交易的系统。
图1B图示了根据示例实施例的区块链中的匿名交易请求内容。
图2A图示了根据示例实施例的示例区块链体系架构配置。
图2B图示了根据示例实施例的区块链交易流程。
图3A图示了根据示例实施例的许可网络(permissioned network)。
图3B图示了根据示例实施例的另一个许可网络。
图3C图示了根据示例实施例的非许可网络(permissionless network)。
图4图示了根据示例实施例的用于处理区块链中的匿名交易的系统消息传送图。
图5A图示了根据示例实施例的用于更新区块链中的匿名评级的流程图。
图5B图示了根据示例实施例的用于区块链中的回溯键(lookback key)核实的流程图。
图5C图示了根据示例实施例的基于用户评级来授予访问权的示例方法的流程图。
图6A图示了根据示例实施例的被配置为执行本文所述的一个或多个操作的示例系统。
图6B图示了根据示例实施例的被配置为执行本文所述的一个或多个操作的另一个示例系统。
图6C图示了根据示例实施例的被配置为利用智能合约的再一个示例系统。
图6D图示了根据示例实施例的被配置为利用区块链的又一个示例系统。
图7A图示了根据示例实施例的用于将新区块添加到分布式分类账的处理。
图7B图示了根据示例实施例的新数据区块的内容。
图7C图示了根据示例实施例的用于数字内容的区块链。
图7D图示了根据示例实施例的可以表示区块链中的区块的结构的区块。
图8A图示了根据示例实施例的存储机器学习(人工智能)数据的示例区块链。
图8B图示了根据示例实施例的示例量子安全区块链(quantum-secureblockchain)。
图9图示了支持示例实施例中的一个或多个示例实施例的示例系统。
具体实施方式
将容易理解的是,如本文各图中一般描述和图示的本部件可以以各种各样不同的配置来布置和设计。因此,如附图中所示的方法、装置、非暂态计算机可读介质和系统中的至少一个的实施例的以下详细描述并非旨在限制所要求保护的本申请的范围,而仅仅是代表所选择的实施例。
如贯穿本说明书描述的本特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合或移除。例如,贯穿本说明书使用短语“示例实施例”、“一些实施例”或其它类似语言是指结合该实施例描述的特定特征、结构或特性可以被包括在至少一个实施例中的事实。因此,贯穿本说明书出现的短语“示例实施例”、“在一些实施例中”、“在其它实施例中”或其它类似语言不一定都指代相同的一组实施例,并且所描述的特征、结构或特性可以以任何合适的方式在一个或多个实施例中组合或移除。此外,在各图中,即使所绘出的连接是单向或双向箭头,元件之间的任何连接也可以允许单向和/或双向通信。而且,附图中描绘的任何设备可以是不同的设备。例如,如果显示移动设备发送信息,那么有线设备也可以用于发送该信息。
此外,虽然在实施例的描述中可能已经使用了术语“消息”,但是本申请可以应用于许多类型的网络和数据。此外,虽然在示例性实施例中可能描绘了某些类型的连接、消息和信令,但是本申请不限于某种类型的连接、消息和信令。
示例实施例提供了用于提供匿名数据库评级更新的方法、系统、部件、非暂态计算机可读介质、设备和/或网络。
在一个实施例中,应用利用分散式数据库(诸如区块链),该数据库是分布式存储系统,其包括彼此通信的多个节点。分散式数据库包括类似于分布式分类账的仅附加(append-only)的不可变数据结构,该结构能够维护互不信任的各方之间的记录。不信任各方在本文中称为对等方或对等节点。每个对等方都维护数据库记录的副本,并且在分布式对等方之间未达成共识的情况下,没有任何一个对等方可以修改数据库记录。例如,对等方可以执行共识协议以验证区块链存储交易、将存储交易分组为区块,并在区块上构建散列链。为了一致性,该处理通过按需对存储交易进行排序来形成分类账。在各种实施例中,可以使用许可的和/或非许可的区块链。在公共或非许可的区块链中,任何一方都可以在没有特定身份的情况下参与。公共区块链可以涉及本机(native)加密货币,并基于诸如工作量证明(PoW)之类的各种协议使用共识。另一方面,许可的区块链数据库在一组拥有共同目标但彼此之间并不完全信任的实体(诸如交换资金、商品、信息等的企业)之间提供安全的交互。
该应用可以利用区块链,该区块链操作针对分散式存储方案进行定制并且被称为“智能合约”或“链码”的任意的可编程逻辑。在一些情况下,可能存在用于管理功能和参数的被称为系统链码的专用链码。应用还可以利用智能合约,这些智能合约是受信任的分布式应用,它们利用了区块链数据库的防篡改属性和节点之间的基础协议,该基础协议被称为背书(endorsement)或背书策略。与该应用相关联的区块链交易可以在提交给区块链之前被“背书”,而未被背书的交易则被忽略。背书策略允许链码以背书所必需的一组对等节点的形式指定交易的背书者(endorser)。当客户端将交易发送给背书策略中指定的对等方时,将执行交易以验证交易。在验证之后,交易进入排序阶段,在该阶段中,使用共识协议来产生分组为区块的背书交易的排序序列。
该应用可以利用作为区块链系统的通信实体的节点。在不同类型的多个节点可以在同一物理服务器上运行的意义上,“节点”可以执行逻辑功能。节点在信任域中被分组并与以各种方式控制它们的逻辑实体相关联。节点可以包括不同类型,诸如客户端或向背书者(例如,对等方)提交交易调用的提交客户端节点,并且将交易提案广播到排序服务(例如,排序节点)。另一种类型的节点是对等节点,其可以接收客户端提交的交易、提交交易并维护区块链交易的分类账的状态和副本。对等方也可以具有背书者的角色,但是这不是必需的。排序服务节点或排序者是为所有节点运行通信服务的节点,并且其实现递送保证,诸如在提交交易和修改区块链的世界状态(它是初始区块链交易的另一个名称,通常包含控制和设置信息)时向系统中的每个对等节点进行广播。
该应用可以利用分类账,该分类账是区块链的所有状态转换的有序、防篡改记录。状态转换可以由参与方(例如,客户端节点、排序节点、背书者节点、对等节点等)提交的链码调用(即,交易)导致。每个参与方(诸如对等节点)可以维护分类账的副本。交易可能导致一组资产键-值对作为一个或多个操作数(诸如创建、更新、删除等)被提交给分类账。分类账包括用于将不可变的有序记录存储在区块中的区块链(也被称为链)。分类账还包括维护区块链的当前状态的状态数据库。
该应用可以利用作为交易日志的链,该链被结构化为散列链接的区块,并且每个区块包含N个交易的序列,其中N等于或大于1。区块首部包括区块的交易的散列,以及前一区块的首部的散列。以这种方式,分类账上的所有交易可以被排序并以密码的方式链接在一起。因此,不可能在不破坏散列链接的情况下篡改分类账数据。最近添加的区块链区块的散列表示链上在它之前已到来的每个交易,从而可以确保所有对等节点处于一致且可信的状态。链可以被存储在对等节点文件系统(即,本地、附加的存储装置、云等)上,从而高效地支持区块链工作负载的仅附加性质。
不可变分类账的当前状态表示链交易日志中包含的所有键的最新值。由于当前状态表示通道已知的最新键-值,因此它有时被称为世界状态。链码调用针对分类账的当前状态数据执行交易。为了使这些链码高效交互,可以将键的最新值存储在状态数据库中。状态数据库可以只是对链的交易日志的索引视图,因此它可以在任何时间从链中重新生成。可以在对等节点启动时以及在交易被接受之前自动恢复(或根据需要生成)状态数据库。
本申请为区块链上的匿名交易提供了基于零知识证明的方法,该方法使用特定回溯键上的有效历史值(VHV)声明(assert ion)来进行证明核实。它还提供了用于通过使用指定长度的回溯键的前缀搜索树在区块链节点或对等节点上高效实现的有效历史值(VHV)声明的系统。
所公开的系统需要提供授权的评级、维持买方的匿名性并且是可核实的。买方应能够提交他与供应商进行的每项业务交易(不要与智能合约区块链交易混淆)的仅一个评级。供应商通过为每次业务交易(例如,成功的货物交付)提供一次性使用令牌(token)来保证这一点。买方应能够以匿名方式给出评级(即,当买方将评级作为智能合约交易的一部分提交时,使得评级被添加到共享分类账中)。智能合约交易中的信息不允许任何人推断买家的身份。区块链网络应该能够核实当前给出的评级是针对到目前为止尚未给出评级的有效业务交易,但是它不应该知道哪个买方正在提供当前评级。
在一个实施例中,本文描述和描绘的本解决方案的益处包括:对于与商品和服务的购买相关联的任何评级保持买方的匿名性以及经核实的评级在区块链网络的共享分类账内的不变性。在其它实施例中,可以为其它类型的交易保持匿名性和可核实性。
本申请提供了用于向区块链提供匿名交易的系统和方法,以及高效地实现匿名交易的系统增强。该方法涉及可以使其在区块链网络上可用而不是使用传统的集中式数据库的智能合约和受信任的对等方。该系统增强也特定于智能合约应用编程接口(API),并且可以与集中式数据库应用无关。
本申请的系统增强使得能够进行高效有效的历史值检查而无需迭代通过交易区块链。它提出了其可以在共享分类账中接受的具有固定长度值的回溯键的规范,并且智能合约API本机在共享分类账中为每个回溯键维护逐字节(byte-wi se)的前缀搜索树,从而存储所有其当前/先前值。这将启用带有回溯键和值作为自变量的有效历史值(VHV)调用,这些自变量利用前缀搜索树来检查该值是否为回溯键的当前/先前值。这可以在固定数量的操作中完成,因为前缀搜索树深度最多是回溯键值的指定固定长度,而不是遍历交易区块。通过允许回溯键不包含在该操作的读取集中,VHV-调用被实现为声明语句,如果该值存在于前缀搜索树中,那么该声明语句将通过,如果该值不存在于前缀搜索树中,那么该声明语句失败并退出智能合约。因此,该增强在所需的操作方面提供了VHV-调用的高效实现,并且避免了将其包含在交易的读取集中。
本申请为提供给区块链网络的匿名评级提供了基于区块链的解决方案。例如,供应商可能与一个或多个向其供应商品或服务的买方存在业务交易。对于供应给买方的商品或服务的每笔订单,供应商都会从买方收到评级(例如,预定范围内的数值)。期望由买方给与供应商的特定评级值是未知的。换句话说,合法买家应匿名提供其评级。由供应商接收到的评级可以公开供业务网络访问以用于分析目的。通常,取决于merkle树的深度,证明生成大约需要10-100秒(参考LibSnarks库)。可能会出现一个问题,其中根值可能会由于在对证明生成的查询和证明核实之间由其它评级者(买方客户)添加新的叶节点而发生更改。这自然地在当使用共享数据进行证明生成和核实时的非交互式零知识证明(NIZKP)情况下发生。
对于供应商而言,智能合约可以维护merkle树,其叶节点表示用于添加供应商评级的一次性可花费的硬币或令牌。假设NIZKP设置已生成证明和核实键。NIZKP是非交互式零知识证明的首字母缩写。这是用于创建和核实数学陈述的正确性的证明而不泄露任何其它信息的协议。例如,这可以用于证明某个方程式存在解而不泄露该解本身。该协议是非交互式的,因为证明者创建了证明并将其传送给核实者,核实者然后可以核实它,而无需与证明者的任何进一步的通信。NIZKP设置是初始化(一次性)过程,用于创建证明和核实分别由协议中的证明者和核实者使用的键。在第一种简单的方法中,可以使用根节点键的历史记录。买方客户端查询用于证明生成的根节点版本,并将该版本提交给智能合约以用于证明核实。该方法具有固有的效率低下的缺点,因为版本查询必须遍历版本以到达期望的版本号。
在第二种简单的方法中,在智能合约级别,可以将根节点的每个新值本身存储为新键。这种方法的缺点是大大增加了智能合约中使用的键数量,从而增加了智能合约的尺寸。用于更改键的数据库查找可能效率低下,并且高速缓存也将无济于事。
图1A图示了根据示例实施例的用于处理区块链中的匿名交易的系统的框图。参考图1A,系统100包括授权客户端104、执行客户端108、受信任的区块链节点或对等方112、共享分类账116以及智能合约或链码132。共享合约116包括与授权客户端120对应的merkle树、回溯键和值124,以及逐字节前缀搜索树128。智能合约或链码132包括有效历史值(VHV)声明调用136。Merkle树120是完整的二叉树,其中每个内部节点恰好具有两个子节点。每个内部节点上的值是其左子节点的值和右子节点的值按该顺序级联的SHA256散列值。兄弟节点是共享父节点的那些节点(即,它们是同一父节点的子节点)。作为从叶节点到根节点的路径上的节点的兄弟的节点构成认证路径。Merkle树用叶子上的默认值(例如,全零的256位串)进行初始化。可以按从左到右的顺序添加新的叶子值来代替下一个可用叶子,并且更新从相应叶节点直到根节点的路径上的节点的值。
授权客户端104向执行客户端108提供一次性令牌或证书140。一次性令牌或证书140允许执行客户端108匿名提供与授权客户端104相关的评级或数字分数。在一个实施例中,执行客户端108是供应商(授权客户端104)的商品或服务144的买方,并且评级或数字分数与所提供的商品或服务144的买方满意度相关。在其它实施例中,不提供商品和服务144,并且评级或数字分数适用于期望保持匿名但仍可核实的交互的不同方面。
系统100可以具有一个或多个授权客户端104和执行客户端108。因此,在供应商和买方的实施例中,可以可视化多个供应商,并且可能可视化每个供应商的多个买方。每个供应商(授权客户端104)具有存储在共享分类账116中的对应的merkle树120。
在所示的实施例中,执行客户端108不是区块链网络上的节点或对等方,因此不能直接向区块链网络生成交易。执行客户端108将请求提交给受信任的区块链节点或对等方112,该区块链节点或对等方112接收请求并响应性地向区块链网络生成区块链交易156以进行处理、执行和存储。实施例使用非交互式零知识证明,其中(i)执行客户端108生成证明,以及(ii)智能合约(链码)132针对共享分类账的数据116核实证明。这提供了匿名执行客户端108身份的语义(智能合约逻辑)级别的维护。在本文中,假设交易和网络级别的匿名分别由区块链(例如,使用身份混合器)和执行客户端108的受信任对等方/订购者112提供。身份混合器是提出的使得在超级分类账架构(Hyperledger Fabric)上可用的机制,该机制允许客户端108匿名提交智能合约交易(即,使用某个有效负载执行对智能合约116的调用)。例如,执行客户端108可以向超级分类账架构区块链上的(一个或多个)对等方提交签名的交易,并且签名可以被核实为来自合法客户端108,而不泄露客户端/签名者(例如,买方)108的身份。
该处理确保由执行客户端108提供给授权客户端104的评级不能被链接到授权客户端104的身份。执行客户端108向智能合约或链码132提供评级、无效符以及该无效符对应于merkle树120中的特定但未公开的叶子的零知识证明。智能合约或链码116使用提供的无效符和共享分类账116中存储的merkle树120的根节点值来核实该证明。此外,智能合约或链码132核实先前未使用该无效符。如果这些检查通过,那么将评级添加到共享分类账116数据,并将该无效符存储在分类账上并标记为“已使用”。由于证明未泄露曾使用merkle树120的哪个特定叶节点,因此执行客户端108的身份受到保护。身份的这种保护是在智能合约或链码132逻辑的级别。
所公开的方法利用了若干个观察。首先,给定用于证明生成的merkle树根节点值,智能合约或链码132中的核实处理需要检查这是否是授权客户端merkle树120的有效的先前或当前根节点值。其次,根节点值是固定散列函数的输出,因此其尺寸是固定的(即,对于SHA-256为32个字节)。
一些公开的实施例增强了智能合约132API框架以支持对于其可以本机实现高效的有效历史值(VHV)调用136的特殊的回溯键124。回溯键和值124被维护在共享分类账116中。用于回溯键的所有当前和先前值的逐字节前缀搜索树128也维护在共享分类账116中,并且在回溯键124的值被更新时被更新。逐字节前缀搜索树128用于有效历史值声明调用136。VHV 136是声明语句,并且智能合约或链码132在失败时退出并返回错误。声明语句通常在程序中执行硬检查,例如两个变量是否相等,如果检查失败,那么退出并返回错误。
在所提出的实施例中,有效历史值(VHV)调用被实现为声明语句136,使得回溯键124—针对其要检查给定值是否为历史值—不需要被包含在背书交易的读取集中。这是因为,如果检查成功,那么在提交当前交易之前提交的任何交易156都不会改变给定值确实是回溯键124的历史值的事实。另一方面,由于回溯键124不包含在读取集中,因此如果检查失败,那么可以避免由于因声明语句136失败和交易156没有背书而导致智能合约或链码132执行退出并返回错误而引起的共享分类账116的任何不一致的更新。在基本级别上,声明语句136的使用避免了由于交易背书(执行和读/写集创建)与在共享分类账116上的提交(按写集的键-值更改)之间的延迟引起的不一致,并且其它交易156可以在交易的背书和提交之间进行提交。智能合约或链码132在其首次使用之前指定回溯键,以及其可能值124的以字节为单位的固定长度。
智能合约API确保由回溯键124取得的任何值都或者为空(null)或者为恰好指定的长度。利用固定长度值规范来为回溯键124实现高效的VHV-声明136。由于VHV调用是声明136,因此回溯键124不包含在merkle树120的读取集中。在核实步骤中,执行客户端108将用于证明生成的根节点值172(参见图1B)发送到智能合约或链码132,智能合约或链码132检查这是否是根节点的有效先前值或当前值。
区块链平台(例如,超级分类账架构)为每个回溯键124实现键的历史值的逐字节前缀搜索树128。在树128中将仅存在与有效历史值对应的路径。树128的深度将由回溯键124的长度规范来固定。这使得用固定数量的操作进行高效的VHV声明执行。前缀树128由区块链节点或对等节点维护,并且可以不是智能合约或链码132可直接访问的共享分类账116的一部分。逐字节前缀搜索树128在任何交易156的提交时被更新,该更新修改对应的回溯键124的值。
当使用提出的回溯键124的系统增强时,merkle树120的根值被存储在回溯键124中。该处理略有变化—执行客户端108也可以提供曾由执行客户端108使用以生成零知识证明的根节点值172。该值172也可以被发送到智能合约或链码132,该智能合约或链码132使用有效历史值(VHV)声明调用136附加地核实这是merkle树根值的有效历史值。零知识证明由智能合约或链码132相对于由执行客户端108提供的根节点值172进行核实。
图1B图示了根据示例实施例的区块链中的匿名交易请求内容。参考图1B,匿名交易请求152包括匿名评级160、证明164、无效符168和对应的merkle树120的根节点值172。匿名评级160、证明164、无效符168和根节点值172如先前所描述的以及另外如相对于图4、图5A和图5B所描述的那样进行交互。
图2A图示了根据示例实施例的区块链体系架构配置200。参考图2A,区块链体系架构200可以包括某些区块链元素,例如,一组区块链节点202。区块链节点202可以包括一个或多个节点204-210。(作为示例,仅描绘了这4个节点)。这些节点参与许多活动,诸如区块链交易添加和验证处理(共识)。区块链节点204-210中的一个或多个可以基于背书策略背书交易并且可以为体系架构200中的所有区块链节点提供排序服务。区块链节点可以发起区块链认证并寻求写入存储在区块链层216中的区块链不可变分类账,其副本也可以存储在基础物理基础设施214上。区块链配置可以包括一个或多个应用224,该一个或多个应用224链接到应用编程接口(API)222以访问和执行可以根据由参与者寻求的定制配置创建的存储程序/应用代码220(例如,链码、智能合约等)并且可以维护其自己的状态、控制其自己的资产以及接收外部信息。这可以作为交易部署,并经由附加到分布式分类账安装在所有区块链节点204-210上。
区块链基础或平台212可以包括区块链数据、服务(例如,密码信任服务、虚拟执行环境等)以及可以用于接收和存储新交易并且向正在寻求访问数据条目的审计器提供访问的基础物理计算机基础设施的各种层。区块链层216可以暴露接口,该接口提供对处理程序代码和接合物理基础设施214所必需的虚拟执行环境的访问。密码信任服务218可以用于核实诸如资产交换交易之类的交易并使信息保密。
图2A的区块链体系架构配置可以经由区块链平台212暴露的一个或多个接口以及提供的服务来处理和执行程序/应用代码220。代码220可以控制区块链资产。例如,代码220可以存储和传送数据,并且可以由节点204-210以智能合约和相关联的链码的形式执行,其中条件或其它代码元素经受其执行。作为非限制性示例,可以创建智能合约以执行经受改变、更新等的提醒、更新和/或其它通知。智能合约本身可以用于识别与授权和访问要求及分类帐的使用相关联的规则。例如,信息226可以包括来自区块链节点202外部的一次性令牌或证书,并且可以由包括在区块链层216中的一个或多个处理实体(例如,虚拟机)进行处理。结果228可以包括提供匿名评级的交易,该匿名评级然后被存储到区块链网络的共享分类账中。物理基础设施214可以用于检索本文描述的任何数据或信息。
可以经由高级应用和编程语言创建智能合约,然后将其写入到区块链中的区块。智能合约可以包括用区块链(例如,区块链对等方的分布式网络)注册、存储和/或复制的可执行代码。交易是智能合约代码的执行,智能合约代码可以响应于与智能合约相关联的条件被满足而执行。智能合约的执行可以触发对数字区块链分类账的状态的(一个或多个)可信任的修改。由智能合约执行引起的对区块链分类账的(一个或多个)修改可以通过一个或多个共识协议在区块链对等方的整个分布式网络中自动复制。
智能合约可以以键-值对的格式将数据写入到区块链。此外,智能合约代码可以读取存储在区块链中的值并在应用操作中使用它们。智能合约代码可以将各种逻辑运算的输出写入到区块链中。代码可以用于在虚拟机或其它计算平台中创建临时数据结构。写入到区块链的数据可以是公共的和/或可以被加密并维持为私有。由智能合约使用/生成的临时数据由供应的执行环境保持在存储器中,然后一旦区块链所需的数据被识别出,该临时数据就被删除。
链码可以包括具有附加特征的智能合约的代码解释。如本文所述,链码可以是部署在计算网络上的程序代码,其中它在共识处理期间由链验证器一起执行和验证。链码接收散列并从区块链中检索与通过使用先前存储的特征提取器创建的数据模板相关联的散列。如果散列标识符的散列和从存储的标识符模板数据创建的散列匹配,则链码将授权键发送到所请求的服务。链码可以写入到与密码细节相关联的区块链数据。
图2B图示了根据示例实施例的在区块链的节点之间的区块链交易流程250的示例。参考图2B,交易流程可以包括由应用客户端节点260发送给背书对等节点281的交易提案291。背书对等方281可以核实客户端签名并执行发起交易的链码函数。输出可以包括链码结果、在链码(读集)中读取的键/值版本集合,以及用链码(写集)写入的键/值集合。如果被批准,则提案响应292连同背书签名一起被发送回客户端260。客户端260将背书组装到交易有效载荷293中并将其广播到排序服务节点284。然后,排序服务节点284将排序后的交易作为区块递送到通道上的所有对等方281-283。在提交到区块链之前,每个对等方281-283可以验证交易。例如,对等方可以检查背书策略以确保指定的对等方的正确分配已经对结果进行签名并且针对交易有效载荷293对签名进行了认证。
再次参考图2B,客户端节点260通过构造并向作为背书节点的对等节点281发送请求来发起交易291。客户端260可以包括利用所支持的软件开发工具包(SDK)(其利用可用的API来生成交易提案)的应用。提案是调用链码函数使得可以将数据读取和/或写入到分类账(即,为资产写入新的键-值对)的请求。SDK可以用作填充程序(shim)以将交易提案打包成具有正确体系架构的格式(例如,通过远程过程调用(RPC)的协议缓冲区)并且取得客户端的密码凭证来为交易提案产生唯一签名。
作为响应,背书对等节点281可以核实(a)交易提案是良好形成的,(b)过去尚未提交过该交易(重放-攻击保护),(c)签名有效,以及(d)提交者(在该示例中为客户端260)被正确授权在该通道上执行所提出的操作。背书对等节点281可以将交易提案输入作为调用的链码函数的参数。然后针对当前状态数据库执行链码以产生包括响应值、读集和写集的交易结果。但是,此时没有对分类账进行更新。在292中,将该值集合与背书对等节点281的签名一起作为提案响应292传递回客户端260的SDK,该SDK解析有效载荷以供应用消费。
作为响应,客户端260的应用检查/核实背书对等方签名并比较提案响应以确定提案响应是否相同。如果链码仅查询分类账,则应用将检查查询响应并且通常不会将交易提交给排序节点服务284。如果客户端应用打算将交易提交给排序节点服务284以更新分类账,则应用在提交之前确定是否已经满足指定的背书策略(即,是否交易所需的所有对等节点都背书该交易)。这里,客户端260可以仅包括交易的多方之一。在这种情况下,每个客户端可以拥有其自己的背书节点,并且每个背书节点都需要背书交易。该体系架构使得即使应用选择不检查响应或以其它方式转发未背书的交易,背书策略仍将由对等方强制执行并在提交验证阶段被保持。
在成功检查之后,在步骤293中,客户端260将背书组装到交易中,并在交易消息内将交易提案和响应广播到排序节点284。交易可以包含读/写集、背书对等方签名和通道ID。排序节点284不需要为了执行其操作而检查交易的整个内容,而是排序节点284可以简单地从网络中的所有通道接收交易、按时间顺序按通道将它们排序,并创建每个通道的交易的区块。
交易的区块从排序节点284递送到通道上的所有对等节点281-283。区块内的交易294被验证以确保满足任何背书策略并确保读集变量的分类账状态没有变化,因为读集是由交易执行生成的。区块中的交易被标记为有效或无效。此外,在步骤295中,每个对等节点281-283将区块附加到通道的链,并且对于每个有效交易,将写集提交给当前状态数据库。发出事件以向客户端应用通知交易(调用)已不可变地附加到链,以及通知交易是否被验证或使其未通过验证。
图3A图示了许可的区块链网络300的示例,区块链网络300特征在于分布式、分散的对等方系架构。在这个示例中,区块链用户302可以向许可的区块链304发起交易。在这个示例中,交易可以是部署、调用或查询,并且可以通过利用SDK的客户端应用、直接通过API等来发出。网络可以提供对监管者306(诸如审计器)的访问。区块链网络运营商308管理成员许可,诸如将监管者306登记为“审计器”并将区块链用户302登记为“客户端”。审计器可以只限于查询分类账,而客户端可以被授权部署、调用和查询某些类型的链码。
区块链开发人员310可以编写链码和客户端应用。区块链开发人员310可以通过接口将链码直接部署到网络。为了在链码中包括来自传统数据源312的凭证,开发人员310可以使用带外连接来访问数据。在这个示例中,区块链用户302通过对等节点314连接到许可的区块链304。在进行任何交易之前,对等节点314从管理用户角色和许可的证书颁发机构316检索用户的登记和交易证书。在一些情况下,区块链用户必须拥有这些数字证书才能在许可的区块链304上进行交易。同时,可能需要尝试利用链码的用户在传统数据源312上核实其凭证。为了确认用户的授权,链码可以通过传统的处理平台318使用与该数据的带外连接。
图3B图示了许可的区块链网络320的另一个示例,区块链网络320特征在于分布式、分散的对等方系架构。在这个示例中,区块链用户322可以向许可的区块链324提交交易。在这个示例中,交易可以是部署、调用或查询,并且可以通过利用SDK的客户端应用、直接通过API等来发出。网络可以提供对监管者326(诸如审计器)的访问。区块链网络运营商328管理成员许可,诸如将监管者326登记为“审计器”并将区块链用户322登记为“客户端”。审计器可以只限于查询分类账,而客户端可以被授权部署、调用和查询某些类型的链码。
区块链开发人员330编写链码和客户端应用。区块链开发人员330可以通过接口将链码直接部署到网络。为了在链码中包括来自传统数据源332的凭证,开发人员330可以使用带外连接来访问数据。在这个示例中,区块链用户322通过对等节点334连接到网络。在进行任何交易之前,对等节点334从证书颁发机构336检索用户的登记和交易证书。在一些情况下,区块链用户必须拥有这些数字证书才能在许可的区块链324上进行交易。同时,可能需要尝试利用链码的用户在传统数据源332上核实其凭证。为了确认用户的授权,链码可以通过传统的处理平台338使用与该数据的带外连接。
在一些实施例中,本文的区块链可以是非许可的区块链。与需要许可才能加入的许可区块链相比,任何方都可以加入非许可的区块链。例如,要加入非许可的区块链,用户可以创建个人地址,并通过提交交易并因此向分类账添加条目来开始与网络进行交互。此外,所有各方都可以选择在系统上运行节点并采用挖掘协议来帮助核实交易。
图3C图示了由包括多个节点354的非许可的区块链352处理的交易的处理350。发送方356期望经由非许可的区块链352将付款或某种其它形式的价值(例如,契约、医疗记录、合约、商品、服务或可以封装在数字记录中的任何其它资产)发送给接收方358。在一个实施例中,发送方设备356和接收方设备358中的每一个可以具有数字钱包(与区块链352相关联),该数字钱包提供用户界面控制和交易参数的显示。作为响应,交易在整个区块链352中被广播到节点354。取决于区块链352的网络参数,节点基于由非许可的区块链352创建者建立的规则(其可以是预先定义的或动态分配的)核实360交易。例如,这可以包括核实所涉及的各方的身份等。可以立即核实交易,或者可以将其与其它交易放在队列中,并且节点354基于网络规则集合来确定交易是否有效。
在结构362中,有效交易被形成到区块中并用锁(散列)密封。该处理可以通过在节点354当中挖掘节点来执行。挖掘节点可以利用专门为非许可的区块链352挖掘和创建区块的附加软件。每个区块可以由使用网络同意的算法创建的散列(例如,256位数字等)来识别。每个区块可以包括首部、指向链中前一个区块的首部的散列的指针或引用,以及一组有效的交易。对前一个区块的散列的引用与安全独立区块链的创建相关联。
在将区块添加到区块链之前,必须对区块进行验证。对非许可的区块链352的验证可以包括工作量证明(PoW),该工作量证明是对从区块首部中得出的难题(puzzle)的解决方案。虽然在图3C的示例中未示出,但是用于验证区块的另一个处理是权益证明。使用权益证明,取决于新区块创建者的财富(也被定义为“权益”)以确定性的方式来选择新区块创建者。然后,由所选择的/选定的节点执行类似的证明。
通过挖掘364,节点尝试通过对一个变量进行增量更改来解决该区块,直到解决方案满足网络范围的目标为止。这将创建PoW,从而确保正确答案。换句话说,潜在的解决方案必须证明计算资源在解决问题时被消耗。
这里,PoW处理以及区块的链接使区块链的修改极为困难,因为攻击者必须修改所有后续区块才能使一个区块的修改被接受。此外,随着新区块被挖掘,修改区块的难度增加,并且后续区块的数量也增加。通过分发366,通过非许可的区块链352分发成功验证的区块,并且所有节点354将区块添加到多数(majority)链,该多数链是非许可的区块链352的可审计分类账。此外,由发送方356提交的交易中的值被存入或以其它方式被转移到接收方设备358的数字钱包中。
图4图示了根据示例实施例的用于处理区块链中的匿名交易的系统消息传送图400。参考图4,系统图400包括授权区块链客户端410、执行区块链客户端420和区块链网络430。
在方框415处,授权区块链客户端410生成一次性令牌或证书。一次性令牌或证书被转移416到执行区块链客户端420,并且允许接收执行区块链客户端420一次提交与授权区块链客户端410相关的匿名交易。在一个实施例中,授权区块链客户端410是供应商,执行区块链客户端420是从供应商购买商品或服务的买方,并且匿名交易446包括对供应商的匿名评级。
响应于接收到一次性证书416,执行区块链客户端420生成添加的新的叶节点区块链交易425,并将添加的叶节点区块链交易426转移到区块链网络430。区块链网络430将新叶节点添加到merkle树435。在一些实施例中,执行区块链客户端420可以将请求转移到受信任的区块链节点或对等方(未示出),其可以响应于请求而生成添加的叶节点区块链交易426。随后,执行区块链客户端420可以根据一些预定标准(诸如评级的范围或值)来生成评级和证明440。执行区块链客户端420可以生成匿名交易445。在一个实施例中,执行区块链客户端420提供包括评级的请求、新叶节点已被添加到merkle树的证明、用于所添加的新叶节点的无效符,以及给受信任的区块链节点或对等方(未显示)的根节点值,该受信任的区块链节点或对等方将请求转换成匿名区块链交易446。匿名区块链交易446请求区块链网络430将评级匿名地添加到区块链网络430的共享分类账中。
在接收到匿名区块链交易446时,区块链网络430的智能合约核实证明450,并将根节点值455核实为有效的当前或先前的merkle树根节点值,并核实无效符先前未被使用过。一旦它们被核实,智能合约就将匿名评级460存储到共享分类账、将无效符标记为已使用,并且还将标记的无效符465存储到共享分类账,从而确保对应的叶节点将来不被用来添加评级。授权客户端410不能将匿名评级与曾用于证明和无效符的叶节点相关联,从而不会泄露执行客户端420的身份,因此确保了交易的匿名性。
图5A图示了根据示例实施例的用于更新区块链中的匿名评级的流程图500。参考图5A,方法500可以包括以下步骤中的一个或多个步骤。
在方框504处,执行客户端108从授权客户端104接收一次性令牌或证书140。一次性令牌或证书140允许执行客户端108一次匿名地提交评级,其中匿名评级与授权客户端104相关。令牌或硬币可以是一些标准的可加密核实的一次性可使用证书140。在一个实施例中,在商品或服务被接收到144之后,一次性令牌或证书140被执行客户端108接收。在另一个实施例中,执行客户端108可以在商品或服务被接收到144的同时接收一次性令牌或证书140。令牌信息可以是授权客户端104离线(在区块链外部)发送给执行客户端108的货物交付通知的一部分。
在方框508处,新叶节点被添加到与授权客户端104对应的merkle树120。可以存在一个或多个授权客户端104,并且区块链网络的共享分类账116可以包括用于每个授权客户端104的不同的merkle树120。每个merkle树120可以包括来自多个执行客户端108的叶节点。必须首先创建新的叶节点,然后再利用它将新的匿名评级160存储到共享分类账116中。
执行客户端108选择仅执行客户端108已知的随机秘密x。使用一次性令牌140,执行客户端108调用智能合约或链码132,以将叶节点l=h(x)—仅对执行客户端已知的某个随机秘密x—添加到与授权客户端104对应的merkle树120中。该操作本身不是匿名的。符号“h(x)”表示不同且不可链接的散列函数。x的值很难从h(x)的值推断出来。例如,我们可以将h设为标准的SHA-256散列函数。智能合约或链码132将叶子值(作为自变量提供)添加到merkle树120中的下一个可用叶子(按从左到右的顺序),并更新从添加的叶子到根节点的路径。
执行客户端108私下计算零知识证明,该零知识证明表明执行客户端108具有服从L=h(x)的随机秘密x,其中L是merkle树120上的叶节点,并且无效符168y=h2(x)。零知识证明用于添加与授权客户端104相关的评级160。证明164的表示采用预定义的格式(位或字符序列),并且旨在证明在merkle树120中存在其值为h(x)(对于随机秘密x的某个值)的某个叶节点,使得执行客户端108知道x的值,并且执行客户端108提供的无效符168为h2(x),全部都为零知识(即,不泄露任何附加信息,特别是x或h(x)的值)。
在方框512处,执行客户端108创建请求以将新的匿名评级添加到授权客户端merkle树。请求包括匿名评级、无效符、用于授权客户端merkle树的根节点值以及证明。执行客户端向智能合约或链码132查询merkle树120的根节点值以及从新叶节点h(x)到根节点的路径(认证路径)上的兄弟节点序列。由于这是可以在受信任的对等方上本地完成的查询,因此h(x)的值不会泄露给区块链网络。然后执行客户端108私下计算无效符y=h2(x)。符号“h2(x)”表示另一个不同且不可链接的散列函数。h(x)的值很难从h2(x)的值推断出来,反之亦然。此外,h(x)的值很难从h2(x)的值推断出来,反之亦然。例如,我们可以将h2(x)设为具有非标准初始化向量的SHA-256。执行客户端108还私下计算零知识证明,该零知识证明表明执行客户端108具有服从L=h(x)的随机秘密x,其中L是merkle树120上的叶节点,并且无效符168y=h2(x)。
添加新的匿名评级160的请求可以被提供给区块链网络的受信任的区块链节点或对等方112。受信任的区块链节点或对等方112根据添加新匿名评级160的请求创建区块链交易156并将其提交到区块链网络。
在方框516处,区块链网络的智能合约或链码132核实证明164。使用根节点值和无效符168来核实证明164。该叶节点的无效符168是值h2(x)—它是唯一的并且不能从h(x)推断出来或者链接到h(x)。这用于防止叶节点再次被重用,因为当试图使用对应的叶节点提供评级时,链码(智能合约)132会在无效符168由执行客户端108提供时检查无效符168是否先前已被使用。如果零知识证明164被核实并且无效符168先前未被使用,那么评级160被添加,并且无效符168被存储在共享分类账116中并且被标记为“已使用”。
在方框520处,智能合约或链码132通过核实根节点值172是当前或先前的merkle树根节点值之一来验证交易156。执行客户端108用零知识证明164,y=h2(x)和在指定范围内的匿名评级160调用智能合约或链码132。证明164可以由智能合约或链码132使用无效符168和根值172进行核实,以确定执行客户端的声明确实是正确的,并被授权添加匿名评级160。由于没有泄露x或h(x)的值,并且也没有泄露试图使用哪个叶节点,因此也没有泄露执行客户端108的身份的隐私。
如果验证不成功,那么交易156不被区块链对等方背书,并且执行客户端108将接收到指示失败的失败消息。共享分类账数据116将保持不变。如果对等方的交易执行成功并且之前未使用过无效符168,那么创建由键-值对的读取集和写集组成的背书交易,然后将其传输以根据一些共识机制提交到区块链对等方上。共享分类账数据116在提交时改变。匿名评级160被添加到新的叶节点,并且无效符168的值被存储为已使用的无效符,使得可以针对更新的无效符168对其进行检查。
在方框524处,响应于验证交易,将匿名评级160添加到共享分类账116。然后可以检索匿名评级160,并将其呈现给区块链节点或对等方,或将其用于其它评级计算中,包括平均授权客户端评级计算。智能合约或链码132还将无效符168标记为已使用,并将标记的无效符存储到共享分类账116中。
图5B图示了根据示例实施例的用于区块链中的回溯键核实的流程图530。参考图5B,方法530可以包括以下步骤中的一个或多个步骤。
在方框534处,授权客户端104向执行客户端108提供一次性令牌或证书140,其允许执行客户端108一次性地向区块链网络匿名提交评级—其中匿名评级160与授权客户端104相关。执行客户端108请求将新叶节点添加到与授权客户端104对应的merkle树120。可以存在一个或多个授权客户端104,并且区块链网络的共享分类账116可以为每个授权客户端104包括不同的merkle树。每个merkle树的叶节点可以来自多个执行客户端108,并且系统可以包括多个执行客户端108。必须首先创建新的叶节点,然后再将新的匿名评级160存储到merkle树120中。
在方框538处,受信任的区块链节点或对等方112创建区块链交易156并将其提交给区块链网络,以将匿名评级160从请求152添加到merkle树120,以添加新的匿名评级160。
在方框542处,区块链网络的智能合约或链码132核实证明164。使用根节点值172和无效符168来核实证明164。
在方框546处,智能合约或链码132识别存储merkle树根节点值的回溯键124。智能合约或链码132包括有效的历史值声明调用136,该历史值声明调用136识别存储merkle树根节点值的回溯键124。
在方框550处,智能合约或链码132使用回溯键124上的有效历史值声明136来核实根节点值172是有效的当前或先前的merkle树根节点值。
在方框554处,响应于核实merkle树根节点值,智能合约或链码132将针对授权客户端104的匿名评级160添加到共享分类账116。然后可以检索匿名评级160,并将其呈现给区块链节点或对等方,或将其用于其它评级计算中,包括平均授权客户端评级计算。智能合约或链码132还将无效符168标记为已使用,并将标记的无效符存储到共享分类账116中。
图5C图示了根据示例实施例的基于用户评级来授予访问权限的示例方法的流程图560。参考图5C,方法560可以包括以下步骤中的一个或多个步骤。
在方框564处,接收与网络访问相关的度量。访问策略实施系统接收与对网络资源的访问相关的度量(例如,由凭单(voucher)表示)。
在方框568处,更新用户评级。然后,系统基于接收到的度量更新用户评级。
在方框572处,系统接收用户访问请求。
在方框576处,基于用户评级来授予访问权限。响应于该请求,系统授予基于所确定的用户评级的访问级别。
在方框580处,根据访问级别来配置设备。系统根据所授予的访问级别动态配置一个或多个网络设备。
图6A示出了根据示例实施例的包括被配置为执行各种操作的物理基础设施610的示例系统600。参考图6A,物理基础设施610包括模块612和模块614。模块614包括区块链620和智能合约630(可以驻留在区块链620上),其可以执行任何示例实施例中包括的任何操作步骤608(在模块612中)。步骤/操作608可以包括所描述或描绘的实施例中的一个或多个实施例,并且可以表示从一个或多个智能合约630和/或区块链620写入或读取的输出或写入信息。物理基础设施610、模块612和模块614可以包括一个或多个计算机、服务器、处理器、存储器和/或无线通信设备。此外,模块612和模块614可以是相同的模块。
图6B图示了根据示例实施例的被配置为执行各种操作的另一个示例系统640。参考图6B,系统640包括模块612和模块614。模块614包括区块链620和智能合约630(可以驻留在区块链620上),其可以执行任何示例实施例中包括的任何操作步骤608(在模块612中)。步骤/操作608可以包括所描述或描绘的实施例中的一个或多个实施例,并且可以表示从一个或多个智能合约630和/或区块链620写入或读取的输出或写入信息。物理基础设施610、模块612和模块614可以包括一个或多个计算机、服务器、处理器、存储器和/或无线通信设备。此外,模块612和模块614可以是相同的模块。
图6C图示了根据示例实施例的被配置为在合约方之间利用智能合约配置的示例系统以及被配置为在区块链上强制执行智能合约条款的中介服务器。参考图6C,配置650可以表示由智能合约630驱动的通信会话、资产转移会话或处理或过程,该智能合约630明确地识别一个或多个用户设备652和/或656。智能合约执行的执行、操作和结果可以由服务器654管理。智能合约630的内容可能需要由作为智能合约交易的各方的实体652和656中的一个或多个的数字签名。智能合约执行的结果可以作为区块链交易被写入到区块链620。智能合约630驻留在区块链620上,该区块链620可以驻留在一个或多个计算机、服务器、处理器、存储器和/或无线通信设备上。
图6D图示了根据示例实施例的包括区块链的系统660。参考图6D的示例,应用编程接口(API)网关662提供用于访问区块链逻辑(例如,智能合约630或其它链码)和数据(例如,分布式分类账等)的公共接口。在这个示例中,API网关662是用于通过将一个或多个实体652和656连接到区块链对等方(即服务器654)来在区块链上执行交易(调用、查询等)的公共接口。这里,服务器654是区块链网络对等部件,它保持世界状态的副本和分布式分类账,从而允许客户端652和656查询关于世界状态的数据以及将交易提交到区块链网络中,其中,取决于智能合约630和背书策略,背书的对等方将运行智能合约630。
以上实施例可以用硬件、用由处理器执行的计算机程序、用固件或用上述的组合来实现。计算机程序可以实施在计算机可读介质上,诸如存储介质。例如,计算机程序可以驻留在随机存取存储器(“RAM”)、闪存、只读存储器(“ROM”)、可擦可编程只读存储器(“EPROM”)、电可擦可编程只读存储器(“EEPROM”)、寄存器、硬盘、可移动盘、光盘只读存储器(“CD-ROM”)或本领域已知的任何其它形式的存储介质中。
示例性存储介质可以耦合到处理器,使得处理器可以从该存储介质读取信息,并且可以向该存储介质写入信息。在替代方案中,存储介质可以与处理器集成在一起。处理器和存储介质可以驻留在专用集成电路(“ASIC”)中。在替代方案中,处理器和存储介质可以作为分立部件驻留。
图7A图示了根据示例实施例的将新区块添加到分布式分类账720的处理700,并且图7B图示了根据示例实施例的用于区块链的新数据区块结构730的内容。参考图7A,客户端(未示出)可以向区块链节点711、712和/或713提交交易。客户端可以执行从任何来源接收到的指令以制定区块链720上的活动。作为示例,客户端可以是代表请求者行动的应用,诸如为区块链提出交易的设备、个人或实体。多个区块链对等方(例如,区块链节点711、712和713)可以维持区块链网络的状态以及分布式分类账720的副本。区块链网络中可能存在不同类型的区块链节点/对等方,其包括模拟并背书由客户端提出的交易的背书对等方以及核实背书、验证交易并将交易提交到分布式分类账720的提交对等方。在这个示例中,区块链节点711、712和713可以执行背书者节点、提交者节点或两者的角色。
分布式分类账720包括用区块存储不可变的、有序记录的区块链,以及维持区块链722的当前状态的状态数据库724(当前世界状态)。每个通道可以存在一个分布式分类账720,并且每个对等方为其作为成员的每个通道维护其自己的分布式分类账720副本。区块链722是被结构化为散列链接的区块的交易日志,其中每个区块包含N个交易的序列。区块可以包括各种部件,诸如图7B中所示。区块的链接(在图7A中由箭头示出)可以通过在当前区块的区块首部中添加前一个区块的首部的散列来生成。以这种方式,区块链722上的所有交易被排序并被加密地链接在一起,从而防止篡改区块链数据而不破坏散列链接。此外,由于链接,区块链722中的最新区块表示在其之前已到来的每个交易。区块链722可以存储在支持仅附加的区块链工作负载的对等文件系统(本地或附接的存储装置)上。
区块链722和分布式分类账720的当前状态可以存储在状态数据库724中。这里,当前状态数据表示区块链722的链交易日志中曾经包含的所有键的最新值。链码调用针对状态数据库724中的当前状态执行交易。为了使这些链码交互非常高效,所有键的最新值都存储在状态数据库724中。状态数据库724可以包括到区块链722的交易日志中的索引视图,因此它可以在任何时间从链中重新生成。状态数据库724可以在对等方启动后在接受交易之前自动恢复(或在需要时生成)。
背书节点从客户端接收交易,并基于模拟结果背书交易。背书节点持有模拟交易提案的智能合约。当背书节点背书交易时,背书节点创建交易背书,该交易背书是从背书节点到客户端应用的签名响应,指示模拟交易的背书。背书交易的方法取决于可以在链码中指定的背书策略。背书策略的示例是“大多数背书对等方必须背书交易”。不同的通道可以具有不同的背书策略。客户端应用将背书的交易转发到排序服务710。
排序服务710接受背书的交易、将它们排序为区块,并将这些区块递送到提交对等方。例如,排序服务710可以在已经达到交易的阈值、计时器超时或其它条件时发起新区块。在图7A的示例中,区块链节点712是提交的对等方,其已经接收到用于存储在区块链720上的新数据区块730。区块链中的第一个区块可以被称为创世区块(genesi s block),其包括关于区块链、其成员、存储在其中的数据等信息。
排序服务710可以由排序者集群组成。排序服务710不处理交易、智能合约或维护共享分类账。而是排序服务710可以接受背书的交易并指定将那些交易提交给分布式分类账720的顺序。可以设计区块链网络的体系架构,使得“排序”的特定实现(例如,Solo、Kafka、BFT等)成为可插入的部件。
交易以一致的顺序被写入到分布式分类账720。建立交易的顺序以确保对状态数据库724的更新在它们被提交到网络时是有效的。与其中通过解决密码难题或挖掘来进行排序的加密货币区块链系统不同,在这个示例中,分布式分类账720的各方可以选择最适合该网络的排序机制。
当排序服务710初始化新数据区块730时,可以将新数据区块730广播到提交对等方(例如,区块链节点711、712和713)。作为响应,每个提交对等方通过检查来验证新数据区块730中的交易,以确保读取集和写入集仍匹配状态数据库724中的当前世界状态。具体而言,提交对等方可以确定背书者模拟交易时存在的读取数据是否与状态数据库724中的当前世界状态相同。当提交对等方验证交易时,将交易写入到分布式分类账720上的区块链722,并使用来自读写集的写入数据更新状态数据库724。如果交易失败,即,如果提交对等方发现读写集与状态数据库724中的当前世界状态不匹配,那么排序为区块的交易仍将被包括在该区块中,但是它将被标记为无效,并且状态数据库724将不被更新。
参考图7B,存储在分布式分类账720的区块链722上的新数据区块730(也称为数据区块)可以包括多个数据段,诸如区块首部740、区块数据750以及区块元数据760。应该认识到的是,各种所描绘的区块及其内容,诸如图7B中所示的新数据区块730及其内容仅仅是示例,并不意味着限制示例实施例的范围。新数据区块730可以在区块数据750内存储N个交易(例如,1、10、100、500、1000、2000、3000个等)的交易信息。新数据区块730还可以在区块首部740内包括到(例如,在图7A中的区块链722上的)前一个区块的链接。特别地,区块首部740可以包括前一个区块首部的散列。区块首部740还可以包括唯一区块号、新数据区块730的区块数据750的散列等。新数据区块730的区块号可以是唯一的并且以各种顺序分配,诸如从零开始的递增/有序顺序。
区块数据750可以存储记录在新数据区块730内的每个交易的交易信息。例如,交易数据可以包括交易的类型、版本、时间戳、分布式分类账720的通道ID、交易ID、历元、有效载荷可见性、链码路径(部署tx)、链码名称、链码版本、输入(链码和功能)、客户端(创建者)身份(诸如公钥和证书)、客户端的签名、背书者的身份、背书者签名、提案散列、链码事件、响应状态、命名空间、读取集(由交易读取的键和版本的列表等)、写入集(键和值的列表等)、开始键、结束键、键列表、Merkel树查询摘要等中的一个或多个。可以为N个交易中的每个交易存储交易数据。
在一些实施例中,区块数据750还可以存储新数据762,该新数据762将附加信息添加到区块链722中的散列链接的区块链。附加信息包括本文描述或描绘的步骤、特征、处理和/或动作中的一个或多个。因此,新数据762可以存储在分布式分类账720上的区块的不可变日志中。存储这种新数据762的一些益处反映在本文公开和描绘的各种实施例中。虽然在图7B中新数据762被描绘为在区块数据750中,但是新数据762也可以位于区块首部740或区块元数据760中。
区块元数据760可以存储多个元数据字段(例如,作为字节数组等)。元数据字段可以包括区块创建时的签名、对最后一个配置区块的引用、识别区块内有效和无效交易的交易过滤器、对区块进行排序的排序服务的持久化的最后偏移等。签名、最后一个配置区块以及排序者元数据可以由排序服务710添加。同时,区块的提交者(诸如区块链节点712)可以基于背书策略、读/写集的核实等添加有效性/无效性信息。交易过滤器可以包括尺寸等于区块数据750中的交易的数量的字节数组和识别交易是否有效/无效的验证码。
图7C图示了根据本文描述的实施例的用于数字内容的区块链770的实施例。数字内容可以包括一个或多个文件和相关联的信息。文件可以包括媒体、图像、视频、音频、文本、链接、图形、动画、网页、文档或其它形式的数字内容。区块链的不可变、仅附加方面可作为保护数字内容的完整性、有效性和真实性的保障,从而使其适用于其中应用可取性(admissibil ity)规则的法律程序或其中考虑证据或其中以其它方式对数字信息的呈现和使用感兴趣的其它环境。在这种情况下,数字内容可以被称为数字证据。
区块链可以以各种方式形成。在一个实施例中,数字内容可以被包括在区块链本身中并且可以从区块链本身访问。例如,区块链的每个区块可以与相关联的数字内容一起存储参考信息的散列值(例如,首部、值等)。然后可以将散列值和相关联的数字内容一起加密。因此,可以通过解密区块链中的每个区块来访问每个区块的数字内容,并且每个区块的散列值可以用作参考前一个区块的基础。这可以如下图示:
在一个实施例中,数字内容可以不包括在区块链中。例如,区块链可以存储每个区块的内容的加密散列,而无需任何数字内容。数字内容可以与原始文件的散列值相关联地存储在另一个存储区域或存储器地址中。其它存储区域可以是用于存储区块链的相同存储设备,或者可以是不同的存储区域,甚至是单独的关系数据库。可以通过获得或查询感兴趣的区块的散列值,然后在与实际数字内容对应地存储的存储区域中查找具有该值的内容来引用或访问每个区块的数字内容。例如,可以在数据库网守处执行该操作。这可以如下图示:
在图7C的示例实施例中,区块链770包括以排序序列密码链接的多个区块7781、7782、...778N,其中N≥1。用于链接区块7781、7782、...,778N的加密可以是许多键控或非键控散列函数中的任何一种。在一个实施例中,区块7781、7782、…778N经受散列函数,该散列函数从基于区块中的信息的输入产生n位字母数字输出(其中n是256或另一个数字)。此类散列函数的示例包括但不限于SHA型(SHA代表安全散列算法)算法、Merkle-Damgard算法、HAIFA算法、Merkle树算法、基于随机数的算法和非防碰撞PRF算法。在另一个实施例中,区块7781、7782、...778N可以通过与散列函数不同的函数进行密码链接。为了图示的目的,以下描述参考例如SHA-2的散列函数。
区块链中的每个区块7781、7782、...778N包括首部、文件的版本和值。由于区块链中的散列处理,每个区块的首部和值都不同。在一个实施例中,值可以被包括在首部中。如下面更详细描述的,文件的版本可以是原始文件或原始文件的不同版本。
区块链中的第一区块7781被称为创世区块,并且包括首部7721、原始文件7741和初始值7761。用于创世区块以及实际上在所有后续区块中的散列处理方案可能不同。例如,可以将第一区块7781中的所有信息一次在一起进行散列处理,或者可以单独对第一区块7781中的每条信息或信息的一部分进行散列处理,然后可以对单独散列处理的部分执行散列处理。
首部7721可以包括一个或多个初始参数,例如,可以包括版本号、时间戳、随机数、根信息、难度级别、共识协议、持续时间、媒体格式、来源、描述性关键字和/或与原始文件7741和/或区块链相关联的其它信息。首部7721可以自动地(例如,通过区块链网络管理软件)生成,或者可以由区块链参与者手动生成。与区块链中其它区块7782至778N中的首部不同,创世区块中的首部7721并不引用前一个区块,这只是因为不存在前一个区块。
创世区块中的原始文件7741可以是例如由设备捕获的数据,该数据在将其包含在区块链中之前进行了处理或不进行处理。通过系统的界面从设备、媒体源或节点接收原始文件7741。原始文件7741与元数据相关联,元数据例如可以由用户、设备和/或系统处理器手动或自动生成。元数据可以与原始文件7741相关联地包括在第一区块7781中。
创世区块中的值7761是基于原始文件7741的一个或多个唯一属性生成的初始值。在一个实施例中,一个或多个唯一属性可以包括原始文件7741的散列值、原始文件7741的元数据以及与该文件相关联的其它信息。在一个实施方式中,初始值7761可以基于以下唯一属性:
1)SHA-2计算的原始文件的散列值
2)原始设备ID
3)原始文件的启动时间戳
4)原始文件的初始存储位置
5)当前控制原始文件和相关联元数据的软件的区块链网络成员ID
区块链中的其它区块7782至778N也具有首部、文件和值。但是,与第一区块7721不同,其它区块中的首部7722至772N中的每个首部包括紧接在前的区块的散列值。紧接在前的区块的散列值可以只是前一个区块的首部的散列,或者可以是整个前一个区块的散列值。通过在剩余的每个区块中包括前一个区块的散列值,可以从第N个区块向后到创世区块(以及相关联的原始文件)如按箭头780所指示地逐个区块地执行追溯,以建立可审计且不可变的托管链(chain-of-custody)。
其它区块中的首部7722至772N中的每个首部还可以包括其它信息,例如,版本号、时间戳、随机数、根信息、难度级别、共识协议和/或与相应文件和/或一般地与区块链相关联的其它参数或信息。
其它区块中的文件7742至774N可以等于原始文件,或者可以是创世区块中原始文件的修改版本,这取决于例如所执行的处理的类型。所执行的处理的类型可能因区块而异。处理可以涉及例如在先前区块中对文件的任何修改,诸如编辑信息或以其它方式改变文件的内容、从文件中取出信息、或向文件添加或附加信息。
附加地或替代地,处理可以涉及仅从先前区块复制文件、改变文件的存储位置、从一个或多个先前区块分析文件、从一个存储装置或存储器位置向另一个存储装置或存储器位置移动文件、或相对于区块链文件和/或其相关联的元数据执行动作。涉及分析文件的处理可以包括例如附加、包括或以其它方式关联与文件相关联的各种分析、统计或其它信息。
其它区块中的每个其它区块7762至776N中的值是唯一值,并且由于所执行的处理而都不同。例如,任何一个区块中的值都对应于前一个区块中值的更新版本。该更新反映在向其分配值的区块的散列中。因此,区块的值提供了对在区块中执行了哪些处理的指示,并且还允许通过区块链追溯回到原始文件。这种跟踪确认了贯穿整个区块链的文件的托管链。
例如,考虑为了保护文件中显示的人的身份而对前一个区块中的文件的部分进行编辑、屏蔽或像素化的情况。在这种情况下,包括已编辑文件的区块将包括与已编辑文件相关联的元数据,例如,编辑如何被执行、谁执行的编辑、发生(一个或多个)编辑时的时间戳等。可以对元数据进行散列处理以形成值。由于区块的元数据与经过散列处理以形成前一个区块中的值的信息不同,因此这些值彼此相同,并且可以在解密时被恢复。
在一个实施例中,当以下各项中的任何一个或多个发生时,可以更新前一个区块的值(例如,计算出的新散列值)以形成当前区块的值。在该示例实施例中,可以通过对下面所述的信息的全部或部分进行散列处理来计算新散列值。
a)如果文件已以任何方式被处理(例如,如果文件曾被编辑、复制、更改、访问或曾采取某个其它动作),那么新的SHA-2计算的散列值,
b)文件的新存储位置,
c)识别出与文件相关联的新元数据,
d)将文件的访问或控制从一个区块链参与者转移到另一个区块链参与者。
图7D图示了根据一个实施例的可以表示区块链770中的区块的结构的区块的实施例。区块Blocki包括首部772i、文件774i和值776i。
首部772i包括前一个区块Blocki-1的散列值和附加参考信息,附加参考信息例如可以是本文讨论的任何类型的信息(例如,包括引用、特性、参数等的首部信息)。所有区块均引用前一个区块的散列,当然,创世区块除外。前一个区块的散列值可以仅仅是前一个区块中首部的散列,或者可以是前一个区块中所有或部分信息(包括文件和元数据)的散列。
文件774i包括多个数据,诸如依次为数据1、数据2、…、数据N。数据用元数据元数据1,元数据2、…、元数据N标记,这些元数据描述了与数据相关联的内容和/或特性。例如,每个数据的元数据可以包括指示数据的时间戳、处理数据、指示数据中描绘的人或其它内容的关键字和/或可能有助于建立有效性的其它特征以及作为整体的文件的内容的信息,并且特别是例如如结合下面讨论的实施例所描述的其使用数字证据。除元数据之外,每个数据都可以用对前一个数据的引用REF1、REF2、…、REFN进行标记,以防止篡改、文件中的间隙以及通过文件的顺序引用。
一旦将元数据分配给数据(例如,由智能合约),就不能在不进行散列改变的情况下更改元数据,而散列改变可以容易地被识别以使之无效。因此,元数据创建可供区块链中的参与者访问使用的信息的数据日志。
值776i是散列值或基于先前讨论的任何类型的信息计算出的其它值。例如,对于任何给定的区块Blocki,可以对该区块的值进行更新以反映对该区块执行的处理,例如,新的散列值、新的存储位置、相关联文件的新元数据、控制或访问的转移、标识符或其它要添加的动作或信息。虽然每个区块中的值被示出为与用于文件和首部的数据的元数据分离,但是在另一个实施例中,该值可以部分或全部基于该元数据。
一旦形成区块链770,那么在任何时间点,就可以通过向区块链查询跨区块的值的交易历史来获得文件的不可变托管链。这种查询或跟踪过程可以从解密最近包括的区块(例如,最后(第N个)区块)的值开始,然后继续解密其它区块的值,直到达到创世区块并恢复原始文件为止。解密还可以涉及在每个区块处解密首部和文件以及相关联的元数据。
基于在每个区块中发生的加密类型来执行解密。这可能涉及私钥、公钥或公钥-私钥对的使用。例如,当使用非对称加密时,网络中的区块链参与者或处理器可以使用预定算法来生成公钥和私钥对。公钥和私钥通过某种数学关系彼此相关联。可以公开分发公共密钥,以用作接收来自其它用户的消息的地址,例如,IP地址或家庭地址。私钥被秘密保持并用于对发送给其它区块链参与者的消息进行数字签名。签名被包含在消息中,使得接收者可以使用发送者的公钥进行核实。这样,接收者可以确定只有发送者可能发送该消息。
生成密钥对可以类似于在区块链上创建账户,但是不必实际在任何地方进行注册。此外,发送者使用其私钥对在区块链上执行的每个交易进行数字签名。该签名确保只有账户所有者才能跟踪和处理(如果在智能合约确定的许可范围内)区块链的文件。
图8A和图8B图示了可以在本文中结合和使用的区块链的用例的附加示例。特别地,图8A图示了存储机器学习(人工智能)数据的区块链810的示例800。机器学习依靠大量的历史数据(或训练数据)来构建预测模型,以对新数据进行准确的预测。机器学习软件(例如,神经网络等)通常可以筛选数百万条记录以发掘非直观模式。
在图8A的示例中,主机平台820构建和部署用于对资产830进行预测监视的机器学习模型。这里,主机平台820可以是云平台、工业服务器、web服务器、个人计算机、用户设备等。资产830可以是任何类型的资产(例如,机器或装备等),诸如飞机、机车、涡轮机、医疗机械和装备、石油和天然气装备、船、轮船、车辆等。作为另一个示例,资产830可以是非有形资产,诸如股票、货币、数字硬币、保险等。
区块链810可以用于显著改善机器学习模型的训练处理802和基于经训练的机器学习模型的预测处理804。例如,在802中,不是要求数据科学家/工程师或其它用户来收集数据,而是历史数据可以由资产830本身(或通过中介,未示出)存储在区块链810上。当执行预测模型训练时,这可以显著减少主机平台820所需的收集时间。例如,使用智能合约,可以将数据从其原始位置直接且可靠地传递到区块链810。通过使用区块链810来确保所收集的数据的安全性和所有权,智能合约可以将数据从资产直接发送给使用该数据来构建机器学习模型的个体。这允许在资产830之间共享数据。
可以基于共识机制将收集到的数据存储在区块链810中。共识机制引入(允许的节点)以确保所记录的数据被核实并且是准确的。记录的数据带有时间戳、经过密码加密签名并且是不可变的。因此,它是可审核的、透明的和安全的。在某些情况下(即,供应链、医疗保健、物流等),添加直接写入到区块链的IoT设备可以提高数据被记录的频率和准确性。
此外,主机平台820对机器学习模型在收集到的数据上的训练可能要经过几轮细化和测试。每轮都可以基于附加数据或先前没有考虑过的帮助扩展机器学习模型的知识的数据。在802中,主机平台820可以将不同的训练和测试步骤(以及与其相关联的数据)存储在区块链810上。机器学习模型的每个细化(例如,变量、权重等的改变)可以存储在区块链810上。这提供了关于如何训练模型以及使用了哪些数据训练模型的可核实证明。此外,当主机平台820已经实现最终训练的模型时,所得模型可以存储在区块链810上。
在训练模型之后,可以将其部署到实际环境中,在该环境中,可以基于最终训练的机器学习模型的执行情况做出预测/决策。例如,在804中,机器学习模型可以用于资产(诸如飞机、风轮机、医疗保健机等)的基于状态的维护(CBM)。在这个示例中,从资产830反馈的数据可以被输入到机器学习模型,并用于进行事件预测,诸如故障事件、错误代码等。通过在主机平台820上执行机器学习模型而做出的确定可以存储在区块链810上以提供可审核/可核实的证明。作为一个非限制性示例,机器学习模型可以预测资产830的一部分的未来崩溃/故障并创建警报或通知以替换该部分。主机平台820可以将该决策背后的数据存储在区块链810上。在一个实施例中,本文描述和/或描绘的特征和/或动作可以在区块链810上或相对于区块链810发生。
可以将区块链的新交易汇总到新区块中,并将其添加到现有的散列值。这然后被加密以为新区块创建新的散列。在交易被加密后,这将添加到下一个交易列表中,依此类推。结果是区块链,每个区块包含所有先前区块的散列值。存储这些区块的计算机定期比较其散列值,以确保它们都一致。任何不一致的计算机都将丢弃导致问题的记录。这种方法对于确保区块链的防篡改很有用,但并不是完美的。
玩弄(game)该系统的一种方法是让不诚实的用户以对其有利的方式更改交易列表,但要保持散列不变。这可以通过蛮力来完成,换句话说,可以通过更改记录、加密结果并查看散列值是否相同来完成。如果不是,那么一次又一次尝试,直到找到匹配的散列为止。区块链的安全性基于这样的信念,即普通计算机只能在完全不切实际的时间范围内(诸如宇宙的年龄)执行这种暴力攻击。相比之下,量子计算机要快得多(快1000倍),因此构成大得多的威胁。
图8B图示了量子安全区块链852的示例850,其实现量子密钥分配(QKD)以保护免受量子计算攻击。在这个示例中,区块链用户可以使用QKD来核实彼此的身份。这使用诸如光子之类的量子粒子发送信息,这些量子粒子不能在不破坏它们的情况下被窃听者复制。以这种方式,通过区块链的发送方和接收方可以确信彼此的身份。
在图8B的示例中,存在四个用户854、856、858和860。每对用户可以在其之间共享秘密密钥862(即,QKD)。由于在这个示例中存在四个节点,因此存在六对节点,并且因此使用了六个不同的秘密密钥862,包括QKDAB、QKDAC、QKDAD、QKDBC、QKDBD和QKDCD。每对可以通过使用诸如光子之类的量子粒子发送信息来创建QKD,这些量子粒子不能在不破坏它们的情况下被窃听者复制。以这种方式,一对用户可以确信彼此的身份。
区块链852的操作基于两个过程(i)创建交易,以及(ii)构建聚合新交易的区块。可以创建类似于传统区块链网络的新交易。每个交易都可以包含关于发送方、接收方、创建时间、要转移的金额(或价值)、证明发送方有操作资金的参考交易列表等信息。然后该交易记录被发送到所有其它节点,并在其中将其输入到未确认交易的池中。这里,两方(即,854-860当中的一对用户)通过提供他们的共享秘密密钥862(QKD)来认证交易。该量子签名可以附加到每笔交易中,从而使其极难进行篡改。每个节点相对于区块链852的本地副本检查其条目以核实每个交易具有足够的资金。但是,交易尚未被确认。
不是对区块执行传统的挖掘处理,而是可以使用广播协议以分散的方式创建区块。在预定的时间段(例如,秒、分钟、小时等),网络可以将广播协议应用于任何未确认的交易,从而实现关于交易的正确版本的拜占庭协议(共识)。例如,每个节点可以拥有私有值(该特定节点的交易数据)。在第一轮中,节点相互传输其私有值。在随后的轮中,节点传送它们在上一轮中从其它节点接收到的信息。这里,诚实节点能够在新区块内创建完整的交易集。可以将该新区块添加到区块链852中。在一个实施例中,本文描述和/或描绘的特征和/或动作可以在区块链852上或相对于区块链852发生。
图9图示了支持本文描述和/或描绘的一个或多个示例实施例的示例系统900。系统900包括计算机系统/服务器902、该计算机系统/服务器902可与许多其它通用或专用计算系统环境或配置一起操作。可以适于与计算机系统/服务器902一起使用的众所周知的计算系统、环境和/或配置的示例包括但不限于:个人计算机系统、服务器计算机系统、瘦客户端、厚客户端、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机系统、大型计算机系统以及包括上述系统或设备中的任何一种的分布式云计算环境等。
计算机系统/服务器902可以在由计算机系统执行的诸如程序模块的计算机系统可执行指令的一般语境下描述。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器902可以在其中任务由通过通信网络链接的远程处理设备执行的分布式云计算环境中实践。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
如图9所示,云计算节点900上的计算机系统/服务器902以通用计算设备的形式表现。计算机系统/服务器902的组件可以包括但不限于:一个或者多个处理器或者处理单元904,系统存储器906,连接不同系统组件(包括系统存储器906和处理单元904)的总线。
总线表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器902典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器902访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。在一个实施例中,系统存储器906实施了其他附图的流程图。系统存储器906可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)910和/或高速缓存存储器912。计算机系统/服务器902可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统914可以用于读写不可移动的、非易失性磁介质(图中未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM、DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线相连。存储器906可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块918的程序/实用工具916,可以存储在例如存储器906中,这样的程序模块918包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块918通常执行本发明所描述的各实施例中的功能和/或方法。
如本领域技术人员将认识到的,本申请的方面可以被实施为系统、方法或计算机程序产品。因而,本申请的各方面可以采用完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)的形式或者组合软件和硬件方面的实施例,这些实施例一般全都可以被称为“电路”、“模块”或“系统”。此处,本申请的各方面可以采取在一个或多个计算机可读介质中实施的计算机程序产品的形式,该计算机可读介质具有在其上实施的计算机可读程序代码。
计算机系统/服务器902也可以与一个或多个外部设备920(例如键盘、指向设备、显示器922等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器902交互的设备通信,和/或与使得该计算机系统/服务器902能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口924进行。并且,计算机系统/服务器902还可以通过网络适配器926与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器926通过总线与计算机系统/服务器902的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器902使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
虽然在附图中示出了系统、方法和非瞬态计算机可读介质中的至少一个的示例性实施例,并且在前面的详细描述中进行了描述,但是应该理解的是,本申请不限于在所公开的实施例,而是能够进行所阐述和限定的许多重新布置、修改和替换。例如,各个图的系统的能力可以由本文描述的模块或部件中的一个或多个或在分布式体系架构中执行,并且可以包括发送器、接收器或两者的对。例如,由各个模块执行的功能的全部或部分可以由这些模块中的一个或多个执行。另外,本文描述的功能可以在不同时间并且与模块或部件内部或外部的各种事件相关地执行。而且,可以经由以下当中的至少一个在模块之间发送在各个模块之间发送的信息:数据网络、互联网、语音网络、互联网协议网络、无线设备、有线设备和/或经由多个协议。而且,可以直接和/或经由一个或多个其它模块发送或接收由任何模块发送或接收的消息。
本领域技术人员将认识到的是,“系统”可以被实施为个人计算机、服务器、控制台、个人数字助理(PDA)、蜂窝电话、平板计算设备、智能电话或任何其它合适的计算设备或设备的组合。将上述功能呈现为由“系统”执行并不旨在以任何方式限制本申请的范围,而是旨在提供许多实施例的一个示例。实际上,本文公开的方法、系统和装置可以以与计算技术一致的本地化和分布式形式实现。
应当注意的是,本说明书中描述的一些系统特征已经作为模块呈现,以便更具体地强调它们的实现独立性。例如,模块可以被实现为包括定制的超大规模集成(VLSI)电路或门阵列的硬件电路,诸如逻辑芯片、晶体管或其它分立元件的现成半导体。模块还可以在可编程硬件设备中实现,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备、图形处理单元等。
模块还可以至少部分地以软件实现,以便由各种类型的处理器执行。识别出的可执行代码的单元可以例如包括计算机指令的一个或多个物理或逻辑块,其可以例如被组织为对象、过程或函数。但是,识别出的模块的可执行文件不需要物理地位于一起,而是可以包括存储在不同位置的不同指令,当逻辑上连接在一起时,这些指令包括模块并实现模块的所述目的。另外,模块可以存储在计算机可读介质上,该计算机可读介质可以是例如硬盘驱动器、闪存设备、随机存取存储器(RAM)、磁带或用于存储数据的任何其它此类介质。
实际上,可执行代码的模块可以是单个指令或许多指令,并且甚至可以分布在若干不同的代码段上、不同的程序当中以及跨若干存储器设备。类似地,操作数据可以在本文中在模块内被识别和示出,并且可以以任何合适的形式实施并且被组织在任何合适类型的数据结构内。操作数据可以作为单个数据集被收集,或者可以分布在包括不同存储设备的不同位置上,并且可以至少部分地仅作为系统或网络上的电子信号存在。
容易理解的是,如本文附图中一般描述和说明的,本申请的部件可以以各种不同的配置来布置和设计。因此,实施例的详细描述不旨在限制所要求保护的本申请的范围,而仅仅代表本申请的所选实施例。
本领域普通技术人员将容易理解的是,可以利用不同次序的步骤和/或利用与所公开的配置不同的配置中的硬件元件来实践上述内容。因此,虽然已经基于这些优选实施例描述了本申请,但是对于本领域技术人员来说显而易见的是,某些修改、变化和替代构造将是显而易见的。
虽然已经描述了本申请的优选实施例,但是应该理解的是,所描述的实施例仅是说明性的,并且可以考虑具有等同物和修改(例如,协议、硬件设备、软件平台等)的全范围。
Claims (30)
1.一种用于匿名数据库评级更新的系统,包括:
执行客户端,被配置为生成包括以下的区块链交易:
与授权客户端相关的匿名评级,
根节点值,
无效符,其对应于已添加到Merkle树的新叶节点,以及
对新叶节点已添加到Merkle树的证明;以及
耦合到所述执行客户端的区块链网络,包括:
共享分类账,包括与授权客户端对应的Merkle树,所述Merkle树包括所述根节点值;以及
智能合约,被配置为:
接收区块链交易;
用根节点值和无效符核实所述证明;以及
响应于核实了所述根节点值是Merkle树的当前或先前的根节点值之一,验证区块链交易;以及
响应于所述核实和所述验证,将所述匿名评级添加到所述共享分类账中。
2.如权利要求1所述的系统,其中响应于所述执行客户端执行以下操作,所述执行客户端生成区块链交易:
从所述授权客户端接收一次性可用证书,其中所述授权客户端与所述执行客户端耦合;
生成随机秘密;
调用智能合约以向Merkle树添加新叶节点,所述新叶节点包括随机秘密的散列;以及
向智能合约查询从新叶节点到Merkle树的根节点的认证路径。
3.如权利要求2所述的系统,其中所述证明基于随机秘密证明新叶节点已被添加到Merkle树中,其中响应于所述验证,所述智能合约还被配置为:
将无效符标记为已使用;以及
将标记的无效符存储到共享分类账中。
4.如权利要求2所述的系统,其中匿名评级未链接到所述执行客户端的身份,并且其中所述授权客户端不能确定所述执行客户端的身份。
5.如权利要求1所述的系统,其中智能合约还被配置为:
核实区块链交易的签名,而不泄露所述执行客户端的身份。
6.如权利要求1所述的系统,其中所述无效符对应于Merkle树中的未公开叶节点,其中所述证明包括零知识证明,所述零知识证明不识别用于核实所述证明的Merkle树叶节点,其中智能合约还被配置为:
核实所述无效符先前没有被使用过。
7.如权利要求6所述的系统,其中智能合约还被配置为:
响应于没有核实根节点值是当前或先前的Merkle树根节点值之一,智能合约还被配置为:
以失败退出智能合约执行。
8.一种用于匿名数据库评级更新的方法,包括:
由执行客户端生成包括匿名评级、证明、无效符和根节点值的区块链交易;
由智能合约接收区块链交易、与授权客户端相关的匿名评级;
利用根节点值和无效符核实证明;
核实根节点值是当前或先前的Merkle树根节点值;
将匿名评级添加到共享分类账中;
将无效符标记为已使用;以及
将标记的无效符存储到共享分类账。
9.如权利要求8所述的方法,还包括:
由所述执行客户端从所述授权客户端接收一次性可用证书;
生成随机秘密;
调用智能合约以向Merkle树添加新叶节点,所述叶节点包括随机秘密的散列值;以及
向智能合约查询新叶节点和根节点值的认证路径。
10.如权利要求9所述的方法,其中所述证明提供所述执行客户端拥有随机秘密的指示,并且所述无效符对应于新叶节点。
11.如权利要求9所述的方法,其中匿名评级未链接到所述执行客户端的身份,其中所述授权客户端不能确定所述执行客户端的身份。
12.如权利要求11所述的方法,其中区块链交易包括签名交易,其中所述方法还包括:
由智能合约核实签名,而不泄露所述执行客户端身份。
13.如权利要求9所述的方法,其中所述无效符对应于Merkle树中的未公开叶节点,其中所述证明包括零知识证明,所述零知识证明不识别用于核实所述证明的Merkle树叶节点,其中所述方法还包括:
由智能合约核实所述无效符先前没有被使用过;以及
核实根节点值是当前或先前的Merkle树根节点值之一。
14.如权利要求13所述的方法,其中核实根节点值是当前或先前的Merkle树根节点值之一包括:
由智能合约调用关于存储Merkle树根节点值的键的当前值和先前值的查询;以及
响应于核实根节点值是当前或先前的Merkle树根节点值之一,所述方法还包括:
由智能合约将匿名评级添加到共享分类账中;以及
响应于没有核实根节点值是当前或先前的Merkle树根节点值之一,所述方法还包括:
以失败退出智能合约执行。
15.一种包括指令的非暂态计算机可读介质,所述指令在被处理器读取时,使所述处理器执行如权利要求8至14中任一项所述的方法的任何步骤。
16.一种用于匿名数据库评级更新的系统,包括:
执行客户端,被配置为:
生成包括与授权客户端相关的匿名评级和根节点值的区块链交易;
区块链网络,包括:
共享分类账,包括:
回溯键;以及
与供应商对应的Merkle树,所述Merkle树包括存储在回溯键中的Merkle树根节点值;以及
固定深度的逐字节前缀搜索树,被配置为存储回溯键的有效历史值;以及
智能合约,被配置为:
接收区块链交易;
将匿名评级添加到共享分类账。
17.如权利要求16所述的系统,其中智能合约还被配置为:
将特定键定义为回溯键,其中回溯键包括以字节为单位的固定长度值;
在回溯键被定义之后,将存储在共享分类账中的逐字节前缀搜索树初始化为回溯键的值;以及
用由智能合约写入的对应回溯键的新值来更新逐字节前缀搜索树。
18.如权利要求17所述的系统,其中智能合约包括有效历史值声明调用,并且还被配置为:
在存储Merkle树根节点值的回溯键上使用有效历史值声明调用来核实根节点值;
响应于有效历史值声明调用,在逐字节前缀搜索树上执行对值的搜索;
确定逐字节前缀搜索树包含新值,并且作为响应:
指示有效历史值声明调用成功;以及
确定逐字节前缀搜索树不包含新值,并且作为响应:
以失败退出智能合约执行,
其中搜索和更新操作的步骤的数量最多为逐字节前缀搜索树的固定深度,其中前缀搜索树的固定深度包括回溯键的固定长度值。
19.如权利要求18所述的系统,其中所述区块链交易包括证明和无效符,其中所述证明提供所述执行客户端拥有随机秘密的指示,并且所述无效符对应于Merkle树的新叶节点,其中匿名评级未链接到所述执行客户端的身份,其中所述授权客户端不能确定所述执行客户端身份,其中所述智能合约还被配置为:
用所述根节点值和所述无效符核实所述证明;
响应于智能合约将匿名评级添加到共享分类账,智能合约还被配置为:
将所述无效符标记为已使用;以及
将标记的无效符存储到共享分类账中。
20.如权利要求19所述的系统,其中区块链交易包括签名交易,其中智能合约还被配置为:
核实签名,而不泄露所述执行客户端身份。
21.如权利要求19所述的系统,其中所述无效符对应于Merkle树中的未公开叶节点,其中所述证明包括零知识证明,所述零知识证明不识别用于核实所述证明的Merkle树叶节点,其中智能合约还被配置为:
核实所述无效符先前没有被使用过;以及
核实根节点值是当前或先前的Merkle树根节点值之一。
22.如权利要求18所述的系统,其中智能合约还被配置为:
核实根节点值是当前或先前的Merkle树根节点值之一;以及
响应于核实根节点值是当前或先前的Merkle树根节点值之一,智能合约还被配置为:
将匿名评级添加到共享分类账;以及
响应于没有核实根节点值是当前或先前的Merkle树根节点值之一,智能合约还被配置为:
以失败退出智能合约执行。
23.一种用于匿名数据库评级更新的方法,包括:
从执行客户端接收包括与授权客户端相关的匿名评级、Merkle树根节点值、证明和无效符的区块链交易,并且作为响应:
由智能合约对存储Merkle树根节点值的回溯键执行有效历史值声明调用;
通过有效历史值声明调用,核实Merkle树根节点值是Merkle树根节点值的当前值或先前值;
用Merkle树根节点值和无效符核实证明;
将匿名评级添加到共享分类账;
将无效符标记为已使用;以及
将标记的无效符存储到共享分类账。
24.如权利要求23所述的方法,还包括:
由智能合约将特定键定义为回溯键,其中回溯键包括以字节为单位的固定长度值;
在回溯键被定义后,将存储在共享分类账中的逐字节前缀搜索树初始化为回溯键的值;以及
通过添加由智能合约写入的对应回溯键的新值来更新逐字节前缀搜索树。
25.如权利要求24所述的方法,还包括:
从智能合约接收有效历史值声明调用;
在逐字节前缀搜索树上执行对值的搜索;
响应于确定逐字节前缀搜索树包含该值:
指示有效历史值声明调用成功;以及
响应于确定逐字节前缀搜索树不包含该值:
以失败退出智能合约执行,
其中搜索和更新操作的步骤的数量最多为逐字节前缀搜索树的固定深度,其中前缀搜索树的固定深度包括回溯键的固定长度值。
26.如权利要求25所述的方法,其中所述证明提供所述执行客户端拥有随机秘密的指示,并且所述无效符对应于Merkle树的新叶节点,其中匿名评级未链接到所述执行客户端的身份,其中所述授权客户端不能确定所述执行客户端身份。
27.如权利要求26所述的方法,其中所述区块链交易包括签名交易,其中所述方法还包括:
由智能合约核实签名,而不泄露所述执行客户端身份。
28.如权利要求25所述的方法,其中所述无效符对应于Merkle树中的未公开叶节点,其中所述证明包括零知识证明,所述零知识证明不识别用于核实所述证明的Merkle树叶节点,其中所述方法还包括:
由智能合约核实所述无效符先前没有被使用过;以及
核实根节点值是当前或先前的Merkle树根节点值之一。
29.如权利要求25所述的方法,其中核实根节点值是当前或先前的Merkle树根节点值之一包括:
由智能合约调用关于存储Merkle树根节点值的键的当前值和先前值的查询;以及
响应于核实根节点值是当前或先前的Merkle树根节点值之一,所述方法还包括:
由智能合约将匿名评级添加到共享分类账;以及
响应于没有核实根节点值是当前或先前的Merkle树根节点值之一,所述方法还包括:
以失败退出智能合约执行。
30.一种包括指令的非暂态计算机可读介质,所述指令在被处理器读取时,使所述处理器执行如权利要求23-29中任一项所述的方法的任何步骤。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/428,285 US11734259B2 (en) | 2019-05-31 | 2019-05-31 | Anonymous database rating update |
US16/428,418 US11569996B2 (en) | 2019-05-31 | 2019-05-31 | Anonymous rating structure for database |
US16/428,418 | 2019-05-31 | ||
US16/428,285 | 2019-05-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112016118A CN112016118A (zh) | 2020-12-01 |
CN112016118B true CN112016118B (zh) | 2024-05-24 |
Family
ID=73506200
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010459403.8A Active CN112016118B (zh) | 2019-05-31 | 2020-05-27 | 用于匿名数据库评级更新的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112016118B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114357081A (zh) * | 2022-01-05 | 2022-04-15 | 南昌航空大学 | 一种网状结构的区块链构造方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107967557A (zh) * | 2017-11-17 | 2018-04-27 | 西安电子科技大学 | 基于区块链的可修改信誉评价系统及方法、电子支付系统 |
CN108764874A (zh) * | 2018-05-17 | 2018-11-06 | 深圳前海微众银行股份有限公司 | 基于区块链的匿名转账方法、系统及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006004794A2 (en) * | 2004-06-25 | 2006-01-12 | Peppercoin, Inc. | Payment processing method and system |
US20170243193A1 (en) * | 2016-02-18 | 2017-08-24 | Skuchain, Inc. | Hybrid blockchain |
US10861039B2 (en) * | 2017-04-12 | 2020-12-08 | Royal Bank Of Canada | Bid platform |
US20180357683A1 (en) * | 2017-06-08 | 2018-12-13 | International Business Machines Corporation | Rating data management |
-
2020
- 2020-05-27 CN CN202010459403.8A patent/CN112016118B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107967557A (zh) * | 2017-11-17 | 2018-04-27 | 西安电子科技大学 | 基于区块链的可修改信誉评价系统及方法、电子支付系统 |
CN108764874A (zh) * | 2018-05-17 | 2018-11-06 | 深圳前海微众银行股份有限公司 | 基于区块链的匿名转账方法、系统及存储介质 |
Non-Patent Citations (1)
Title |
---|
Anonymous Reputation System for IIoT-Enabled Retail Marketing Atop PoS Blockchain;Liu et al.;《 IEEE Transactions on Industrial Informatics》;3527-3537 * |
Also Published As
Publication number | Publication date |
---|---|
CN112016118A (zh) | 2020-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11360963B2 (en) | Tracking and verification of physical assets | |
US11734259B2 (en) | Anonymous database rating update | |
US20210091960A1 (en) | Tracking and verification of physical assets | |
US11569996B2 (en) | Anonymous rating structure for database | |
CN111800268A (zh) | 用于区块链背书的零知识证明 | |
CN112084256A (zh) | 用于数据库的聚合机器学习验证 | |
CN111951003A (zh) | 用于管理对用户数据的同意的认知系统 | |
CN112241919B (zh) | 具有数据流控制的多域区块链网络 | |
CN114128214B (zh) | 用于配置区块链的安全层 | |
CN112084257A (zh) | 有效的数据库机器学习验证 | |
CN114365116A (zh) | 来自私有区块链的更新的链外通知 | |
CN111881206A (zh) | 用于数据块的多层图像编码 | |
CN112084255A (zh) | 机器学习应用的有效验证 | |
CN111881109B (zh) | 数据库可合并分类账 | |
CN114450708A (zh) | 基于现有链码的链码推荐 | |
WO2021197227A1 (en) | Noisy transaction for protection of data | |
US11475365B2 (en) | Verification of stochastic gradient descent | |
CN115004625A (zh) | 用于区块链分类账的索引结构 | |
CN116941265A (zh) | 区块链网络身份管理使用ssi | |
US11924348B2 (en) | Honest behavior enforcement via blockchain | |
CN115605868A (zh) | 跨网身份提供 | |
CN112052474A (zh) | 蓝光拷贝服务 | |
CN112733159A (zh) | 用于区块链的自由搭乘节点识别 | |
CN111797426B (zh) | 一种用于去信任通知服务的方法和系统 | |
CN115668856A (zh) | 分散式数据库中的许可事件 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |