CN109165224B - Indexing method for key words on block chain database - Google Patents

Indexing method for key words on block chain database Download PDF

Info

Publication number
CN109165224B
CN109165224B CN201810971875.4A CN201810971875A CN109165224B CN 109165224 B CN109165224 B CN 109165224B CN 201810971875 A CN201810971875 A CN 201810971875A CN 109165224 B CN109165224 B CN 109165224B
Authority
CN
China
Prior art keywords
transaction
key
hash
node
data
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
CN201810971875.4A
Other languages
Chinese (zh)
Other versions
CN109165224A (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.)
Northeastern University China
Original Assignee
Northeastern University China
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 Northeastern University China filed Critical Northeastern University China
Priority to CN201810971875.4A priority Critical patent/CN109165224B/en
Publication of CN109165224A publication Critical patent/CN109165224A/en
Application granted granted Critical
Publication of CN109165224B publication Critical patent/CN109165224B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Accounting & Taxation (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Finance (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

The invention provides an indexing method for key words on a block chain database, and relates to the technical field of block chain data query. Firstly, generating a transaction record by a common node according to original data with a keyword key input by a user; the storage node packs the transaction into a block; additionally writing the block data into a disk file; inquiring the transaction data according to the key value, and outputting an inquiry result; and the ordinary user verifies the credibility of the result. The invention directly indexes according to the data keywords to realize the queryability of the data; the transaction structure in the traditional block chain is expanded to a mode structure which can be stored and is similar to a traditional database, so that the applicability is improved; data authority is managed according to a digital signature technology, and data security is improved; whether the index is falsified is sensed according to the MerklerBTree self-sensing, and whether the transaction is falsified is sensed according to the transaction hash, so that the data can not be falsified; meanwhile, the data verification function of the lightweight node is realized, so that the query end can effectively detect the credibility of the data.

Description

Indexing method for key words on block chain database
Technical Field
The invention relates to the technical field of block chain data query, in particular to an indexing method aiming at key words on a block chain database.
Background
With the rise of a series of cryptocurrencies such as bitcoin and ethernet, the underlying blockchain technology has received more and more attention. The most central intention of bitcoin is to achieve decentralization, i.e. to enable digital currency transactions of two peer entities without the participation of a third party trust authority. However, there are many natural centers inevitable in the real world, such as banks offering loans, telecommunication operators offering telecommunication services, and the like. Although these central authorities may be considered peer entities that record their transactions with the user on the blockchain, such as using bitcoins to pay the fee, this is impractical because it does not facilitate the authorities managing the user data (including the user's credit rating, etc.). In fact, the existing central authorities manage their databases storing user-related information by themselves, but this model has many drawbacks: 1) different databases may store the same basic identity information of the user, resulting in high data redundancy; 2) different central authorities manage their own data respectively, which is not beneficial to the data sharing among the authorities; 3) each database is mostly managed by a single organization in a centralized manner, so that a user must trust the organization unconditionally, and the centralized problem exists; 4) the user cannot independently verify the correctness of the data, and if the data is maliciously tampered, the user and the mechanism cannot perceive the data.
The blockchain technology has the characteristics of decentralization, tamper resistance and public transparency, and provides possibility for solving the problems. For this reason, it is desirable to have an efficient consensus algorithm to improve the throughput of the system and an efficient query algorithm to enable data retrieval on the blockchain. Currently, there have been many studies on consensus algorithms, such as POW, POS, PBFT. However, research on query of the block chain is relatively few, most of the research is to synchronize transaction data to a traditional database by using a synchronization technology, and an index is established according to each data item, so that fast query is realized, but the method cannot guarantee that the index cannot be tampered, so that the property that the block chain cannot be tampered is lost.
Disclosure of Invention
The technical problem to be solved by the present invention is to provide an indexing method for keyword keys on a block chain database, to solve the problem of query of block chains, and to implement a non-falsifiable index.
In order to solve the technical problems, the technical scheme adopted by the invention is as follows:
an indexing method for key words on a blockchain database, comprising the steps of:
step 1: the common node generates a transaction record according to original data with a keyword key input by a user, and the method specifically comprises the following steps:
step 1-1: generating transaction default information which comprises block chain version number information and timestamp information of data creation time;
step 1-2: appointing a precursor PreHash of the transaction, if the keyword key appears for the first time, setting the precursor PreHash as Null, otherwise, the precursor is the hash value of the latest transaction corresponding to the keyword key;
step 1-3: generating data authority information and a data signature; assigning the scriptPubk as a next public key capable of modifying the key data, and signing the transaction data according to a private key of the scriptPubk by using an ECDSA algorithm;
step 2: the storage node packs the transaction into a block, and specifically includes:
step 2-1: verifying whether the transaction format meets the specification, and filtering the transaction which cannot be identified;
step 2-2: verifying whether the transaction signature is valid; retrieving a transaction index TxIndex of the PreHash value from a k-v database, retrieving a precursor transaction PreTx according to the TxIndex, and taking the appointed next public key information PreTx. ScriptPubk; performing signature verification according to a verify () function of the ECDSA algorithm, wherein if verify (pretx.script pubk, tx.script sig, Tx) ═ True, the signature is valid, otherwise, the signature is invalid, and discarding the transaction;
step 2-3: detecting the honeysuckle; reading a PreHash field of the transaction, if the PreHash field is not empty, searching a precursor transaction index TxIndex from a k-v database according to the PreHash value, if the index indicates that a subsequent transaction of the precursor transaction is not empty, indicating that the transaction to be verified is a double-flower transaction, and judging that the transaction is invalid; if the subsequent transaction is empty, assigning the subsequent transaction as the hash value of the transaction to be verified, wherein the transaction to be verified is valid; if the PreHash field of the transaction is empty, namely the creator of the transaction considers that the transaction which is the same as the transaction key does not exist before, whether the transaction with the key can be searched in the system or not is searched, if yes, the transaction is invalid, and if not, the transaction is valid;
step 2-4: after the transaction is verified to be valid, the transaction is inserted into a key-ordered transaction array vTx [ ] in the block body, and the MerklerBTree index is updated;
the rule for updating the MerkleRBTree is as follows: initializing a current node as Merkleroot, comparing a key of the node to be inserted with a key of the current node, namely NodeKey, if the key is less than NodeKey, inserting the key into a left subtree of the current node, updating the current node as a left child of the current node, otherwise, inserting the key into a right subtree, updating the current node as a right child of the current node, and sequentially recursing until the last layer of branch nodes; after the transaction is inserted, the tree is rotated to ensure black balance, and the Hash value of the branch node is recursively updated upwards to be Hash (rigthhash, key); the branch node is inserted into the node at the last layer according to the following 4 conditions:
case 1: if the branch node is empty, the situation only occurs when the Merkleroot is empty, then the transaction is subjected to Sha256 double-hash operation to obtain the hash value Hash (Tx) of the branch node, then a branch node is newly built, the key value of the branch node is defined to be key, the left hash value is the leaf node Hash value, and the right hash value is 0, which is similar to (Hash (Tx), 0 and key);
case 2: if the key value of the data to be inserted is smaller than the NodeKey value of the node, the data is inserted into the left side of the node; firstly, carrying out Sha256 double-hash operation on a transaction to obtain a hash value Hash (Tx) of the transaction, then newly building a red branch node, wherein a key word of the red branch node is a key to be inserted, the left Hash is Hash (Tx), and the right Hash is the left Hash of the original branch node, namely (Hash (Tx), Oldlefthash, key); note Hash (tx), Oldlefthash, key), then update parent node as (Hash, Oldrighthash, oldkey);
case 3: if the key value of the data to be inserted is larger than the NodeKey value of the node and the right hash of the node is 0, performing Sha256 double hash operation on the transaction to obtain the hash value Hash (Tx), and then updating the branch node to be (Oldlefthash, Hash (Tx), Oldkey);
case 4: if the key value of the data to be inserted is larger than the NodeKey value of the node and the right Hash of the node is not 0, firstly carrying out Sha256 double Hash operation on the transaction to obtain the Hash value Hash (Tx) of the data, then newly building a red branch node, wherein the key value of the branch node is the smaller of the key value of the data to be inserted and the key value of the right child of the original branch node, the left child is the smaller of the key value of the data to be inserted and the right child of the original branch node, and the right child is the larger of the key value; finally, updating the right hash of the father node of the node to be the hash of the newly-built branch node;
and step 3: additionally writing the block data into the disk file, specifically comprising:
step 3-1: serializing a transaction array vTx [ ] storing transaction original data in a block head and a block body, sequentially writing the serialized transaction array into a disk file blk000x, and returning the position nFile and BlockPos of the block in the disk;
step 3-2: generating metadata TxIndex (nFile, BlockPos, n) of each transaction, wherein nFile specifies the number of files, BlockPos specifies the offset of the block in the file, n specifies the subscript of the transaction corresponding to the ordered array, and storing the metadata information of each transaction into a k-v database in the format of k ═ hash (tx), and v ═ TxIndex;
step 3-3: storing the MerkleRBTree index entry in a k-v database, wherein k is Hash (righthash, key) and v is Hash (righthash, key);
and 4, step 4: inquiring the transaction according to the key and returning an inquiry result; starting to search the transaction from the latest block, and inquiring the previous block if the block is not searched;
the searching method in a single block is as follows: entering Merklerroot from the block head into MerklerBTree, comparing a target keyword key with a current node keyword Ckey from the Merklerroot, if the key is less than or equal to Ckey, searching a left child of the target keyword key, and pressing a right child and the node keyword into a verification path stack, otherwise, searching a right child of the target keyword key, and pressing the left child and the node keyword into the verification path stack, and sequentially executing the steps until leaf nodes are reached; if the leaf node key value key is equal to the query key, the query hits; according to the transaction hash value Hash (Tx) inquired at the leaf node, with Hash (Tx) as k, inquiring index information TxIndex corresponding to the transaction on a disk in a k-v database, and finally reading transaction information Tx in a disk file according to TxIndex; finally, returning the verification path stack and the original transaction information to the common user;
and 5: the ordinary user carries out credibility verification on the query result;
after receiving the verification path stack and the transaction information, the common user firstly carries out Sha256 double-hash operation on the transaction to obtain a transaction hash value Hash (Tx), then carries out Sha256 double-hash operation on the transaction hash value and a value popped out from the verification path stack, and continuously hashes the obtained hash value and the next value popped out from the stack until the stack is empty; and comparing whether the obtained hash value is equal to the Merkleroot value in the local block header, if so, the data is credible, otherwise, the data is not credible.
Adopt the produced beneficial effect of above-mentioned technical scheme to lie in: the index method for the key on the block chain database can directly index according to the data key instead of the existing block chain, so that the data queryability is realized; the transaction structure in the traditional block chain is expanded to a mode structure which can be stored and is similar to a traditional database, so that the applicability is improved; data authority is managed according to the digital signature technology, and data security is improved; whether the index is falsified can be self-perceived according to the MerklerBTree, and whether the transaction is falsified can be perceived according to the transaction hash, so that the non-tampering property of the data is ensured; meanwhile, the data verification function of the lightweight node is realized, so that the query end can effectively detect the credibility of the data.
Drawings
FIG. 1 is a diagram of a transaction architecture provided by an embodiment of the present invention;
FIG. 2 is a block diagram according to an embodiment of the present invention;
FIG. 3 is a structural diagram of a MerklerBTree according to an embodiment of the present invention;
fig. 4 is an exemplary diagram of a data insertion rule according to an embodiment of the present invention, where (a) is an empty node insertion result in case 1, (b) is a left side insertion result in case 2, (c) is a right side insertion result in case 3 when the right child is empty, and (d) is a right side insertion result in case 4 when the right child is not empty.
Detailed Description
The following detailed description of embodiments of the present invention is provided in connection with the accompanying drawings and examples. The following examples are intended to illustrate the invention but are not intended to limit the scope of the invention.
The block chain technical terms designed by the invention are explained as follows:
hash pointer: the hash pointer of one data item refers to that the content of the data item is subjected to hash operation to obtain a hash value with a fixed length, meanwhile, the hash value is taken as a key, the content of the data item is a value, the k-v pair is stored in a k-v database, and the key is the hash pointer of the data item;
trading: as shown in fig. 1, a Transaction structure diagram is shown, a Transaction is divided into two parts, namely a Transaction header (Transaction) and a Schema (Schema), and the Transaction header includes: version number (Version), parent transaction hash (PreHash), transaction time (nTime), transaction Next owner public Key (scriptPubk), signature (scriptSig) to prove this transaction valid; the schema part is similar to the table structure in the traditional database, and comprises key words and fields (fields);
block chains: the block chain is that the blocks are connected end to end according to the hash pointer, and each block cannot be changed once being formed; as shown in fig. 2, the block structure diagram is a block structure diagram, and the block is divided into a block head and a block body, where the block head includes: the version number, the previous block hash pointer (obtained by hashing the previous block header data), the timestamp when the block is formed, the Merkle root obtained by hashing the transaction from bottom to top in the block body, the random number used for workload certification and the target hash; all transaction records in the block are stored in the block body;
block chain database: the database is provided with a plurality of block chains, each block chain is equivalent to a table in the traditional database, all central mechanisms serve as storage nodes of data, all the storage nodes generate the block chains according to a consensus algorithm, and all the nodes (including users) store block header information and can retrieve records from the block header information and verify the correctness of the records;
MerkleRBTree: combining the Merkle tree with the red-black tree for indexing the transaction data in the block body; as shown in fig. 3, the MerkleRBTree structure diagram is a MerkleRBTree structure diagram, each node stores key information, data with a key value less than or equal to a key of the node is stored in a left sub-tree from a root node, and data with a key value greater than the key of the node is stored in a right sub-tree; the leaf nodes store hash pointers of the transaction data, and the non-leaf node values are obtained by hashing the left child node and the right child node in pairs.
Aiming at the defects that only transaction hash values can be inquired and a general data structure cannot be stored in the existing block chain database, the invention provides an indexing method aiming at key words on the block chain database, which comprises the following specific steps.
Step 1, generating a transaction record. The user input data is Schema data similar to that in a traditional SQL database, and the purpose of this step is to generate additional information needed for the operation of the blockchain mechanism.
And step 1-1, generating default information.
And generating block chain version number information and timestamp information of data creation time.
And step 1-2, generating precursor information.
In the invention, for the data with the same key, only the newest data is considered to be effective all the time, and the old data is considered to be the precursor of the new data, so that a chain structure is generated for the data with the same key logically end to end. When writing data with key as key, designating the precursor of the data object, if there is no precursor, the precursor is Null.
And 1-3, generating data authority information and a data signature.
In the invention, the data written into the database can not be deleted, and the data modification is realized by rewriting a data item of the same key word. The authority information of the data refers to conditions which can be specified by a creator of the transaction data and need to be met when the data is modified. The ECDSA algorithm is introduced here, specifying the next public key that can be modified for that data item and assigning it to ScriptPubk. And finally, the data creator signs the transaction by using a private key of the data creator for later proving that the data creator has the right to modify the data.
And 2, packaging the transaction into a block.
And 2-1, verifying the correctness of the transaction.
The correctness verification of the transaction mainly verifies the format of the transaction and the data authority information. And the transaction which cannot be identified is removed by format verification, so that the system safety is ensured. The ECDSA algorithm is introduced into the authorization verification of the transaction, SicriptPubk in the transaction is a public key of a next authorization owner, and ScriptSig is digital signature information generated by a creator of the transaction. The authority verification is to verify whether the script sig of the transaction is matched with the script pubk of the predecessor transaction through a verify () function, if so, the creator of the transaction is proved to have a private key required by the predecessor transaction, the predecessor of the transaction can be modified, and if not, no related authority exists, and the transaction is invalid.
And 2-2, detecting the honeysuckle.
The data authority verification ensures that the transaction precursor can be modified only by owning the corresponding private key, but when the owner of the transaction transfers the authority to the next successor, the owner of the transaction can still transfer the authority of the transaction to other successors and modify the transaction, so that data inconsistency is caused, which is called double-flower. And after receiving the transaction record, the storage node reads a pre-hash field of the transaction, retrieves a precursor transaction index TxIndex from a k-v database according to the pre-hash value, and if the index indicates that a subsequent transaction of the precursor transaction is not empty, the transaction to be verified is a double-flower transaction, and the transaction is judged to be invalid. And if the subsequent transaction is empty, assigning the subsequent transaction as the hash value of the transaction to be verified, wherein the transaction to be verified is valid. If the pre-hash field of the transaction is empty, that is, the creator of the transaction considers that no transaction with the same key as the transaction key exists before, the double-flower verification at this time is to find whether the transaction with the key as the key can be retrieved in the system, if so, the transaction to be verified is invalid, and if not, the transaction is valid.
And 2-3, updating the block index.
After the transaction is verified to be valid, the original data Tx of the transaction is stored in an array vTx [ ] with ordered KEY, the Tx is subjected to double Sha256 hash operation to obtain a storage KEY (hash (Tx)) of the transaction, and the storage KEY is inserted into the MerkleRBTree. The merklrbtree is a combination of a red black tree and a Merkle tree, and each node is a k-v pair, where k is hash (val) and v is key. Inserting data from a root node, comparing a key of a node to be inserted with a key NodeKey of a Merkleroot node, inserting the key into a left subtree if the key is less than NodeKey, or inserting the key into a right subtree until a last layer of branch nodes. After the transaction is inserted, the tree is rotated to ensure black balance and the branch node Hash value is recursively updated up to Hash (1 efthash). The branch node is inserted into the node at the last layer according to the following 4 conditions:
case 1: if the branch node is empty (only appears when Merkleroot is empty), the transaction is subjected to Sha256 double hash operation to obtain a hash value hash (Tx), then a branch node is newly established, the key value of the branch node is defined to be key, the left hash is a leaf node hash value, the right hash is 0, the shape is (hash (Tx), 0 and key), and the insertion result is shown in FIG. 4 (a). This also means that a tree must not have its branch nodes empty, and the key value of the last level branch node must be the same as its left child key value, as long as it is not empty.
Case 2: if the key value of the data to be inserted is smaller than the NodeKey value of the node, the data should be inserted into the left side of the node, but as can be seen from the case 1, the left child of the node must not be empty and is a leaf node. Firstly, Sha256 double hash operation is carried out on a transaction to obtain a hash value Hash (Tx), then a red branch node is newly built, the key word of the branch node is a key to be inserted, the left Hash is Hash (Tx), and the right Hash is the left Hash of the original branch node, namely (Hash (Tx), Oldlefthash, key). Note that the Hash is Hash (tx), Oldlefthash, key), the update parent node is (Hash, Oldrighthash, Oldkey), and the insertion result is shown in fig. 4 (b).
Case 3: if the key value of the data to be inserted is greater than the node NodeKey value of the node, and the right hash of the node is 0, the transaction is subjected to Sha256 double hash operation to obtain the hash value Hash (Tx), then the branch nodes are updated to be (Oldlefthash, Hash (Tx), Oldkey), and the insertion result is shown in FIG. 4 (c).
Case 4: if the key value of the data to be inserted is larger than the NodeKey value of the node and the right hash of the node is not 0. Performing Sha256 double-hash operation on the transaction to obtain a hash value Hash (Tx) of the transaction, and then newly building a red branch node, wherein the key value of the branch node is the smaller of the key value of the data to be inserted and the key value of the right child of the original branch node, the left child is the smaller of the key value of the data to be inserted and the right child of the original branch node, and the right child is the larger; and finally, updating the right hash of the parent node of the node to be the hash of the newly-built branch node, wherein the insertion result is shown in fig. 4 (d).
And 3, additionally writing the block data into the disk file.
The data writing is carried out by taking a block as a unit, and when the transaction quantity in the block reaches a fixed threshold value, the data in the block is written into a disk. First, the transaction array vTx [ ] holding the transaction original data in the block header and the block body are sequentially written into the disk file blk000 x. The MerklerBTree built in the block body is stored in a k-v database. Simultaneously generating metadata of the Block index storage block for searching the block; the TxIndex is generated to hold the memory location of the transaction.
And 4, searching data.
And inquiring the transaction according to the key of the data, wherein all the blocks are connected end to end, and the latest block is searched according to the key. In a single block, Merklerroot at the head of the block enters MerklerTree, target key and current node key Ckey are compared from Merklerroot, if key is less than or equal to Ckey, the left child is searched, otherwise, the right child is searched, the steps are sequentially executed until a leaf node is searched, and the complexity of query time in the block of N nodes is O (lgN). If the transaction is in the block, the transaction hash value Hash (Tx) is finally inquired at the leaf node, the index information TxIndex of the transaction on the disk can be inquired in the k-v database by taking the Hash (Tx) as k, and the transaction information TxIndex is finally read in the disk file according to the TxIndex. If the transaction is not in the current block, it is looked up in its predecessor block in the same way.
The data in the invention can not be tampered in the following aspects: (1) in the process of obtaining the hash (Tx) from the key, the root node is searched downwards according to the MerklerBTree, because the tree is hashed by the leaf nodes when being generated, the leaf nodes can be finally searched certainly, if a certain branch node is not inquired in the process, the data of the last branch node is tampered or the data of the next node is lost; (2) in the process of obtaining Tx from hash (Tx), since the hash (Tx) is obtained by the hash operation of Tx, whether the transaction Tx is tampered can be detected according to the hash (Tx).
And 5, verifying the data.
The lightweight node only stores the block head information, and the storage node stores the block head and the block body. When the lightweight node queries data, the storage node returns a query result and a verification path. When the lightweight node receives data, the data are hashed two by two from the query result, and finally verification MerkLeroot is generated, and whether the query result is valid is verified by comparing whether the MerkLeroot is consistent with MerkLeroot in a locally stored block header.
The method for indexing block chain data according to the present invention is further described below according to an embodiment. Table 1 is the data that the user wants to store into the blockchain database.
Table 1 data to be stored in blockchain database
Key Name Sex Account
1600005 Bob Male 7000
1600004 Alice Female 6000
1600007 Tom Male 5000
1600006 Jack Male 8000
In this embodiment, the indexing process of data in the MerkleRBTree is mainly demonstrated, so that control information such as transaction Prehash, PubKey, ScriptSig and the like is omitted. Assuming that the current block is empty, the four transactions in table 1 come in sequence, and the storage node packs the transactions into the block in sequence.
When the node receives the 1 st transaction, which is empty, according to the case 1 in step 2-3 of this embodiment, first, the transaction is subjected to a double Sha256 hash operation to obtain a hash value of 747d51d1007b4fb1be01aeb633e78f66 cbdeee 393aa 200e73627498b2551df (only the first 8 bits are shown for convenience of writing), then a branch node is generated, the transaction hash value is used as its left hash, the right hash is 0, the node key is 1600005, and a MerkleRBTree index entry is generated as shown in table 2, where k is hash (v).
TABLE 2 MerklerbTree index entry generated at transaction 1
Figure BDA0001776404310000081
When the node is inserted into the 2 nd transaction again, the MerkleRoot node key is 1600005, the transaction key to be inserted is 1600004, which is smaller than the root node key, and should be inserted into the left subtree, and because the MerkleRoot is the last level branch node on the left side (there is no table entry where k is 747d51d1 in the index entry table), the case is consistent with the case 2 in step 2-3, the operation step is: firstly, carrying out Sha256 double-hash operation on transaction 2 to obtain a transaction hash value dca 0e32, newly generating a branch node, wherein the left hash is dca 0e32, the right hash is father node left hash 747d51d1, and the keyword is 1600004; and then updating the father node upwards, wherein the left hash of the father node is the hash of the new component branch node, the father node k is correspondingly changed, and the MerklerBTree index entry after updating is shown in the table 3.
Table 3 inserts MerklerBTree index entry after 2 nd transaction
Figure BDA0001776404310000082
When a node is inserted into the 3 rd transaction, the MerkleRoot keyword is 1600005, the keyword of the node to be inserted is 1600007, and if the keyword is larger than the MerkleRoot keyword, the node to be inserted should be inserted into the right subtree of the node, and because the MerkleRoot is the last layer of branch node on the right side at the moment, the situation is consistent with the situation 3 in the step 2-3, the following steps are performed: and performing Sha256 double-hash operation on the transaction to obtain a transaction hash value b178577f, updating the Merklerroot right hash value b178577f, correspondingly changing k of the Merklerroot, and finally, enabling the MerklerRBTree index entry to be shown in Table 4.
Table 4 inserts the MerklerBTree index entry after the 3 rd transaction
Figure BDA0001776404310000091
Although there is no record of key 1600007 in the index table after inserting the transaction with key 1600007, at query time, 1600007 > 1600005, so its right hash b178577f is found, and b178577f is the transaction hash corresponding to key 1600007, i.e. the right hash of 1600005 records the record of key > 1600005 (1600007).
When the node inserts the 4 th transaction, the MerkleRoot key is 1600005, the key of the node to be inserted is 1600006, which is larger than the MerkleRoot key, the right subtree should be inserted, the MerkleRoot is the last layer of branch node on the right side, which is consistent with the case 4 in the step 2-3, and then the operation is: and carrying out hash operation on the transaction to obtain a transaction hash value of 228de82e, newly generating branch nodes, wherein the left hash of each node is 228de82e, the right hash of each node is b178577f, the key word of each node is 1600006, then updating the right hash of the parent node upwards to be the hash of the branch node, and finally updating the k value of the Merkleroot. The MerkleRBTree index entry after updating is shown in table 5.
Table 5 inserts the MerklerBTree index entry after the 4 th transaction
Figure BDA0001776404310000092
Assuming that the block size reaches a threshold (in practice thousands of transactions per block), it is ready for storage to disk. The Merklerroot value in the zone block header corresponds to d90f7e2e, the transaction array in the zone block is the transaction original data in the table 1, and the MerklerTree index entry is directly written into the k-v database. Firstly serializing transaction array data in a block header and a block body, sequentially adding the serialized transaction array data to a disk file blk0001.dat, returning a block with a disk offset of nFile 1 and a blockapos 8, then generating metadata TxIndex (nFile, blockapos, n, nextchah) of each transaction, wherein nFile designates the next file, blockapos designates the offset of the block in the file, n designates a subscript of the transaction corresponding to the ordered array, nextchah designates a transaction successor (for detecting that double flowers are omitted here), and finally storing the metadata information of each transaction in a k-v database, wherein the metadata is shown in table 6.
TABLE 6 metadata information for each transaction
Txhash nFile BlockPos n
dcaa0e32
1 8 0
eaf1e7ec 1 8 1
228de82e 1 8 2
b178577f 1 8 3
To facilitate the explanation of the problem, the hash values for each transaction are listed as follows:
TABLE 7 Hash values for various transactions
TxHash Key Name Sex Account
dcaa0e32 1600004 Alice Female 6000
eaf1e7ec 1600005 Bob Male 7000
228de82e 1600006 Jack Male 8000
b178577f 1600007 Tom Male 5000
When a transaction with a key of 160006 is queried, first, based on the MerkleRoot value d90f7e2e of the block header, MerkleRoot values (baa d30a, be149016, 1600005), 1600006 > 1600005 are retrieved from the k-v database, so k be149016 is retrieved from the k-v database, MerkleRBTree index values (228de82e, b178577f, 1600006), 1600006 be 1600006 are retrieved from the k-v database, so k be 228de82e is retrieved from the k-v database, transaction metadata (1, 8, 3) is obtained, and finally deserialization is performed in the disk file to obtain the transaction raw data (1600006, Jack, Male, 8000), while the path is verified to be the Hash value on the side that is not hit in the query, in the embodiment ((baa d a, 1600005 b), (368747, 178577f, baa) is returned to the Hash node baa, baa b 72, baa (baa, jack, Male, 8000), b178577f, 1600006), 1600005) is equal to the local MerkleRoot value to verify the authenticity of the query result.
Finally, it should be noted that: the above examples are only intended to illustrate the technical solution of the present invention, but not to limit it; although the present invention has been described in detail with reference to the foregoing embodiments, it will be understood by those of ordinary skill in the art that: the technical solutions described in the foregoing embodiments may still be modified, or some or all of the technical features may be equivalently replaced; such modifications and substitutions do not depart from the spirit of the corresponding technical solutions and scope of the present invention as defined in the appended claims.

