[go: up one dir, main page]

CN110612697B - Method and system for efficient information retrieval of data storage layer indexes - Google Patents

Method and system for efficient information retrieval of data storage layer indexes Download PDF

Info

Publication number
CN110612697B
CN110612697B CN201780090574.4A CN201780090574A CN110612697B CN 110612697 B CN110612697 B CN 110612697B CN 201780090574 A CN201780090574 A CN 201780090574A CN 110612697 B CN110612697 B CN 110612697B
Authority
CN
China
Prior art keywords
data
data element
index
linked
blockchain
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201780090574.4A
Other languages
Chinese (zh)
Other versions
CN110612697A (en
Inventor
马国�
孙冠毅
谢斌
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.)
Accenture Global Solutions Ltd
Original Assignee
Accenture Global Solutions Ltd
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
Application filed by Accenture Global Solutions Ltd filed Critical Accenture Global Solutions Ltd
Publication of CN110612697A publication Critical patent/CN110612697A/en
Application granted granted Critical
Publication of CN110612697B publication Critical patent/CN110612697B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/2272Management thereof
    • 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • 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/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

A secure data system facilitates efficient searching of a wide data storage layer (e.g., blockchain). The system may create an index for a predefined type of data element recorded in the blockchain. The system may generate the index by invoking executable instructions stored in executable data elements (e.g., smart contracts) that are recorded in the blockchain and associated with a predefined type of data element. The index facilitates quick querying of predefined types of data elements in the blockchain.

Description

用于高效信息检索的数据存储层索引的方法和系统Method and system for data storage layer indexing for efficient information retrieval

技术领域Technical field

本公开涉及安全数据系统,并且涉及在安全数据存储层(诸如区块链)中更高效地定位数据元素。This disclosure relates to secure data systems and to more efficiently locating data elements in a secure data storage layer, such as a blockchain.

背景技术Background technique

受巨大的客户需求推动,电子和通信技术的飞速发展已经导致安全数据系统被广泛采用,这些系统采用密码安全数据存储层,例如区块链。在许多实际应用中,区块链促进信息共享。在广泛的数据存储层中定位并检索数据的效率的提高将有助于推动这种安全数据系统的进一步采用。Rapid advances in electronics and communications technology, driven by overwhelming customer demand, have led to the widespread adoption of secure data systems that employ cryptographically secure data storage layers, such as blockchain. In many practical applications, blockchain facilitates information sharing. Improved efficiencies in locating and retrieving data across a wide range of data storage tiers will help drive further adoption of such secure data systems.

附图说明Description of the drawings

图1图示了示例安全分散的数据处理和存储系统。Figure 1 illustrates an example secure decentralized data processing and storage system.

图2示出了图1的安全数据处理和存储节点的示例。Figure 2 shows an example of the secure data processing and storage node of Figure 1.

图3图示了存储在图1的节点中的区块链。Figure 3 illustrates the blockchain stored in the node of Figure 1.

图4示出了用于区块链中的数据元素的辅助索引系统。Figure 4 illustrates a secondary indexing system for data elements in a blockchain.

图5示出了用于创建并更新辅助索引的逻辑流程。Figure 5 shows the logic flow for creating and updating secondary indexes.

图6示出了用于创建并更新辅助索引的另一逻辑流程。Figure 6 shows another logical flow for creating and updating a secondary index.

图7示出了用于创建并更新辅助索引的时间线。Figure 7 shows a timeline for creating and updating secondary indexes.

图8图示了用于在辅助索引和区块链中查询数据元素的逻辑流程。Figure 8 illustrates the logic flow for querying data elements in the secondary index and blockchain.

图9示出了用于在辅助索引和区块链中查询数据元素的另一逻辑流程。Figure 9 shows another logical flow for querying data elements in the secondary index and blockchain.

具体实施方式Detailed ways

传统上,描述实体之间关系的数据元素,诸如与货币或服务交换有关的数据,由诸如银行的第三方维持并处理。因此,数据元素的完整性依赖于第三方的可信赖性以及如何保护这些数据元素在例如第三方控制的服务器中免遭篡改。最近已经开发了各种数据存储层(例如区块链系统),以在一大组非信任节点之间分散(decentralize)这些数据元素的处理和存储。以下描述将区块链参考作为示例实现上下文,但技术解决方案适用于其他数据存储层。Traditionally, data elements describing relationships between entities, such as data related to the exchange of money or services, were maintained and processed by third parties such as banks. Therefore, the integrity of data elements relies on the trustworthiness of third parties and how these data elements are protected from tampering, for example, in servers controlled by third parties. Various data storage layers (such as blockchain systems) have recently been developed to decentralize the processing and storage of these data elements among a large group of untrusted nodes. The following description uses the blockchain reference as an example implementation context, but technical solutions apply to other data storage layers.

区块链系统消除了对信任的第三方的需要。在区块链系统中,数据元素被存储为数据区块的链(即区块链)的形式的可公开访问的数据单元,这些数据单元具有被分发到各种区块链节点的多个副本。区块链系统中的数据完整性是使用数字签名、共识机制和其他防数据篡改算法来实现的。然而,存储这些数据元素的区块链可以使用不同于例如传统的关系数据库或非关系数据库的原理来组织。与为快速信息检索设计的这些传统数据库不同,直接向区块链查询信息可能是涉及遍历整个数据区块的链的低效且耗时的过程。在本公开中,与区块链系统集成的辅助索引提供了一种用于从包括区块链的数据存储层进行快速信息搜索和检索的技术解决方案。Blockchain systems eliminate the need for a trusted third party. In a blockchain system, data elements are stored as publicly accessible data units in the form of a chain of data blocks (i.e., a blockchain) that have multiple copies distributed to various blockchain nodes . Data integrity in blockchain systems is achieved using digital signatures, consensus mechanisms, and other anti-data tampering algorithms. However, the blockchain storing these data elements can be organized using different principles than, for example, traditional relational or non-relational databases. Unlike these traditional databases, which are designed for fast information retrieval, querying the blockchain directly for information can be an inefficient and time-consuming process that involves traversing the entire chain of data blocks. In the present disclosure, auxiliary indexing integrated with blockchain systems provides a technical solution for fast information search and retrieval from data storage layers including blockchain.

图1图示了用于安全和分散的数据处理和存储的示例系统100,诸如区块链平台。系统100包括经由通信网络120彼此通信的分散节点102、104、106、108和110。通信网络120可以基于例如互联网协议(IP),并且可以包括有线或无线接入网、局域网、广域网和其他计算机网络的组合。Figure 1 illustrates an example system 100 for secure and decentralized data processing and storage, such as a blockchain platform. System 100 includes distributed nodes 102, 104, 106, 108, and 110 that communicate with each other via communication network 120. Communications network 120 may be based on, for example, Internet Protocol (IP), and may include a combination of wired or wireless access networks, local area networks, wide area networks, and other computer networks.

系统100的每个节点可以是用于例如存储、维持、更新、处理和查询受保护数据的软件和硬件的组合(以下称为区块链)。每个节点可以基于单个计算机、一组集中式或分布式计算机或者由云计算服务提供者托管的单个或一组虚拟机。Each node of system 100 may be a combination of software and hardware used, for example, to store, maintain, update, process, and query protected data (hereinafter referred to as a blockchain). Each node can be based on a single computer, a set of centralized or distributed computers, or a single or set of virtual machines hosted by a cloud computing service provider.

作为示例,在图2中,安全数据处理和存储系统100的节点,诸如节点102,被示出为包括一组计算机201,诸如计算机203、205和207。计算机201可以包括通信接口202、系统电路装置204、输入/输出(I/O)接口206、存储装置209和显示电路装置208,该显示电路装置在本地或对于远程显示(例如在本地或远程机器上运行的web浏览器中)生成机器界面210。机器界面210和I/O接口206可以包括GUI、触敏显示器、语音或面部识别输入、按钮、开关、扬声器和其他用户界面元件。I/O接口206的附加示例包括麦克风、视频和静止图像照相机、耳机和麦克风输入/输出插孔、通用串行总线(USB)连接器、存储卡插槽和其他类型的输入。I/O接口206可以进一步包括磁性或光学介质接口(例如CDROM或DVD驱动器)、串行和并行总线接口以及键盘和鼠标接口。As an example, in FIG. 2 , nodes of secure data processing and storage system 100 , such as node 102 , are shown as including a set of computers 201 , such as computers 203 , 205 and 207 . Computer 201 may include a communications interface 202, system circuitry 204, an input/output (I/O) interface 206, a storage device 209, and display circuitry 208 that may be used locally or for remote display (e.g., on a local or remote machine). (in a web browser running on the computer) to generate the machine interface 210. Machine interface 210 and I/O interface 206 may include GUIs, touch-sensitive displays, voice or facial recognition input, buttons, switches, speakers, and other user interface elements. Additional examples of I/O interfaces 206 include microphones, video and still image cameras, headphone and microphone input/output jacks, universal serial bus (USB) connectors, memory card slots, and other types of inputs. I/O interfaces 206 may further include magnetic or optical media interfaces (eg, CDROM or DVD drives), serial and parallel bus interfaces, and keyboard and mouse interfaces.

通信接口202可以包括无线发送器和接收器(“收发器”)212以及收发器212的发送和接收电路装置所使用的任何天线214。收发器212和天线214可以例如在IEEE 802.11的任何版本(例如802.11n或802.11ac)下支持Wi-Fi网络通信。通信接口202还可以包括有线收发器216。有线收发器216可以为大范围的通信协议中的任何通信协议提供物理层接口,大范围的通信协议诸如任何类型的以太网、电缆数据服务接口规范(DOCSIS)、数字订户线路(DSL)、同步光学网络(SONET)或其他协议。节点102的计算机201经由通信接口202和通信网络120与区块链系统100的其他节点通信。Communication interface 202 may include a wireless transmitter and receiver ("transceiver") 212 and any antenna 214 used by the transmit and receive circuitry of transceiver 212 . Transceiver 212 and antenna 214 may support Wi-Fi network communications, for example, under any version of IEEE 802.11 (eg, 802.11n or 802.11ac). Communication interface 202 may also include a wired transceiver 216. The wired transceiver 216 may provide a physical layer interface for any of a wide range of communication protocols, such as any type of Ethernet, Data over Cable Services Interface Specification (DOCSIS), Digital Subscriber Line (DSL), Synchronous Optical network (SONET) or other protocols. The computer 201 of the node 102 communicates with other nodes of the blockchain system 100 via the communication interface 202 and the communication network 120.

