CN111881129A - 用于数据库的索引管理 - Google Patents
用于数据库的索引管理 Download PDFInfo
- Publication number
- CN111881129A CN111881129A CN202010341881.9A CN202010341881A CN111881129A CN 111881129 A CN111881129 A CN 111881129A CN 202010341881 A CN202010341881 A CN 202010341881A CN 111881129 A CN111881129 A CN 111881129A
- Authority
- CN
- China
- Prior art keywords
- index
- node
- ledger
- nodes
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 62
- 230000004044 response Effects 0.000 claims description 21
- 238000004891 communication Methods 0.000 claims description 13
- 230000003362 replicative effect Effects 0.000 claims 1
- 238000012545 processing Methods 0.000 description 39
- 230000015654 memory Effects 0.000 description 25
- 230000006870 function Effects 0.000 description 19
- 238000007726 management method Methods 0.000 description 19
- 230000008569 process Effects 0.000 description 17
- 238000004422 calculation algorithm Methods 0.000 description 11
- 230000008859 change Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 230000009471 action Effects 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 238000012163 sequencing technique Methods 0.000 description 5
- 238000012795 verification Methods 0.000 description 5
- 238000013475 authorization Methods 0.000 description 4
- 238000010200 validation analysis Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000009434 installation Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic 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/3239—Cryptographic 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
-
- 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
-
- 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/105—Multiple levels of security
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Business, Economics & Management (AREA)
- Computational Linguistics (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Power Engineering (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Economics (AREA)
- Development Economics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
示例操作可以包括以下一个或多个:生成在第一节点处执行分类账操作的提议,向一个或多个第二节点通知该提议,接收关于第一节点与一个或多个第二节点之间的针对提议的共识的决定,并且在存在共识时在第一节点处执行分类账操作,其中分类账操作改变第一节点的分类账的状态数据库,并且其中状态数据库对应于存储在分类账中的区块链。
Description
技术领域
本申请总体上涉及数据库存储系统,并且更具体地,涉及用于数据库的索引管理。
背景技术
集中式数据库在一个位置处的单个数据库(例如,数据库服务器)中存储和维护数据。该位置通常是中央计算机,例如,台式中央处理单元(CPU)、服务器CPU或大型计算机。通常可以从多个不同点访问存储在集中式数据库中的信息。例如,基于客户端/服务器配置,多个用户或客户端工作站可以在集中式数据库上同时工作。特别是出于安全目的,因为集中式数据库位于单个位置,所以它易于管理、维护和控制。在集中式数据库中,数据冗余被最小化,因为所有数据的单个存储位置还意味着给定的一组数据仅具有一个主记录。
然而,集中式数据库遭受重大缺陷。例如,集中式数据库具有单个故障点。特别地,如果没有容错性的考虑,并且发生硬件故障(例如,硬件、固件和/或软件故障),则数据库中的所有数据都将丢失,并且所有用户的工作都会中断。此外,集中式数据库高度依赖于网络连接。结果,连接速度越慢,每次数据库访问所需的时间量就会增加。另一个缺点是当集中式数据库由于单个位置而遇到高流量时,会出现瓶颈。此外,由于数据库仅维护数据的一个副本,因此集中式数据库提供了对数据的有限访问。结果,多个设备在不造成严重的问题或存在覆盖已存储数据的风险的情况下无法同时访问同一条数据。此外,由于数据库存储系统的数据冗余很小甚至没有,因此,除了通过手动操作从备份存储中恢复之外,很难恢复意外丢失的数据。因此,需要一种克服这些缺点和局限性的解决方案。
发明内容
一个示例实施例提供了一种系统,该系统包括接口和通过该接口与区块链网络通信的处理器。处理器将生成在第一节点处执行分类账操作的提议,通过接口向一个或多个第二节点通知提议,通过接口接收指示在第一节点与一个或多个节点之间的针对提议的共识的决定的信息,以及在存在共识时在第一节点处执行分类账操作。分类账操作将改变第一节点的分类账的状态数据库,并且该状态数据库对应于存储在分类账中的区块链。分类账操作可以改变状态数据库的索引配置。例如,分类账操作可以创建属性的索引,更新分类账中已有属性的索引,在一个或多个第二节点处从第一节点复制索引或与第一节点共享索引,或者在一个或多个第二节点处从第一节点读取索引或更新索引。
另一示例实施例提供了一种方法,该方法包括以下中的一项或多项:生成在第一节点处执行分类账操作的提议,向一个或多个第二节点通知该提议,接收关于在第一节点与一个或多个第二节点之间的针对提议的共识的决定,以及在存在共识时在第一节点处执行分类账操作,其中分类账操作改变第一节点的分类账的状态数据库,并且其中状态数据库对应于存储在分类账中的区块链。
又一示例实施例提供了一种包括指令的非暂态计算机可读介质,该指令当由处理器读取时,使处理器执行以下一项或多项:生成在第一节点处执行分类账操作的提议,向一个或多个第二节点通知该提议,接收在第一节点与一个或多个第二节点之间的关于针对提议的共识的决定,以及在存在共识时在第一节点处执行分类账操作,其中分类账操作改变第一节点的分类账的状态数据库,并且其中状态数据库对应于存储在分类账中的区块链。
附图说明
图1A示出根据示例实施例的包括数据库的系统的网络图。
图1B示出根据示例实施例的与数据库一起操作的组件的网络图。
图1C示出在区块链网络中执行索引管理的实施例。
图2A示出根据示例实施例的示例区块链架构配置。
图2B示出根据示例实施例的区块链交易流程。
图3A示出根据示例实施例的许可网络。
图3B示出根据示例实施例的另一许可网络。
图4示出根据示例实施例的系统消息传递图。
图5A-5H示出根据示例实施例的流程图。
图6A示出根据示例实施例的被配置为执行在此所述的一个或多个操作的示例系统。
图6B示出根据示例实施例的被配置为执行在此所述的一个或多个操作的另一示例系统。
图6C示出根据示例实施例的被配置为利用智能合约的另一示例系统。
图6D示出根据示例实施例的被配置为利用区块链的又一示例系统。
图7A示出根据示例实施例的用于将新区块添加至分布式分类账的过程。
图7B示出根据示例实施例的新数据区块的内容。
图7C示出根据示例实施例的用于数字内容的区块链。
图7D示出根据示例实施例的可以表示区块链中的区块的结构的区块。
图8示出支持一个或多个示例实施例的示例系统。
具体实施方式
将容易理解的是,如在此的附图中一般性描述和图示的,即时组件可以以多种不同的配置来布置和设计。因此,如附图所示,对方法、装置、非暂态计算机可读介质和系统中的至少一个的实施例的以下详细描述并非旨在限制所要求保护的本申请的范围,而仅仅是代表所选实施例。
在一个或多个实施例中,可以以任何合适的方式组合或去除在整个说明书中描述的即时特征、结构或特性。例如,在整个说明书中,短语“示例实施例”、“一些实施例”或其它类似语言的使用是指以下事实:结合该实施例描述的特定特征、结构或特性可以包括在至少一个实施例中。因此,在整个说明书中,短语“示例实施例”、“在一些实施例中”、“在其它实施例中”或其它类似语言的出现不一定全部指代同一组实施例,并且在一个或多个实施例中,所描述的特征、结构或特性可以以任何合适的方式组合或去除。
另外,尽管在实施例的描述中可能已经使用了术语“消息”,但是本申请可以应用于许多类型的网络和数据。此外,尽管在示例性实施例中可以描绘某些类型的连接、消息和信令,但是本申请不限于某种类型的连接、消息和信令。
示例实施例提供了方法、系统、组件、非暂态计算机可读介质、设备和/或网络,其使用针对分散式数据库系统中的一个或多个对等节点的共识协议来管理分类账操作。分散式数据库系统可以包括例如区块链网络。索引可以包括在每个节点的分类账的状态数据库部分中,并且可以使用智能合约和/或一种或多种其它区块链技术来管理。在一个实施例中,共识协议控制创建和更新索引,使得对等节点之间针对一个或多个预定度量存在协调和一致性。结果,可以改善查询处理、数据隐私和整体区块链网络性能。
在一个实施例中,分散式数据库系统(例如,区块链)是分布式存储系统,该分布式存储系统包括彼此通信的节点。分散式数据库包括类似于分布式分类账的只能追加的不可变数据结构,该分布式分类账能够维护互不信任的各方之间的记录。不信任方在此称为对等方或对等节点。每个对等方都维护数据库记录的副本,并且在分布式对等方之间未达成共识的情况下,没有任何单个对等方可以修改数据库记录。例如,对等方可以执行共识协议以验证区块链存储交易,将存储交易分组为区块,并在这些区块上构建哈希链。为了保持一致性,该过程在必要时通过对存储交易进行排序来形成分类账。在各种实施例中,可以使用许可的和/或无许可的区块链。在公共或无许可的区块链中,任何人都可以在没有特定身份的情况下参与。公共区块链通常涉及本机(native)加密货币,并基于各种协议(诸如工作量证明(PoW))使用共识。另一方面,许可的区块链数据库在共享共同目标但彼此之间并不完全信任的一组实体(诸如交换资金、商品、信息等的企业)之间提供安全的交互。
该申请可以利用区块链,该区块链操作被定制为分散式存储方案并被称为“智能合约”或“链码”的任意可编程逻辑。在一些情况下,可能存在用于管理功能和参数的专用链码,称为系统链码。该申请可以进一步利用智能合约,该智能合约是受信任的分布式应用,该分布式应用利用了区块链数据库的防篡改属性和节点之间的基础协议,该基础协议被称为背书或背书策略。与该申请相关联的区块链交易可以在提交给区块链之前被“背书”,而未被背书的交易则被忽略。背书策略允许链码以背书所必需的一组对等节点的形式指定用于交易的背书者。当客户端向背书策略中指定的对等方发送交易时,将执行交易以验证交易。验证之后,交易进入排序阶段,在该阶段中,使用共识协议来产生分组为区块的背书交易的有序序列。
在一个实施例中,出于将新区块提交到区块链的目的的共识可以被实现为区块链网络中的协议或层。该协议或网络层控制对等节点、排序服务节点、提交节点和/或其它实体之间的信息、消息和交易的交换,以达成共识。共识可涉及执行多个操作(包括但不限于链码调用、交易执行、验证和确认)的每个(验证)对等节点。对等节点将有关建议交易的验证结果彼此中继。当结果如由共识算法或策略确定时横跨节点相同或一致时,则达成协定(例如,存在共识),并将包括建议(现已确认)交易的新区块附加到对等节点的分类账中存储的区块链中。
如上所述,网络可以包括各种类型的节点,该节点充当区块链系统的通信实体。“节点”可以执行在不同类型的多个节点可以在相同的物理服务器上运行的意义上的逻辑功能。节点在信任域中分组,并与以各种方式控制它们的逻辑实体相关联。节点可以包括不同类型,诸如客户端或提交客户端节点,其向背书者(例如,对等方)提交交易调用,并且将交易提议广播到排序服务(例如,排序节点)。另一类型的节点是如下的对等节点,该对等节点可以接收客户端提交的交易,提交交易并维护区块链交易分类账的状态和副本。尽管不是必需的,但对等方也可以充当背书者的角色。排序服务节点或排序者是为所有节点运行通信服务的节点,并且其实现交付保证,诸如在提交交易和修改区块链的世界状态时向系统中对等节点中的每个对等节点广播,该区块链的世界状态是用于初始区块链交易的另一个名称,该初始区块链交易通常包括控制和设置信息。
该申请可以利用分类账,该分类账是区块链的所有状态转换的有序防篡改的记录。状态转换可以由参与方(例如,客户端节点、排序节点、背书者节点、对等节点等)提交的链码调用(即,交易)引起。每个参与方(诸如对等节点)都可以维护分类账的副本。交易可导致一组资产密钥值对作为一个或多个操作数(诸如创建、更新、删除等)被提交到分类账。分类账包括如下的区块链(也称为链),该区块链用于将不可变的有序记录存储在区块中。分类账还包括用于维护区块链的当前状态的状态数据库。
该申请可以利用作为交易日志的链,该链被构造为哈希链接的区块。每个区块包含N个交易的序列,其中N等于或大于1。区块头包括该区块交易的哈希,以及前一区块头的哈希。以该方式,分类账上的所有交易都可以被排序并加密链接在一起。因此,在不破坏哈希链接的情况下不可能篡改分类账数据。最近添加的区块链区块的哈希表示或基于链上之前发生的每笔交易,从而可以确保所有对等节点处于一致且受信任的状态。该链可以存储在对等节点文件系统(例如本地、附加存储、云等)上,从而有效地支持区块链工作载荷的仅附加性质。
不可变分类账的当前状态表示链交易日志中包括的所有密钥的最新值。由于当前状态表示信道已知的最新密钥值,因此有时将其称为世界状态。链码调用针对分类账的当前状态数据执行交易。为了使这些链码交互有效,可以将密钥的最新值存储在状态数据库中。状态数据库可能只是链中交易日志的索引视图,因此可以随时从链中重新生成。状态数据库可以在对等节点启动时以及在接受交易之前自动恢复(或根据需要生成)。状态数据库的示例及其与区块链的关系将在下面更详细地描述。
在此描述和描绘的即时解决方案的一些益处包括管理对等节点分类账的状态数据库索引,使得它们相对于一个或多个度量是协调一致的。这可以通过将分类账索引提交给区块链网络的对等节点之间的共识协议来实现。共识协议还可以用于在对等节点之间获得关于分割顶点或合并两个顶点的协定。如果对等节点不能在一个或多个度量上获得共识,则可以使用共识协议来获得关于索引的效率参数(例如关于延迟和/或存储器使用率情况)的协定。
在此描述的一个或多个实施例还可以以各种方式改善计算机的功能。例如,基于共识协议来管理分类账操作增强对状态数据库(例如,区块链)中存储的信息的保护。当分类账操作与索引管理相关时,尤其如此。在一个或多个实施例中,共识协议确保对等节点的状态数据库的某些度量或特征是协调一致的(例如,宽度、高度、扇出(fan out)等),即使关于其它度量或特征可能有所不同。同样,基于共识的索引还克服了与非均匀查询处理和交易成本有关的任何问题。此外,共识可确保满足各个节点(并且尤其是整个网络)的隐私策略,使得不存在数据泄露。另外,将提议的索引管理操作提交给共识允许将新形式的信息(例如,共识批准的索引)存储在对等节点的分类账中。
图1A示出根据示例实施例的区块链网络100的逻辑网络图。参考图1A,网络100包括多个对等节点110,该对等节点在对等通信链路上彼此通信,概念上由椭圆表示。出于说明的目的,仅示出了三个对等节点,其理解为区块链网络120可以包括不同数量的节点,并且在一些实现方式中,包括更多的节点。对等节点分别存储分类账131、132和133的副本,该副本包括存储在区块链网络中的交易日志,如前所述。交易可以由每个节点处的智能合约来管理,并且可以由一个或多个客户端(例如,客户端应用)查询,以取得或以其它方式提供对存储在区块链上的信息的访问。
图1B示出根据示例实施例的图1中所示的对等节点的分类账131、132和133的另一逻辑网络图150。参考图1B,对等节点的分类账包括区块链151、152和153的相应副本以及用于存储区块链的索引的状态数据库161、162和163。每个状态数据库中的索引的配置可以表示为位于各个级别并通过一个或多个逻辑链接相关的多个状态节点。可以例如基于分类账查询和/或智能合约来确定状态数据库的状态节点(或索引),该智能合约基于存储在其对应区块链中的信息(例如资产、交易、属性等)实现各种策略或规则。
状态数据库的索引配置171、172和173可以相同或不同。在图1B中,节点1、2和3中的索引配置171、172和173是不同的,指示它们对应的区块链中的信息可能具有一些变化。如所指示的,每个索引配置中的状态节点可以对应于索引。可以针对区块链中存储的信息的不同属性形成不同的索引。例如,如下面详细讨论的,索引配置中的一个索引可以对应于具有与该属性相关的关联值的属性X。因此,每个节点中的索引配置提供了其对应区块链的当前(或世界)状态的表示,并且可以被智能合约用来响应客户端查询。这些索引配置有助于尤其以在此所述实施例执行的方式提高处理查询的效率并增加存储在区块链中的信息的隐私。
图1C示出用于创建、更新、共享或执行其它操作以管理对等节点的状态数据库分类账中的索引的系统180的实施例。参考图1C,系统180包括查询处理器182、索引管理器184、索引智能合约186和索引共识管理器188。在一个实施例中,这些特征的全部或一部分可以包括在区块链网络中的每个对等节点(例如,N1、N2、N3等)中,由其执行或与其耦合。如箭头所示,这些特征彼此之间以及与其它对等节点进行交互,以便管理分类账索引。查询处理器、索引管理器、索引智能合约和索引共识管理器可以由逻辑来实现,该逻辑包括但不限于驻留在区块链网络中物理连接的一个或多个计算机或其它设备上的软件、硬件或两者。
查询处理器182从一个或多个客户端应用181接收查询(路径a)。客户端应用181与包括或耦合到查询处理器182的节点(例如,对等节点1)相关联,并且可以调用链码生成查询。查询处理器182搜索分类账,并将结果(路径b)返回到发送查询的客户端应用。查询结果可以对应于存储在节点处的区块链的一个或多个区块中所包括的信息(例如,与交易有关)。查询处理器182可以使用分类账的状态数据库中的一个或多个索引来执行该功能,这是有益的,因为这些索引表示区块链的当前世界状态。
索引管理器184基于状态数据库中的一个或多个索引来取得信息,并响应于查询将该信息提供给查询处理器182。如将更详细地讨论的,索引管理器184还可以自动地或响应于命令在状态数据库中发起索引的创建或更新(或其它分类账管理操作)。索引的创建或更新可以例如基于条件的发生而发起。条件可以是来自查询处理器的一个或多个查询,也可以是另一条件。在一种情况下,当接收到参考新属性或公共属性或重复搜索的属性的查询时,索引管理器184可以发起提议在分类账中索引的创建或更新。然而,根据一个或多个实施例,除非相对于网络中的其它对等节点满足共识协议,否则不执行索引的创建或更新。此外,该共识协议可以服从于隐私策略或以其它方式与隐私策略进行通信,以确保打算被保留为私有的信息对于其它节点或网络实体不可用。查询处理器182和索引管理器184之间的信息交换可以沿着路径c和d进行。
索引智能合约186控制要执行的操作,以便向网络中的其它对等节点提交提议的分类账管理操作(例如索引的创建、更新、共享等)和/或相关信息。可以通过路径e从索引管理器184接收提议的操作。在一个实施例中,索引智能合约186检查隐私策略187以确定例如在给定隐私策略中的特定限制和其它条件的情况下是否甚至允许提议的管理操作。隐私策略可以由一个或多个资产/交易方、对等节点或客户端应用的一个或多个所有者,或者基于与区块链的实现有关的其它策略信息来确定。如果例如隐私策略未禁止所提议的操作,则索引智能合约186可以与其它对等节点交换信息(路径f),并将所提议的管理操作提交给索引共识管理器188(路径g)。
索引共识管理器188与对等节点交换信息,以便确定是否存在关于所提议的索引管理操作的协定(例如,共识)。例如,共识管理器可以发送有关在节点1中索引的创建的参数、值和/或其它详细信息(路径h),并从节点接收返回的决定(路径i)。共识管理器188基于由索引智能合约执行的决定、一个或多个策略和/或操作,来确定对所提议的索引管理操作和/或其相关联的参数或值是否存在共识。将关于共识的决定分别沿着路径j和k发送到索引智能合约186,并且然后发送到索引管理器184。当存在共识时,索引管理器184创建、更新、共享或执行与现在已经接收到共识的所提议的索引管理操作相对应的另一操作。在此讨论了区块链网络中节点之间基于共识的索引管理的示例实施例。
根据一个或多个实施例,索引共识管理器188可以基于与用于将新区块添加到区块链的目的而不同于用于获得共识的那些智能合约或其它协议来进行操作。在一个实施例中,索引共识管理器188可以由协议或网络层实现,该协议或网络层全部或部分地由网络节点的智能合约和相关联的策略信息来实现。在一个实施例中,出于与其它对等节点进行交互以在索引的创建、更新和/或共享上达成共识和/或用于执行与索引管理相关的其它操作的共识,可以将对等节点指定为领导节点。
图2A示出根据示例实施例的区块链架构配置200。参考图2A,区块链架构200可以包括某些区块链元素,例如,一组区块链节点202。区块链节点202可以包括一个或多个节点204-210(这四个节点仅以示例的方式描绘)。这些节点参与了许多活动,诸如区块链交易添加和验证过程(共识)。区块链节点204-210中的一个或多个可以基于背书策略来对交易背书,并且可以为架构200中的所有区块链节点提供排序服务。区块链节点可以发起区块链认证并且试图写入存储在区块链层216中的区块链不可变分类账,其副本也可以存储在基础物理基础结构214上。区块链配置可以包括一个或多个应用224,该应用链接到应用编程接口(API)222以访问和执行存储的程序/应用代码220(例如,链码、智能合约等),该程序/应用代码220可以根据参与者寻求的定制配置来创建,并且可以保持自己的状态,控制自己的资产,并接收外部信息。可以将其部署为交易,并经由附加到分布式分类账,安装在所有区块链节点204-210上。
区块链基础或平台212可以包括区块链数据、服务(例如,加密信任服务、虚拟执行环境等)的各个层,以及可用于接收和存储新交易并向寻求访问数据条目的审核器提供访问的物理计算机基础结构。区块链层216可以暴露接口,该接口提供对处理程序代码和接合物理基础结构214所必需的虚拟执行环境的访问。加密信任服务218可以用于验证诸如资产交换交易的交易并保持信息私有。
图2A的区块链架构配置可经由区块链平台212暴露的一个或多个接口以及提供的服务来处理和执行程序/应用代码220。代码220可控制区块链资产。例如,代码220可以存储和传送数据,并且可以由节点204-210(例如包括图1A和1C中的节点1至3)以智能合约和相关链码的形式以进行其执行的条件或其它代码元素来执行。作为非限制性示例,可以创建智能合约以执行提醒、更新和/或进行更改、更新等的其它通知。智能合约本身可以用于识别与授权和访问要求以及分类账的使用相关联的规则。例如,信息226可以包括区块链查询、索引管理提议和/或与状态数据库索引的创建、更新、共享或其它操作相关的信息。在一个实施例中,信息226与获得关于分类账操作的节点之间的共识相关,该分类账操作改变一个或多个节点处的索引的配置。
程序/应用代码220基于信息226执行一个或多个操作并输出信息228,该信息228可包括例如,由一个或多个节点在涉及状态数据库索引的提议的分类账操作上传输或处理共识决定,对提议索引的一个或多个参数或值的指定或改变,来自与提议索引相关的隐私策略决定的结果,和/或与在此所述的系统、方法和其它实施例相关的其它信息。信息226产生信息228的处理可以例如由包括在区块链层216中的一个或多个处理实体(例如,虚拟机)执行。物理基础结构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)的应用,该软件开发工具包(SDK)利用可用的API来生成交易提议。该提议是调用链码功能的请求,使得可以将数据读取和/或写入分类账(即,为资产写入新的密钥值对)。SDK可以充当垫片,将交易提议打包为适当的架构格式(例如,远程过程调用(RPC)上的协议缓冲区),并采用客户端的加密凭据为交易提议生成唯一的签名。
作为响应,背书对等节点281可以验证(a)交易提议格式正确,(b)过去尚未提交交易(重放攻击保护),(c)签名有效,并且(d)提交者(在该示例中为客户端260)被适当授权在该信道上执行提议的操作。背书对等节点281可以将交易提议输入作为所调用的链码功能的参数(arguments)。然后针对当前状态数据库执行链码,以产生包括响应值、读取集和写入集的交易结果。然而,此时尚未对分类账进行任何更新。在292中,将值的集合以及背书对等节点281的签名作为提议响应292传递回客户端260的SDK,该SDK解析用于应用消费的有效载荷。
作为响应,客户端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使用对该数据的带外连接。
图4示出根据示例实施例的用于在区块链网络中处理提议的分类账(例如,索引)管理操作的消息传递图400。为了说明的目的,消息传递图包括图1C的系统中的特征之间和之中的消息传递,但是在另一实施例中可以由不同的系统执行。
参考图4,系统图400包括在405处在对等节点(例如,节点1)的查询处理器182处从客户端应用181接收查询。查询处理器182向索引管理器184发送消息410以提供查询通知。查询处理器182可以例如在每次接收到查询时或在接收到新的查询或包括新的、公共的或重复使用的属性的查询时执行该功能。索引管理器184在415处确定是否生成提议以创建、更新、共享或执行与分类账中的索引相关的另一操作。例如,索引管理器184可以基于条件或策略和/或当查询包括一个或多个新的或公共的或重复使用的属性时,确定生成提议以创建用于新属性(X)的索引。
索引管理器184在420处向索引智能合约186发送与该提议相对应的消息。索引智能合约186在425处针对隐私策略检查该提议。此外,在430处,索引智能合约186向区块链网络中的其它对等节点发送关于索引的对应信息。其它节点可以检查其隐私策略和/或执行其智能合约,以确定例如这些节点是否已经具有属性X的索引,它们的索引的值或参数是否与要添加到节点1的提议索引的值或参数不同,和/或确定共识中涉及的其它信息。在435处,索引智能合约186向索引共识管理器188发送关于提议的类似信息(例如,节点1是否具有禁止索引的隐私策略,与索引相关联的值或参数和/或其它信息)。
索引共识管理器188在440处接收来自其它节点的与隐私、值、参数等相关的决定和/或其它信息,并在445处做出是否针对如提议的节点1创建属性X的索引存在共识的决定。可以通过比较来自所有节点(包括节点1)的决定和其它信息来做出该决定。如果存在差异(例如,如果要在节点1中创建的提议索引的值或参数与其它节点中属性X的索引的值或参数不同,或者存在隐私冲突等),则索引共识管理器188可以与索引智能合约186和/或其它对等节点一起执行附加处理和消息传递,直到对共识做出最终决定。在该时间期间,索引智能合约186可以对提议在节点1处创建的索引的创建进行修改。
在450处,索引共识管理器188将共识决定通知给索引智能合约186。在455处,索引智能合约186通知索引管理器184,该索引管理器184然后在存在共识时基于达成一致的参数创建索引,或者在不存在共识时终止操作。在460处,索引智能合约186(或可替代地,共识管理器188)可以通知其它对等节点,关于节点1中的属性X的索引的创建、更新、共享等已经达成共识。在465处,索引管理器184将属性X的索引记录在用于节点1的分类账的状态数据库中。操作465可以发生在消息传递460之前或之后。
索引管理
根据一个或多个实施例,可以针对区块链网络中的对等节点处的分类账执行索引管理。这可以全部或部分地通过每个对等节点处的智能合约和实现以确保节点之间关于节点分类账中索引管理的协定的共识协议来实现。
每个对等节点处的分类账包括区块链和状态数据库。
区块链可以包括被加密链接在一起的多个区块,每个区块包括条目、交易和/或其它信息,以及元数据和对先前区块的引用。可以生成哈希值并将这些哈希值合并到所有或部分这些特征的区块中,从而形成哈希链接区块的只能附加的序列化的不可变链,以保护数据的有效性和真实性免受恶意威胁。
状态数据库存储指示区块链的当前(或世界)状态的信息。该信息可以包括区块链中的交易的索引表示以及用于解密区块链中的交易、条目等的最新密钥值(例如,私有、公共或私有-公共密钥对)。因此,状态数据库的索引可以用于执行区块链的查询,以便访问存储在区块链中的信息。使用索引减轻了在状态数据库的每一行中进行搜索的麻烦,从而使查询可以更快且更有效地执行。
由于状态数据库包括区块链交易的索引,因此可以随时从区块链重新生成该索引。在一种实现方式中,在对应节点处的逻辑可以在预定时间,在启动时,出于恢复目的和/或在其它情况下,生成用于区块链的状态数据库的索引。当新区块(包括任何新的或更新的密钥信息)被提交给区块链时,状态数据库可以由节点逻辑来更新。
状态数据库可以被实现为LevelDB、CouchDB或另一数据库,包括但不限于将来自LevelDB和CouchDB数据库的特征组合在一起的数据库。LevelDB是对等节点中嵌入的默认密钥/值状态数据库。CouchDB是外部状态数据库,该外部状态数据库可以存储以链码建模的任何数据(包括但不限于默认密钥/值),并且当链码值(例如资产)建模为JavaScript对象表示法(JSON)数据时,还可以针对链码数据进行丰富的查询。LevelDB和CouchDB二者都支持核心链码操作,诸如获取和设置密钥(资产)以及基于密钥进行查询。可以按范围查询密钥,并且可以对复合密钥进行建模以启用针对多个参数的等效查询。例如,组合密钥(所有者,asset_id)可用于查询某个实体拥有的所有资产。这些基于密钥的查询可用于针对分类账的只读查询,以及用于更新分类账的交易中。此外,在链码中使用CouchDB JSON查询语言,可以针对链码数据值执行复杂的丰富查询。这些和其它类型的查询可以用于确定分类账区块链上有哪些交易和/或其它信息。
图7A中示出了分类账的示例。对于一些实施方式,一个或多个节点可以管理多于一个的信道。在这种情况下,一个或多个节点可以针对信道中的每个信道管理不同的分类账(例如,区块链和状态数据库)。
在处理隐私时基于共识的索引创建
图5A示出在处理隐私时执行基于共识的索引创建的示例方法500。该方法500可以应用于一个或多个对等节点要在其对应分类账的状态数据库中创建或更新索引的情况。在下面描述的示例中,对等节点1、2和3可以对应于图1A-1C和4中的节点,或可以应用于具有不同配置的区块链网络。索引的创建可以包括创建新索引或更新现有索引。示例包括在将对应的对等节点添加到网络或将对其进行重新配置时创建新索引,创建索引的新部分(例如,添加与索引中已有的其它状态节点相关的一个或多个新状态节点),将索引中的一个或多个新状态节点链接到一个或多个其它状态节点,或生成到索引中已有的状态节点的新链接。在此描述的方法实施例可以由之前描述的系统和消息传递实施例来执行,或者可以由不同的系统或消息传递来执行。
在501处,节点1的智能合约发起用于其分类账的状态数据库中的属性(X)的索引的创建。例如,可以基于来自一个或多个客户端应用的查询(或查询历史)来发起属性X的索引的创建。在一种情况下,当接收到相同或相似的查询时(例如,包括一些常见信息的查询,诸如“向我显示涉及Joe Smith的所有资金转移”),节点1的智能合约(或管理状态数据库的其它软件)可以确定应该针对与该一个查询或多个查询相对应的新属性X创建索引。智能合约可以例如基于策略信息自动做出该决定。在一个实施例中,向区块链添加新区块可以发起针对与新区块中的交易相关联的属性的索引的创建。在一个实施例中,节点1可以从客户端应用、用户或其它网络实体接收命令以创建索引。
属性X可以对应于例如区块链交易或条目、区块链交易或条目中的信息、消息、事件、密钥信息或与客户端、节点、交易、过程、协议和/或区块链网络的其它特征有关的任何其它数据或信息。属性X可以与一个或多个值相关联,当该值被包括在状态数据库中或以其它方式与属性X相关时,可以允许更快速和有效地执行查询处理。
例如,考虑属性X对应于涉及两方之间的资金转移的交易的情况。与属性X相关联的属性值可以是交易方的名称、交易中涉及的资金转移和/或其它资产或资产所有者的金额、资金转移的类型(例如现金、银行等)、涉及资金转移的金融机构(如果不是现金的话)、密钥信息及其当前版本和/或其它信息。在其它实施例中,属性X可与交易无关,而是可以对应于与区块链、其应用、其用户及其预期用途有关的任何其它类型的信息或数据。不同的属性值可以与属性X关联存储在分类账中,并且可以被引用并用于处理涉及该属性及其值的将来查询。属性X的索引的创建的发起可以表示为:create-index(‘1’,‘x’,索引的(多个)属性值)。
在502处,一旦已经做出决定发起属性X的索引的创建,则节点1的智能合约确定如何创建索引。该操作涉及确定是否将执行两个选项之一。第一选项是基于属性X更新索引,而无需执行相对于区块链网络中其它节点的共识协议。第二选项是仅在相对于区块链网络中的其它节点执行共识协议之后才更新索引。例如,可以基于编程到节点1的智能合约的链码中或以其它方式由节点1的智能合约的链码可访问的隐私策略来确定关于如何更新或创建索引的决定。
在503处,当隐私策略不允许向其它对等节点通知属性X的索引的创建时,则智能合约将根据隐私策略的规定,通过仅在节点1的分类账中创建属性X的索引来实现第一选项。在该情况下,节点1的分类账中的状态数据库关于属性X将与其它对等节点的分类账中的索引不同。因此,当对判定框502的回答为否时,智能合约保护与属性X有关的节点1的索引的隐私。
在一个实施例中,由区块链保护的每种资产可以在状态数据库中包括其自己的索引。属性X的索引可以通过多种方式创建。在一个实施例中,可以基于以下信息来创建属性X的索引:字段、名称和类型。该字段可以对应于频繁查询的字段或期望被频繁查询的字段。该名称对应于索引的名称,例如属性X。该类型可以例如对应于JSON或用于创建和查询属性X的索引的另一种语言。在一个实施例中,可以基于设计文档(例如CouchDB构造)来创建属性X的索引,该设计文档被设计为包含索引,每个属性一个索引。
在一个实施例中,可以针对属性X创建多个索引。例如,一种方法涉及创建仅用于属性X的索引。另一种方法涉及为多个属性创建索引,其中一个是属性X。索引可以是在部署时或由链码和/或其策略确定的其它时间,由链码自动创建。一旦被创建,属性X的索引可能进行索引预热,例如这可能涉及在将每个数据区块提交给区块链后请求更新索引。
一旦定义了索引,就可以将其合并到链码中以例如通过将其放置在适当的元数据文件夹中进行部署。如果链码安装和实例化使用HyperledgerFabric Node SDK,则JSON索引文件可以位于任何文件夹中,只要它符合相关联的目录结构即可。在链码安装期间(例如,使用client.installChaincode()API),属性metadataPath可能会包括在安装请求中。metadataPath的值是表示指向包含JSON索引文件(包括用于属性X的文件)的直接结构的绝对路径的字符串。在另一个实施例中,对等命令可用于安装和实例化链码。在该情况下,JSON索引文件可位于适当的元数据路径下。
一旦已经创建并部署了用于属性X的新(或更新)索引,就可以执行验证操作,以例如通过检查Docker容器中的对等日志,确认该索引已成功创建。
在504处,当隐私策略允许其它对等节点被通知属性X的索引时,则节点1的智能合约实现共识协议以用于创建用于该属性的索引。
图5B示出用于实现用于在区块链网络中的一个或多个节点之间创建属性X的索引的共识协议505的方法的实施例。
节点1的智能合约向区块链网络中的其它对等节点通知该提议以创建属性X的索引。可以使用例如通过经由网络的对等通信发送的消息或事件来通知其它对等节点(例如,图1A中的节点2和节点3)。在一个实施例中,节点1的智能合约可以向排序服务节点发送包括提议的交易,并且排序服务节点可以向网络中的其它对等节点发送包含提议的区块。
在506处,其它对等节点中的每一个可以将与从节点1接收的提议相对应的信息存储在它们相应的分类账中。该信息可以作为交易存储在附加区块中,可以存储在状态数据库的存储区域或分类账的其它区域中,或存储在与分类账耦合的存储区域中。在一个实施例中,可以使用注册表来存储该信息。注册表的一个示例是Hyperledger Composer的历史记录注册表。
在507处,其它对等节点中的每一个中的智能合约确定是否允许创建属性X的索引。该操作可以例如通过智能合约访问被编程成链码或以其它方式可由链码访问的策略信息来执行。
在508处,当不允许在一个或多个节点中创建属性X的索引时,则那些节点的智能合约通知节点1在那些节点中不允许创建属性X的索引。然后,节点1可以将该信息存储在其分类账中,例如,在附加到其区块链的区块(指示创建属性X的索引的提议操作对于所识别的节点无效)中,或其状态数据库的存储区域、注册表(例如,历史记录注册表)或链下存储区域中。
在509处,可以将该相同的信息发送到区块链网络中的其它对等节点。不允许创建属性X的索引的每个节点可以例如通过到那些节点的对等连接或通过排序服务节点来通知节点1和其它对等节点。
在510处,当其它节点确定允许为其相应的节点创建属性X的索引时,则共识协议继续。
图5C示出当共识协议从图5B中的框580继续时可以根据方法的一个实施例执行的附加操作527。
在511处,不是节点1的每个对等节点确定它是否已经在其分类账的状态数据库中具有关于属性X的索引。例如,节点2确定其分类账的状态数据库是否已具有属性X。节点3和网络中的其它对等节点执行相同的操作。该确定可以例如通过每个节点的智能合约查询(或以其它方式搜索)其分类账的状态数据库中的信息来进行。在一个实施例中,该信息可以包括采用关联值进行索引(例如,对应于状态节点)的属性。
在一个实施例中,每个节点的状态数据库可以包括CouchDB数据库,并且可以使用Hyperledger Composer来使用针对REST API的GET命令而执行查询。可以响应于创建属性X的索引的提议而由节点的链码自动生成GET命令。例如,GET命令可以从概念上查询状态数据库以“示出包括属性X的区块链中的所有交易”。如果未返回结果,则用于该节点的智能合约得出结论,属性X的索引未包括在其分类账中。如果返回结果,则用于该节点的智能合约得出结论,属性X的索引存在于其分类账的状态数据库中。该查询可以与其它查询一起存储在分类账中,以用于历史目的或以后使用。例如,Hyperledger Composer的历史记录注册表可以存储查询和/或查询结果,以及与区块链相关的交易。当节点使用HyperledgerComposer时,Hyperledger Composer可以添加、删除或更新资产,添加、删除或更新交易的参与者,发行、绑定、激活和吊销身份和/或执行与分类账关联的其它操作。
在512处,当对等节点(例如,对等节点N2)确定其分类账已经包括关于属性X的索引时,则对等节点的智能合约广播指示该对等节点(N2)具有属性X的索引的信息。该信息将与有关索引的详细信息一起广播到节点1和网络中的其它对等节点。这些细节可以包括例如存储在广播对等节点(N2)的状态数据库中的属性X的值。如前所述,这些值可以是例如属性的类型、与属性相关联的资产、属性的资产所有者和/或在回答基于该属性的索引而执行的查询时可能有用的任何其它信息。如果其它对等节点也在其分类账中存储属性X的索引,则它们可能会广播类似的信息。
在513处,在框512中广播了该信息的每个对等节点可以将信息被广播到其分类账中的其它对等节点的事实进行存储。接收到有关属性X的该信息的对等节点也可以将该信息存储在其分类账中。用于其它对等节点的属性值也可以存储在该位置中。
在514处,发起共识协议以确定是否允许节点1创建属性X的索引。在实现共识协议时,已经具有属性X的索引的所有对等节点(例如,节点2和3)运行其智能合约,以确定是否允许在一个或多个其它对等节点(例如,在该情况下为节点1)中为属性X创建新索引。每个对等节点的智能合约可以例如基于其智能合约的链码中存储的或以其它方式可通过其访问的一种或多种策略进行该确定。当开始创建用于对等节点中的属性X的新索引时,这些策略可以确保整个网络的隐私。
在515处,涉及共识协议的对等节点向共识管理器广播允许属性X的新索引的创建的其决定。共识管理器可以采用若干形式之一。例如,共识管理器可以由智能合约控制节点1的链码实现,该节点试图在其分类账中创建属性X的索引。在该情况下,节点1的智能合约接收其它对等节点关于是否允许节点1创建用于其分类账的属性X的索引的决定。节点1的智能合约将比较这些决定,并且然后基于这些决定继续进行。
在一个实施例中,共识管理器可以包括所有对等节点本身,或者已经在其分类账中已经具有属性X的索引的对等节点。在该情况下,每个对等节点都从其它对等节点(节点1除外)接收决定,并且然后使用其智能合约逻辑将这些决定与其自己的决定进行比较。然后,智能合约将其比较结果发送到节点1,该节点1然后基于这些决定继续进行。
在一个实施例中,共识管理器可以包括指定的对等节点之一(例如,节点2或节点3)的链码,该节点用作领导节点以比较来自其自身和其它对等节点的决定,并且然后将决定结果或共识决定发送到节点1。
在516处,当不存在共识时(例如,一个或多个对等节点不允许在诸如节点1的另一节点中创建属性X的新索引),则节点1可以根据共识协议采用两个选项之一。所采取的选项本身可以通过与其它节点的共识来确定。例如,其它节点可以与它们的决定一起传输关于如何允许节点1访问属性X的索引的指示。然后,可以继续进行用于节点1的智能合约。在一个实施例中,节点1的智能合约可以确定该选项。
在517处,第一选项是复制或共享。例如,节点1可以从对等节点的另一对等节点接收属性X的索引结构的副本。可以基于一个或多个预定标准或基于其链码随机选择另一个节点。例如,响应于由节点1传输的请求,可以沿着与另一节点(例如,节点2或节点3)的对等连接来接收属性X的索引结构的副本。
在一个实施例中,可以例如通过从另一节点(例如,节点2或节点3)访问节点结构但不更新其状态数据库以包括索引结构,来允许节点1从另一对等节点共享属性X的索引结构。因为每个节点的分类账中的区块链是相同的(例如,对于区块链的核心特征),所以属性X的共享节点结构可以用于例如回答来自客户端应用的相关查询。所选的选项将添加到分类账,以记录节点1如何相对于访问和使用属性X的索引继续进行。
在518处,第二选项被读取或更新。例如,允许节点1读取或使用属性X的索引。在一个实施例中,可以允许节点1更新属性X的索引。将所选的选项添加到分类账,以记录节点1如何相对于访问和使用属性X的索引继续进行。
在519处,如果存在共识(例如,所有对等节点都允许在另一个节点(诸如节点1)中创建属性X的新索引),则节点1的智能合约逻辑(例如链码)例如根据相对于图5A中的框503所讨论的操作,创建属性X的索引。可以根据一个或多个参数来创建索引。这些参数可以包括例如特定高度、特定宽度、特定扇出、特定共享参数(例如,共享允许/不允许共享)和/或索引的其它参数。尽管此时可以创建属性X的索引,但是该索引可能尚未记录在节点1的分类账中的状态数据库中。在将索引写入状态数据库之前,可以执行一个或多个附加操作。
在520处,如果在框511中针对属性X已经存在索引,则可以执行试图获得共识的其它操作,例如,如框523、524和525中所指示的,或者图5E至5H中的一个或多个图中包括的操作。在一个实施例中,可能不参与共识,或者可以执行以下描述的一个或多个操作以共享、复制、读取、更新或执行针对属性X的另一操作。
图5D示出当在共识之后由节点1创建索引时可以执行的附加操作528的实施例。可以将该操作视为包括在附加共识协议中或先前共识协议的扩展中。
在521处,节点1的智能合约可以广播通知,指示已经在节点1的分类账中创建了属性X的索引。如关于图5C中的框519所讨论的,该通知可以包括指示索引的参数的信息。如先前所指示的,该通知可以被广播到共识管理器。例如,共识管理器可以由智能合约控制节点1的链码实现,该节点响应于通知从其它对等节点接收有关参数的决定。
在一个实施例中,共识管理器可以在所有对等节点(或已经在其分类账中具有属性X的索引的对等节点)中包括逻辑,每个节点都从其它对等节点(节点1除外)接收有关参数的决定,并且然后使用其智能合约逻辑将这些决定与其自己的决定进行比较。然后,智能合约将其比较结果发送到节点1,该节点1然后基于这些决定继续进行。
在一个实施例中,共识管理器可以包括指定的对等节点之一的链码,该节点用作领导节点以比较来自其自身和其它对等节点的关于参数的决定,并且然后将关于共识的决定发送给节点1。
在522处,基于来自对等节点的决定,确定关于属性X的参数是否存在共识。例如,如果来自所有对等节点的所有决定都对节点1中创建的属性X的索引参数达成一致,或者如果预定数量的节点都对这些参数达成一致,则可以达成共识。
在523处,如果对于在节点1中创建的属性X的索引及其相关联参数不存在共识(例如,对等节点之间没有关于参数的一致),则通知对等节点(例如,通过共识管理器),并执行附加操作以获得关于参数的共识。例如,共识管理器可以确定用于所有节点中属性X的索引的高度的最低值和宽度的最低值将是节点1中的索引的宽度和高度。在一个实施例中,共识管理器可以确定在所有节点中,属性X的索引的高度和宽度的最常见值或者这些值的平均值将是节点1中索引的宽度和高度。可以对共享参数执行类似的操作,例如,如果所有节点都允许共享其对属性X的索引,则可以允许节点1共享其对属性X的索引;否则不行。
在524处,一旦所有节点都对在节点1中创建的属性X的索引的参数达成一致,则共识管理器将达成一致的参数通知给节点1。
在525处,一旦被通知,节点1的链码将根据达成一致的参数将用于属性X的新创建的索引记录在其分类账的状态数据库中。然后可以使用属性X的索引来例如响应来自一个或多个客户端应用的区块链查询。
在526处,当在框522中对于参数存在共识(例如,所有对等节点对由节点1的智能合约针对属性X的新创建索引生成的参数达成一致)时,则共识管理器通知节点1,并且节点1的链码基于参数将属性X的索引记录在其分类账的状态数据库中。
具有隐私的基于共识的索引更新
图5E示出执行具有隐私的索引的基于共识的更新529的方法的实施例,该索引可以例如基于图5A-5D中的一个或多个图中的操作被创建。例如,当要对索引执行改变或其它更新时,可以执行5E的方法,在这种情况下,该索引可以是属性X的索引。
在530处,节点1的智能合约发起针对其分类账的状态数据库中的属性X的索引的更新。可以例如关于图5A的框501自动地或基于先前描述的命令来执行初始化。例如,可以发起更新以包括属性X的新值或改变的值来改变索引的参数,在属性X的索引中包括附加信息,或对该索引进行另一类型的改变。例如,可以通过最近的或历史的查询来提示该改变,如果基于历史查询来更新属性X的索引,则该最近的或历史的查询将允许更有效地执行将来的查询。
在531处,关于是否可以更新节点1中的属性X的索引进行初始确定。例如,这可以参考隐私策略来执行。在一个实施例中,隐私策略可以根据已经或允许对索引执行的更新数量和/或已经或现在寻求执行的更新类型来指示要保护的索引的隐私。
在532处,鉴于流行的隐私策略,当提议的更新将超过一定数量的更新,或者否则不允许更新的类型时,则一个操作涉及终止更新。
在533处,作为终止的替代,当隐私策略不允许索引的某些特征或信息(或提议的对索引的更新)时,该方法可以通过将那些特征或信息保持私密来继续进行。隐私策略可以允许与索引(或其更新)相关的其它特征或信息在随后的共识操作期间提供给其它对等方。
在534处,做出关于节点1的智能合约是否需要执行共识以便更新属性X的索引的决定。例如,可以基于编程到智能合约的链码中的一个或多个条件,基于隐私策略或共识协议,或者基于管理区块链网络中索引更新的其它信息,进行该确定。此类更新可以表示为例如:Update-index(‘A’,‘x’,索引参数的当前元值,用于要改变的索引参数的新值),其中索引参数可以是先前描述的例如高度、宽度、扇出、共享参数等。
在535处,如果不需要共识,则节点1的智能合约可以在其分类账的状态数据库中更新属性X的索引,而无需其它节点的同意。如果需要共识,则处理流程将继续以下操作。
在536处,节点1的智能合约通知所有其它对等节点(或具有属性X的索引的对等节点)要执行对属性X的索引的更新。节点1的智能合约可以将信息添加到其分类账(例如注册表、区块等),以指示已通知对等节点。
在537处,被通知的对等节点(例如,节点2和节点3)做出关于是否允许由节点1对属性X的索引的提议更新的决定。例如,可以基于隐私策略或与控制对允许对索引进行的改变的控制有关的其它信息,通过这些节点的智能合约来做出该决定。如先前关于在图5A-5D的一个或多个图中执行的操作所述,对等节点中的每个对等节点做出决定,并且共识管理器可以确定并通知节点1是否允许更新。
在538处,如果未获得共识(例如,如果一个或多个其它对等节点指示不允许更新索引),则共识管理器可通知节点1和其它对等节点不允许更新。
在539处,如果获得共识,则执行附加操作以获得关于更新的类型和/或范围的共识。
图5F示出可以执行以获得关于更新的类型和/或范围的共识的附加操作544的实施例。
在540处,将要更新(或以其它方式改变或添加)的索引参数通知给每个对等节点处的智能合约。这些参数可以与包括在更新的初始通知中的信息一起发送到框536处的其它对等节点,或者可以在此之后从节点1接收到。在该操作之前,对等节点中的每个对等节点可以确定是否具有关于属性X的索引。如果没有,则对等节点在对节点1的索引进行更新方面可能不再采取任何动作。
在541处,包括要更新的索引的节点参与针对要更新的参数的共识协议。共识协议可以由共识管理器执行(如前所述)。
在542处,如果不存在共识(例如,如果一个或多个对等节点不同意要更新的一个或多个参数),则共识管理器执行随后的共识协议,从对等节点获得关于可用于更新的参数的协定。这些参数可以是先前结合索引的创建所描述的类型,例如,所有对等节点中索引的最低参数、所有对等节点中最常用的参数、平均值等。
在543处,其它节点(或共识管理器)可以将达成一致的参数通知给节点1,并且可以执行对属性X的索引的更新并将其写入节点1的分类账中。
在544处,如果出于更新属性X的索引的目的而关于节点1的智能合约生成的参数获得共识,则共识管理器通知节点1,基于参数执行更新并将其记录在节点1的分类账中。
具有隐私的基于共识的索引共享
图5G示出在对等节点之间执行索引的基于共识的共享545的方法的实施例。该方法可以私密地执行,并且可以例如在图5C的框517中或由于隐私策略而无法在节点之间共享属性X的索引的其它情况中执行。
在550处,关于是否要求对节点1中的属性X的索引执行某些操作,或者是否允许索引本身的某些属性与其它节点共享做出确定。例如,可以基于写入节点1的智能合约的链码中或由节点1的智能合约访问的一个或多个隐私策略来做出该决定。在这一点上,应注意,隐私策略可以定期或动态更新,以便相对于属性X的索引(以及分类账状态数据库中的其它索引)改变隐私要求。改变或更新隐私策略可继而影响与管理对等节点的分类账中的索引有关的,在节点之间执行的决定、分类账更新和/或共识协议的改变。
在551处,如果不允许共享操作或属性,则节点1的智能合约阻止节点1向其它节点通知这些操作或属性。
在552处,如果允许共享操作或属性,则对等节点之一(例如,节点1)可以向另一对等节点(例如,节点2)发送请求以在该对等节点(节点2)的分类账上共享关于属性X的索引。例如,基于来自节点1的客户端应用的命令,或由节点1的智能合约响应于查询或其它动作自动生成的命令,可以沿着节点1和2之间的一个或多个对等连接直接或间接发送该请求。共享请求可以表示为:Share-index(‘2’,‘x’,‘Z’),其中Z是只读共享、更新共享或索引的共享部分中的一个或多个。
在553处,节点2的智能合约确定是否需要共识以便允许共享属性X的索引。节点2的智能合约可以基于存储在其节点中的策略信息来做出该决定。
在554处,如果不需要共识,则节点2例如通过对等连接发送与该索引相对应的信息,或以其它方式通过每当节点1使用索引(例如,响应查询)时允许节点1访问索引,与节点1共享其属性X的索引。
在555处,如果需要共识,则节点2的智能合约向所有其它对等方通知该信息,例如,需要共识以允许节点2与节点1共享其属性X的索引。节点2的链码可以将信息添加到其分类账,指示已做出此类通知以达成共识。其它节点也可以将信息添加到其分类账,指示已出于共享索引的目的而请求它们执行共识协议。在一个实施例中,共识管理器可以通知和/或与对等方交互以获得共享属性X的索引的共识。
在556处,关于是否从对等节点获得关于是否允许节点2与节点1共享其属性X的索引的共识做出确定。在一个实施例中,每个对等节点的智能合约可以检查隐私策略或其它管理信息以进行该确定。然后,共识管理器(例如,如先前所讨论的)可以确定关于共享属性X的索引是否存在共识。
在557处,如果未获得共识,则通知节点1不允许索引共享,并且还向其它对等方通知该信息。
在558处,如果存在共识,则如下所指示执行附加操作。
图5H示出根据一个或多个实施例的在达成共识以允许共享属性X的索引时可以执行的附加操作559。
在560处,其它对等节点(不是节点1或节点2)的智能合约确定这些节点是否具有关于属性X的索引以及是否允许这些节点与节点1共享其属性X的索引。
在561处,对于具有可被共享的属性X的索引的操作560中的每个节点(例如,节点C),共识管理器可以关于节点2是否应与节点1共享其属性X的索引或节点C是否应与节点1共享其属性X的索引执行协商。协商可涉及共识管理器关于哪个节点应该与节点1共享索引而与对等节点执行共识协议。
在562处,受共识协议约束的每个节点可以返回指示哪个节点应该与节点1共享其索引的决定。该决定可以例如基于包括但不限于节点所有权、客户端应用所有权、用户信息、编程到节点链码中的一个或多个预定首选项、使一个节点优先于另一个节点的网络或节点策略的各种类型的信息和/或基于其它信息来做出。每个节点的决定可以返回到共识管理器,该共识管理器可以是如在此先前所描述的一个或多个实体。
在563处,如果不存在关于哪个节点应该共享索引的共识,则共识管理器可以基于达成一致的参数,根据先前讨论的创建实施例,指示节点1创建其自己的属性X的索引(例如,参见操作524和525)。
在564处,如果存在共识,则获得共识的节点可以根据它们相应的智能合约的操作与节点1共享其索引。节点1的共识管理器或链码可以控制该操作。另外地或可替代地,与节点1共享的索引可以基于由共识或链码设置的新参数。然后,节点1可以在其分类账中记录属性X的索引共享。
在565处,如果不允许其它节点与节点1共享其属性X的索引,则可以(例如,由其它节点和/或共识管理器)通知节点1,并且可以基于其它节点同意或编程到其链码中的一个或多个参数,创建其自己的属性X的索引。
图6A示出根据示例实施例的包括配置为执行各种操作的物理基础结构610的示例系统600。参考图6A,物理基础结构610包括模块612和模块614。模块614包括区块链620和智能合约630(可以驻留在区块链620上),该区块链620和智能合约630可以执行任何示例实施例中包括的任何操作步骤608(在模块612中)。步骤/操作608可以包括所描述或描绘的一个或多个实施例,并且可以表示从一个或多个智能合约630和/或区块链620写入或读取的输出或写入信息。物理基础结构610、模块612和模块614可以包括一个或多个计算机、服务器、处理器、存储器和/或无线通信设备。此外,模块612和模块614可以是相同的模块。
图6B示出根据示例实施例的被配置为执行各种操作的另一示例系统640。参考图6B,系统640包括模块612和模块614。模块614包括区块链620和智能合约630(其可以驻留在区块链620上),该区块链620和智能合约630可以执行任何示例实施例中包括的任何操作步骤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的当前状态和分布式分类账722可以存储在状态数据库724中。这里,当前状态数据表示区块链722的链交易日志中曾经包括的所有密钥的最新值。链码调用针对状态数据库724中的当前状态执行交易。为了使这些链码交互非常高效,所有密钥的最新值都存储在状态数据库724中。状态数据库724可以包括到区块链722的交易日志中的索引视图,因此可以在任何时间从链中重新生成它。状态数据库724可以在接受交易之前在对等方启动时自动恢复(或在需要时生成)。
背书节点从客户端接收交易,并基于模拟结果对该交易背书。背书节点持有模拟交易提议的智能合约。当背书节点对交易背书时,背书节点创建交易背书,该交易背书是从背书节点到客户端应用的签名响应,指示对模拟交易的背书。对交易背书的方法取决于可以在链码内指定的背书策略。背书策略的示例是“大多数背书对等方必须对交易背书”。不同的信道可具有不同的背书策略。客户端应用将背书的交易转发到排序服务710。
排序服务710接受背书的交易,将其排序为区块,并将该区块传递给提交对等方。例如,当已经达到交易的阈值、计时器超时或另一条件时,排序服务710可以发起新的区块。在图7A的示例中,区块链节点712是提交对等方,该提交对等方已接收存储在区块链720上的新数据的新数据区块730。区块链中的第一区块可以被称为创始区块,该创始区块包括关于区块链、其成员、存储在其中的数据等的信息。
排序服务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可以在区块数据750内存储N个交易(例如,1、10、100、500、1000、2000、3000等)的交易信息。新数据区块730还可以包括:到区块头740内的前一区块(例如,在图7A中的区块链722上)的链接。特别地,区块头740可包括前一区块头的哈希。区块头740还可以包括唯一的区块号、新数据区块730的区块数据750的哈希等。新数据区块730的区块号可以是唯一的,并且可以以各种顺序分配,诸如从零开始的增量/序列顺序。
区块数据750可以存储记录在新数据区块730内的每个交易的交易信息。例如,交易数据可以包括交易的类型、版本、时间戳、分布式分类账720的信道ID、交易ID、历元、有效载荷可见性、链码路径(部署tx)、链码名称、链码版本、输入(链码和功能)、客户端(创建者)标识(诸如公钥和证书)、客户端签名、背书者身份、背书者签名、提议哈希、链码事件、响应状态、名称空间、读取集(交易读取的密钥和版本列表等)、写入集(密钥和值的列表等)、开始密钥、结束密钥、密钥列表、Merkle树查询摘要等中的一个或多个。可以针对N个交易中的每一个交易存储交易数据。
在一些实施例中,区块数据750还可存储新数据762,该新数据762将附加信息添加到区块链722中的区块的哈希链接的链。附加信息包括在此描述或描绘的步骤、特征、过程和/或动作中的一个或多个。因此,新数据762可以存储在分布式分类账720上的区块的不可变日志中。存储此类新数据762的一些益处反映在本文公开和描绘的各种实施例中。虽然在图7B中,新数据762被描绘在区块数据750中,但是也可以位于区块头740或区块元数据760中。
区块元数据760可以存储元数据的多个字段(例如,作为字节阵列等)。元数据字段可以包括在区块创建时的签名、对最后一个配置区块的引用、识别区块内有效交易和无效交易的交易过滤器、对区块进行排序的排序服务的最后偏移持续时间(last offsetpersisted)等。签名、最后一个配置区块和排序者元数据可以由排序服务710添加。同时,区块的提交者(诸如区块链节点712)可以基于背书策略、读取/写入集的验证等添加有效性/无效性信息。交易过滤器可以包括大小等于区块数据750中的交易数量的字节阵列和识别交易是否有效/无效的验证码。
图7C示出根据在此所述实施例的用于数字内容的区块链770的实施例。数字内容可以包括一个或多个文件和相关联信息。文件可以包括媒体、图像、视频、音频、文本、链接、图形、动画、网页、文档或其它形式的数字内容。区块链的不可变的只能追加的方面充当保护数字内容的完整性、有效性和真实性的保障,使其适用于适于可受理性规则的法律程序中,或在考虑证据的情况下或在其它方面关注的数字信息的呈现和使用的情况下的其它设置。在该情况下,数字内容可以被称为数字证据。
区块链可以以各种方式形成。在一个实施例中,数字内容可以被包括在区块链本身中并且可以从其访问。例如,区块链的每个区块可以沿着相关联的数字内容存储参考信息的哈希值(例如,头、值等)。然后可以将哈希值和相关联的数字内容一起加密。因此,可以通过解密区块链中的每个区块来访问每个区块的数字内容,并且每个区块的哈希值可以用作参考前一区块的基础。这可以说明如下:
在一个实施例中,数字内容可以不包括在区块链中。例如,区块链可以存储每个区块的内容的加密哈希,而无需任何数字内容。数字内容可以与原始文件的哈希值相关联地存储在另一存储区域或存储器地址中。其它存储区域可以是用于存储区块链的相同存储设备,或可以是不同的存储区域,或甚至是单独的关系数据库。可以通过获得或查询关注的区块的哈希值,并且然后查找具有在与实际数字内容相对应地存储的存储区域中的值,来引用或访问每个区块的数字内容。该操作可以例如被数据库把关系统(gatekeeper)执行。这可以说明如下:
在图7C的示例实施例中,区块链770包括以有序序列加密链接的多个区块7781,7782,...,778N,其中N≥1。用于链接区块7781,7782,...,778N的加密可以是任何数量的密钥式或非密钥式的哈希函数。在一个实施例中,区块7781,7782,...,778N服从哈希函数,该哈希函数从基于区块中的信息输入产生n位字母数字输出(其中n是256或另一个数字)。此类哈希函数的示例包括但不限于SHA型(SHA代表安全哈希算法)算法、Merkle-Damgard算法、HAIFA算法、Merkle-tree算法、基于随机数的算法和非防碰撞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支持在此描述和/或描绘的一个或多个示例实施例。系统800包括计算机系统/服务器802,该计算机系统/服务器802可与许多其它通用或专用计算系统环境或配置一起操作。可适用于计算机系统/服务器802的众所周知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户端、胖客户端、手工手持或便携式设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机系统、大型计算机系统以及包括上述任何系统或设备的分布式云计算环境等。
可在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般上下文中描述计算机系统/服务器802。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。可以在分布式云计算环境中实现计算机系统/服务器802,在该分布式云计算环境中,任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质二者中。
如图8所示,云计算节点800计算机系统/服务器802以通用计算设备的形式表现。计算机系统/服务器802的组件可以包括但不限于:一个或者多个处理器或者处理单元804,系统存储器806,连接不同系统组件(包括系统存储器806和处理单元804)的总线。
总线表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器802典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器802访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。根据一个实施例,系统存储器806实现其他附图中的流程。系统存储器806可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)810和/或高速缓存存储器812。计算机系统/服务器802可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统814可以用于读写不可移动的、非易失性磁介质(图中未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线相连。存储器806可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块818的程序/实用工具816,可以存储在例如存储器28中,这样的程序模块818包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块818通常执行本发明所描述的实施例中的功能和/或方法。
如本领域技术人员将理解的,本申请的各方面可以体现为系统、方法或计算机程序产品。因此,本申请的各方面可以采取以下形式:完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或结合了软件和硬件方面的实施例的形式,该软件和硬件方面通常在此都可以被称为“电路”、“模块”或“系统”。此外,本申请的各方面可以采取具有体现在其上的计算机可读程序代码的一个或多个计算机可读介质中体现的计算机程序产品的形式。
计算机系统/服务器802也可以与一个或多个外部设备820(例如键盘、指向设备、显示器822等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器802交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口824进行。并且,计算机系统/服务器12还可以通过网络适配器826与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器826通过总线与计算机系统/服务器802的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器802使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
尽管在附图中示出并且在前面的详细描述中描述了系统、方法和非暂态计算机可读介质中的至少一个的示例性实施例,但是应当理解,本申请不限于所公开的实施例,而是能够进行如所附权利要求所阐述和定义的许多重新布置、修改和替换。例如,各个附图的系统的能力可以由在此描述的模块或组件中的一个或多个或以分布式架构来执行,并且可以包括发射机、接收机或两者的对。例如,由各个模块执行的全部或部分功能可以由这些模块中的一个或多个模块来执行。此外,在此描述的功能可以在各种时间并且与模块或组件内部或外部的各种事件相关地执行。此外,可以经由以下各项中的至少一项在模块之间发送各种模块之间发送的信息:数据网络、互联网、语音网络、互联网协议网络、无线设备、有线设备和/或经由多种协议。此外,可以直接和/或经由一个或多个其它模块来发送或接收由任何模块发送或接收的消息。
本领域技术人员将意识到,“系统”可以体现为个人计算机、服务器、控制台、个人数字助理(PDA)、手机、平板计算设备、智能手机或任何其它合适的计算设备或设备组合。将上述功能呈现为由“系统”执行并不旨在以任何方式限制本申请的范围,而是旨在提供许多实施例的一个示例。实际上,在此公开的方法、系统和装置可以以与计算技术一致的局部和分布式形式来实现。
应该注意,在本说明书中描述的一些系统特征已经作为模块呈现,以便更具体地强调它们的实现独立性。例如,模块可以被实现为硬件电路,该硬件电路包括定制的超大规模集成(VLSI)电路或门阵列、诸如逻辑芯片、晶体管或其它分立组件的现货半导体。模块也可以在诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备、图形处理单元等的可编程硬件设备中实现。
模块也可以至少部分地用软件来实现,以由各种类型的处理器执行。可执行代码的所识别单元可以例如包括计算机指令的一个或多个物理或逻辑块,该计算机指令可以例如被组织为对象、过程或功能。然而,所识别的模块的可执行文件不需要在物理上位于一起,而是可以包括存储在不同位置的不同指令,该指令当在逻辑上结合在一起时,包括模块并实现模块的所述目的。此外,模块可以存储在计算机可读介质上,该计算机可读介质可以是例如硬盘驱动器、闪存设备、随机存取存储器(RAM)、磁带或用于存储数据的任何其它此类介质。
实际上,可执行代码的模块可以是单个指令或多个指令,并且甚至可以分布在多个不同的代码段、不同的程序之间以及跨多个存储器设备。类似地,操作数据可以在此在模块内被识别和示出,并且可以以任何合适的形式来体现并且可以在任何合适的类型的数据结构内被组织。操作数据可以作为单个数据集收集,或者可以分布在包括不同存储设备的不同位置上,并且可以至少部分地仅作为系统或网络上的电子信号存在。
在此描述的方法、过程和/或操作可以由将由计算机、处理器、控制器或其它信号处理设备执行的代码或指令来执行。根据一个或多个实施例,代码或指令可以存储在非暂态计算机可读介质中。计算机、处理器、控制器或其它信号处理设备可以是在此描述的那些计算机、处理器、控制器或其它信号处理设备,或者是除在此描述的元件之外的一种计算机、处理器、控制器或其它信号处理设备。因为详细描述了构成方法(或计算机、处理器、控制器或其它信号处理设备的操作)基础的算法,所以用于实现方法实施例的操作的代码或指令可以将计算机、处理器、控制器或其它信号处理设备转换为专用处理器,以执行在此所述的方法。
另外,另一实施例可以包括用于存储上述代码或指令的计算机可读介质,例如,非暂态计算机可读介质。该计算机可读介质可以是易失性或非易失性存储器或其它存储设备,该易失性或非易失性存储器或其它存储设备可以可移动或固定地耦合到将执行用于执行在此描述的方法实施例的代码或指令的计算机、处理器、控制器或其它信号处理设备。
在此公开的实施例的处理器、管理器、智能合约、链码或其它处理特征可以以例如可以包括硬件、软件或两者的逻辑来实现。当至少部分地以硬件实现时,处理器、管理器、智能合约、链码或其它处理特征可以是例如各种集成电路中的任何一种集成电路,包括但不限于专用集成电路、现场可编程门阵列、逻辑门的组合、片上系统、微处理器或另一类型的处理或控制电路。
当至少部分地以软件实现时,处理器、管理器、智能合约、链码或其它处理特征可以包括例如存储器或其它存储设备,用于存储例如由计算机、处理器、微处理器、控制器或其它信号处理设备要执行的代码或指令。计算机、处理器、微处理器、控制器或其它信号处理设备可以是在此所述的那些计算机、处理器、微处理器、控制器或其它信号处理设备或除在此所述的元件之外的一种计算机、处理器、微处理器、控制器或其它信号处理设备。因为详细描述了构成方法(或计算机、处理器、微处理器、控制器或其它信号处理设备的操作)基础的算法,所以用于实现方法实施例的操作的代码或指令可以将计算机、处理器、控制器或其它信号处理设备转换成专用处理器,以执行在此所述的方法。术语“设备单元数据”可以是或包括卡唯一数据或其它类型的唯一设备特定数据。
将容易理解,如在此的附图中一般性描述和示出的,本申请的组件可以以多种不同的配置来布置和设计。因此,实施例的详细描述不旨在限制所要求保护的本申请的范围,而仅代表本申请的所选实施例。
本领域的普通技术人员将容易地理解,可以以不同顺序的步骤和/或以与所公开的配置不同的配置的硬件元件来实践以上内容。因此,尽管已经基于这些优选实施例描述了本申请,但是对于本领域技术人员显而易见的是,某些修改、变型和替代构造将是显而易见的。
虽然已经描述了本申请的优选实施例,但是应当理解,所描述的实施例仅是说明性的,并且当考虑全部范围的等同及其修改(例如,协议、硬件设备、软件平台等)时,本申请的范围仅由所附权利要求限定。
Claims (11)
1.一种方法,包括:
生成在第一节点处执行分类账操作的提议;
向一个或多个第二节点通知所述提议;
接收关于所述第一节点与所述一个或多个第二节点之间针对所述提议的共识的决定;以及
在存在共识时,在所述第一节点处执行所述分类账操作,
其中,所述分类账操作改变所述第一节点的分类账的状态数据库,以及其中,所述状态数据库对应于存储在所述分类账中的区块链。
2.根据权利要求1所述的方法,其中,所述分类账操作改变所述状态数据库的索引配置。
3.根据权利要求2所述的方法,其中,所述分类账操作是以下之一:
创建属性的索引,或者
更新已经在所述分类账中的属性的索引。
4.根据权利要求2所述的方法,其中,所述分类账操作是以下之一:
在所述一个或多个第二节点处从所述第一节点复制索引或与所述第一节点共享索引,或者
在所述一个或多个第二节点处从所述第一节点读取索引或更新索引。
5.根据权利要求1所述的方法,其中,响应于来自客户端应用的查询,执行生成所述提议。
6.根据权利要求1所述的方法,进一步包括:
针对隐私策略检查所述提议,以及
基于所述隐私策略执行或终止所述分类账操作。
7.根据权利要求1所述的方法,进一步包括:
向所述一个或多个第二节点发送指示第一参数的信息,所述第一参数与对应于所述分类账操作的属性的索引相关,
确定一个或多个所述第二节点具有包括针对所述属性的索引的分类账,所述一个或多个第二节点的所述分类账中的所述索引具有与所述第一参数不同的第二参数,以及
获得所述第一节点和所述一个或多个第二节点之间关于要在所述第一节点中用于所述属性的所述索引的第三参数的共识,其中,所述分类账操作包括基于所述第三参数而在所述第一节点的所述分类账中创建所述属性的所述索引,或者基于所述第三参数更新所述第一节点的所述分类账中的所述属性的索引。
8.根据权利要求7所述的方法,其中,所述第三参数是以下之一:
所述第一参数,
所述第二参数,或
与所述第一参数和所述第二参数不同的参数。
9.一种系统,包括:
接口;以及
处理器,其通过所述接口与区块链网络进行通信,
其中,所述处理器被配置为执行根据权利要求1至8中任一项所述的方法。
10.一种存储指令的非暂态计算机可读介质,所述指令当由处理器读取时使所述处理器执行根据权利要求1至8中任一项所述的方法。
11.一种装置,包括用于执行根据权利要求1至8中任一项所述的方法的模块。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/401,277 US11416548B2 (en) | 2019-05-02 | 2019-05-02 | Index management for a database |
US16/401277 | 2019-05-02 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111881129A true CN111881129A (zh) | 2020-11-03 |
Family
ID=73017517
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010341881.9A Pending CN111881129A (zh) | 2019-05-02 | 2020-04-27 | 用于数据库的索引管理 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11416548B2 (zh) |
CN (1) | CN111881129A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112328614A (zh) * | 2020-11-13 | 2021-02-05 | 北京鸿腾智能科技有限公司 | 病毒库更新方法、设备、存储介质及装置 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11605059B2 (en) * | 2018-08-03 | 2023-03-14 | Sap Se | Software system utilizing blockchain for transactions |
US10992458B2 (en) | 2019-01-16 | 2021-04-27 | EMC IP Holding Company LLC | Blockchain technology for data integrity regulation and proof of existence in data protection systems |
US11836259B2 (en) * | 2019-01-16 | 2023-12-05 | EMC IP Holding Company LLC | Blockchain technology for regulatory compliance of data management systems |
US11606442B2 (en) | 2019-06-07 | 2023-03-14 | Microsoft Technology Licensing, Llc | Subscription to edits of blockchain transaction |
US11496518B2 (en) * | 2019-08-02 | 2022-11-08 | Dell Products L.P. | System and method for distributed network access control |
US11115804B2 (en) * | 2019-10-04 | 2021-09-07 | Microsoft Technology Licensing, Llc | Subscription to dependencies in smart contracts |
WO2021176598A1 (ja) * | 2020-03-04 | 2021-09-10 | 三菱電機株式会社 | 管理装置、管理方法、及び、管理プログラム |
US11641665B2 (en) | 2020-09-09 | 2023-05-02 | Self Financial, Inc. | Resource utilization retrieval and modification |
US20220075877A1 (en) | 2020-09-09 | 2022-03-10 | Self Financial, Inc. | Interface and system for updating isolated repositories |
US11470037B2 (en) | 2020-09-09 | 2022-10-11 | Self Financial, Inc. | Navigation pathway generation |
US11475010B2 (en) * | 2020-09-09 | 2022-10-18 | Self Financial, Inc. | Asynchronous database caching |
US20220171763A1 (en) * | 2020-12-02 | 2022-06-02 | International Business Machines Corporation | Blockchain selective world state database |
CN113268763B (zh) * | 2020-12-28 | 2023-09-15 | 上海零数众合信息科技有限公司 | 一种基于区块链的分布式隐私数据存储方法 |
KR102462998B1 (ko) * | 2020-12-30 | 2022-11-03 | 아주대학교산학협력단 | Bft 합의 방식을 이용한 멀티 체인 간의 교차 인증 장치 및 방법 |
US11838854B2 (en) * | 2021-07-06 | 2023-12-05 | Cisco Technology, Inc. | 5G network slicing and resource orchestration using holochain |
US11941151B2 (en) * | 2021-07-16 | 2024-03-26 | International Business Machines Corporation | Dynamic data masking for immutable datastores |
US20230125542A1 (en) * | 2021-10-22 | 2023-04-27 | Mastercard International Incorporated | Method and system of initiating simultaneous start of block formation |
US20240085199A1 (en) | 2022-09-14 | 2024-03-14 | Ford Global Technologies, Llc | Smart road salt distribution system with blockchain network |
US11888730B1 (en) * | 2022-09-20 | 2024-01-30 | Block, Inc. | Dynamically optimizing routing within a decentralized network |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180113752A1 (en) * | 2016-10-20 | 2018-04-26 | International Business Machines Corporation | Inter-ledger messaging in a blockchain |
CN108769173A (zh) * | 2018-05-21 | 2018-11-06 | 阿里体育有限公司 | 运行智能合约的区块链实现方法及设备 |
US20180341930A1 (en) * | 2017-05-25 | 2018-11-29 | Oracle International Corporation | Sharded Permissioned Distributed Ledgers |
CN109196816A (zh) * | 2016-07-01 | 2019-01-11 | 英特尔公司 | 使用区块链的公钥基础结构 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7206934B2 (en) | 2002-09-26 | 2007-04-17 | Sun Microsystems, Inc. | Distributed indexing of identity information in a peer-to-peer network |
US7827160B2 (en) | 2007-03-30 | 2010-11-02 | Sap Ag | Managing distributed index data |
US20090187588A1 (en) | 2008-01-23 | 2009-07-23 | Microsoft Corporation | Distributed indexing of file content |
US9110936B2 (en) | 2010-12-28 | 2015-08-18 | Microsoft Technology Licensing, Llc | Using index partitioning and reconciliation for data deduplication |
US10339014B2 (en) | 2016-09-28 | 2019-07-02 | Mcafee, Llc | Query optimized distributed ledger system |
CN108323232B (zh) | 2017-05-16 | 2020-01-24 | 北京大学深圳研究生院 | 一种多层级区块链系统之间索引与链拓扑结构的维护方法 |
CN107659429A (zh) | 2017-08-11 | 2018-02-02 | 四川大学 | 基于区块链的数据共享方法 |
KR102609711B1 (ko) * | 2017-08-29 | 2023-12-06 | 엔체인 홀딩스 리미티드 | 블록체인을 사용한 동시적 상태 머신 프로세싱 |
US11182379B2 (en) * | 2018-08-24 | 2021-11-23 | Oracle International Corporation | DAG based methods and systems of transaction processing in a distributed ledger |
-
2019
- 2019-05-02 US US16/401,277 patent/US11416548B2/en active Active
-
2020
- 2020-04-27 CN CN202010341881.9A patent/CN111881129A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109196816A (zh) * | 2016-07-01 | 2019-01-11 | 英特尔公司 | 使用区块链的公钥基础结构 |
US20180113752A1 (en) * | 2016-10-20 | 2018-04-26 | International Business Machines Corporation | Inter-ledger messaging in a blockchain |
US20180341930A1 (en) * | 2017-05-25 | 2018-11-29 | Oracle International Corporation | Sharded Permissioned Distributed Ledgers |
CN108769173A (zh) * | 2018-05-21 | 2018-11-06 | 阿里体育有限公司 | 运行智能合约的区块链实现方法及设备 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112328614A (zh) * | 2020-11-13 | 2021-02-05 | 北京鸿腾智能科技有限公司 | 病毒库更新方法、设备、存储介质及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20200349194A1 (en) | 2020-11-05 |
US11416548B2 (en) | 2022-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111881129A (zh) | 用于数据库的索引管理 | |
CN111800268B (zh) | 用于区块链背书的零知识证明 | |
US11232221B2 (en) | Right to be forgotten on an immutable ledger | |
CN111488393B (zh) | 虚拟区块链 | |
US11200260B2 (en) | Database asset fulfillment chaincode deployment | |
CN111144881A (zh) | 对资产转移数据的选择性访问 | |
CN111951004A (zh) | 数据库世界状态完整性证实 | |
CN112053157B (zh) | 灵活交易验证 | |
CN112069165A (zh) | 文档编校和协调 | |
CN110674128B (zh) | 区块链的链上治理 | |
CN111881099A (zh) | 数据库私有文档共享 | |
US11360946B2 (en) | Tracking data transfers | |
CN111831740B (zh) | 对等体的同步 | |
CN111796968A (zh) | 受数据库交易保证的提交 | |
US10992714B2 (en) | Certifying authenticity via dynamic dimensional coordinate scanning and decentralized data storage | |
CN112241919A (zh) | 具有数据流控制的多域区块链网络 | |
CN111831739A (zh) | 数据库复合背书 | |
CN115552441A (zh) | 低信任特权访问管理 | |
CN115004625A (zh) | 用于区块链分类账的索引结构 | |
CN111753002A (zh) | 基于同意的数据管理 | |
CN114450708A (zh) | 基于现有链码的链码推荐 | |
CN112084186A (zh) | 拆分和合并存储 | |
CN111797347A (zh) | 分布在安全通道上的内容 | |
CN111753009A (zh) | 包括快速路径服务的分散式数据库中的信息管理 | |
CN111881109A (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 |