Claims (3)

1. An indexing method for key words on a block chain database, characterized in that: the method comprises the following steps:
step 1: the common node generates a transaction record according to original data with a keyword key input by a user, and the method specifically comprises the following steps:
step 1-1: generating transaction default information which comprises block chain version number information and timestamp information of data creation time;
step 1-2: appointing a precursor PreHash of the transaction, if the keyword key appears for the first time, setting the precursor PreHash as Null, otherwise, the precursor is the hash value of the latest transaction corresponding to the keyword key;
step 1-3: generating data authority information and a data signature; assigning the public key scriptPubk of the next owner of the transaction as the next public key capable of modifying the key data, and signing the transaction data according to the private key of the public key by using an ECDSA algorithm;
step 2: the storage node packs the transaction into a block, and specifically includes:
step 2-1: verifying whether the transaction format meets the specification, and filtering the transaction which cannot be identified;
step 2-2: verifying whether the transaction signature is valid; retrieving a transaction index TxIndex of the PreHash value from a key-value database, retrieving a precursor transaction PreTx according to the TxIndex, and taking the appointed next public key information PreTx. Performing signature verification according to a verify () function of the ECDSA algorithm, wherein if verify (pretx.script pubk, tx.script sig, Tx) ═ True, the signature is valid, otherwise, the signature is invalid, and discarding the transaction; the key-value database is called k-v database for short;
step 2-3: detecting the honeysuckle; reading a PreHash field of the transaction, if the PreHash field is not empty, searching a precursor transaction index TxIndex from a k-v database according to the PreHash value, if the index indicates that a subsequent transaction of the precursor transaction is not empty, indicating that the transaction to be verified is a double-flower transaction, and judging that the transaction is invalid; if the subsequent transaction is empty, assigning the subsequent transaction as the hash value of the transaction to be verified, wherein the transaction to be verified is valid; if the PreHash field of the transaction is empty, namely the creator of the transaction considers that the transaction which is the same as the transaction key does not exist before, whether the transaction with the key can be searched in the system or not is searched, if yes, the transaction is invalid, and if not, the transaction is valid;
step 2-4: after the transaction is verified to be valid, the transaction is inserted into a key-ordered transaction array vTx [ ] in the block body, and the MerklerBTree index is updated;
the rule for updating the MerkleRBTree is as follows: initializing a current node as Merkleroot, comparing a key of the node to be inserted with a key of the current node, namely NodeKey, inserting the key into a left subtree of the current node if the key is less than NodeKey, then updating the current node as a left child of the current node, otherwise inserting the key into a right subtree, then updating the current node as a right child of the current node, and sequentially recursing until the last layer of branch nodes; after the transaction is inserted, the tree is rotated to ensure black balance, and the Hash value of the branch node is recursively updated upwards to be Hash (rigthhash, key);
and step 3: additionally writing the block data into the disk file, specifically comprising:
step 3-1: serializing a transaction array vTx [ ] storing transaction original data in a block head and a block body, sequentially writing the serialized transaction array into a disk file blk000x, and returning the position nFile and BlockPos of the block in the disk;
step 3-2: generating metadata TxIndex (nFile, BlockPos, n) of each transaction, wherein nFile specifies the number of files, BlockPos specifies the offset of the block in the file, n specifies the subscript of the transaction corresponding to the ordered array, and storing the metadata information of each transaction into a k-v database in the format of k ═ hash (tx), and v ═ TxIndex;
step 3-3: storing the MerkleRBTree index entry in a k-v database, wherein k is Hash (righthash, key) and v is Hash (righthash, key);
and 4, step 4: inquiring the transaction according to the key and returning an inquiry result; starting to search the transaction from the latest block, and inquiring the previous block if the block is not searched;
and 5: the ordinary user carries out credibility verification on the query result;
after receiving the verification path stack and the transaction information, the common user firstly carries out Sha256 double-hash operation on the transaction to obtain a transaction hash value Hash (Tx), then carries out Sha256 double-hash operation on the transaction hash value and a value popped out from the verification path stack, and continuously hashes the obtained hash value and the next value popped out from the stack until the stack is empty; and comparing whether the obtained hash value is equal to the Merkleroot value in the local block header, if so, the data is credible, otherwise, the data is not credible.
2. The method of claim 1, wherein the key is indexed on a blockchain database by: in the step 2-4, the branch node is inserted into the last layer of branch node according to the following 4 conditions:
case 1: if the branch node is empty, the situation only occurs when the Merkleroot is empty, then the transaction is subjected to Sha256 double-hash operation to obtain the hash value Hash (Tx) of the branch node, then a branch node is newly built, the key value of the branch node is defined to be key, the left hash value is the leaf node Hash value, and the right hash value is 0, which is similar to (Hash (Tx), 0 and key);
case 2: if the key value of the data to be inserted is smaller than the NodeKey value of the node, the data is inserted into the left side of the node; firstly, carrying out Sha256 double-hash operation on a transaction to obtain a hash value Hash (Tx) of the transaction, then newly building a red branch node, wherein a key word of the red branch node is a key to be inserted, the left Hash is Hash (Tx), and the right Hash is the left Hash of the original branch node, namely (Hash (Tx), Oldlefthash, key); note Hash (tx), Oldlefthash, key), then update parent node as (Hash, Oldrighthash, oldkey);
case 3: if the key value of the data to be inserted is larger than the NodeKey value of the node and the right hash of the node is 0, performing Sha256 double hash operation on the transaction to obtain the hash value Hash (Tx), and then updating the branch node to be (Oldlefthash, Hash (Tx), Oldkey);
case 4: if the key value of the data to be inserted is larger than the NodeKey value of the node and the right Hash of the node is not 0, firstly carrying out Sha256 double Hash operation on the transaction to obtain the Hash value Hash (Tx) of the data, then newly building a red branch node, wherein the key value of the branch node is the smaller of the key value of the data to be inserted and the key value of the right child of the original branch node, the left child is the smaller of the key value of the data to be inserted and the right child of the original branch node, and the right child is the larger of the key value; and finally, updating the right hash of the father node of the node to be the hash of the newly-built branch node.
3. The method of claim 2, wherein the key is indexed on a blockchain database by: in step 4, the method for searching a single block includes: entering Merklerroot from the block head into MerklerBTree, comparing a target keyword key with a current node keyword Ckey from the Merklerroot, if the key is less than or equal to Ckey, searching a left child of the target keyword key, and pressing a right child and the node keyword into a verification path stack, otherwise, searching a right child of the target keyword key, and pressing the left child and the node keyword into the verification path stack, and sequentially executing the steps until leaf nodes are reached; if the leaf node key value key is equal to the query key, the query hits; according to the transaction hash value Hash (Tx) inquired at the leaf node, with Hash (Tx) as k, inquiring index information TxIndex corresponding to the transaction on a disk in a k-v database, and finally reading transaction information Tx in a disk file according to TxIndex; and finally, returning the verification path stack and the original transaction information to the ordinary user.
CN201810971875.4A 2018-08-24 2018-08-24 Indexing method for key words on block chain database Active CN109165224B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810971875.4A CN109165224B (en) 2018-08-24 2018-08-24 Indexing method for key words on block chain database

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810971875.4A CN109165224B (en) 2018-08-24 2018-08-24 Indexing method for key words on block chain database

