CN111881130A - 区块链存储结构的冲突解决方案 - Google Patents

区块链存储结构的冲突解决方案 Download PDF

Info

Publication number
CN111881130A
CN111881130A CN202010348105.1A CN202010348105A CN111881130A CN 111881130 A CN111881130 A CN 111881130A CN 202010348105 A CN202010348105 A CN 202010348105A CN 111881130 A CN111881130 A CN 111881130A
Authority
CN
China
Prior art keywords
blockchain
content
anonymous
new
request
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.)
Pending
Application number
CN202010348105.1A
Other languages
English (en)
Inventor
R.萨凯特
V.潘迪特
P.S.达雅马
N.辛格
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US16/402,848 external-priority patent/US11055436B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN111881130A publication Critical patent/CN111881130A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting 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/6245Protecting personal data, e.g. for financial or medical purposes
    • G06F21/6254Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting 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/6227Protecting 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0407Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the identity of one or more communicating identities is hidden
    • H04L63/0421Anonymous communication, i.e. the party's identifiers are hidden from the other party or parties, e.g. using an anonymizer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1425Traffic logging, e.g. anomaly detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3218Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/42Anonymization, e.g. involving pseudonyms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Medical Informatics (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

示例操作可以包括以下一个或多个:接收向在区块链数据库上实施的区块链存储结构添加内容的内容请求;基于何时接收到内容请求,将该请求的内容临时存储在经由区块链数据库实施的队列中;接收由链码调用的刷新队列的请求;以及响应于刷新请求,从队列中移除内容并将内容添加到区块链存储结构中。

Description