存储器209可以用于本地存储节点102的区块链的副本。存储装置209可以进一步用于存储区块链的辅助索引。备选地,计算机201可以经由通信接口202和通信网络120与用于存储区块链的副本的网络存储装置230通信。网络存储器230可以是集中式或分布式的。例如,网络存储装置230可以由云计算服务提供者远程托管。Memory 209 may be used to locally store a copy of node 102's blockchain. The storage device 209 may further be used to store an auxiliary index of the blockchain. Alternatively, computer 201 may communicate via communication interface 202 and communication network 120 with network storage 230 for storing a copy of the blockchain. Network storage 230 may be centralized or distributed. For example, network storage device 230 may be hosted remotely by a cloud computing service provider.

系统电路装置204可以包括硬件、软件、固件或任何组合的其他电路装置。系统电路装置204可以例如用一个或多个片上系统(SoC)、专用集成电路(ASIC)、微处理器、分立模拟和数字电路和其他电路装置来实现。系统电路装置204可以包括注入电路装置,该注入电路装置与区块链和系统100的其他部分交互,用于实现与区块链的维持、存储、处理、验证、索引以及其他方面有关的任何期望功能性。仅作为一个示例,系统电路装置204可以包括一个或多个指令处理器218和存储器220。存储器220存储例如控制指令224和操作系统222。在一种实现中,处理器218执行控制指令224和操作系统222,以实施与区块链有关的任何期望功能性。区块链的控制指令224可以被实现为具有多层的软件堆栈。System circuitry 204 may include hardware, software, firmware, or other circuitry in any combination. System circuitry 204 may be implemented, for example, with one or more systems on a chip (SoC), application specific integrated circuits (ASICs), microprocessors, discrete analog and digital circuits, and other circuitry. System circuitry 204 may include injectable circuitry that interacts with the blockchain and other portions of the system 100 for implementing any desires related to maintenance, storage, processing, verification, indexing, and other aspects of the blockchain. Feature. By way of example only, system circuitry 204 may include one or more instruction processors 218 and memory 220 . Memory 220 stores, for example, control instructions 224 and operating system 222. In one implementation, processor 218 executes control instructions 224 and operating system 222 to implement any desired functionality related to the blockchain. The blockchain's control instructions 224 may be implemented as a software stack with multiple layers.

返回图1,实体142、144、146、148和150可以经由图1的区块链节点参与区块链系统100。在一种实现中,区块链系统100的每个节点可以支持一个参与实体。在另一实现中,每个节点可以支持多个参与实体或参与实体的多个用户。为了成为系统100的节点,可以在该节点处的计算机上安装区块链软件堆栈。在软件堆栈的顶部,应用层可以提供由软件堆栈的较低层支持的各种区块链功能。这些功能可以包括例如加密数据元素、提交用于插入到区块链中的数据元素、验证要提交的数据元素、经由共识机制在区块链中创建新数据区块、存储区块链的本地副本以及其他功能。Returning to FIG. 1 , entities 142 , 144 , 146 , 148 , and 150 may participate in blockchain system 100 via the blockchain nodes of FIG. 1 . In one implementation, each node of blockchain system 100 may support one participating entity. In another implementation, each node may support multiple participating entities or multiple users of participating entities. In order to become a node of system 100, a blockchain software stack can be installed on a computer at that node. At the top of the software stack, the application layer can provide various blockchain functionality supported by lower layers of the software stack. These functions may include, for example, encrypting data elements, submitting data elements for insertion into the blockchain, validating data elements for submission, creating new data blocks in the blockchain via consensus mechanisms, storing local copies of the blockchain and other features.

如图1所示,区块链系统100的配置和功能可以由区块链协议130支配。区块链协议130可以定义参与实体如何加密数据元素。区块链协议130可以进一步指定被加密数据元素的格式,使得被加密数据元素可以被参与实体和区块链系统中的节点解密并理解。区块链协议130可以附加地指定上述功能的类型以及应该如何实施这些功能。区块链协议130可以附加地指定参与实体和节点的可能角色。例如,区块链节点可以作为能够执行所有区块链功能的全功能节点参与。备选地,区块链节点可以仅参与执行区块链功能的子集之一。区块功能的每个子集可以包含来自可用区块链功能的多个区块链功能。区块链功能的可能子集可以在区块链协议130中被指定。参与实体可以选择子集之一,并且安装用于执行在所选子集中包括的功能的对应软件堆栈。在另一实现中,区块链协议130可以允许参与实体选择功能的任何组合并相应地配置其节点,而不是遵循区块链协议130的规定子集之一。As shown in Figure 1, the configuration and functionality of blockchain system 100 may be governed by blockchain protocol 130. The blockchain protocol 130 may define how participating entities encrypt data elements. The blockchain protocol 130 may further specify the format of the encrypted data elements so that the encrypted data elements can be decrypted and understood by participating entities and nodes in the blockchain system. The blockchain protocol 130 may additionally specify the types of functions described above and how they should be implemented. The blockchain protocol 130 may additionally specify possible roles of participating entities and nodes. For example, a blockchain node can participate as a fully functional node capable of performing all blockchain functions. Alternatively, a blockchain node may participate in performing only one of a subset of blockchain functions. Each subset of block functions can contain multiple blockchain functions from available blockchain functions. A possible subset of blockchain functionality may be specified in the blockchain protocol 130 . A participating entity may select one of the subsets and install a corresponding software stack for performing functions included in the selected subset. In another implementation, the blockchain protocol 130 may allow participating entities to select any combination of functionality and configure their nodes accordingly, rather than following one of the prescribed subsets of the blockchain protocol 130 .

图3示出了在区块链系统100的节点中存储的区块链300的示例副本,该节点具有存储区块链的本地副本的功能。如图3所示,区块链的副本可以包括一系列链接的数据区块302、304、306、308和310,每个数据区块由区块ID(B0、B1、B2和Bn)唯一标识。每个数据区块可以包括多个数据元素,诸如区块304的T10、T11和T12,...以及区块310的Tn0、Tn1和Tn2。每个数据元素除了包括数据之外,还可以包括数据ID。区块302可以是充当区块链的头部的特殊数据区块或起源区块,并且可以不包含实际数据元素。数据区块中的数据元素可以包括参与实体希望存储在区块链中的任何类型的数据。例如,数据元素可以是描述实体之间的关系(例如两方之间的货币或服务交易)的类型。作为另一示例,数据元素可以包括计算机指令,这些计算机指令用于自动执行嵌入在计算机指令中以及实体之间的协定或合约的规定。在区块链中存储的这种类型的数据元素可以被称为可执行数据元素或智能合约。如下面更详细地描述的,可执行数据元素中的计算机指令的一个或多个段的执行可以由区块链中的其他数据元素来调用和从其他数据元素调用。FIG. 3 shows an example copy of the blockchain 300 stored in a node of the blockchain system 100 that has the function of storing a local copy of the blockchain. As shown in Figure 3, a copy of the blockchain may include a series of linked data blocks 302, 304, 306, 308, and 310, each data block uniquely identified by a block ID (B0, B1, B2, and Bn) . Each data block may include multiple data elements, such as T10, T11, and T12 of block 304, and Tn0, Tn1, and Tn2 of block 310. In addition to data, each data element may also include a data ID. Block 302 may be a special data block or origin block that serves as the head of the blockchain and may not contain actual data elements. Data elements in a data block can include any type of data that participating entities wish to store in the blockchain. For example, a data element may be of a type that describes a relationship between entities, such as a transaction of money or services between two parties. As another example, data elements may include computer instructions for automatically executing the provisions of an agreement or contract embedded in the computer instructions and between the entities. This type of data elements stored in the blockchain may be called executable data elements or smart contracts. As described in greater detail below, execution of one or more segments of computer instructions in an executable data element may be invoked by and from other data elements in the blockchain.

可以使用各种密码技术来实现每个数据区块中数据元素的真实性。例如,可以使用基于公钥和私钥密码术的数字签名来确保要插入到区块链中的数据元素确实来自其宣告的提交实体。特别地,参与区块链系统并且希望将数据元素存储在区块链中的每个实体可以拥有私钥,该私钥始终保持秘密。公钥可以源自私钥,并且可以被使得可公开获得。当实体希望将数据元素存储在区块链中时,实体可以在将数据提交以插入在区块链中之前首先使用私钥对数据元素进行加密。有权访问实体的公钥的任何人都可以解密被加密的数据元素。当使用公钥解密时,对被加密数据的任何篡改都将导致数据无法读取。如此,使用私钥的加密表示实体对数据元素的数字签名,并且容易检测到对被加密数据的任何篡改。Various cryptographic techniques can be used to achieve the authenticity of the data elements in each data block. For example, digital signatures based on public and private key cryptography can be used to ensure that data elements to be inserted into the blockchain actually come from the submitting entity for which they are announced. In particular, each entity that participates in a blockchain system and wishes to store data elements in the blockchain can possess a private key, which is always kept secret. The public key can be derived from the private key and can be made publicly available. When an entity wishes to store a data element in the blockchain, the entity can first encrypt the data element using a private key before submitting the data for insertion in the blockchain. Anyone with access to the entity's public key can decrypt encrypted data elements. When using public key decryption, any tampering with the encrypted data will render the data unreadable. As such, encryption using a private key represents an entity's digital signature of a data element, and any tampering with the encrypted data is easily detectable.

区块链300的数据区块302、304、306、308和310被顺序创建并将链接成链。在一个示例实现中且如图3所示,数据区块与其紧邻的前一个数据区块之间的链接可以是哈希值,而不是数据结构中的传统指针。特别地,数据区块可以通过在紧邻的前一区块中包括数据元素的哈希值(在此被称为链接哈希值),来链接到其紧邻的前一数据区块。例如,在图3中,区块304中的数据元素的哈希值Hash 1可以被包括在紧接在区块304之后的数据区块306中,作为链接哈希值。如此,数据区块306与数据区块304链接。用于计算块中包含的数据元素的哈希值的算法例如可以基于但不限于SHA256哈希。The data blocks 302, 304, 306, 308, and 310 of the blockchain 300 are created sequentially and linked into a chain. In one example implementation and as shown in Figure 3, the link between a data block and its immediately preceding data block may be a hash value rather than a traditional pointer in the data structure. In particular, a data block may be linked to its immediately preceding data block by including a hash of the data element in the immediately preceding block (referred to herein as a link hash). For example, in Figure 3, hash value Hash 1 of the data element in block 304 may be included in data block 306 immediately following block 304 as a linked hash value. In this way, data block 306 and data block 304 are linked. The algorithm used to calculate the hash value of the data elements contained in the block may be based on, for example, but not limited to, SHA256 hashing.