Publications (2)

Publication Number Publication Date
CN109165224A CN109165224A (en) 2019-01-08
CN109165224B true CN109165224B (en) 2021-02-19

Family

ID=64896704

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810971875.4A Active CN109165224B (en) 2018-08-24 2018-08-24 Indexing method for key words on block chain database

Country Status (1)

Country Link
CN (1) CN109165224B (en)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109766389B (en) * 2019-01-09 2020-09-22 华东师范大学 Block chain light client verification query method based on bitmap index
CN109885615B (en) * 2019-01-24 2020-09-22 华东师范大学 Index-based block chain light client-oriented range query verifiable query method
CN110059084B (en) * 2019-01-31 2023-08-01 创新先进技术有限公司 Data storage method, device and equipment
CN109918375B (en) * 2019-02-26 2021-07-30 杭州云象网络技术有限公司 Large text storage, indexing and retrieval method based on block chain and distributed storage
KR102322729B1 (en) * 2019-03-04 2021-11-05 어드밴스드 뉴 테크놀로지스 씨오., 엘티디. Blockchain World State Merkle Patricia Trie Subtree Update
CN111695885B (en) * 2019-03-14 2023-08-29 中国科学技术大学 Digital voucher block chain compression method based on reduced transaction input
CN110083635A (en) * 2019-03-21 2019-08-02 深圳壹账通智能科技有限公司 Data query and display methods and device based on block chain
CN110059089B (en) * 2019-03-27 2021-01-22 深圳前海达闼云端智能科技有限公司 Data synchronization method and device, storage medium and electronic equipment
CN110162662B (en) * 2019-04-18 2023-02-28 创新先进技术有限公司 Verification method, device and equipment for data records in block chain type account book
WO2020211569A1 (en) * 2019-04-18 2020-10-22 创新先进技术有限公司 Method for constructing index of data record
US10990705B2 (en) 2019-04-18 2021-04-27 Advanced New Technologies Co., Ltd. Index creation for data records
CN110175840B (en) * 2019-04-19 2021-08-03 华中科技大学 Method, client, alliance chain and system for realizing light wallet mechanism in alliance chain
CN110263015A (en) * 2019-05-07 2019-09-20 深圳壹账通智能科技有限公司 Data source tracing method, device, equipment and readable storage medium storing program for executing based on block chain
CN110231979A (en) * 2019-05-07 2019-09-13 深圳壹账通智能科技有限公司 Transaction methods, device, equipment and storage medium based on block chain
SG11202001890UA (en) * 2019-05-14 2020-03-30 Alibaba Group Holding Ltd Methods and devices for data traversal
CN110096522B (en) * 2019-05-15 2023-07-28 西安电子科技大学 Block chain data processing method, device and equipment supporting relational retrieval
CN110175188B (en) * 2019-05-31 2021-05-11 杭州复杂美科技有限公司 Block chain state data caching and querying method, equipment and storage medium
CN110209675A (en) * 2019-06-18 2019-09-06 北京艾摩瑞策科技有限公司 Credit data querying method and its device on block chain
US10789222B2 (en) 2019-06-28 2020-09-29 Alibaba Group Holding Limited Blockchain-based hierarchical data storage
US11036720B2 (en) 2019-06-28 2021-06-15 Advanced New Technologies Co., Ltd. Blockchain-based hierarchical data storage
CN110334154B (en) * 2019-06-28 2020-07-21 阿里巴巴集团控股有限公司 Block chain based hierarchical storage method and device and electronic equipment
CN110442577A (en) * 2019-07-15 2019-11-12 杭州复杂美科技有限公司 A kind of storage of status data, inquiry and management method, equipment and storage medium
CN110688377B (en) * 2019-08-30 2020-07-17 阿里巴巴集团控股有限公司 Method and device for updating state Merck tree
US10992459B2 (en) 2019-08-30 2021-04-27 Advanced New Technologies Co., Ltd. Updating a state Merkle tree
CN110704428A (en) * 2019-09-06 2020-01-17 深圳壹账通智能科技有限公司 Data indexing method and device for block chain, computer equipment and storage medium
CN110837505B (en) * 2019-11-06 2022-07-19 杭州复杂美科技有限公司 State data storage method, state data synchronization device and storage medium
CN110874365B (en) * 2019-11-20 2023-11-17 深圳市迅雷网络技术有限公司 Information query method and related equipment thereof
CN110971393B (en) * 2019-11-29 2020-11-06 中南大学 Keyword query verification method and device based on block chain dynamic social outsourcing data
CN111080298B (en) * 2019-12-26 2023-12-29 电子科技大学 Block generation and transaction verification method suitable for energy block chain
US11461362B2 (en) * 2020-01-29 2022-10-04 EMC IP Holding Company LLC Merkle super tree for synchronizing data buckets of unlimited size in object storage systems
US11711204B2 (en) * 2020-01-29 2023-07-25 EMC IP Holding Company LLC Using sparse merkle trees for smart synchronization of S3
US11455319B2 (en) * 2020-01-29 2022-09-27 EMC IP Holding Company LLC Merkle tree forest for synchronizing data buckets of unlimited size in object storage systems
CN111488358A (en) * 2020-04-08 2020-08-04 北京瑞策科技有限公司 Data query method and device based on service data block chain
CN111680317B (en) * 2020-04-27 2021-05-25 华东师范大学 Block chain-oriented optimistic concurrency order-preserving coding method
CN111581215B (en) * 2020-05-07 2020-12-15 钟士平 Array tree data storage method, fast search method and readable storage medium
CN111596862B (en) * 2020-05-20 2022-11-01 南京如般量子科技有限公司 Independent optimization method and system for block chain historical transaction data
CN111639080B (en) * 2020-06-01 2021-07-27 腾讯科技(深圳)有限公司 Data processing method and device, node equipment and storage medium
CN111626680B (en) * 2020-06-02 2023-07-25 重庆云创科技有限公司 Transaction data chain type storage method and blockchain type storage method for reputation evaluation
CN111898164B (en) * 2020-07-02 2024-03-29 武汉纺织大学 Data integrity auditing method supporting label block chain storage and query
CN112487027B (en) * 2020-12-02 2022-08-23 山东浪潮科学研究院有限公司 Efficient data query implementation method based on block chain electronic transaction
CN112765155B (en) * 2020-12-14 2022-05-31 杭州趣链科技有限公司 Block chain-based key value storage method and device, terminal equipment and medium
CN112800065A (en) * 2021-02-09 2021-05-14 北京工业大学 Efficient data retrieval method based on improved block storage structure
CN112966001B (en) * 2021-02-26 2023-08-04 东北大学 BCTkPQ query method based on blockchain
CN113468571B (en) * 2021-07-15 2023-05-12 湖北央中巨石信息技术有限公司 Source tracing method based on block chain
CN113901131B (en) * 2021-09-02 2024-06-07 北京邮电大学 Index-based on-chain data query method and device
CN114153827B (en) * 2021-10-11 2023-01-10 北京天德科技有限公司 Transaction data removing method based on block chain system
CN114020737B (en) * 2021-10-20 2024-06-18 大连理工江苏研究院有限公司 Efficient and reliable indexing method for blockchain data
CN114519078B (en) * 2022-04-19 2022-08-09 北京理工大学 Cross-chain credible query method and system based on block chain
CN115037755B (en) * 2022-04-27 2023-04-07 东北大学 Block chain lightweight storage method based on data redistribution and dynamic node strategy
CN115052008B (en) * 2022-05-26 2023-07-25 南京邮电大学 Block chain data under-chain storage method based on cloud storage
CN115081031A (en) * 2022-07-26 2022-09-20 成都云智数安科技有限公司 Tamper-proof block chain data storage method and system
CN115619555B (en) * 2022-08-08 2023-06-09 深圳市喜达科技有限公司 Electronic commerce transaction system with data encryption transmission function

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106227833A (en) * 2016-07-26 2016-12-14 宁圣金融信息服务(上海)有限公司 Block chaining search engine method, system and device
CN107729371A (en) * 2017-09-12 2018-02-23 深圳先进技术研究院 The data directory and querying method of block chain, device, equipment and storage medium

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10691763B2 (en) * 2016-11-11 2020-06-23 International Business Machines Corporation Trustable web searching verification in a blockchain

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106227833A (en) * 2016-07-26 2016-12-14 宁圣金融信息服务(上海)有限公司 Block chaining search engine method, system and device
CN107729371A (en) * 2017-09-12 2018-02-23 深圳先进技术研究院 The data directory and querying method of block chain, device, equipment and storage medium

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Formal Modeling and Verification of Blockchain System;Zhangbo DUAN等;《2018 Association for Computing Machinery》;20180110;全文 *
区块链技术:架构及进展;邵奇峰等;《计算机学报》;20171231;全文 *