区块链存储结构的冲突解决方案
技术领域
本申请总体上涉及匿名跟踪行为的过程,并且更具体地,涉及管理用于在不知道或不透露其数据正在被跟踪的参与者的身份的情况下跟踪数据的存储结构的区块链。
背景技术
集中式数据库在一个位置处的单个数据库(例如,数据库服务器)中存储和维护数据。这个位置通常是中央计算机,例如,台式中央处理单元(CPU)、服务器CPU或大型计算机。存储在集中式数据库中的信息通常可以从多个不同的点访问。多个用户或客户端工作站可以在集中式数据库上同时工作,例如,基于客户端/服务器配置。集中式数据库由于其单个位置(特别地出于安全目的)而易于管理、维护和控制。在集中式数据库中,数据冗余被最小化,因为所有数据的单个存储位置也意味着给定的数据集仅具有一个主记录。
然而,集中式数据库受到明显的缺点的影响。例如,集中式数据库具有单点故障。特别是,如果没有容错考虑,并且出现硬件故障(例如硬件、固件和/或软件故障),数据库内的所有数据丢失并且所有用户的工作被中断。此外,集中式数据库高度依赖于网络连接性。因此,连接越慢,每个数据库访问所需的时间量越长。另一缺点是,当集中式数据库由于单个位置而经历高流量时的瓶颈的出现。另外,集中式数据库提供对数据的有限访问,因为数据库仅维护数据的一个副本。因此,多个设备无法在同一时间访问同一条数据,而不带来重大问题或覆盖所存储的数据的风险。另外,由于数据库存储系统具有很少到没有的数据冗余,意外丢失的数据除了通过手动操作很难从备份存储装置中检索。
为了解决安全性、不变性和中央权限方面的缺陷,一些组织已经开始转向区块链来存储数据。例如,供应链数据(例如,在供应链的不同不可信参与者之间等)可以通过使用区块链以可信的方式被记录。然而,通常存储在区块链的信息对区块链的所有参与者都是可见/可用的。因此,需要一种能够匿名跟踪信息的解决方案。
发明内容
一个示例实施例提供了一种系统,该系统包括网络接口和处理器中的一个或多个,其中该网络接口被配置为接收向在区块链数据库上实施的区块链存储结构添加内容的内容请求,其中该处理器被配置为执行以下操作中的一个或多个:基于何时接收到内容请求,将该请求的内容临时存储在经由区块链数据库实施的队列中;接收由链码调用的刷新(flush)队列的请求;以及响应于刷新请求,从队列中移除内容并将内容添加到区块链存储结构。
另一示例实施例提供了一种方法,该方法包括以下中的一个或多个:接收向在区块链数据库上实施的区块链存储结构添加内容的内容请求;基于何时接收到内容请求,将该请求的内容临时存储在经由区块链数据库实施的队列中;接收由链码调用的刷新队列的请求;以及响应于刷新请求,从队列中移除内容并将内容添加到区块链存储结构。
另一示例实施例提供了一种包括指令的非暂时性计算机可读介质,当被处理器读取时,该指令使得处理器执行以下中的一个或多个:接收向在区块链数据库上实施的区块链存储结构添加内容的内容请求;基于何时接收到内容请求,将该请求的内容临时存储在经由区块链数据库实施的队列中;接收由链码调用的刷新队列的请求;以及响应于刷新请求,从队列中移除内容并将内容添加到区块链存储结构。
另一示例实施例提供了一种系统,该系统包括存储装置和处理器中的一个或多个,其中该存储装置被配置为树结构,该树结构包括存储在分层结构中的多个节点中的、多个区块链参与者的匿名行为数据,其中该处理器被配置为执行以下操作中的一个或多个:接收向树结构添加新的匿名行为数据的请求,该请求包括由区块链参与者生成的零知识证明;基于零知识证明,标识树结构上的、存储与该请求相关联的区块链参与者的先前记录的匿名行为数据的活动叶;以及基于新的匿名行为数据和先前记录的匿名行为,生成对于区块链参与者的新的活动叶,其中该存储装置还被配置为将新的活动叶存储为树结构上的叶节点。
另一示例实施例提供了一种方法,该方法包括以下中的一个或多个:经由区块链存储装置来存储树结构,该树结构包括存储在分层结构中的多个节点中的、多个区块链参与者的匿名行为数据;接收向该树结构添加新的匿名行为数据的请求,该请求包括由区块链参与者生成的零知识证明;基于零知识证明,标识树结构上的、存储与该请求相关联的区块链参与者的先前记录的匿名行为数据的活动叶;基于新的匿名行为数据和先前记录的匿名行为,生成区块链参与者的新的活动叶;以及将新的活动叶存储为区块链存储装置中的树结构上的叶节点。
另一示例实施例提供了一种包括指令的非暂时性计算机可读介质,当该指令被处理器读取时,使得处理器执行以下中的一个或多个:经由区块链存储装置来存储树结构,该树结构包括存储在分层结构中的多个节点中的、多个区块链参与者的匿名行为数据;接收向该树结构添加新的匿名行为数据的请求,该请求包括由区块链参与者生成的零知识证明;基于零知识证明,标识树结构上的、存储与该请求相关联的区块链参与者的先前记录的匿名行为数据的活动叶;基于新的匿名行为数据和先前记录的匿名行为,生成区块链参与者的新的活动叶;以及将新的活动叶存储为区块链存储装置中的树结构上的叶节点。
附图说明
图1是示出根据示例实施例的包括存储供应链参与者的行为数据的区块链网络的图。
图2A是示出根据示例实施例的示例区块链体系结构配置的图。
图2B是示出根据示例实施例的区块链交易流的图。
图3A是示出根据示例实施例的许可网络的图。
图3B是示出根据示例实施例的另一许可网络的图。
图4A是示出根据示例实施例的向区块链结构添加新的活动叶节点的过程的图。
图4B是示出根据示例实施例的由区块链参与者调用新的活动叶节点的过程的图。
图4C是示出根据示例实施例的经由区块链分类账实施以防止存储冲突的队列的图。
图5A是示出根据示例实施例的更新区块链结构上的匿名行为的方法的流程图。
图5B是示出根据示例实施例的经由区块链分类账管理队列的方法的流程图。
图6A是示出根据示例实施例的被配置为执行本文描述的一个或多个操作的示例系统的图。
图6B是示出根据示例实施例的被配置为执行本文描述的一个或多个操作的另一示例系统的图。
图6C是示出根据示例实施例的被配置为利用智能合约的另一示例系统的图。
图6D是示出根据示例实施例的被配置为利用区块链的又一示例系统的图。
图7A是示出根据示例实施例的向分布式分类账添加新块的过程的图。
图7B是示出根据示例实施例的新数据块的内容的图。
图7C是示出根据示例实施例的数字内容的区块链的图。
图7D是示出根据示例实施例的可以表示区块链中的块的结构的块的图。
图8是示出支持一个或多个示例实施例的示例系统的图。
具体实施方式
容易理解的是,如总体地描述和本文附图中示出的那样,本发明的组件可以以多种不同的配置来布置和设计。因此,如附图所示,方法、装置、非暂时性计算机可读介质和系统中的至少一个的实施例的以下详细描述不旨在限制所要求保护的应用的范围,而仅代表所选择的实施例。
在一个或多个实施例中,贯穿本说明书描述的当前特征、结构或特性可以以任何合适的方式组合或移除。例如,在整个说明书中,短语“示例实施例”、“一些实施例”或其他类似语言的使用指的是结合实施例描述的特定特征、结构或特性可以包括在至少一个实施例中的事实。因此,在整个说明书中,短语“示例实施例”、“在一些实施例中”、“在其他实施例中”或其他类似的语言的出现不一定全部指同一实施例群组,并且所描述的特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合或移除。
此外,虽然术语“消息”可能已经在实施例的描述中使用,但是该应用可以应用于许多类型的网络和数据。另外,虽然在示例性实施例中可以描述特定类型的连接、消息和信令通知,但是该应用不限于特定类型的连接、消息和信令通知。
示例实施例提供了方法、系统、组件、非暂时性计算机可读介质、设备和/或网络,其提供了用于保护隐私的异常行为检测和跟踪的系统和方法。
在一个实施例中,该系统利用分散式数据库(诸如区块链),该分散式数据库是包括彼此通信的多个节点的分布式存储系统。分散式数据库包括类似于分布式分类账的仅附接不可变数据结构,其能够维护相互不信任的各方之间的记录。不信任的各方在本文中被称为对等体或对等节点。每个对等体维护数据库记录的副本,在分布式对等体之间没有达成共识的情况下,任何单个对等体不能修改数据库记录。例如,对等体可以执行共识协议来校验区块链存储交易,将存储交易分组为块,并在块上构建散列链。为了一致性,该过程通过对存储交易(根据需要)进行排序来形成分类账。在各种实施例中,可以使用许可区块链和/或无许可区块链。在公开区块链或无许可区块链中,任何人都可以参与而无需特定身份。公共区块链通常涉及本地加密货币,并使用基于各种协议(诸如工作量证明(Proof ofWork,PoW)的共识。另一方面,许可区块链数据库提供了实体群组之间的安全交互,这些实体共享共同的目标但彼此不完全信任,诸如交换资金、货物、信息等的企业。
该系统可以利用这样的区块链,该区块链操作适合分散式存储方案并称为“智能合约”或“链码”的任意可编程逻辑。在某些情况下,管理功能和参数可能存在专门的链码,这些链码被称为系统链码。该应用可以进一步利用智能合约,这些智能合约是利用区块链数据库的防篡改属性和节点之间的基础协议的受信任的分布式应用,这被称为背书或背书策略。与此应用相关联的区块链交易可以在提交给区块链之前进行“背书”,而未背书的交易将被忽略。背书策略允许链码以背书所必需的一组对等节点的形式指定交易的背书者。当客户将交易发送到背书策略中指定的对等体时,执行交易以校验交易。在校验之后,交易进入排序阶段,在该阶段中使用共识协议来产生被分组为块的经背书的交易的有序序列。
该系统可以利用作为区块链系统的通信实体的节点。在不同类型的多个节点可以在同一物理服务器上运行的意义上来说,“节点”可以执行逻辑功能。节点被分组在信任域中,并且与以各种方式控制它们的逻辑实体相关联。节点可以包括不同的类型,诸如向背书者(例如,对等体)递交交易调用并向排序服务(例如,排序节点)广播交易提议的客户端或递交客户端节点。另一种类型的节点是对等节点,其可以接收客户递交的交易、提交交易、并维护区块链交易的分类账的状态和副本。对等体也可以扮演背书者的角色,尽管这不是必需的。排序服务节点或排序者是为所有节点运行通信服务的节点,并且其实施了递送保证,诸如在提交交易和修改区块链的世界状态时向系统中的对等节点中的每一个进行广播,该世界状态是初始区块链交易的另一名称,其通常包括控制和设置信息。
该系统可以利用作为区块链所有状态转换的有序的、防篡改的记录的分类账。状态转换可以由参与者(例如,客户端节点、排序节点、背书者节点、对等节点等)递交的链码调用(即,交易)产生。每个参与者(诸如对等节点)可以维护分类账的副本。交易可以导致一组资产键值对作为一个或多个操作数被提交到分类账,诸如创建、更新、删除等。分类账包括用来在块中存储不可变的、有序的记录的区块链(也称为链)。分类账还包括维护区块链的当前状态的状态数据库。
该系统可以利用这样的链,该链是被构造为散列链接块的交易日志,并且每个块包含一系列N个交易,其中N等于或大于1。块头包括块的交易的散列,以及前一块的块头的散列。以这样的方式,分类账上的所有交易可以是有序的并以密码方式链接在一起。因此,在不破坏散列链接的情况下,不可能篡改分类账数据。最近添加的区块链块的散列表示链上的出现在它之前的每个交易,这使得可以确保所有对等节点处于共识和可信的状态。链可以被存储在对等节点文件系统(即,本地、附接的存储装置、云等)上,有效地支持区块链工作负载的仅附接性质。
不可变分类账的当前状态表示链交易日志中包含的所有键的最新值。由于当前状态代表通道已知的最新键值,因此其有时被称为世界状态。链码调用针对分类账的当前状态数据执行交易。为了使这些链码交互有效,键的最新值可以被存储在状态数据库中。状态数据库可能仅是对链的交易日志的索引视图,因此其可以在任何时候从链中重新生成。状态数据库可以在对等节点启动时以及交易被接受之前自动恢复(或在需要时生成)。
示例实施例提供了一种系统,该系统能够基于存储和更新与实体的输入相关的一些相关统计数据(例如对供应商、医疗记录、游戏信息的评级等),匿名跟踪区块链上的实体(例如供应链参与者、患者、游戏用户等)的行为(并检测异常行为),同时保护实体的隐私。根据各个方面,系统可以为参与区块链的一些实体(例如,供应商)维护Merkle树。每个Merkle树可以包括该实体(例如,供应商)的每个用户(例如,买方)的“活动叶”。
买方的“活动叶”可以存储原像(pre-image)的标准加密散列(例如sha256)值,该值包括(只有买方知道的)秘密(其是随机比特串)、其当前评级总和(编码为比特串)和其当前评级数量(编码为比特串)的级联。因此,买方的匿名活动/行为的累积可以基于总评论数量加上买方提供的所有评级的总和存储在活动叶节点中。因此,可以匿名维护买方的评级历史,而不需要公开买方的身份。
本文描述和描绘的即时解决方案的一些益处包括积累关于区块链的参与者的行为信息的能力,同时仍然保护参与者的隐私。尽管本文描述的示例涉及买方在供应链网络中向卖方提供评论/评级的匿名行为,但是示例实施例不限于此。作为另一示例,可以跟踪区块链的匿名投标。在这个示例中,投标人是匿名的,并且被允许将他们的投标更新到固定的次数。拍卖人可以使用示例实施例来检测投标人的异常出价序列,其中投标人的活动叶存储所进行的投标更新的数量的加密散列,并且零知识证明验证该数量在阈值以下。
作为另一示例,实施例可以用于匿名患者健康监测。在这个示例中,区块链可以维护一个系统来检测患者健康指标数据点序列中的异常。对于每个患者,可以定期测量患者的健康的一些指标,并作为匿名输入发送到系统。在这个示例中,在预定区域以外的数据点(例如,诸如由序列的均值和/或方差描述的数据点等)可以被认为是异常的。这可以使用在示例实施例中描述的系统来检测,其中患者的活动叶存储数据点的数量、当前总和以及当前平方和的加密散列,其足以计算和更新均值和方差。零知识证明可用于确保新数据点在当前均值和方差所描述的区域内。
图1示出了根据示例实施例的包括存储供应链参与者的行为数据的区块链网络100。参考图1,区块链网络100包括区块链120,其存储供应商111和112与买方131、132、133和134之间的供应链数据。例如,区块链120可以存储工作订单、发票、签名文档、数字货物等。尽管图1中未示出,但是区块链120可以由多个对等节点实施,这些对等节点可以包括提交节点、背书者节点、排序者节点等。在一些情况下,一个节点可以履行多个节点角色。
根据各种实施例,实施区块链120的节点可以各自维护智能合约(其是可执行链码)、在节点之间分布/复制的分类账以及存储在分类账上的不可变块链。分类账可以是智能合约可访问的键值存储(key-value store,KVS),智能合约被执行来以编程方式维护和更新分类账上的数据。供应商111和112以及买方131-134可以经由一个或多个可信节点访问区块链120。
根据各种实施例,供应链参与者的行为数据可以经由区块链120匿名存储。例如,在该示例中,由区块链120的节点实施的智能合约可以在分类账中存储和管理作为键值的Merkle树(或其他数据结构),其可以用于匿名存储买方131-134的行为信息。智能合约的执行是包括执行期间访问的键值的读取和写入集的交易。这些集被包括在附接到区块链120上的块链的交易块中。分类账和块链根据共识协议在区块链网络中的每个对等体上被相同地更新。
在本文的示例中,诸如由买方131-134执行的对供应商111-112的评级和评论的行为可以被记录在区块链120的键值存储中的Merkle树上。在一些实施例中,节点可以为每个供应商111和112维护单独的Merkle树,并且每个买方131、132、133和134可以在相应的Merkle树中具有专用的活动叶。为了实施数据的匿名累积,诸如随着时间的推移的评级/评论,节点可以依靠非交互式零知识证明,其中(i)买方(客户)生成证明,以及(ii)智能合约(链码)对照分类账的数据验证证明。零知识证明允许买方递交新的评论信息并废止(nullify)旧的评论信息,同时保护买方的身份。换句话说,新的活动叶是匿名添加(和使用)的。智能合约可以包括API增强,以有效地实现共享匿名数据更新。
当买方131-134和供应商111-112参与供应链活动时,买方可以以匿名方式连续上传关于供应商111-112的评论,以确保供应商111-112都表现良好,并且还确保买方131-134不连续给出负面评论。
图2A示出了根据示例实施例的区块链体系结构配置200。参考图2A,区块链体系结构200可以包括某些区块链元素,例如区块链节点202群组。区块链节点202可以包括一个或多个节点204-210(这四个节点仅通过示例来描绘)。这些节点参与许多活动,诸如区块链交易添加和校验过程(共识)。区块链节点204-210中的一个或多个可以基于背书策略来背书交易,并且可以为体系结构200中的所有区块链节点提供排序服务。区块链节点可以发起区块链认证,并试图写入存储在区块链层216中的区块链不可变分类账,其副本也可以被存储在基础物理基础设施214上。区块链配置可以包括一个或多个应用224,这些应用链接到应用编程接口(application programming interface,API)222以访问和执行所存储的程序/应用代码220(例如,链码、智能合约等),这些应用可以根据参与者寻求的定制配置来创建并且可以维护他们自己的状态、控制他们自己的资产以及接收外部信息。这可以作为交易来部署,并且经由附接到分布式分类账被安装在所有区块链节点204-210上。
区块链基地或平台212可以包括区块链数据、服务(例如,加密信任服务、虚拟执行环境等)的各种层以及基础物理计算机基础设施,该基础物理计算机基础设施可以用于接收和存储新交易,并为寻求访问数据条目的审计员提供访问。区块链层216可以暴露提供对处理程序代码和接合物理基础设施214所必需的虚拟执行环境的访问的接口。加密信任服务218可以用于验证交易(诸如资产交换交易)并保持信息私有。
图2A的区块链体系结构配置可以经由由区块链平台212暴露的一个或多个接口和其提供的服务来处理和执行程序/应用代码220。代码220可以控制区块链资产。例如,代码220可以存储和传递数据,并且可以由节点204-210以智能合约和与受其执行影响的条件或其他代码元素相关联的链码的形式执行。作为非限制性示例,可以创建智能合约来执行提醒、更新和/或经受改变、更新的其他通知等。智能合约本身可以用于标识与认证和访问要求以及分类账的使用相关联的规则。例如,匿名数据226可以由包括在区块链层216中的一个或多个处理实体(例如,虚拟机)来处理。结果228可以包括与匿名数据226相关联地存储在区块链上的Merkle树的新的活动叶数据。物理基础设施214可以用于检索本文描述的任何数据或信息。
智能合约可以经由高级应用和编程语言创建,并且然后被写入区块链的块中。智能合约可以包括向区块链(例如,区块链对等体的分布式网络)注册、存储和/或复制的可执行代码。交易是智能合约代码的执行,其可以响应于与被满足的智能合约相关联的条件而执行。智能合约的执行可以触发对数字区块链分类账的状态的(多个)信任修改。由智能合约执行引起的对区块链分类账的(多个)修改可以通过一个或多个共识协议在整个区块链对等体的分布式网络中自动复制。
智能合约可以以键值对的形式将数据写入区块链。另外,智能合约代码可以读取存储在区块链中的值,并在应用操作中使用它们。智能合约代码可以将各种逻辑操作的输出写入到区块链中。该代码可以用于在虚拟机或其他计算平台中创建临时数据结构。写入到区块链的数据可以是公开的和/或可以被加密和维护为私有的。由智能合约使用/生成的临时数据由所供应的执行环境保存在存储器中,然和一旦标识到区块链所需的数据,就将其删除。
链码可以包括智能合约的代码解释、具有附加功能。如本文所述,链码可以是部署在计算网络上的程序代码,在该计算网络上,该链码在共识过程期间由链校验器一起执行和校验。链码接收散列,并从区块链检索与通过使用先前存储的特征提取器创建的数据模板相关联的散列。如果散列标识符的散列和从存储的标识符模板数据创建的散列匹配,则链码向请求的服务发送授权密钥。链码可以写入与加密细节相关联的区块链数据。
图2B示出了根据示例实施例的区块链的节点之间的区块链交易流250的示例。参考图2B,交易流可以包括由应用客户端节点260发送给背书对等节点281的交易提议291。背书对等体281可以验证客户端签名并执行链码功能来发起交易。输出可能包括链码结果、在链码中读取的一组键/值版本(读取集)、以及在链码中写入的该组键/值(写入集)。如果被批准,提议响应292连同背书签名一起被发送回客户端260。客户端260将背书组装到交易有效载荷293中,并将其广播到排序服务节点284。排序服务节点284然后将排序的交易作为块递送给通道上的所有对等体281-283。在提交到区块链之前,每个对等体281-283可以校验交易。例如,对等体可以检查背书策略,以确保指定对等体的正确分配已经对结果进行签名,并且对照交易有效载荷293认证了签名。
再次参考图2B,客户端节点260通过构造请求并将其发送到作为背书者的对等节点281来发起交易291。客户端260可以包括利用支持的软件开发工具包(softwaredevelopment kit,SDK)的应用,其利用可用的API来生成交易提议。该建议是调用链码函数以便可以读取数据和/或将其写入分类账(即,为资产写入新的键值对)的请求。SDK可以用作小型函数库(shim),以将交易提议打包成适当体系结构的格式(例如,通过远程过程调用(remote procedure call,RPC)的协议缓冲器)并获取客户端的加密凭证来产生用于交易提议的唯一签名。
作为响应,背书对等节点281可以验证(a)交易提议是良好形成的,(b)交易在过去还没有被递交(重放攻击保护),(c)签名是有效的,以及(d)递交者(在示例中是客户端260)被适当授权以在该通道上执行提议的操作。背书对等节点281可以将交易提议输入作为调用的链码函数的参量。然后,针对当前状态数据库执行链码,以产生包括响应值、读取集和写入集的交易结果。但是,此时不会对分类账进行更新。在292中,该组值连同背书对等节点281的签名作为提议响应292被传回客户端260的SDK,该客户端260解析应用要消费的有效载荷。
作为响应,客户端260的应用审查/验证背书对等体签名,并比较提议响应以确定提议响应是否相同。如果链码仅查询分类账,则应用将审查查询响应,并且通常不会将交易递交给排序节点服务284。如果客户端应用旨在将交易递交给排序节点服务284以更新分类账,则该应用确定在递交之前是否已满足指定的背书策略(即,交易所需的所有对等节点是否背书了交易)。这里,客户端可以只包括交易的多方中的一个。在这种情况下,每个客户端可能具有自己的背书节点,并且每个背书节点需要背书交易。该体系结构使得即使应用选择不审查响应或以其他方式转发未背书的交易,背书策略仍将由对等体强制实施并在提交校验阶段得到支持。
在成功审查之后,在步骤293中,客户端260将背书组装到交易中,并在交易消息中向排序节点284广播交易提议和响应。该交易可以包含读取/写入集、背书对等体签名和通道ID。排序节点284不需要为了执行其操作而审查交易的全部内容,而是排序节点284可以简单地从网络中的所有通道接收交易、按通道按时间顺序对它们进行排序、并且创建每个通道的交易块。
交易块从排序节点284递送到通道上的所有对等节点281-283。块内的交易294被校验,以确保满足任何背书策略,并确保自交易执行生成读取集以来,读取集变量的分类账状态没有变化。块中的交易被标记为有效或无效。另外,在步骤295中,每个对等节点281-283将块附接到通道的链,并且对于每个有效交易,写入集被提交到当前状态数据库。发出事件以通知客户端应用交易(调用)已经不可变地附接到链,以及通知交易是经校验的还是未校验的。
图3A示出了许可区块链网络300的示例,其特征在于分布式、分散式对等体系结构。在该示例中,区块链用户302可以发起到许可区块链304的交易。在该示例中,交易可以是部署、调用或查询,并且可以通过利用SDK的客户端侧应用、直接通过API等来发布。网络可以为监管者306(诸如审计员)提供访问。区块链网络运营商308管理成员许可,诸如将监管者306登记为“审计员”以及将区块链用户302注册为“客户端”。审计员仅限于查询分类账,而客户端可以被授权部署、调用和查询某些类型的链码。
区块链开发者310可以写入链码和客户端侧应用。区块链开发者310可以通过接口将链码直接部署到网络。为了在链码中包括来自传统数据源312的凭证,开发者310可以使用带外连接来访问数据。在该示例中,区块链用户302通过对等节点314连接到许可区块链304。在进行任何交易之前,对等节点314从管理用户角色和许可的证书授权机构316检索用户的登记和交易证书。在某些情况下,区块链用户必须拥有这些数字证书,以便在许可区块链304上进行交易。同时,试图利用链码的用户可能需要在传统数据源312上验证他们的凭证。为了确认用户的授权,链码可以通过传统的处理平台318对该数据使用带外连接。
图3B示出了许可区块链网络320的另一示例,其特征在于分布式、分散式对等体系结构。在该示例中,区块链用户322可以向许可区块链324递交交易。在该示例中,交易可以是部署、调用或查询,并且可以通过利用SDK的客户端侧应用、直接通过API等来发布。网络可以为监管者326(诸如审计员)提供访问。区块链网络运营商328管理成员许可,诸如将监管者326登记为“审计员”以及将区块链用户322注册为“客户端”。审计员仅限于查询分类账,而客户端可以被授权部署、调用和查询某些类型的链码。
区块链开发者330写入链码和客户端侧应用。区块链开发者330可以通过接口将链码直接部署到网络。为了在链码中包括来自传统数据源332的凭证,开发者330可以使用带外连接来访问数据。在该示例中,区块链用户322通过对等节点334连接到网络。在进行任何交易之前,对等节点334从证书授权机构336检索用户的登记和交易证书。在某些情况下,区块链用户必须拥有这些数字证书,以便在许可区块链324上进行交易。同时,试图利用链码的用户可能需要在传统数据源332上验证他们的凭证。为了确认用户的授权,链码可以通过传统的处理平台338对该数据使用带外连接。
根据示例实施例,图4A示出了向存储在区块链401(图4B所示)上的区块链结构410(图4A所示)添加新的活动叶节点的过程400,并且图4B示出了根据示例实施例由区块链参与者431调用新的活动叶节点411B的过程430。在图4A的示例中,区块链结构是Merkle树410,其包括第一状态410A(也称为当前状态)和第二状态410B(也称为更新状态),其中添加了新的活动叶节点411B,并且当前活动叶节点411A被匿名地废止。在图4A的示例中,示出了三个活动叶节点411、412和413,它们对应于供应商的三个匿名买方。
如本文所述,Merkle树是可包括深度d的二叉树,其中该树是深度d的完整二叉树。在这种情况下,每个叶节点存储可表示为固定长度的比特串的数据。以该顺序,树中每个内部节点处的值可以是左和右子节点的值的级联的加密散列(例如,sha256等)。在本文的示例中,空Merkle树可以被初始化,其所有叶节点被设置为一些默认值,例如全零比特串。以从左到右的顺序,添加任何新的活动叶来代替下一可用的未使用(即,具有默认值)叶节点,并且更新从添加的叶节点到包括根节点的路径上的节点的值。例如,对于图1的示例中的每个买方,第一活动叶被添加并设置到初始原像的标准加密散列,该标准加密散列具有秘密(仅相应的买方知道)随机比特串、零评级总和(编码为比特串)和评级数量为零(编码为比特串)。Merkle树可以存储在区块链上,作为对应于智能合约的分类账的一部分。在空Merkle树中,相同深度的所有节点具有相同的值。因此,为了提高存储器效率,只显式存储那些与空Merkle树中的对应节点不同的节点的值。
如本文的示例中所描述的,每个活动叶可以存储或以其他方式包括参与者(诸如图1的示例中的买方)的匿名行为数据。在本文的示例中,智能合约为每个供应商维护Merkle树,其包含该供应商的每个买方的“活动叶”。在买方的“活动叶”中维护的属性可以包括以下原像的标准加密散列(sha256)值:(i)秘密(只有买方知道)随机比特串、(ii)其当前评级总和(编码为比特串)、以及(iii)其当前评级数量(编码为比特串)的级联。在图4B的示例中,当前活动叶节点411A包括这些相应的属性。
当买方想要添加供应商的新的评级时,买方可以调用区块链401的智能合约。在图4B的示例中,匿名系统431(诸如图1所示的买方131-134之一)可以请求向供应商更新买方的活动叶。在图4B的示例中,匿名系统431与叶节点411A相关联,并上传包括新的活动叶节点411B的请求432。当买方(匿名系统431)调用智能合约来提供新的评级(请求432)时,买方提供新的活动叶411B,其包含以下新的原像的标准加密散列值:(i)新的秘密随机比特串(只有买方知道)、(ii)更新的评级总和、以及(iii)更新的评级数量的级联。此外,买方提供现有活动叶411A的废止器(nullifier),该废止器是现有活动叶411A的原像的不同的、不可链接的加密散列(例如,具有非标准初始化向量的sha256)。此外,买方提供零知识证明(zero-knowledge proof,ZKP),以及他希望递交的评级。
根据各种实施例,ZKP可以示出提供的废止器确实是Merkle树中现有活动叶的废止器,由当前评级总和和当前评级数量的比率给出的当前平均评级至少为给定的阈值(该检查检测异常行为),并且新的活动叶值是在411B中给出的新的原像的标准加密散列,使得更新的评级总和是(ii)中的现有活动叶的评级总和加上所提供的评级,并且更新的评级数量是(iii)中的现有活动叶的评级数量加1。
智能合约可以验证新提供的废止器未使用,从而确保买方必须仅废止当前活动叶411A,并进一步验证以上提供的零知识证明。如果检查和验证通过,评级的列表用所提供的评级来更新,新的活动叶411B被添加到Merkle树,并且所提供的废止器被存储并标记为已使用。请注意,在以上过程中,由于验证处于零知识状态,因此不会透露哪个当前活动叶被废止。唯一的保证是Merkle树中的一些活动叶被废止。由于供应商有多个买方,每个买方都有活动叶,因此不会透露提供评级的特定买方的身份。
在第二状态410B中,现有的活动叶411A被废止并停留在其位置,并且与相同的匿名用户相关联的新的活动叶411B被添加来从左到右地代替第一默认/空叶。在这种情况下,默认叶表示该叶节点当前具有一些默认值,并且还没有用于存储任何信息。因此,在第二状态410B中,叶L1 411A保持在原位并被标记为废止。添加新的活动叶L1 411B来代替默认值。
用于零知识证明创建的算法可以是开源实施的ZKSnarks。使用包括的小工具,零知识证明的谓词(predicate)可以在libsnark中实施,以生成证明和验证可执行文件(proving and verification executable)以及相应的证明和验证密钥。买方具有证明可执行文件和密钥。如上所述,买方计算新的活动叶和当前活动叶的废止器。为了生成证明,买方调用智能合约来查询从当前活动叶到根的路径上的兄弟节点的值。
然后,买方可以使用libsnark证明可执行文件和具有以下输入值的密钥(在区块链/智能合约以外)来私密地生成期望的零知识证明:包括从当前活动叶到根的路径上的兄弟节点上的值的认证路径、当前活动叶的原像的组分(例如,秘密随机比特串、当前评级总和和当前评级数量)、要提供的新的评级、以及新的活动叶的原像的新的秘密随机串。输出是零知识证明,可以通过区块链401上的智能合约进行验证。
同样,当到了验证ZKP的时间,智能合约从买方接收新的评级、当前活动叶的废止器、新的活动叶和零知识证明。智能合约可以读取Merkle树根的值,并运行libsnark验证可执行文件以及具有以下输入值的验证密钥:新的评级、当前活动叶的废止器和新的活动叶、Merkle树根值以及零知识证明。
上述可执行文件的输出是一个真/假值,指示是否验证了零知识证明,以证明提供的废止器确实是Merkle树中现有活动叶的废止器,由当前评级总和与当前评级数量之比给出的当前平均评级至少是给定的阈值(该检查检测异常行为),并且新的活动叶值是新原像的标准加密散列。智能合约可以由区块链401的背书对等体执行,该背书对等体具有libsnark验证可执行文件以及智能合约可访问的验证密钥。在这些示例中,智能合约不知道当前活动叶被正在废止。由于废止器不可链接到活动叶,并且验证处于零知识状态,因此智能合约不会获得关于当前活动叶被废止的任何信息,从而保护了买方的隐私。
例如,智能合约可以在背书对等体上执行,以验证由买方提供的零知识证明,该买方调用智能合约来匿名添加对供应商的评级。背书对等体具有libsnark验证可执行文件以及智能合约可访问的验证密钥。零知识证明验证是由代表供应商的智能合约完成的,供应商保证将检测到买方的异常(行为)评级,同时保护买方的隐私。
如果成功,则由智能合约执行包括Merkle树更新、存储评级和废止器等的预期操作,这涉及更新区块链401的分类账中的多个键值。包括读取和写入集的相应的经背书的交易由对等体创建,并根据块链协议发送,以记录在区块链401上的块中。所有区块链对等体的分类账中的键值都以相同的方式更新。
图4C示出了根据示例实施例的管理队列450的过程440,该过程440经由区块链分类账实施,并且可以用于防止存储冲突。在本文描述的Merkle树(或其他共享或联合存储结构)中,单个调用交易使用当前活动叶,并为买方添加新的活动叶。这可以使用零知识证明匿名完成。但是,当多个买方(或其他用户)在相同索引处添加新叶时,同时调用使用/添叶(use/add-leaf)交易时,可能会出现问题。这种同时调用会导致读取/写入冲突(参考Hyperledger Fabric v1),因此在每个块中最多一个添加叶是可能的。当添加叶操作是非匿名的时,可以通过收集新叶并将它们添加到一个聚合交易中来解决冲突。然而,这在匿名数据存储中是不可能的,因为隐私是被保护的。尽管针对Merkle树进行了描述,但是当使用任何类型的可由多方匿名修改的共享数据结构时,存储冲突自然会在其他零知识证明范例中出现。
为了解决这种情况,区块链对等节点460(智能合约)可以在分布式区块链分类账内实施队列450,其中新的活动叶节点(例如,节点411B、413B、417C和415B)可以被临时存储,并且随后响应于刷新操作被添加到Merkle树410。一旦验证了ZK证明,就存储了废止器,并且添加了评级,除了其值之外,添加新的活动叶不需要附加的信息。对等节点460可以将新的活动叶的集合存储在队列450中,然后可以在单个交易中将它们分别添加在一起。
智能合约应用程序编程接口(API)框架可以支持特殊的BufferKey操作,该操作模拟串值的先进先出(first-in-first-out,FIFO)队列450。可以使用各种操作来操纵队列450(或缓冲器),包括将特定键串定义为具有可选的最大缓冲器大小的缓冲器键的DefineBufferKey操作(例如,DefineBufferKey(“Supplier1~MT1~LeafBuf”,50))。API框架还可以支持将值附接到队列450的末端的BufPush操作。在背书阶段,生成对应的(BufferKey,值)写入集对。在分类账上的块提交期间,BufferKey的值将以块中交易的顺序附接,例如,BufPush(“Supplier1~MT1~LeafBuf”,“1234”)。API框架可能还支持BufFlush操作,该操作将迭代器返回到BufferKey中的值,并且在提交阶段刷新队列。交易不能同时具有相同键的BufPush和BufFlush。背书包括特殊的刷新集中(例如BufFlush(“Supplier1~MT1~LeafBuf”))的BufferKey。
因此,当多个买方试图同时在Merkle树上进行添加叶操作时,队列450和支持的推入(push)和刷新操作可以防止潜在的冲突问题。这是由于共同的数据结构,诸如Merkle树,可由多方(如买方)匿名修改。智能合约API中的诸如BufferKey以及DefineBufferKey、BufPush和BufFlush操作等的操作可用于模拟在区块链分类账中本地实施的FIFO队列。
使用这种增强,在添加叶操作中,智能合约可以使用BufPush操作将新的活动叶推入到预定义的BufferKey上。定期性地,指定方调用通过要添加的活动叶进行迭代的BufFlush操作(例如,指定对等体的链码等),并将它们添加到Merkle树410。因此,示例实施例可以实施基于零知识证明经由Merkle树存储匿名数据的智能合约方法,用于区块链上的隐私保护异常行为检测,以及将BufferKey结合到API和块链分类账系统的增强,用于有效实施Merkle树/零知识证明方法以最小化冲突。请注意,以上冲突问题出现在区块链网络中,在该网络中,交易被执行、排序然后提交,诸如Hyperledger Fabric v1,并且以上描述的增强适用于这种区块链网络。
图5A示出了根据示例实施例的更新区块链结构上的匿名行为的方法510。参考图5A,在511中,该方法可以包括经由区块链存储装置来存储树结构。例如,树结构可以包括Merkle树、二叉树、非二叉树等。匿名行为数据可以包括存储在分层结构中的多个节点中的、多个区块链参与者的匿名行为。在一些实施例中,树结构可以包括分别存储多个区块链参与者的匿名行为数据的多个活动叶节点,其不透露多个区块链参与者的身份。匿名行为可能涉及内容提供者的身份。例如,匿名行为可能不标识与该行为相关联的公钥、网络地址、名称、设备ID、电子邮件地址、用户名等。
在512中,该方法可以包括接收向树结构添加新的匿名行为数据的请求。例如,该请求可以包括由区块链参与者生成的零知识证明、区块链参与者的先前活动叶的废止器、新的活动叶(匿名数据)等。例如,零知识证明可以包括只有区块链参与者知道的随机串,该随机串可以用于验证新的活动叶节点及其内容的各种属性,而不透露区块链参与者的身份。在一些实施例中,该方法还可以包括基于树结构的根值、零知识证明和新的匿名行为的匿名属性来验证新的匿名行为的有效性。
在513中,该方法可以包括基于零知识证明来标识树结构上的、存储与请求相关联的区块链参与者的先前记录的匿名行为数据的活动叶。在514中,该方法可以包括基于新的匿名行为数据和先前记录的匿名行为生成区块链参与者的新的活动叶。这里,新的活动叶可以用于替换当前活动叶。在一些实施例中,该方法还可以包括响应于接收到新的匿名行为数据,用新的活动叶来废止树结构上的所标识的活动叶。在515中,该方法可以包括将新的活动叶作为叶节点存储在区块链存储装置中的树结构上。
在一些实施例中,树结构可以包括经由区块链存储装置的键值存储来存储的Merkle树,并且Merkle树可以包括区块链的每个参与者的相应的活动叶节点。在一些实施例中,匿名行为数据可以包括由区块链参与者递交的匿名评论。在一些实施例中,该方法还可以包括在将新的活动叶存储在树结构上之前,基于零知识证明背书新的活动叶。
图5B示出了根据示例实施例的经由区块链分类账管理队列的方法520。这里,队列可用于防止当多个参与者试图同时向区块链存储结构添加内容时发生冲突。参考图5B,在521中,该方法可以包括接收向在区块链数据库上实施的区块链存储结构添加内容的内容请求。例如,内容请求可以包括在共享区块链存储结构(诸如二叉树、Merkle树等)上存储新节点(例如,活动叶节点等)的请求。在一些实施例中,内容请求可以包括不透露内容创建者的身份的匿名内容。这里,区块链存储结构可以存储多个内容创建者的匿名内容。
在522中,该方法可以包括基于何时接收到内容请求,将该请求的内容临时存储在经由区块链数据库实施的队列中。该队列可以经由分布式分类账来实施,并由在与区块链的对等节点上执行的智能合约来控制。在一些实施例中,队列可以包括先进先出(FIFO)队列,该队列经由执行区块链数据库的智能合约(链码)来实施。在523中,该方法可以包括接收由链码调用的刷新队列的请求。响应于刷新请求,在524中,该方法可以包括从队列中移除内容并将该内容添加到区块链存储结构中。例如,移除可以包括将内容从FIFO队列的末端推入到存储在区块链数据库上的树结构上的新节点。
在一些实施例中,接收可以包括接收将多条内容添加到区块链存储结构的多个内容请求,并且临时存储可以包括将每条内容临时存储为队列中的相应条目。这里,内容可以包括要作为活动叶节点添加到Merkle树的新叶节点。队列中的节点可以基于它们何时被接收来排序,以便确保正确的时间顺序。在一些实施例中,移除可以包括将内容添加到经由区块链数据库实施的Merkle树存储结构上的活动叶节点。在一些实施例中,Merkle树存储结构可以被维护在区块链数据库的键值存储(KVS)内。
图6A示出了示例系统600,其包括被配置为根据示例实施例执行各种操作的物理基础设施610。参考图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。
上述实施例可以以硬件、以由处理器执行的计算机程序、以固件或以上述的组合来实施。计算机程序可以实现在计算机可读介质上,诸如存储介质。例如,计算机程序可以驻留在随机存取存储器(“random access memory,RAM”)、闪存、只读存储器(“read-onlymemory,ROM”)、可擦除可编程只读存储器(“erasable programmable read-only memory,EPROM”)、电可擦除可编程只读存储器(“electrically erasable programmable read-only memory,EEPROM”)、寄存器、硬盘、可移动磁盘、光盘只读存储器(“compact diskread-only memory,CD-ROM”)或本领域已知的任何其他形式的存储介质中。
示例性存储介质可以耦合到处理器,使得处理器可以从存储介质读取信息和向存储介质写入信息。在替代性方案中,存储介质可以集成到处理器中。处理器和存储介质可以驻留在专用集成电路(“application specific integrated circuit,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和分布式分类账722的当前状态可以被存储在状态数据库724中。这里,当前状态数据表示区块链722的链交易日志中曾经包括的所有键的最新值。链码调用针对状态数据库724中的当前状态执行交易。为了使这些链码交互非常有效,所有键的最新值被存储在状态数据库724中。状态数据库724可以包括对区块链722的交易日志的索引视图,因此它可以在任何时候从链中重新生成。在交易被接受之前,状态数据库724可以在对等体启动时自动恢复(或者如果需要的话生成)。
背书节点从客户端接收交易,并基于模拟的结果背书交易。背书节点保存模拟交易提议的智能合约。当背书节点背书交易时,背书节点创建交易背书,该交易背书是从背书节点到客户端应用的、指示对模拟交易的背书的签名响应。背书交易的方法取决于可在链码中指定的背书策略。背书策略的示例是“大多数背书对等体必须背书交易”。不同通道可以具有不同的背书策略。客户端应用将背书的交易转发给排序服务710。
排序服务710接受背书的交易、将它们排序到块中、并将这些块递送给提交对等体。例如,排序服务710可以在已经达到交易阈值、定时器超时或其他条件时发起新块。在图7A的示例中,区块链节点712是提交对等体,该提交对等体已经接收到新数据块730,以用于存储在区块链720上。区块链中的第一块可以被称为创世块,其包括关于区块链、其成员、存储在其中的数据等的信息。
排序服务710可以由一群排序者构成。排序服务710不处理交易、智能合约或维护共享分类账。而是,排序服务710可以接受背书的交易,并指定这些交易被提交给分布式分类账720的顺序。区块链网络的体系结构可以被设计成使得“排序”的实现(例如,Solo、Kafka、BFT等)成为可插拔组件。
交易以共识的顺序被写入分布式分类账720。建立交易的顺序,以确保对状态数据库724的更新在它们被提交给网络时是有效的。与通过解决加密难题或挖矿进行排序的加密货币区块链系统(如比特币等)不同,在该示例中,分布式分类账720的各方可以选择最适合该网络的排序机制。
当排序服务710初始化新数据块730时,新数据块730可以被广播给提交对等体(例如,区块链节点711、712和713)。作为响应,每个提交对等体通过检查以确保读取集和写入集仍然匹配状态数据库724中的当前世界状态来校验新数据块730内的交易。具体地,提交对等体可以确定当背书者模拟交易时存在的读取数据是否与状态数据库724中的当前世界状态相同。当提交对等体校验交易时,交易被写入分布式分类账720上的区块链722,并且状态数据库724用来自读取写入集的写入数据更新。如果交易失败,也就是说,如果提交对等体发现读取写入集与状态数据库724中的当前世界状态不匹配,则排序到块中的交易仍将被包括在该块中,但是它将被标记为无效,并且状态数据库724将不被更新。
参考图7B,存储在分布式分类账720的区块链722上的新数据块730(也称为数据块)可以包括多个数据段,诸如块头740、块数据750和块元数据760。应当理解的是,图7B中示出的各种所描绘的块及其内容(诸如新数据块730及其内容)仅仅是示例,并不意味着限制示例实施例的范围。新数据块730可以将N(例如,1、10、100、500、1000、2000、3000等)个交易的交易信息存储在块数据750内。新数据块730还可以在块头740内包括到先前块(例如,在图7A中的区块链722上)的链接。特别地,块头740可以包括先前块的块头的散列。块头740还可以包括唯一的块编号、新数据块730的块数据750的散列等。新数据块730的块编号可以是唯一的,并以各种顺序分配,诸如从零开始的增量/有序顺序。
块数据750可以存储记录在新数据块730内的每个交易的交易信息。例如,交易数据可以包括以下中的一个或多个:交易类型、版本、时间戳、分布式分类账720的通道ID、交易ID、时段、有效载荷可见性、链码路径(部署tx)、链码名称、链码版本、输入(链码和函数)、客户端(创建者)标识(诸如公钥和证书)、客户端的签名、背书者的身份、背书者签名、提议散列、链码事件、响应状态、名称空间、读取集(由交易读取的键和版本的列表)、写入集(键和值的列表等)、开始键、结束键、键列表、Merkel树查询概要等。可以针对N个交易中的每一个存储交易数据。
在一些实施例中,块数据750还可以存储匿名数据752,诸如较大用户组内的用户的匿名活动、行为、参与等。这样,块数据750包括附加信息,该附加信息被添加到区块链722中的块的散列链接的链。例如,附加信息可以包括包含各种来源的匿名数据752的Merkle树(或其他结构)。匿名数据752可以包括仅由数据的递交知道的秘密、行为的累积、Merkle树上的多个条目等。因此,匿名数据752可以经由包括在分布式分类账720中的键值存储被存储在不可变的分类账中。存储这种匿名数据752的一些益处反映在本文公开和描述的各种实施例中。尽管在图7B中匿名数据752被描绘在块数据750中,但是它也可以位于块头740或块元数据760中,或者除了区块链之外的分布式分类账的其他区域中,诸如键值存储、世界状态数据库等。
块元数据760可以存储多个元数据字段(例如,作为字节数组等)。元数据字段可以包括块创建时的签名、对最新配置块的引用、标识块内有效和无效交易的交易过滤器、保持对块进行排序的排序服务的最新偏移等。签名、最新的配置块和排序者元数据可以由排序服务710添加。同时,块的提交者(诸如区块链节点712)可以基于背书策略、读取/写入集的验证等来添加有效性/无效性信息。交易过滤器可以包括大小等于块数据750中的交易的数量的字节数组和标识交易是否有效/无效的校验码。
图7C示出了根据本文描述的实施例的用于数字内容的区块链770的实施例。数字内容可以包括一个或多个文件和相关联的信息。文件可以包括媒体、图像、视频、音频、文本、链接、图形、动画、网页、文档或其他形式的数字内容。区块链的不可变的、仅附接方面用作保护数字内容的完整性、有效性和真实性的安全措施,使其适合在可接受性规则在其中适用的法律诉讼中或者在其中考虑证据或其中数字信息的呈现和使用另外地是令人感兴趣的其他环境中使用。在这种情况下,数字内容可以被称为数字证据。
区块链可以通过多种方式形成。在一个实施例中,数字内容可以包括在区块链本身中并从区块链本身进行访问。例如,区块链的每个块可以沿着相关联的数字内容存储引用信息的散列值(例如,头、值等)。散列值和相关联的数字内容然后可以一起被加密。因此,可以通过解密区块链中的每个块来访问每个块的数字内容,并且每个块的散列值可以用作引用先前块的基础。
这可以说明如下:
Figure BDA0002470898190000231
在一个实施例中,数字内容可以不包括在区块链中。例如,区块链可以存储没有任何数字内容的每个块的内容的加密散列。数字内容可以与原始文件的散列值相关联地存储在另一存储区域或存储器地址中。另一存储区域可以是用于存储区块链的相同存储设备,或者可以是不同的存储区域,或者甚至是分离关系的数据库。每个块的数字内容可以通过获得或查询感兴趣的块的散列值,并且然后在存储区域中查找该散列值来引用或访问,该散列值与实际数字内容相对应地存储。该操作可以由例如数据库网守来执行。这可以说明如下:
Figure BDA0002470898190000241
在图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所示),以建立可审计和不可变的监管链。
其他块中的头7722至772N中的每一个还可以包括其他信息,例如版本号、时间戳、随机数、根信息、难度级别、共识协议和/或与相对应的文件和/或区块链总体相关联的其他参数或信息。
其他块中的文件7742至774N可以与原始文件相同,或者可以是创世块中的原始文件的修改版本,这取决于例如所执行的处理的类型。所执行的处理类型可能在块之间不同。该处理可以包括例如对先前块中的文件的任何修改,诸如编辑信息或以其他方式改变文件的内容、从文件中取走信息或向文件添加或附接信息。
附加地或者可替换地,该处理可以仅涉及从先前块复制文件、改变文件的存储位置、分析来自一个或多个先前块的文件、将文件从一个存储装置或存储器位置移动到另一存储装置或存储器位置、或者执行与区块链的文件和/或其相关联的元数据相关的动作。涉及分析文件的处理可以包括例如附接、包括或以其他方式关联各种分析、统计或与文件相关联的其他信息。
其他块中的其他块7762至776N中的每一个中的值是唯一的值,并且由于所执行的处理而全部不同。例如,任何一个块中的值对应于先前块中的值的更新版本。更新反映在分配了该值的块的散列中。因此,块的值提供了在块中执行什么处理的指示,并且还允许通过区块链向后到原始文件的跟踪。这一追踪证实了整个区块链上的文件监管链。
例如,考虑这样的情况,其中为了保护文件中示出的人的身份,在先前块中的文件部分被编辑、屏蔽或像素化。在这种情况下,包括经编辑的文件的块将包括与经编辑的文件相关联的元数据,例如,如何执行编辑、谁执行了编辑、(多个)编辑发生的时间戳等。元数据可以被散列以形成值。因为块的元数据不同于被散列以形成先前块中的值的信息,所以这些值彼此不同,并且在解密时可以被恢复。
在一个实施例中,当以下中的任何一个或多个发生时,可以更新先前块的值(例如,计算新的散列值)以形成当前块的值。在该示例实施例中,可以通过散列下面提到的信息中的全部或部分来计算新的散列值。
a)如果文件已经以任何方式被处理(例如,如果文件被编辑、复制、更改、访问或采取了一些其他动作)的新SHA-2计算的散列值
b)文件的新存储位置
c)被标识为与文件相关联的新元数据
d)将文件的访问或控制从一个区块链参与者转移到另一区块链参与者
图7D示出了根据一个实施例的可以表示区块链790中的块的结构的块的实施例。块Blocki包括头772i、文件774i和值776i
头772i包括先前块Blocki-1的散列值和附加引用信息,该附加引用信息例如可以是本文讨论的任何类型的信息(例如,包括引用、特性、参数等的头信息)。所有块引用先前块的散列,当然除了创世块。先前块的散列值可以只是先前块中的头的散列,或者是先前块中的信息(包括文件和元数据)中的全部或部分的散列。
文件774i依次包括多个数据,诸如Data 1、Data 2、…、Data N。数据用描述与数据相关联的内容和/或特性的元数据Metadata 1、Metadata 2、…、Metadata N来标记。例如,每个数据的元数据可以包括指示数据的时间戳、处理数据的信息、指示数据中描绘的人或其他内容的关键词、和/或可以有助于整体建立文件的有效性和内容的其他特征,以及特别是其使用数字证据,例如,如结合下面讨论的实施例所述。除了元数据之外,每个数据都可以用对先前数据的引用REF1、REF2、…、REFN来标记,以防止篡改、文件中的间隙以及通过文件的顺序引用。
一旦元数据被分配给数据(例如,通过智能合约),元数据就不能在没有散列改变的情况下被改变,这样可以被容易地标识为无效。因此,元数据创建了可以被访问以便由参与者在区块链中使用的信息的数据日志。
值776i是散列值或基于先前讨论的任何类型的信息计算的其他值。例如,对于任何给定的块Blocki,该块的值可以被更新以反映对该块执行的处理,例如,新的散列值、新的存储位置、相关联的文件的新的元数据、控制或访问的转移、标识符或要被添加的其他动作或信息。尽管每个块中的值被示出为与文件和头的数据的元数据分离,但是在另一实施例中,该值可以部分或全部地基于该元数据。
一旦区块链770形成,则在任何时间点,可以通过在块上向区块链查询值的交易历史来获得文件的不可变的监管链。该查询或跟踪程序可以从解密最近包括的块(例如,最新(第N个)块)的值开始,并且然后继续解密其他块的值,直到到达创世块并且恢复原始文件。解密也可以涉及在每个块处解密头和文件以及相关联的元数据。
解密是基于每个块中发生的加密类型来执行的。这可能涉及使用私钥、公钥或公钥-私钥对。例如,当使用非对称加密时,区块链参与者或网络中的处理器可以使用预定算法生成公钥和私钥对。公钥和私钥通过某种数学关系相互关联。公钥可以公开地分布以用作从其他用户接收消息的地址,例如,IP地址或家庭地址。私钥被保持为是秘密的,并且用于对发送给其他区块链参与者的消息进行数字签名。签名包含在消息中,使得接收方可以使用发送者的公钥进行验证。这样,接收方可以确定只有发送者可能发送此消息。
生成密钥对可能类似于在区块链上创建账户,但实际上不必在任何地方注册。而且,在区块链执行的每一个交易由发送者使用其私钥进行数字签名。此签名确保只有账户的所有者才能跟踪和处理(如果在由智能合约确定的许可范围内)区块链的文件。
图8示出了支持本文描述和/或描绘的示例实施例中的一个或多个的示例系统800。系统800包括计算机系统/服务器802,其可与许多其他通用或专用计算系统环境或配置一起操作。适用于与计算机系统/服务器802一起使用的众所周知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户机、胖客户机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子设备、网络PC、小型计算机系统、大型计算机系统以及包括上述任何系统或设备的分布式云计算环境等。
计算机系统/服务器802可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般上下文中描述。一般而言,程序模块可以包括执行特定任务或实施特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器802可以在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理设备来执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
如图8所示,云计算节点800中的计算机系统/服务器802以通用计算设备的形式示出。计算机系统/服务器802的组件可以包括但不限于一个或多个处理器或处理单元804、系统存储器806以及将包括系统存储器806的各种系统组件耦合到处理器804的总线。
总线表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。在一个实施例中,系统存储器906实现其他附图的流程图。系统存储器806可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)810和/或高速缓存存储器812。计算机系统/服务器802可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统814可以用于读写不可移动的、非易失性磁介质(图中未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线相连。存储器80可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本申请各实施例的功能。
具有一组(至少一个)程序模块818的程序/实用工具816,可以存储在例如存储器806中,通过示例但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块818通常执行本申请所描述的实施例中的功能和/或方法。
如本领域技术人员将理解的那样,本申请的各方面可以被实现为系统、方法或计算机程序产品。因此,本申请的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)、或结合软件和硬件方面的实施例的形式,它们在本文中全部可以统称为“电路”、“模块”或“系统”。另外,本申请的各方面可以采取被实现在其上包含有计算机可读程序代码的一个或多个计算机可读介质中的计算机程序产品的形式。
计算机系统/服务器802也可以与一个或多个外部设备820(例如键盘、指向设备、显示器822等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器802交互的设备通信,和/或与使得该计算机系统/服务器802能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口824进行。并且,计算机系统/服务器802还可以通过网络适配器826与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器826通过总线与计算机系统/服务器802的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器802使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
尽管系统、方法和非暂时性计算机可读介质中的至少一个的示例性实施例已经在附图中示出并在前面的详细描述中描述,但是应当理解的是,本申请不限于所公开的实施例,而是能够进行由所附权利要求所阐述和定义的许多重新排列、修改和替换。例如,各种附图的系统的能力可以由本文描述的模块或组件中的一个或多个来执行,或者在分布式体系结构中执行,并且可以包括发射器、接收器或发射器和接收器两者的对。例如,由各个模块执行的功能中的全部或部分可以由这些模块中的一个或多个执行。进一步,本文描述的功能可以在模块或组件内部或外部在不同时间以及与不同事件相关地执行。而且,在各种模块之间发送的信息可以经由数据网络、互联网、语音网络、互联网协议网络、无线设备、有线设备和/或经由多个协议中的至少一个在模块之间发送。而且,由任何模块发送或接收的消息可以直接和/或经由其他模块中的一个或多个发送或接收。
本领域技术人员将理解,“系统”可以被实现为个人计算机、服务器、控制台、个人数字助理(personal digital assistant,PDA)、蜂窝电话、平板计算设备、智能手机或任何其他合适的计算设备、或设备的组合。将上述功能呈现为由“系统”执行并不旨在以任何方式限制本申请的范围,而是旨在提供许多实施例的一个示例。实际上,本文公开的方法、系统和装置可以以符合计算技术的本地化和分布式形式来实施。
应当注意的是,本说明书中描述的系统特征中的一些已经被呈现为模块,以便更具体地强调它们的实现独立性。例如,模块可以被实施为硬件电路,该硬件电路包括定制的超大规模集成(very large-scale integration,VLSI)电路或门阵列、现成半导体(诸如逻辑芯片、晶体管或其他分立元件)。模块也可以在可编程硬件设备中实施,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备、图形处理单元等。
模块也可以至少部分地在软件中实施,以便于由各种类型的处理器执行。可执行代码的被标识的单元可以例如包括计算机指令的一个或多个物理或逻辑块,其可以例如被组织为对象、程序或功能。然而,被标识的模块的可执行程序不需要物理上位于一起,而是可以包括存储在不同位置的不同指令,当这些指令在逻辑上结合在一起时包括该模块并实现该模块的所陈述的目的。进一步,模块可以被存储在计算机可读介质上,该介质可以是例如硬盘驱动器、闪存设备、随机存取存储器(RAM)、磁带或用于存储数据的任何其他这样的介质。
实际上,可执行代码的模块可以是单个指令或许多指令,甚至可以分布在几个不同的代码段上、不同的程序之间以及分布几个存储器设备上。类似地,操作数据在本文中可以在模块中被标识和示出,并且可以以任何合适的形式被实现,并且被组织在任何合适类型的数据结构中。操作数据可以作为单个数据集来收集,或者可以分布在不同的位置上,包括在不同的存储设备上,并且可以至少部分地仅仅作为电子信号存在于系统或网络上。
容易理解的是,如本文附图中总体地描述和示出的那样,本申请的组件可以以各种不同的配置来排列和设计。因此,实施例的详细描述并不旨在限制所要求保护的应用的范围,而是仅仅代表所选择的应用的实施例。
本领域的普通技术人员将容易理解,可以用处于不同顺序的步骤和/或用于处于不同于所公开的配置的硬件元件来实践上述内容。因此,尽管已经基于这些优选的实施例描述了本申请,但是对于本领域技术人员来说,某些修改、变化和替代结构将是显而易见的。
虽然已经描述了本申请的优选的实施例,但是应当理解的是,所描述的实施例仅是说明性的,并且当考虑到所附权利要求的等同物和修改(例如,协议、硬件设备、软件平台等)的全部范围时,本申请的范围仅由所附权利要求来限定。

Claims (35)

1.一种计算系统,包括:
网络接口,被配置为接收向在区块链数据库上实施的区块链存储结构添加内容的内容请求;和
处理器,被配置为:基于何时接收到所述内容请求,将所述请求的内容临时存储在经由所述区块链数据库实施的队列中;接收由链码调用的刷新所述队列的请求;以及响应于刷新请求,从所述队列中移除所述内容并将所述内容添加到所述区块链存储结构中。
2.根据权利要求1所述的计算系统,其中,所述队列包括先进先出(FIFO)队列,所述先进先出队列经由所述区块链数据库的链码来实施。
3.根据权利要求2所述的计算系统,其中,所述处理器被配置为将所述内容从所述FIFO队列的末端推入到存储在所述区块链数据库上的树结构上的新节点。
4.根据权利要求1所述的计算系统,其中,所述网络接口被配置为接收多个内容请求,以将多条内容添加到所述区块链存储结构,并且所述处理器被配置为将每条内容临时存储为所述队列中的相应条目。
5.根据权利要求1所述的计算系统,其中,所述处理器被配置为将所述内容添加到经由所述区块链数据库实施的Merkle树存储结构上的活动叶节点内。
6.根据权利要求5所述的计算系统,其中,所述处理器在所述区块链数据库的键值存储(KVS)内维护所述Merkle树存储结构。
7.根据权利要求1所述的计算系统,其中,所述内容请求包括不透露内容创建者的身份的匿名内容。
8.根据权利要求1所述的计算系统,其中,所述区块链存储结构存储多个内容创建者的匿名内容。
9.一种方法,包括:
接收向在区块链数据库上实施的区块链存储结构添加内容的内容请求;
基于何时接收到所述内容请求,将所述请求的内容临时存储在经由所述区块链数据库实施的队列中;
接收由链码调用的刷新所述队列的请求;以及
响应于刷新请求,从所述队列中移除所述内容并将所述内容添加到所述区块链存储结构中。
10.根据权利要求9所述的方法,其中,所述队列包括先进先出(FIFO)队列,所述先进先出队列经由所述区块链数据库的链码来实施。
11.根据权利要求10所述的方法,其中,所述移除包括将所述内容从所述FIFO队列的末端推入到存储在所述区块链数据库上的树结构上的新节点。
12.根据权利要求9所述的方法,其中,所述接收包括接收将多条内容添加到所述区块链存储结构的多个内容请求,并且所述临时存储包括将每条内容临时存储为所述队列中的相应条目。
13.根据权利要求9所述的方法,其中,所述移除包括将所述内容添加到经由所述区块链数据库实施的Merkle树存储结构上的活动叶节点。
14.根据权利要求13所述的方法,其中,所述Merkle树存储结构被维护在所述区块链数据库的键值存储(KVS)内。
15.根据权利要求9所述的方法,其中,所述内容请求包括不透露内容创建者的身份的匿名内容。
16.根据权利要求9所述的方法,其中,所述区块链存储结构存储多个内容创建者的匿名内容。
17.一种计算系统,包括:
被配置为树结构的存储装置,所述树结构包括存储在分层结构中的多个节点中的、多个区块链参与者的匿名行为数据;以及
处理器,被配置为:接收向所述树结构添加新的匿名行为数据的请求,所述请求包括由区块链参与者生成的零知识证明;基于所述零知识证明来标识所述树结构上的、存储与所述请求相关联的区块链参与者的先前记录的匿名行为数据的活动叶;以及基于所述新的匿名行为数据和所述先前记录的匿名行为来生成所述区块链参与者的新的活动叶,
其中,所述存储装置还被配置为将所述新的活动叶存储为所述树结构上的叶节点。
18.根据权利要求17所述的计算系统,其中,所述区块链存储装置的树结构包括多个活动叶节点,所述多个活动叶节点分别存储多个区块链参与者的匿名行为数据,所述匿名行为数据不透露所述多个区块链参与者的身份。
19.根据权利要求17所述的计算系统,其中,所述处理器还被配置为响应于接收到所述新的匿名行为数据,用所述新的活动叶来废止所述树结构上的所标识的活动叶。
20.根据权利要求17所述的计算系统,其中,所述零知识证明包括只有所述区块链参与者知道的随机串。
21.根据权利要求17所述的计算系统,其中,所述处理器还被配置为基于所述树结构的根值、所述零知识证明和所述新的匿名行为的匿名属性来验证所述新的匿名行为的有效性。
22.根据权利要求17所述的计算系统,其中,所述树结构包括经由所述存储装置的键值存储来存储的Merkle树,并且所述Merkle树包括对于所述区块链的每个参与者的相应活动叶节点。
23.根据权利要求17所述的计算系统,其中,所述匿名行为数据包括由所述区块链参与者递交的匿名评论。
24.根据权利要求17所述的计算系统,其中,所述处理器还被配置为在将所述新的活动叶存储在所述树结构上之前,基于所述零知识证明来背书所述新的活动叶。
25.一种方法,包括:
经由区块链存储装置来存储树结构,所述树结构包括存储在分层结构中的多个节点中的、多个区块链参与者的匿名行为数据;
接收向所述树结构添加新的匿名行为数据的请求,所述请求包括由区块链参与者生成的零知识证明;
基于所述零知识证明来标识所述树结构上的、存储与所述请求相关联的区块链参与者的先前记录的匿名行为数据的活动叶;
基于所述新的匿名行为数据和所述先前记录的匿名行为来生成所述区块链参与者的新的活动叶;以及
将所述新的活动叶存储为所述区块链存储装置中的树结构上的叶节点。
26.根据权利要求25所述的方法,其中,所述区块链存储装置中的树结构包括多个活动叶节点,所述多个活动叶节点分别存储多个区块链参与者的匿名行为数据,所述匿名行为数据不透露所述多个区块链参与者的身份。
27.根据权利要求25所述的方法,还包括响应于接收到所述新的匿名行为数据,用所述新的活动叶来废止所述树结构上的所标识的活动叶。
28.根据权利要求25所述的方法,其中,所述零知识证明包括只有所述区块链参与者知道的随机串。
29.根据权利要求25所述的方法,还包括基于所述树结构的根值、所述零知识证明和所述新的匿名行为的匿名属性来验证所述新的匿名行为的有效性。
30.根据权利要求25所述的方法,其中,所述树结构包括经由所述区块链存储装置的键值存储来存储的Merkle树,并且所述Merkle树包括对于所述区块链的每个参与者的相应活动叶节点。
31.根据权利要求25所述的方法,其中,所述匿名行为数据包括由所述区块链参与者递交的匿名评论。
32.根据权利要求25所述的方法,还包括在将所述新的活动叶存储在所述树结构上之前,基于所述零知识证明来背书所述新的活动叶。
33.一种包括指令的非暂时性计算机可读介质,当被处理器读取时,所述指令使得所述处理器执行根据权利要求9-16和25-32中任一项所述的方法。
34.一种计算机系统,包括:
一个或多个处理器;
耦合到所述一个或多个处理器的计算机可读存储介质,所述计算机可读存储介质包括当由所述一个或多个处理器执行时执行根据权利要求9-16和25-32中任一项所述的方法的指令。
35.一种系统,所述系统包括分别用于执行根据权利要求9-16和25-32中任一项所述的方法的步骤的模块。
CN202010348105.1A 2019-05-03 2020-04-28 区块链存储结构的冲突解决方案 Pending CN111881130A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US16/402,848 2019-05-03
US16/402,848 US11055436B2 (en) 2019-05-03 2019-05-03 Conflict resolution for blockchain storage structure
US16/404,377 2019-05-06
US16/404,377 US11176273B2 (en) 2019-05-03 2019-05-06 Privacy-preserving anomalous behavior detection

Publications (1)

Publication Number Publication Date
CN111881130A true CN111881130A (zh) 2020-11-03

Family

ID=73017605

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010348105.1A Pending CN111881130A (zh) 2019-05-03 2020-04-28 区块链存储结构的冲突解决方案

Country Status (2)

Country Link
US (1) US11176273B2 (zh)
CN (1) CN111881130A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113268361A (zh) * 2021-05-14 2021-08-17 南方电网数字电网研究院有限公司 一种用于共享服务的产品管理系统
CN114764709A (zh) * 2021-01-14 2022-07-19 富士通株式会社 信息处理装置和信息处理方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019139595A1 (en) * 2018-01-11 2019-07-18 Visa International Service Association Offline authorization of interactions and controlled tasks
US11068915B2 (en) * 2019-05-31 2021-07-20 At&T Intellectual Property I, L.P. Flexible behavioral chain framework for permission-based enterprise-focused blockchain applications
US11095431B2 (en) * 2019-12-13 2021-08-17 DLT Global, Inc. Blockchain transaction manager
US11551230B2 (en) * 2020-01-14 2023-01-10 Visa International Service Association Security attack detections for transactions in electronic payment processing networks
US11580098B2 (en) * 2020-02-14 2023-02-14 International Business Machines Corporation Multi-client transaction validation
KR102170820B1 (ko) * 2020-07-03 2020-10-28 주식회사 온더 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 시스템
CN112738177B (zh) * 2020-12-22 2022-08-05 网易(杭州)网络有限公司 基于区块链的证明系统、方法、装置、电子设备及介质
US20220391474A1 (en) * 2021-06-03 2022-12-08 Beatdapp Software Inc. Streaming fraud detection using blockchain

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180052612A1 (en) * 2016-08-17 2018-02-22 Oracle International Corporation Externally managed i/o starvation avoidance in a computing device
CN107924389A (zh) * 2015-07-02 2018-04-17 纳斯达克公司 对分布式交易数据库的安全溯源的系统和方法
CN108701145A (zh) * 2017-02-06 2018-10-23 北方信托公司 用于分布式网络节点内的数字身份管理和许可控制的系统和方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11398915B2 (en) * 2016-08-26 2022-07-26 Samsung Electronics Co., Ltd. Apparatus and method for two-way authentication
WO2017079652A1 (en) * 2015-11-05 2017-05-11 Pulsifer Allen Cryptographic transactions system
WO2018057719A1 (en) * 2016-09-21 2018-03-29 R-Stor Inc. Systems and methods for using a distributed ledger for data handling
US11004130B2 (en) 2016-10-26 2021-05-11 International Business Machines Corporation Computer implemented method, an apparatus and a non transitory computer readable storage medium for verifying reviews on a blockchain
US10438170B2 (en) 2017-01-05 2019-10-08 International Business Machines Corporation Blockchain for program code credit and programmer contribution in a collective
US20180357683A1 (en) 2017-06-08 2018-12-13 International Business Machines Corporation Rating data management
US20190188706A1 (en) * 2017-12-18 2019-06-20 Apple Inc. Transference tracking
US20190229921A1 (en) * 2018-01-22 2019-07-25 Allen Pulsifer Private Multi-Secret Cryptographic Transaction System
WO2019178300A1 (en) 2018-03-13 2019-09-19 Blockpoint Systems Inc. Relational blockchain database
US20190354606A1 (en) * 2018-05-18 2019-11-21 Factom Private Cryptocoinage in Blockchain Environments
US20200034457A1 (en) * 2018-07-24 2020-01-30 Ernst & Young U.S.LLP System and methods for organizing and inter-relating hierarchical data files using a distributed database
CN113989047A (zh) * 2018-07-27 2022-01-28 创新先进技术有限公司 基于区块链的资产发布方法及装置、电子设备
US11295296B2 (en) * 2018-08-06 2022-04-05 Inveniam Capital Partners, Inc. Digital contracts in blockchain environments
US11146399B2 (en) * 2018-10-19 2021-10-12 Eygs Llp Methods and systems for retrieving zero-knowledge proof-cloaked data on distributed ledger-based networks
US11100090B2 (en) 2018-11-06 2021-08-24 International Business Machines Corporation Offloaded chaincode execution for a database
US20200174990A1 (en) * 2018-11-29 2020-06-04 Anthony Turner Pratkanis Accountably Redactable Data Structures
US11035903B2 (en) * 2018-12-19 2021-06-15 International Business Machines Corporation Monitoring of batteries in blockchain networks
US11824864B2 (en) * 2019-01-31 2023-11-21 Salesforce, Inc. Systems, methods, and apparatuses for implementing a declarative and metadata driven blockchain platform using distributed ledger technology (DLT)
CN110334175B (zh) * 2019-04-29 2021-06-04 山东冰链网络信息科技有限公司 医疗文档的零知识证明方法、系统及存储介质
CN110321735B (zh) * 2019-04-29 2021-04-13 山东工商学院 基于零知识证明的业务办理方法、系统及存储介质
US11569996B2 (en) * 2019-05-31 2023-01-31 International Business Machines Corporation Anonymous rating structure for database
US11734259B2 (en) * 2019-05-31 2023-08-22 International Business Machines Corporation Anonymous database rating update
US10956444B2 (en) * 2019-07-31 2021-03-23 Advanced New Technologies Co., Ltd. Block chain state data synchronization method, apparatus, and electronic device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107924389A (zh) * 2015-07-02 2018-04-17 纳斯达克公司 对分布式交易数据库的安全溯源的系统和方法
US20180052612A1 (en) * 2016-08-17 2018-02-22 Oracle International Corporation Externally managed i/o starvation avoidance in a computing device
CN109478126A (zh) * 2016-08-17 2019-03-15 甲骨文国际公司 计算设备中的在外部管理的i/o饥饿避免
CN108701145A (zh) * 2017-02-06 2018-10-23 北方信托公司 用于分布式网络节点内的数字身份管理和许可控制的系统和方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114764709A (zh) * 2021-01-14 2022-07-19 富士通株式会社 信息处理装置和信息处理方法
CN113268361A (zh) * 2021-05-14 2021-08-17 南方电网数字电网研究院有限公司 一种用于共享服务的产品管理系统

Also Published As

Publication number Publication date
US20200349284A1 (en) 2020-11-05
US11176273B2 (en) 2021-11-16

Similar Documents

Publication Publication Date Title
CN111800268B (zh) 用于区块链背书的零知识证明
CN111723355B (zh) 数据库中的信息管理
US11487886B2 (en) Database private document sharing
US11972004B2 (en) Document redaction and reconciliation
US11176273B2 (en) Privacy-preserving anomalous behavior detection
US20200394321A1 (en) Document redaction and reconciliation
CN112053157B (zh) 灵活交易验证
CN111951004A (zh) 数据库世界状态完整性证实
US11360946B2 (en) Tracking data transfers
US11270296B2 (en) Protection of data trading
US11240003B2 (en) Consent-based data management
CN111666332B (zh) 自动演进的数据库背书策略
CN111796968A (zh) 受数据库交易保证的提交
US11177938B2 (en) Database composite endorsement
CN111831740B (zh) 对等体的同步
US11055436B2 (en) Conflict resolution for blockchain storage structure
CN111797347A (zh) 分布在安全通道上的内容
CN112084186A (zh) 拆分和合并存储
CN111797426B (zh) 一种用于去信任通知服务的方法和系统
CN111698198B (zh) 秘密生成和份额分发
US11082215B2 (en) Immutable broadcasting queues
CN112052473B (zh) 地理位置合规性
CN111859411B (zh) 用于区块链网络中的区块链的方法和系统
CN112035291B (zh) 快照恢复
CN111881099B (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