如图3所示,可以进一步使用签名代码对包含数据元素的区块链系统的每个数据区块进行签名。签名代码可以备选地被称为一次性随机数(nonce)。数据区块的签名代码用于帮助根据区块链协议130检测数据区块的篡改。例如,当签名代码和数据区块中的数据元素的组合的哈希值包含具有预定义哈希模式的哈希部分时,根据区块链协议130可以认为数据区块签名代码是有效的。预定义的哈希模式可以由区块链协议(例如,在哈希值的开始处的预定义数目的前导零)来指定。因此,用于区块的签名代码可以通过解决困难的密码问题来计算。在以上示例实现中,签名代码可以被计算为使得计算出的签名代码和数据元素的组合的哈希值符合签名协议。例如,计算区块304的签名代码1,使得数据区块304的签名代码1、数据元素T10、T11和T12的组合的SHA256哈希与区块签名协议兼容,例如,由预定义数量的零前导。对签名区块中的数据的任何篡改将导致该区块的哈希值与签名协议不兼容。As shown in Figure 3, the signature code can be further used to sign each data block of the blockchain system containing data elements. The signature code may alternatively be called a one-time nonce. The signature code of the data block is used to help detect tampering of the data block according to the blockchain protocol 130 . For example, the data block signature code may be considered valid according to the blockchain protocol 130 when the hash value of the combination of the signature code and the data elements in the data block contains a hash portion with a predefined hash pattern. A predefined hash pattern may be specified by the blockchain protocol (eg, a predefined number of leading zeros at the beginning of the hash value). Therefore, the signature code for a block can be calculated by solving difficult cryptographic problems. In the above example implementation, the signature code may be calculated such that the calculated hash value of the combination of the signature code and the data element conforms to the signature protocol. For example, signature code 1 of block 304 is calculated such that the SHA256 hash of the combination of signature code 1 of data block 304, data elements T10, T11, and T12 is compatible with the block signing protocol, e.g., by a predefined number of zeros leading . Any tampering with the data in a signed block will cause the hash of that block to be incompatible with the signing protocol.

可以通过一次附加一个数据区块来创建区块链300。具体地,可以向区块链系统广播来自区块链系统的各个节点的加密(或数字签名)的数据元素。然后可以将这些加密的数据元素收集到数据区块中,以便存储到区块链中。区块链协议130可以指定共识算法或机制。共识算法可以控制如何验证新数据元素、如何从已验证的新数据元素组装新数据区块以及如何将新块广播到区块链节点、检查它并将其接受到区块链中。Blockchain 300 can be created by appending data blocks one at a time. Specifically, encrypted (or digitally signed) data elements from various nodes of the blockchain system may be broadcast to the blockchain system. These encrypted data elements can then be collected into data blocks for storage into the blockchain. The blockchain protocol 130 may specify a consensus algorithm or mechanism. The consensus algorithm controls how new data elements are verified, how new data blocks are assembled from verified new data elements, and how the new block is broadcast to the blockchain nodes, checks it, and accepts it into the blockchain.

在一个示例共识算法中,可以周期性地(例如,每10分钟或者大约是由区块链节点求解区块签名代码所需的时间段)收集从节点提交的数据元素。进一步地,各种节点可以根据由区块链协议130指定的数据元素验证规则(例如,数据元素被数字签名,包含在数据元素中的金融交易由于付款人具有足够的余额而是有效的)来参与验证这些数据元素,以将数据元素组装成区块,计算该区块的签名代码,并且将新区块广播到区块链系统以供接受。在一个实现中,广播可接受区块的第一节点将负责将其区块插入到区块链中。用新区块更新各种节点中的区块链副本。必须求解签名代码的该特定算法(有时被称为“工作量证明”)只是可能的共识算法的一个示例。区块链注释可以使用其他共识算法(例如“权益证明”)来验证并创建新数据区块。备选地,将嵌入其数据区块中的数据元素插入到区块链中被称为使数据元素与区块链链接。In an example consensus algorithm, data elements submitted from nodes may be collected periodically (e.g., every 10 minutes or approximately the period of time required by a blockchain node to solve a block signing code). Further, various nodes may perform verification according to the data element verification rules specified by the blockchain protocol 130 (e.g., the data element is digitally signed, the financial transaction contained in the data element is valid because the payer has a sufficient balance) Participates in validating these data elements to assemble the data elements into a block, calculates the signature code for the block, and broadcasts the new block to the blockchain system for acceptance. In one implementation, the first node to broadcast an acceptable block would be responsible for inserting its block into the blockchain. Update copies of the blockchain in various nodes with new blocks. This specific algorithm that must solve the signed code (sometimes called "proof of work") is just one example of a possible consensus algorithm. Blockchain annotations can use other consensus algorithms (such as "proof of stake") to verify and create new data blocks. Alternatively, inserting a data element embedded in its data block into the blockchain is called linking the data element with the blockchain.

区块链系统的功能(例如加密并提交数据元素、共识功能(包括数据元素的验证、签名代码的计算以及新数据区块的组装)以及存储区块链的本地副本)可以由各种节点来执行。参与共识算法的节点例如可以被称为矿工。如前所述,节点在参与区块链系统时,可以决定功能的子集,节点可以通过安装对应的软件堆栈来执行该功能的子集。例如,全功能节点可以执行上面讨论的所有功能。然而,功能受限的节点只可以执行功能的所选集。例如,一些节点仅可以参与加密数据元素并将其提交到区块链中。Functions of a blockchain system, such as encrypting and submitting data elements, consensus functions including verification of data elements, computation of signature codes, and assembly of new data blocks, and storing local copies of the blockchain, can be performed by various nodes. implement. Nodes participating in the consensus algorithm may be called miners, for example. As mentioned before, nodes can decide on a subset of functions when participating in a blockchain system, and nodes can execute that subset of functions by installing the corresponding software stack. For example, a fully functional node can perform all the functions discussed above. However, function-restricted nodes can only perform a selected set of functions. For example, some nodes can only participate in encrypting data elements and submitting them to the blockchain.

如上所述,区块链的数据区块中的数据元素可以是参与实体希望存储在区块链中的任何类型的数据,包括特殊类型的可执行数据元素(或智能合约)。区块链协议130(图1的130)可以规定用于从其他数据元素调用可执行数据元素中的全部或部分可执行计算机指令的机制和接口。例如,可执行数据元素可以包括可以独立调用的指令部分。这些可执行数据元素中的每一个可以由ID来标识,并且可执行数据元素内的指令的每个部分可以进一步由部分ID来标识。As mentioned above, data elements in a blockchain's data blocks can be any type of data that participating entities wish to store in the blockchain, including special types of executable data elements (or smart contracts). Blockchain protocol 130 (130 of Figure 1) may provide for mechanisms and interfaces for calling all or part of executable computer instructions in executable data elements from other data elements. For example, executable data elements may include portions of instructions that may be independently invoked. Each of these executable data elements may be identified by an ID, and each portion of the instructions within the executable data element may further be identified by a portion ID.

可执行数据元素的全部或部分的执行可以以各种方式和在各种定时下被调用。在一个示例实现中,区块链协议130可以提供一种机制,该机制用于在另一数据元素被插入到新数据区块中并且该新数据区块被验证并由节点之一将其附加到区块链时,从该另一数据元素调用可执行数据元素中的指令的部分的执行。可以根据区块链协议130在调用数据元素中提供调用接口,用于指定例如可执行数据元素的ID、要执行的可执行数据元素内的指令的特定部分的ID以及传递给可执行指令的参数。Execution of all or part of an executable data element may be invoked in various ways and at various timings. In one example implementation, the blockchain protocol 130 may provide a mechanism for when another data element is inserted into a new data block and the new data block is verified and appended by one of the nodes. When to the blockchain, execution of the portion of the instructions in the executable data element is invoked from that other data element. A call interface may be provided in a call data element in accordance with the blockchain protocol 130 for specifying, for example, an ID of an executable data element, an ID of a particular portion of an instruction within the executable data element to be executed, and parameters passed to the executable instruction. .

上面在图1至图3中描述的区块链系统可以用于各种应用中。例如,多个参与实体可以使用区块链系统来共享存储在区块链中的专有信息。例如,合作的半导体电路制造者可以使用区块链系统来共享设计和布局。再如,两家合作医院可以使用区块链系统来共享患者活动和其他信息。医院可以将信息分类为例如不同类型的患者活动,例如患者活动和与不同部门(内科、心内科、支付部门等)的交互。各单独的活动数据可以是专有的,并且由医院根据合作医院之间商定的格式和加密公式进行编码,并且用作数据元素中的数据有效负载。然后可以使用适当的公钥对该数据元素进行进一步加密并将其存储在区块链中。如此,这种数据元素中的专有信息仅可在合作医院之间共享,而不能与区块链中的其他一般参与实体共享。具体地,虽然其他参与实体可以使用公钥来解密区块链中的数据元素以获得封装的数据有效负载,但是这种数据有效负载是专有的,并且只能由合作医院进一步解密。The blockchain system described above in Figures 1 to 3 can be used in a variety of applications. For example, multiple participating entities can use a blockchain system to share proprietary information stored in the blockchain. For example, collaborating semiconductor circuit manufacturers could use a blockchain system to share designs and layouts. As another example, two partner hospitals could use a blockchain system to share patient activity and other information. The hospital can classify the information into, for example, different types of patient activity, such as patient activity and interactions with different departments (internal medicine, cardiology, payment department, etc.). Each individual campaign data can be proprietary and encoded by the hospital according to a format and encryption formula agreed upon between the collaborating hospitals and used as the data payload in the data element. This data element can then be further encrypted using the appropriate public key and stored in the blockchain. As such, proprietary information in this data element can only be shared among collaborating hospitals and not with other general participating entities in the blockchain. Specifically, while other participating entities can use the public key to decrypt data elements in the blockchain to obtain an encapsulated data payload, this data payload is proprietary and can only be further decrypted by the collaborating hospital.

在以上区块链中的信息共享和许多其他区块链应用的上下文中,参与实体可能期望在区块链中查询信息。例如,合作医院之一可能需要搜索另一医院特定部门中的患者活动。对于典型的区块链系统,如果包含特定数据元素的数据区块的数据ID和/或区块ID已知并用作查询密钥,则通常直接从区块链获取特定数据元素。然后可以使用适当的公钥对返回的数据元素进行解密,并且如果数据有效负载是专有的,则可以由查询实体对其进行进一步解密。In the above context of information sharing in blockchain and many other blockchain applications, participating entities may desire to query the blockchain for information. For example, one of the partner hospitals may need to search for patient activity in a specific department of another hospital. For a typical blockchain system, specific data elements are usually obtained directly from the blockchain if the data ID and/or block ID of the data block containing the specific data element is known and used as a query key. The returned data elements can then be decrypted using the appropriate public key, and if the data payload is proprietary, it can be further decrypted by the querying entity.