Also Published As

Publication number Publication date
CN109165224A (en) 2019-01-08

Similar Documents

Publication Publication Date Title
CN109165224B (en) Indexing method for key words on block chain database
US20220414090A1 (en) Blockchain data index method, blockchain data storage method and device
US11283616B2 (en) Method for index-based and integrity-assured search in a blockchain
AU2020204053B2 (en) Methods and apparatus for efficiently implementing a fast-copyable database
US11520780B2 (en) Distributed database systems and structures
CN108039943B (en) Verifiable encryption searching method
Niaz et al. Merkle hash tree based techniques for data integrity of outsourced data.
CN102122285B (en) Data cache system and data inquiry method
US20210109917A1 (en) System and Method for Processing a Database Query
WO2020167887A1 (en) Hybrid blockchains and streamchains using non-crypto hashes for securing audio-, video-, image-, and speech-based transactions and contracts
US8316417B2 (en) Method for dynamic secure management of an authenticated relational table in a database
CN111209591B (en) Storage structure sorted according to time and quick query method
CN102890678A (en) Gray-code-based distributed data layout method and query method
US20240289350A1 (en) Centralized database management system for database synchronization using same-size invertible bloom filters
CN114461673A (en) Block chain query optimization method based on-chain and off-chain cooperation
Zhang et al. Verifiable fuzzy keyword search supporting sensitive information hiding for data sharing in cloud-assisted e-healthcare systems
Wei et al. Integrity assurance for outsourced databases without DBMS modification
US20240143569A1 (en) Centralized database management system for database synchronization using invertible bloom filters
US11847137B2 (en) Database synchronization using resizable invertible bloom filters with database snapshots
EP4394619A1 (en) Data processing method and apparatus based on blockchain, and device and readable storage medium
Qian Improved authenticated data structures for blockchain synchronization
Zegour Scalable distributed compact trie hashing (CTH*)
CN115081031A (en) Tamper-proof block chain data storage method and system
CN116662329A (en) Index research for multi-dimensional data capable of inquiring and verifying
WO2020223901A1 (en) Data query method, and server

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