然而,在一些应用中,要查询的数据元素的数据ID和/或区块ID可能未知。例如,在上面讨论的两家合作医院之间的信息共享应用中,第一医院可能期望找出特定患者到第二医院特定部门的就诊。第一医院可以用于查询区块链的密钥可以是医院特定部门的身份以及特定患者的姓名或公钥。因为与这些患者就诊相关联的数据元素的区块ID和数据ID是未知的,所以可能需要从头到尾遍历区块链,以用于解密并标识存储在区块链中的这些期望数据元素。因为区块链可能变得过大,所以区块链中的这种查询过程可能耗时且低效。However, in some applications, the data ID and/or block ID of the data element to be queried may not be known. For example, in the information sharing application between two collaborating hospitals discussed above, the first hospital may wish to find out where a specific patient visited a specific department of the second hospital. The keys that First Hospital can use to query the blockchain could be the identity of a specific department of the hospital and the name or public key of a specific patient. Because the block ID and data ID of the data elements associated with these patient visits are unknown, it may be necessary to traverse the blockchain from beginning to end in order to decrypt and identify these expected data elements stored in the blockchain. This query process in the blockchain can be time-consuming and inefficient because the blockchain can become too large.

在一些其他实现中,随着数据区块以诸如关系数据库的分离数据库的形式被附加到区块链,可以提取并跟踪关于区块链中的数据元素的整个集合的信息,该分离数据库可以使用传统的数据库查询过程来更高效地查询。然而,这种方法要求区块链节点中的附加存储空间,以用于维持并同步分离数据库。这种数据库复制区块链中已经包含的信息,并且通常会消耗大存储空间。In some other implementations, information about the entire collection of data elements in the blockchain can be extracted and tracked as blocks of data are appended to the blockchain in the form of a separate database, such as a relational database, which can be used Traditional database query process to query more efficiently. However, this approach requires additional storage space in the blockchain node for maintaining and synchronizing separate databases. Such databases duplicate information already contained in the blockchain and typically consume large storage space.

在根据本公开的一个示例实现中,为了从区块链高效检索信息,一个实体或合作实体可以创建并更新区块链中的数据元素的子集的辅助索引。数据元素的子集可以包括实体或合作实体感兴趣的数据元素。例如,辅助索引可以由两家合作医院来建立,这两家医院希望共享与这些合作医院中的患者活动有关的数据元素的信息。每个辅助索引可以对应于特定类型的患者活动。辅助索引可以经由执行由合作医院提交到区块链中的可执行数据元素中的指令来创建并更新。当将特定类型的数据元素的每个子集插入到区块链中时,可以调用用于创建并更新辅助索引的可执行数据元素的执行。进一步地,辅助索引可以被维持在与区块链分离的数据库中。两家医院可以访问辅助索引,以促进从区块链检索与数据元素子集有关的信息,而不必遍历整个区块链。In one example implementation in accordance with the present disclosure, to efficiently retrieve information from a blockchain, one entity or collaborating entities may create and update a secondary index for a subset of data elements in the blockchain. The subset of data elements may include data elements of interest to the entity or collaborating entity. For example, a secondary index may be established by two collaborating hospitals that wish to share information about data elements related to patient activity in these collaborating hospitals. Each auxiliary index can correspond to a specific type of patient activity. Auxiliary indexes may be created and updated via execution of instructions in executable data elements submitted to the blockchain by partner hospitals. When each subset of data elements of a specific type is inserted into the blockchain, execution of the executable data elements that creates and updates the secondary index can be invoked. Further, the secondary index can be maintained in a database separate from the blockchain. Both hospitals have access to secondary indexes to facilitate retrieving information from the blockchain regarding subsets of data elements without having to traverse the entire blockchain.

图4更详细地图示了用于区块链中的信息查询的这种辅助索引的示例实现400。具体地,可执行数据元素402可以在根据区块链协议130提交数据元素的正常过程之后被插入到区块链中。例如,这些可执行数据元素可以由希望共享信息的实体同意。这些可执行数据元素可以被执行为建立、维持、更新并查询辅助索引422,以用于促进实体检索信息。每个可执行数据元素可以对应于一个辅助索引(例如404→424、406→426、408→428、410→430)。备选地,可执行数据元素可以包含指令的多个部分,并且指令的每个部分可以对应于辅助索引422之一。Figure 4 illustrates an example implementation 400 of such an auxiliary index for information lookup in a blockchain in greater detail. Specifically, executable data element 402 may be inserted into the blockchain following the normal process of submitting data elements according to blockchain protocol 130 . For example, these executable data elements may be agreed to by entities wishing to share information. These executable data elements may be executed to create, maintain, update, and query the auxiliary index 422 for facilitating the entity's retrieval of information. Each executable data element may correspond to a secondary index (eg 404→424, 406→426, 408→428, 410→430). Alternatively, the executable data element may contain multiple portions of the instruction, and each portion of the instruction may correspond to one of the auxiliary indices 422 .

每个可执行数据元素和对应的辅助索引可以与区块链中一种特定类型的数据元素相关。因此,辅助索引422可以各自被标识为与数据元素的类型相关联。例如,在两家合作医院之间的信息共享应用的上下文中,辅助索引424可以对应于医院的心内科的所有患者活动,而索引426可以与医院的外科的所有患者活动相关,并且索引428可以对应于患者向医院进行的支付。Each executable data element and corresponding secondary index can be related to a specific type of data element in the blockchain. Accordingly, auxiliary indexes 422 may each be identified as being associated with a type of data element. For example, in the context of an information sharing application between two collaborating hospitals, auxiliary index 424 may correspond to all patient activities of the hospital's Department of Cardiology, while index 426 may relate to all patient activities of the hospital's Department of Surgery, and index 428 may Corresponds to payments made by patients to the hospital.

在一个实现中,每个辅助索引,诸如辅助索引426,可以包括用于如440所示的对应类型的数据元素所涉及的实体的公钥。进一步地,每个索引可以包括对应类型的数据元素的区块ID和/或数据ID。在两个合作医院之间的信息共享应用的上下文中,辅助索引426例如可以包括多个条目。每个条目可以对应于与例如医院的外科中的患者活动有关的数据元素。每个条目可以包括患者的公钥或其他标识符以及数据元素的区块ID(例如b11-b1N)和数据ID(例如t11-t1N),如图5的440、450和460所示。In one implementation, each auxiliary index, such as auxiliary index 426, may include a public key for the entity involved in the data element of the corresponding type as shown at 440. Further, each index may include a block ID and/or a data ID of a corresponding type of data element. In the context of an information sharing application between two collaborating hospitals, the auxiliary index 426 may include multiple entries, for example. Each entry may correspond to a data element related to patient activity in, for example, surgery in a hospital. Each entry may include the patient's public key or other identifier as well as the block ID (eg, b11-b1N) and data ID (eg, t11-t1N) of the data element, as shown at 440, 450, and 460 of Figure 5.

图5图示了用于创建针对特定类型的数据元素的辅助索引的逻辑流程。实体可以首先向区块链提交可执行数据元素,该可执行数据元素包含用于建立针对特定类型的数据元素的辅助索引的指令(502)。然后,可以经由共识过程由矿工节点将可执行数据元素包括到区块链中(504)。一旦可执行数据元素在区块链中到位,就可以建立针对特定类型的数据元素的辅助索引。具体地,可以创建特定类型的数据元素(506)。然后,可以经由共识过程由矿工节点将特定类型的数据元素提交给区块链并将其包括到区块链中(508)。在将特定类型的数据元素包括在区块链中时,可以调用并自动执行可执行数据元素中用于建立针对特定类型的数据元素的辅助索引的指令(510)。该调用可以通过以下方式来执行:在特定类型的数据元素中包括代码接口,以用于在将特定类型的数据元素提交到区块链时自动调用可执行数据元素中的指令。该代码接口可以由区块链协议130指定。备选地,可执行数据元素中用于建立辅助索引的指令的调用可以在节点的应用层中进行。通过执行辅助索引建立指令,可以从特定类型的数据元素提取数据ID、区块ID、公钥或其他实体标识符等,并且将其包括在特定类型的数据元素的辅助索引中(512)。Figure 5 illustrates the logic flow for creating secondary indexes for specific types of data elements. An entity may first submit an executable data element to the blockchain that contains instructions for building a secondary index for a particular type of data element (502). The executable data elements may then be included into the blockchain by the miner nodes via a consensus process (504). Once executable data elements are in place in the blockchain, secondary indexes can be built for specific types of data elements. Specifically, data elements of specific types may be created (506). Specific types of data elements may then be submitted to and included in the blockchain by the miner nodes via a consensus process (508). When a particular type of data element is included in the blockchain, instructions in the executable data element for establishing a secondary index for the particular type of data element may be invoked and automatically executed (510). This call may be performed by including a code interface in the specific type of data element for automatically calling instructions in the executable data element when the specific type of data element is submitted to the blockchain. The code interface may be specified by the blockchain protocol 130. Alternatively, the invocation of the instructions in the executable data element for building the secondary index may be made in the application layer of the node. By executing the auxiliary index building instructions, the data ID, block ID, public key or other entity identifier, etc. may be extracted from the specific type of data element and included in the auxiliary index of the specific type of data element (512).

图6图示了用于创建针对特定类型的数据元素的辅助索引的另一备选逻辑流程。再次,实体可以首先向区块链提交可执行数据元素,该可执行数据元素包含用于建立针对特定类型的数据元素的辅助索引的指令(602)。然后,可以经由共识过程由矿工节点将可执行数据元素包括到区块链中(604)。一旦可执行数据元素到位,就可以建立针对特定类型的数据元素的辅助索引。具体地,可以创建特定类型的数据元素(606),并且经由共识过程由矿工节点将特定类型的数据元素包括到区块链中(608)。在将数据元素包括到区块链中时,可以创建具有用于在可执行数据时间内调用索引建立指令的接口的对应索引数据元素(备选地称为索引控制数据元素)(610)。索引数据元素的创建可以由嵌入在数据元素中的代码接口自动发起。备选地,在检测到已经将特定类型的对应数据元素提交到区块链中之后,区块链节点中的应用层可以创建索引数据元素。该索引数据元素就像常规数据元素一样,但包含用于调用可执行数据元素中的指令的接口,这些指令用于建立针对特定类型的数据元素的辅助索引。然后,经由共识过程由矿工节点将索引数据元素包括到区块链中(612)。在将索引数据元素包括在区块链中时,可以调用并自动执行可执行数据元素中用于建立针对特定类型的数据元素的辅助索引的指令(614)。通过执行辅助索引建立指令,可以从特定类型的数据元素提取数据ID、区块ID、公钥或其他实体标识符等,并且将其包括在特定类型的数据元素的辅助索引中(616)。Figure 6 illustrates another alternative logic flow for creating an auxiliary index for a specific type of data element. Again, the entity may first submit an executable data element to the blockchain that contains instructions for building a secondary index for the particular type of data element (602). The executable data elements may then be included into the blockchain by the miner nodes via a consensus process (604). Once the executable data elements are in place, secondary indexes can be built for specific types of data elements. Specifically, specific types of data elements may be created (606) and included into the blockchain by miner nodes via a consensus process (608). When including data elements into the blockchain, a corresponding index data element (alternatively referred to as an index control data element) may be created with an interface for calling indexing instructions within executable data times (610). The creation of index data elements can be initiated automatically by a code interface embedded in the data element. Alternatively, the application layer in the blockchain node can create the index data element after detecting that a corresponding data element of a specific type has been submitted to the blockchain. The index data element is just like a regular data element, but contains an interface for calling instructions in the executable data element that are used to build secondary indexes for specific types of data elements. The index data elements are then included into the blockchain by the miner nodes via a consensus process (612). When an index data element is included in the blockchain, instructions in the executable data element for building a secondary index for a particular type of data element may be invoked and automatically executed (614). By executing the auxiliary index building instructions, the data ID, block ID, public key or other entity identifier, etc. may be extracted from the specific type of data element and included in the auxiliary index of the specific type of data element (616).

图7示出了用于创建特定类型的数据元素的辅助索引的示例时间线。具体地,图7示出了具有三个时间标记t1、t2和t3的时间线701,其中,t1<t2<t3。在时间t1之前,诸如两家合作医院H1和H2的实体已经创建了用于建立针对特定类型的数据元素的辅助索引的各种可执行数据元素。这些可执行数据元素可以被包括在例如区块702中。在图7中,在区块702中包括两个分离的可执行数据元素710和711,以用于分别建立针对医院的心内科和外科的患者就诊的辅助索引。备选地,两个可执行数据元素可以驻留在不同的数据区块中。备选地,两个分离的可执行数据元素可以被实现为单个可执行数据元素,其包含两个可标识的指令部分,一个部分用于建立针对医院的心内科的患者就诊的辅助索引,而另一部分用于建立针对医院的外科的患者就诊的辅助索引。Figure 7 shows an example timeline for creating secondary indexes for specific types of data elements. Specifically, FIG. 7 shows a timeline 701 with three time markers t1, t2, and t3, where t1 < t2 < t3. Before time t1, entities such as two collaborating hospitals H1 and H2 have created various executable data elements for building secondary indexes for specific types of data elements. These executable data elements may be included in block 702, for example. In Figure 7, two separate executable data elements 710 and 711 are included in block 702 for establishing auxiliary indexes for patient visits to the cardiology and surgery departments of the hospital, respectively. Alternatively, the two executable data elements can reside in different data blocks. Alternatively, the two separate executable data elements may be implemented as a single executable data element that contains two identifiable portions of instructions, one to build a secondary index for patient visits to the cardiology department of the hospital, and Another part is used to build an auxiliary index for patient visits to the hospital's surgical department.

在时间t1时,经由共识过程由矿工节点对数据区块704进行验证,并将其接受到区块链中。在各种数据元素中,数据区块704包含描述第一患者P1对H1的心内科的就诊的数据元素712。数据元素712可以直接调用在区块702中的对应可执行数据元素710中的指令,以在心内科辅助索引720中创建条目722。备选地,数据元素712可以创建索引数据元素713,该索引数据元素713调用可执行数据元素710中的指令,以在心内科辅助索引720中创建条目722。因此,在时间t1之后,心内科辅助索引720包含一个条目,并且外科索引730为空。数据元素712和索引数据元素713不需要在同一数据区块中。例如,索引数据元素713可以在后面的数据区块中,例如紧接在保持数据元素712的数据区块之后的数据区块。At time t1, the data block 704 is verified by the miner node through the consensus process and accepted into the blockchain. Among various data elements, data block 704 contains data element 712 describing first patient P1's visit to H1's cardiology department. Data element 712 may directly invoke instructions in corresponding executable data element 710 in block 702 to create entry 722 in cardiology assist index 720 . Alternatively, data element 712 may create index data element 713 that invokes instructions in executable data element 710 to create entry 722 in cardiology assist index 720 . Therefore, after time t1, the cardiology ancillary index 720 contains one entry, and the surgery index 730 is empty. Data element 712 and index data element 713 need not be in the same data block. For example, index data element 713 may be in a later data block, such as the data block immediately following the data block holding data element 712.

在时间t2时,经由共识过程由矿工节点对数据区块706进行验证,并将其接受到区块链中。在各种数据元素中,数据区块706包含描述第二患者P2对H2的外科的就诊的数据元素714。再次,数据元素714可以直接调用在区块702中的对应可执行数据元素711中的指令,以在外科辅助索引730中创建条目724。备选地,数据元素714可以创建索引数据元素715,该索引数据元素715调用可执行数据元素711中的指令,以在外科辅助索引730中创建条目724。因此,在时间t2之后,心内科辅助索引720中的条目的数目保持为一,并且外科辅助索引730包含一个条目。At time t2, the data block 706 is verified by the miner node through the consensus process and accepted into the blockchain. Among various data elements, data block 706 contains data element 714 describing second patient P2's visit to H2's surgery. Again, data element 714 may directly invoke instructions in corresponding executable data element 711 in block 702 to create entry 724 in surgical assistance index 730 . Alternatively, data element 714 may create index data element 715 that invokes instructions in executable data element 711 to create entry 724 in surgical assistance index 730 . Therefore, after time t2, the number of entries in the cardiology ancillary index 720 remains one, and the surgical ancillary index 730 contains one entry.

在时间t3时,经由共识过程由矿工节点对数据区块708进行验证,并将其接受到区块链中。在各种数据元素中,数据区块708包含描述第三患者P3对H2的心内科和外科的就诊的数据元素716。数据元素716可以直接调用区块702中的两个可执行数据元素710和711中的指令,以在心内科辅助索引720中创建条目726并在外科辅助索引730中创建条目728。备选地,数据元素716可以创建索引数据元素717,其调用可执行数据元素710和711中的指令,以在心内科辅助索引720中创建条目726并在外科辅助索引730中创建条目728。因此,在时间t3之后,心内科辅助索引720包含两个条目,并且外科辅助索引730包含两个条目。At time t3, the data block 708 is verified by the miner node through the consensus process and accepted into the blockchain. Among the various data elements, data block 708 contains data element 716 describing third patient P3's cardiology and surgery visit to H2. Data element 716 may directly call instructions in two executable data elements 710 and 711 in block 702 to create entry 726 in cardiology assist index 720 and entry 728 in surgical assist index 730 . Alternatively, data element 716 may create index data element 717 that invokes instructions in executable data elements 710 and 711 to create entry 726 in cardiology assist index 720 and entry 728 in surgical assist index 730 . Therefore, after time t3, the cardiology ancillary index 720 contains two entries, and the surgical ancillary index 730 contains two entries.

在两家合作的半导体制造者之间的信息共享的另一示例上下文中,半导体制造者可以将为各种设备制造者(半导体制造者的客户)设计的电路布局存储在区块链中。仅举几个示例,电路可以被分为不同的类型,例如模拟功率电路、数字微控制器电路、数字信号处理器电路、加密/解密电路、视频编码电路。按照上述原理,半导体制造者可以建立各种可执行数据元素(一种电路一种可执行数据元素),以用于为包含这些类型的电路的数据元素建立辅助索引。如此,例如,可以为包含模拟功率电路的数据元素建立图7的辅助索引720,同时可以为包含数字信号处理器电路的数据元素建立索引730。对应地,可执行数据元素710和711可以包含用于建立针对模拟功率电路和数字信号处理器电路的辅助索引的指令。此外,数据元素712可以包含由第一半导体制造者向第一设备制造者提交的模拟功率电路,并且对应的索引数据元素713可以用于调用可执行数据元素710中的指令来建立辅助索引720。数据元素714可以包含由第二半导体制造者向第二设备制造者提交的数字信号处理器电路,并且对应的索引数据元素715可以用于调用可执行数据元素711中的指令,以用于建立针对数字信号处理器电路的辅助索引730。类似地,数据元素716可以包含由第二半导体制造者向第三设备制造者提交的模拟功率电路和数字信号处理器电路这两者,并且对应的索引数据元素717可以用于调用两个可执行数据元素710和711中的指令,以用于建立针对模拟功率电路和数字信号处理器电路的辅助索引720和730。如此,图7中的图示适用于合作半导体制造者之间的信息共享的上下文和许多其他应用上下文。In another example context of information sharing between two collaborating semiconductor manufacturers, the semiconductor manufacturer may store circuit layouts designed for various equipment manufacturers (customers of the semiconductor manufacturer) in the blockchain. To name a few examples, circuits can be classified into different types such as analog power circuits, digital microcontroller circuits, digital signal processor circuits, encryption/decryption circuits, video encoding circuits. According to the above principles, semiconductor manufacturers can create various executable data elements (one executable data element per circuit) for establishing auxiliary indexes for data elements containing these types of circuits. Thus, for example, auxiliary index 720 of FIG. 7 may be established for data elements containing analog power circuits, while index 730 may be established for data elements containing digital signal processor circuits. Correspondingly, executable data elements 710 and 711 may contain instructions for establishing auxiliary indexes for analog power circuits and digital signal processor circuits. Additionally, data element 712 may contain an analog power circuit submitted by the first semiconductor manufacturer to the first device manufacturer, and corresponding index data element 713 may be used to invoke instructions in executable data element 710 to build auxiliary index 720 . Data element 714 may contain digital signal processor circuitry submitted by the second semiconductor manufacturer to the second device manufacturer, and corresponding index data element 715 may be used to invoke instructions in executable data element 711 for establishing the Auxiliary index 730 for digital signal processor circuits. Similarly, data element 716 may contain both analog power circuitry and digital signal processor circuitry submitted by the second semiconductor manufacturer to the third device manufacturer, and corresponding index data element 717 may be used to invoke the two executables. Instructions in data elements 710 and 711 for establishing auxiliary indexes 720 and 730 for analog power circuits and digital signal processor circuits. As such, the diagram in Figure 7 is suitable for use in the context of information sharing between collaborating semiconductor manufacturers and in many other application contexts.

辅助索引720和730可以与区块链分离存储。它们可以被本地存储在属于医院的节点处。备选地,它们可以被存储在云存储空间中。可以向医院和医院同意授予访问权限的实体提供对辅助索引的访问。辅助索引可以以关系数据库的形式或任何其他形式来存储。备选地,辅助索引可以以任何其他形式来维持并且可以针对查询进行优化。例如,辅助索引可以被存储为诸如二进制排序树的数据结构,并且可以使用涉及哈希的优化算法进行优化。因为不需要将辅助索引写回到区块链中,所以不影响主区块链的验证和共识过程。如此,用于传统区块链的所有共识机制均保持完好无损,并且这些共识机制可以独立于用于建立辅助索引的机制的开发而进一步被开发。Auxiliary indexes 720 and 730 may be stored separately from the blockchain. They can be stored locally at nodes belonging to the hospital. Alternatively, they can be stored in cloud storage space. Access to the secondary index may be provided to the hospital and entities to which the hospital agrees to grant access. Secondary indexes can be stored in the form of a relational database or any other form. Alternatively, the secondary index can be maintained in any other form and can be optimized for queries. For example, the secondary index can be stored as a data structure such as a binary sorted tree, and can be optimized using optimization algorithms involving hashing. Because there is no need to write the auxiliary index back to the blockchain, it does not affect the verification and consensus process of the main blockchain. In this way, all consensus mechanisms used in traditional blockchains remain intact, and these consensus mechanisms can be further developed independently of the development of mechanisms used to build secondary indexes.

进一步地,区块链节点中的应用层中的个体或合作实体可以开发用于建立辅助索引的指令。区块链软件堆栈的较低层仅需要为从区块链中的另一数据元素对区块链中的可执行数据元素(智能合约)的函数调用提供机制或接口。如此,上述用于建立并更新辅助索引的过程不要求对区块链节点处的基本软件堆栈进行任何修改。Further, individuals or collaborating entities in the application layer in the blockchain node can develop instructions for establishing auxiliary indexes. The lower layers of the blockchain software stack only need to provide mechanisms or interfaces for function calls to executable data elements (smart contracts) in the blockchain from another data element in the blockchain. As such, the process described above for building and updating the secondary index does not require any modifications to the underlying software stack at the blockchain node.

因为辅助索引通过将用于建立辅助索引的指令封装在主区块链中的可执行数据元素中来根据图5和图6创建并更新,所以由用于主区块链的共识机制确保辅助索引更新的完整性。进一步地,辅助索引仅包含实体、数据元素和区块的标识符信息。实际数据仅驻留在主区块链中,并且受到保护,免受篡改。如此,对辅助索引(可能驻留在主区块链之外,因此不受主区块链的篡改检测机制保护)的任何篡改最多导致当在辅助索引中查询数据ID和区块ID时错误标识数据元素或丢失的数据元素(有关查询过程的详细描述,请参见下文)。主区块链中的实际数据元素不会受到损害。Because the secondary index is created and updated according to Figures 5 and 6 by encapsulating the instructions used to build the secondary index in an executable data element in the main blockchain, the secondary index is ensured by the consensus mechanism for the main blockchain Updated for completeness. Further, the auxiliary index only contains identifier information for entities, data elements, and blocks. The actual data only resides in the main blockchain and is protected from tampering. As such, any tampering with the secondary index (which may reside outside the main blockchain and thus not protected by the main blockchain's tamper detection mechanisms) will at most result in misidentification when querying the secondary index for data IDs and block IDs. Data elements or missing data elements (see below for a detailed description of the query process). The actual data elements in the main blockchain will not be compromised.

在将特定类型的数据元素提交到区块链与更新特定类型的数据元素的辅助索引之间可能会有时间延迟。由于这种延迟,图6和图7的数据元素和对应的索引数据元素(诸如数据元素712和对应的索引数据元素713)可以驻留在不同的区块中。然而,因为用于建立辅助索引的指令在将数据元素提交给主区块链之后被执行,所以辅助索引中的任何条目都将对应于已经包括在主区块链中的数据元素。可执行数据元素中用于建立辅助索引的指令可以进一步被构造为保证在将对应数据元素跨区块链节点提交到区块链中之前不更新辅助索引。备选地,区块链节点中的应用层可以确保在将对应的数据元素提交到区块链中之后,向区块链提交索引数据元素(参见图6的610)。There may be a time delay between submitting a specific type of data element to the blockchain and updating the secondary index for the specific type of data element. Because of this delay, the data elements and corresponding index data elements of Figures 6 and 7 (such as data element 712 and corresponding index data element 713) may reside in different blocks. However, because the instructions used to build the secondary index are executed after the data elements have been committed to the main blockchain, any entries in the secondary index will correspond to data elements that are already included in the main blockchain. The instructions in the executable data element for building the secondary index may be further structured to ensure that the secondary index is not updated until the corresponding data element is committed to the blockchain across blockchain nodes. Alternatively, the application layer in the blockchain node may ensure that the index data element is submitted to the blockchain after the corresponding data element is submitted to the blockchain (see 610 of Figure 6).

图8示出了用于经由为特定类型的数据元素建立的辅助索引在区块链中查询信息的逻辑流程。诸如合作医院之一的实体可以提交可执行数据元素,该可执行数据元素包含用于在辅助索引中查询期望类型的数据元素的指令(802)。该可执行数据元素可以与图5的可执行数据元素502或图6的602集成。具体地,可执行数据元素可以包含用于为特定类型的数据元素创建辅助索引的指令部分以及用于查询辅助索引的指令部分。备选地,图8的可执行数据元素802可以与图5的可执行数据元素502或图6的602分离。Figure 8 illustrates the logic flow for querying information in the blockchain via secondary indexes established for specific types of data elements. An entity, such as one of the collaborating hospitals, may submit an executable data element containing instructions for querying a secondary index for a desired type of data element (802). This executable data element may be integrated with executable data element 502 of FIG. 5 or 602 of FIG. 6 . Specifically, an executable data element may contain portions of instructions for creating an auxiliary index for a particular type of data element and portions of instructions for querying the auxiliary index. Alternatively, executable data element 802 of FIG. 8 may be separate from executable data element 502 of FIG. 5 or 602 of FIG. 6 .

继续图8,然后可以经由共识过程由矿工节点将用于查询关于特定类型的数据元素的信息的可执行数据元素包括在区块链中(804)。一旦可执行数据元素到位,实体就可以通过直接调用用于查询针对特定类型的数据元素的辅助索引的指令来查询辅助索引(806)。例如,可以执行查询指令,以使用患者姓名或公钥来查询针对特定类型的数据元素的辅助索引。该直接查询可以独立于区块链。例如,辅助索引可以被存储在区块链外部的数据库中,并且查询可以由实体从其区块链节点或从区块链节点外部的任何地方直接进行。对辅助索引的查询可以返回包含与查询准则相匹配的区块ID和/或数据元素ID的输出(808)。然后,实体可以使用返回的区块ID和/或数据ID来从区块链中获得对应的数据元素,使用公钥解密这些数据元素,并且对数据有效负载进一步解码以获得期望信息(810)。Continuing with Figure 8, executable data elements for querying information about specific types of data elements may then be included in the blockchain by the miner nodes via a consensus process (804). Once the executable data element is in place, the entity may query the auxiliary index by directly invoking instructions for querying the auxiliary index for a particular type of data element (806). For example, query instructions can be executed to query a secondary index for a specific type of data element using a patient's name or public key. This direct query can be independent of the blockchain. For example, the secondary index can be stored in a database outside the blockchain, and queries can be made directly by the entity from its blockchain node or from anywhere outside the blockchain node. A query on the secondary index may return output containing block IDs and/or data element IDs that match the query criteria (808). The entity may then use the returned block ID and/or data ID to obtain corresponding data elements from the blockchain, decrypt the data elements using the public key, and further decode the data payload to obtain the desired information (810).

图9示出了用于经由为特定类型的数据元素建立的辅助索引在区块链中查询信息的另一备选逻辑流程。诸如合作医院之一的实体可以提交可执行数据元素,该可执行数据元素包含用于在辅助索引中查询期望类型的数据元素的指令(902)。再次,该可执行数据元素可以与图5的可执行数据元素502或图6的602集成。然后可以经由共识过程由矿工节点将用于查询关于特定类型的数据元素的信息的可执行数据元素包括在区块链中(904)。一旦可执行数据元素到位,实体就可以通过使用包含用于调用可执行数据元素的查询指令的接口的查询数据元素来查询辅助索引(906)。首先可以使用共识过程由矿工节点将查询数据元素包括在区块链中(908)。在将查询数据元素包括到区块链中时,可以自动调用用于查询可执行数据元素中的特定类型的数据元素的辅助索引的指令(910)。例如,可以执行查询指令,以使用患者姓名或公钥来查询针对特定类型的数据元素的辅助索引。对辅助索引的查询可以返回包含与查询准则相匹配的区块ID和/或数据元素ID的输出(912)。然后,实体可以使用区块ID和/或数据ID来从区块链中获得对应的数据元素,使用公钥解密这些数据元素,并且对数据有效负载进一步解码以获得期望信息(914)。Figure 9 illustrates another alternative logic flow for querying information in the blockchain via secondary indexes established for specific types of data elements. An entity, such as one of the collaborating hospitals, may submit an executable data element containing instructions for querying a secondary index for a desired type of data element (902). Again, this executable data element may be integrated with executable data element 502 of FIG. 5 or 602 of FIG. 6 . Executable data elements for querying information about specific types of data elements may then be included in the blockchain by the miner nodes via a consensus process (904). Once the executable data element is in place, the entity can query the secondary index by using a query data element that contains an interface for invoking query instructions for the executable data element (906). The query data elements may first be included in the blockchain by miner nodes using a consensus process (908). Instructions for querying a secondary index for a particular type of data element in the executable data element may be automatically invoked upon inclusion of the query data element into the blockchain (910). For example, query instructions can be executed to query a secondary index for a specific type of data element using a patient's name or public key. A query on the secondary index may return output containing block IDs and/or data element IDs that match the query criteria (912). The entity may then use the block ID and/or data ID to obtain the corresponding data elements from the blockchain, decrypt the data elements using the public key, and further decode the data payload to obtain the desired information (914).

因此,本公开提供了一种用于在区块链中建立数据元素的子集的辅助索引的机制。辅助索引可以在应用层处建立并更新,而不影响区块链节点的基本软件堆栈。辅助索引可以被维持在区块链外部。辅助索引促进高效查询区块链中的数据元素,特别是在区块链系统中的信息共享的上下文中。虽然以上公开内容主要在区块链的上下文中进行,但基本原理适用于任何分散的安全数据处理和存储系统。Accordingly, the present disclosure provides a mechanism for establishing secondary indexing of subsets of data elements in a blockchain. Auxiliary indexes can be built and updated at the application layer without affecting the underlying software stack of the blockchain node. Auxiliary indexes can be maintained outside the blockchain. Auxiliary indexes facilitate efficient querying of data elements in blockchains, especially in the context of information sharing in blockchain systems. While the above disclosure is primarily made in the context of blockchain, the underlying principles apply to any decentralized secure data processing and storage system.

上述方法、设备、处理和逻辑可以以许多不同的方式以及硬件和软件的许多不同组合来实现。例如,实现的全部或部分可以是电路装置,该电路装置包括:指令处理器,诸如中央处理单元(CPU)、微控制器或微处理器;专用集成电路(ASIC)、可编程逻辑器件(PLD)或现场可编程门阵列(FPGA);或电路装置,该电路装置包括分立逻辑或其他电路组件,包括模拟电路组件、数字电路组件或两者;或其任何组合。作为示例,该电路装置可以包括分立互连硬件组件,和/或可以被组合在单个集成电路芯片上,分布在多个集成电路管芯之间,或者在公共封装中的多个集成电路管芯的多芯片模块(MCM)中被实现。The methods, devices, processes and logic described above may be implemented in many different ways and in many different combinations of hardware and software. For example, all or part of the implementation may be circuitry including: an instruction processor, such as a central processing unit (CPU), a microcontroller, or a microprocessor; an application specific integrated circuit (ASIC), a programmable logic device (PLD) ) or a field programmable gate array (FPGA); or a circuit device that includes discrete logic or other circuit components, including analog circuit components, digital circuit components, or both; or any combination thereof. As examples, the circuitry may include discrete interconnect hardware components, and/or may be combined on a single integrated circuit chip, distributed among multiple integrated circuit dies, or multiple integrated circuit dies in a common package is implemented in a multi-chip module (MCM).

该电路装置可以进一步包括或访问用于由该电路装置执行的指令。指令可以被存储在除了瞬态信号之外的有形存储介质中,诸如闪存、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM);或存储在磁盘或光盘上,诸如压缩盘只读存储器(CDROM)、硬盘驱动器(HDD)或其他磁盘或光盘上;或存储在另一种机器可读介质中或上。诸如计算机程序产品的产品可以包括存储介质以及存储在该介质中或上的指令,并且这些指令在由设备中的电路装置执行时可以使得设备实现上述或在附图中图示的任何处理。The circuitry may further include or access instructions for execution by the circuitry. Instructions may be stored in a tangible storage medium other than a transient signal, such as flash memory, random access memory (RAM), read only memory (ROM), erasable programmable read only memory (EPROM); or stored in On a magnetic or optical disk, such as a compact disk read-only memory (CDROM), hard disk drive (HDD), or other magnetic or optical disk; or stored in or on another machine-readable medium. A product, such as a computer program product, may include a storage medium and instructions stored in or on the medium, and the instructions, when executed by circuitry in the device, may cause the device to perform any of the processes described above or illustrated in the figures.

这些实现可以作为电路装置分布在多个系统组件之间,诸如在多个处理器和存储器之间,可选地包括多个分布式处理系统。参数、数据库和其他数据结构可以被分离存储并管理,可以并入到单个存储器或数据库中,可以以许多不同的方式在逻辑上和物理上进行组织,并且可以以许多不同的方式来实现,包括作为数据结构,诸如链表、哈希表、数组、记录、对象或隐式存储机制。程序可以是单个程序的部分(例如子例程)、分离的程序、分布在多个存储器和处理器上或以许多不同的方式实现,诸如在诸如共享库(例如动态链接库(DLL))的库中。例如,DLL可以存储指令,这些指令在由电路装置执行时,执行上述或在附图中图示的任何处理。These implementations may be distributed as circuitry among multiple system components, such as among multiple processors and memories, optionally including multiple distributed processing systems. Parameters, databases, and other data structures can be stored and managed separately, can be combined into a single memory or database, can be logically and physically organized in many different ways, and can be implemented in many different ways, including As a data structure such as a linked list, hash table, array, record, object or implicit storage mechanism. A program may be part of a single program (e.g., a subroutine), a separate program, distributed across multiple memories and processors, or implemented in many different ways, such as in a shared library such as a dynamic link library (DLL). in the library. For example, a DLL may store instructions that, when executed by circuitry, perform any of the processes described above or illustrated in the figures.

已经具体描述了各种实现。然而,许多其他实现也是可能的。Various implementations have been described in detail. However, many other implementations are possible.

Claims (20)

1. An electronic system, comprising:
a memory configured to store:
a data storage layer comprising linked data blocks comprising data elements; and
an index structure comprising index entries for data elements of a predefined type in the linked data block; and
injection circuitry in communication with the memory, the injection circuitry configured to respond to a link of a new data block comprising a new data element to the linked data block in the data storage layer by:
determining that the new data element is of the predefined type;
generating an index entry for the new data element, the index entry including a location reference within the data storage layer for the new data element; and
the index entry is inserted into the index structure.
2. The system of claim 1, wherein the data storage layer resides within a blockchain system node and the linked data blocks constitute copies of blockchains.
3. The system of claim 1, wherein the data elements comprise executable data elements comprising instructions to generate the index entry and insert the index entry into the index structure.
4. A system according to claim 3, wherein the injection circuitry is configured to invoke the instructions in the executable data element from the new data element to generate the index entry and insert the index entry into the index structure after the new data element is linked with the linked data block in the data storage layer.
5. The system of claim 3, wherein,
the injection circuitry is further configured to generate an index control data element for the new data element and link the index control data element to the linked data block in the data storage layer; and is also provided with
The injection circuitry is configured to invoke the instruction in the executable data element from the index control data element after the new data element and the index control data element are linked with the data block in the data storage layer.
6. The system of claim 1, wherein the index entry further comprises a data characteristic describing the new data element of the predefined type.
7. The system of claim 6, wherein the location reference comprises a data chunk identifier, a data element identifier, or both.
8. The system of claim 1, wherein the index structure is stored outside of the linked data blocks in the data storage layer.
9. The system of claim 1, further comprising an interrogation circuit configured to:
receiving a query for the new data element of the predefined type of data elements;
identifying the index structure associated with the data element of the predefined type;
retrieving the index entry from the index structure; and
in response to the query, the location reference obtained from the index entry is returned.
10. The system of claim 9, wherein the location reference comprises the location reference within the data storage layer for the data element of the predefined type.
11. The system of claim 9, wherein the data elements comprise executable data elements comprising instructions to identify the index structure and retrieve the index entry.
12. The system of claim 11, wherein the query is embedded in a query data element, and the query circuitry is further configured to invoke the instruction in the executable data element from the query data element after the query data element is linked with the linked data block.
13. A computer-implemented method, comprising:
receiving an executable data element comprising instructions for generating an index entry for a data element of a predefined type and inserting the generated index entry into an index structure for the predefined type;
linking the executable data elements with linked data blocks in a data storage layer;
receiving new data elements of the predefined type;
linking the new data element with the linked data block in the storage layer; and
invoking the instructions in the executable data elements linked with the linked data block to generate an index entry for the new data element and insert the index entry into the index structure after the linking of the new data element with the linked data block,
Wherein the index entry includes a location reference within the data storage layer for the new data element.
14. The method of claim 13, wherein the instruction in the executable data element is invoked from the new data element.
15. The method of claim 13, further comprising:
generating an index control data element for the new data element; and
linking the index control data element with the linked data block in the storage layer, and wherein the instructions in the executable data element are invoked from the index control data element.
16. The method of claim 13, wherein the index structure is stored outside of the linked data blocks in the data storage layer.
17. The method of claim 13, further comprising:
receiving a query for the new data element of the predefined type of data elements;
identifying the index structure associated with the predefined type;
retrieving the index entry from the index structure; and
in response to the query, the location reference obtained from the index entry is returned.
18. The method of claim 17, wherein the instructions in the executable data element further comprise instructions for the identification of the index structure and the retrieval of the index entry.
19. The method of claim 18, wherein the query is embedded in a query data element, the method further comprising:
linking the query data element with the linked data block in the storage layer; and
invoking the instructions in the executable data element for identifying the index structure and retrieving the index entry from the query data element after the query data element is linked with the linked data block in the storage layer.
20. An electronic system, comprising:
a memory configured to store:
a data storage layer comprising linked data blocks comprising data elements; and
an index structure comprising index entries for data elements of a predefined type in the linked data block; and
injection circuitry in communication with the memory, the injection circuitry configured to:
Linking executable data elements containing instructions for generating index entries and inserting the index entries for the predefined type of data elements into the linked data blocks in the data storage layer;
receiving a new data element;
determining that the new data element is of the predefined type;
generating an index control data element for the new data element of the predefined type;
linking the new data element with the linked data block in the data storage layer;
linking the index control data element with the linked data block in the data storage layer; and
generating an index entry for the new data element and inserting the index entry into the index structure by invoking the instruction in the executable data element from the index control data element after the new data element and the index control data element are linked with the linked data block in the data storage layer,
wherein the index entry includes a location reference within the data storage layer for the new data element.
CN201780090574.4A 2017-05-09 2017-05-09 Method and system for efficient information retrieval of data storage layer indexes Active CN110612697B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/083597 WO2018205137A1 (en) 2017-05-09 2017-05-09 Data storage layer index for efficient information retrieval

Publications (2)

Publication Number Publication Date
CN110612697A CN110612697A (en) 2019-12-24
CN110612697B true CN110612697B (en) 2023-11-07

Family

ID=64104037

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780090574.4A Active CN110612697B (en) 2017-05-09 2017-05-09 Method and system for efficient information retrieval of data storage layer indexes

Country Status (3)

Country Link
US (1) US11269842B2 (en)
CN (1) CN110612697B (en)
WO (1) WO2018205137A1 (en)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019008158A1 (en) * 2017-07-06 2019-01-10 Chromaway Ab Method and system for a distributed computing system
CN107562775B (en) * 2017-07-14 2020-04-24 创新先进技术有限公司 Data processing method and device based on block chain
WO2019055290A1 (en) * 2017-09-12 2019-03-21 Northwestern University Blockchain distribution network
CN118967246A (en) * 2017-12-01 2024-11-15 快特网络有限公司 Blockchain communication and sequencing
US10956075B2 (en) * 2018-02-02 2021-03-23 Bank Of America Corporation Blockchain architecture for optimizing system performance and data storage
US11176101B2 (en) 2018-02-05 2021-11-16 Bank Of America Corporation System and method for decentralized regulation and hierarchical control of blockchain architecture
US12013813B2 (en) * 2018-02-20 2024-06-18 Tyson York Winarski Regulating distributed network generation of blockchain blocks
US11507928B2 (en) * 2018-06-05 2022-11-22 International Business Machines Corporation Blockchain and cryptocurrency for real-time vehicle accident management
US11223655B2 (en) * 2018-08-13 2022-01-11 International Business Machines Corporation Semiconductor tool matching and manufacturing management in a blockchain
US10942916B2 (en) * 2018-11-03 2021-03-09 International Business Machines Corporation Fraud prevention via database referencing
US11721417B2 (en) * 2018-11-07 2023-08-08 Align Technology, Inc. Multi-dimensional cryptographically secured datastores for managing medical records
CN109471905B (en) * 2018-11-16 2020-08-25 华东师范大学 A blockchain indexing method that supports compound query of time range and attribute range
CN113169880B (en) * 2018-11-27 2025-10-03 区块链控股有限公司 Computer-implemented systems and methods for storing data on a blockchain
CN109697249A (en) * 2018-12-07 2019-04-30 深圳市云歌人工智能技术有限公司 Search for method, system and the storage medium of target object and issue object
CN109547477B (en) * 2018-12-27 2021-04-23 石更箭数据科技(上海)有限公司 Data processing method and device, medium and terminal thereof
CN109816525A (en) * 2018-12-27 2019-05-28 石更箭数据科技(上海)有限公司 A kind of data processing method and its device, medium, terminal
CN109522328B (en) * 2018-12-27 2021-04-02 石更箭数据科技(上海)有限公司 Data processing method and device, medium and terminal thereof
US10459990B1 (en) * 2018-12-27 2019-10-29 Silver Rocket Data Technology (Shanghai) Co., Ltd Data processing method and device, medium and terminal thereof
US11509637B2 (en) 2018-12-27 2022-11-22 Silver Rocket Data Technology (Shanghai) Co., Ltd. Data transmission method, system and platform using blockchain, and storage medium
CN109559231B (en) * 2018-12-29 2020-08-04 华东师范大学 Block chain-oriented tracing query method
CN109885615B (en) * 2019-01-24 2020-09-22 华东师范大学 An index-based verifiable query method for blockchain light client-oriented range queries
US11316841B2 (en) * 2019-03-25 2022-04-26 Micron Technology, Inc. Secure communication between an intermediary device and a network
US10990705B2 (en) 2019-04-18 2021-04-27 Advanced New Technologies Co., Ltd. Index creation for data records
WO2020211569A1 (en) * 2019-04-18 2020-10-22 创新先进技术有限公司 Method for constructing index of data record
WO2019228570A2 (en) 2019-09-12 2019-12-05 Alibaba Group Holding Limited Log-structured storage systems
CN111566611B (en) * 2019-09-12 2023-08-04 创新先进技术有限公司 log-structured storage system
US10942852B1 (en) 2019-09-12 2021-03-09 Advanced New Technologies Co., Ltd. Log-structured storage systems
CN111183420B (en) 2019-09-12 2023-06-30 创新先进技术有限公司 Log structured storage system
CN115398874A (en) 2019-09-12 2022-11-25 创新先进技术有限公司 Log structure storage system
WO2019228571A2 (en) 2019-09-12 2019-12-05 Alibaba Group Holding Limited Log-structured storage systems
SG11202002614XA (en) 2019-09-12 2020-04-29 Alibaba Group Holding Ltd Log-structured storage systems
EP3669268A4 (en) 2019-09-12 2020-12-23 Alibaba Group Holding Limited Log-structured storage systems
WO2019228574A2 (en) 2019-09-12 2019-12-05 Alibaba Group Holding Limited Log-structured storage systems
EP3799052A1 (en) * 2019-09-30 2021-03-31 Siemens Healthcare GmbH Providing and receiving medical data records
US11023423B2 (en) 2019-10-10 2021-06-01 Avery Glasser System and method for information storage using blockchain databases combined with pointer databases
CN110580262B (en) * 2019-11-08 2020-03-10 支付宝(杭州)信息技术有限公司 Private data query method and device based on intelligent contract
CN110837491B (en) * 2019-11-25 2021-04-09 深圳市深银联易办事金融服务有限公司 Block chain financial big data processing system and method
US11269863B2 (en) * 2020-01-23 2022-03-08 International Business Machines Corporation Index structure for blockchain ledger
CN111339106B (en) * 2020-05-18 2020-08-28 杭州趣链科技有限公司 Block chain data indexing method
CN112035542B (en) * 2020-08-28 2023-07-04 成都质数斯达克科技有限公司 Information query method, device, electronic equipment and readable storage medium
US11652604B2 (en) * 2020-11-12 2023-05-16 Paypal, Inc. Blockchain data compression and storage
CN112380010B (en) * 2020-11-13 2024-04-02 成都纵上行信息科技有限公司 Hierarchical blockchain for load balancing in Internet of things environment
EP4066475A4 (en) * 2020-11-25 2022-12-21 Alipay (Hangzhou) Information Technology Co., Ltd. BLOCKCHAIN-BASED TRUSTED PLATFORM
WO2023282884A1 (en) * 2021-07-06 2023-01-12 Hitachi America, Ltd. 3d blockchain architecture for data management
US12153486B2 (en) * 2022-11-21 2024-11-26 Bank Of America Corporation Intelligent exception handling system within a distributed network architecture

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1243596A (en) * 1997-09-17 2000-02-02 松下电器产业株式会社 Optical disc, video data editing device, recording medium for storing computer-readable editing program, optical disc playback device, and recording medium for storing computer-readable playback program
CN101490687A (en) * 2006-07-07 2009-07-22 桑迪士克股份有限公司 Control system and method using identity objects

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9569477B1 (en) * 2010-12-29 2017-02-14 EMC IP Holding Company LLC Managing scanning of databases in data storage systems
US9569771B2 (en) * 2011-04-29 2017-02-14 Stephen Lesavich Method and system for storage and retrieval of blockchain blocks using galois fields
US10114908B2 (en) * 2012-11-13 2018-10-30 International Business Machines Corporation Hybrid table implementation by using buffer pool as permanent in-memory storage for memory-resident data
US9542402B2 (en) * 2013-04-24 2017-01-10 Empire Technology Development Llc Computing devices with multi-layer file systems
US9390116B1 (en) * 2013-09-26 2016-07-12 Emc Corporation Insertion and eviction schemes for deduplicated cache system of a storage system
US9608829B2 (en) * 2014-07-25 2017-03-28 Blockchain Technologies Corporation System and method for creating a multi-branched blockchain with configurable protocol rules
US10860562B1 (en) * 2014-09-12 2020-12-08 Amazon Technologies, Inc. Dynamic predicate indexing for data stores
US10013440B1 (en) * 2014-10-31 2018-07-03 Amazon Technologies, Inc. Incremental out-of-place updates for index structures
US10078658B2 (en) * 2015-07-10 2018-09-18 Whether or Knot LLC Systems and methods for electronic data distribution
US11080253B1 (en) * 2015-12-21 2021-08-03 Amazon Technologies, Inc. Dynamic splitting of contentious index data pages
US20170315875A1 (en) * 2016-04-29 2017-11-02 Netapp, Inc. Namespace policy based deduplication indexes
US10789231B2 (en) * 2016-05-19 2020-09-29 Oracle International Corporation Spatial indexing for distributed storage using local indexes
CN106330431A (en) 2016-08-29 2017-01-11 北京瑞卓喜投科技发展有限公司 Data processing method, apparatus and system based on block chain technology
US10235396B2 (en) * 2016-08-29 2019-03-19 International Business Machines Corporation Workload optimized data deduplication using ghost fingerprints
US11314753B2 (en) * 2016-09-26 2022-04-26 Splunk Inc. Execution of a query received from a data intake and query system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1243596A (en) * 1997-09-17 2000-02-02 松下电器产业株式会社 Optical disc, video data editing device, recording medium for storing computer-readable editing program, optical disc playback device, and recording medium for storing computer-readable playback program
CN101490687A (en) * 2006-07-07 2009-07-22 桑迪士克股份有限公司 Control system and method using identity objects

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
朱扬勇 ; 熊 ; .大数据的若干基础研究方向.大数据.2017,(02),全文. *

Also Published As

Publication number Publication date
CN110612697A (en) 2019-12-24
WO2018205137A1 (en) 2018-11-15
US11269842B2 (en) 2022-03-08
US20200050595A1 (en) 2020-02-13

Similar Documents

Publication Publication Date Title
CN110612697B (en) Method and system for efficient information retrieval of data storage layer indexes
CN108898390B (en) Intelligent contract calling method and device based on block chain and electronic equipment
US12341872B2 (en) Hardware security module management
US20200374126A1 (en) Method for storing an object on a plurality of storage nodes
US10410018B2 (en) Cryptographic assurances of data integrity for data crossing trust boundaries
CN110620810A (en) Non-linked ownership of continuous asset transfer over blockchain
US11562812B2 (en) Computer implemented method for secure management of data generated in an EHR during an episode of care and a system therefor
KR20200011949A (en) Techniques for securely providing undetermined data from undetermined sources to lock scripts in blockchain transactions
CN111506589B (en) Block chain data service system, access method and storage medium based on alliance chain
CN112073807B (en) Video data processing method and device based on block chain
US20230281585A1 (en) Systems and Methods for Managing Network-Agnostic Smart Contracts
CN111698198B (en) Secret generation and share distribution
US20190260715A1 (en) Computer system, connection apparatus, and processing method using transaction
CN114826736B (en) Information sharing method, device, equipment and storage medium
US10915521B2 (en) Blockchain gateway device and associated method of use
CN110851843A (en) Data management method and device based on block chain
CN114579998A (en) A blockchain-assisted medical big data search mechanism and privacy protection method
CN100596058C (en) Trusted computing platform key authorization data management system and method
CN112000632A (en) Ciphertext sharing method, medium, sharing client and system
CN115733659A (en) Blockchain-based encrypted smart contract detection system
WO2023279698A1 (en) Data transmission method and system, computer device and storage medium
JP6901373B2 (en) User management device, user management system
CN116055144A (en) Data security analysis method, device, equipment and storage based on internet of things
KR20190068886A (en) Blockchain based Method and system for supporting open source software license compliance
CN117997654B (en) Data processing method, device and computer equipment in edge computing architecture

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: Ai Erlandubailin

Patentee after: Accenture Global Solutions Ltd.

Country or region after: Ireland

Address before: Ai Erlandubailin

Patentee before: Accenture Global Solutions Ltd.

Country or region before: Ireland