# US 11,307,927 B2 · Indexing and recovering encoded blockchain data

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,307,927 B2
- Document ID: US11307927B2
- Status: Granted
- Kind: B2
- Application number: 17/227,911
- Filed: 2021-04-12
- Published: 2021-07-29
- Granted: 2022-04-19
- Earliest claimed: 2019-10-15
- Assignees: Alipay (Hangzhou) Information Technology Co., Ltd.
- Applicants: Alipay (Hangzhou) Information Technology Co., Ltd.
- Inventors: Haizhen Zhuo
- Web page: https://patentgrep.com/patent/US11307927B2

## CPC

- G06F 11/10: Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- H04L 9/3239: {involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD}
- G06F 16/2255: {Hash tables}
- G06F 16/2379: {Updates performed during online database operations; commit processing}
- H04L 9/50: {using hash chains, e.g. blockchains or hash trees}
- H04L 2209/34: Encoding or coding, e.g. Huffman coding or error correction
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Disclosed herein are computer-implemented methods, computer-implemented systems, and non-transitory, computer-readable media, to index blockchain data for storage. One computer-implemented method includes generating one or more encoded blocks by executing error correction coding (ECC) on one or more blocks of a blockchain. Each of the one or more encoded blocks are divided into a plurality of datasets. An index is provided for the one or more encoded blocks, where the index is used to index each dataset of the plurality of datasets to a blockchain node at which a respective dataset is stored.

## Claims

### Claim 1

A computer-implemented method comprising:
executing error correction coding (ECC) on a first block of a blockchain, to generate an encoded block;
dividing the encoded block into a plurality of datasets;
storing, at a first blockchain node of the blockchain, a first dataset of the plurality of datasets, wherein one or more other datasets of the plurality of datasets are stored at a second blockchain node of the blockchain;
receiving, at the first blockchain node, from another computing device, a request for blockchain data;
determining that the blockchain data is included in the first block;
identifying the second blockchain node which a second dataset is stored at, wherein the second dataset is one of the one or more other datasets;
sending, to the second blockchain node, a request for the second dataset; and
receiving, at the first blockchain node, from the second blockchain node, the second dataset.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein identifying the second blockchain node is based on an index that stores a correspondence between each dataset of the plurality of datasets and a respective blockchain node at which the dataset is stored.

### Claim 3 (depends on 2)

The computer-implemented method of claim 2, wherein the index provides a correspondence between a dataset identifier of each dataset of the plurality of datasets and a node identifier of the respective blockchain node at which the dataset is stored.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, further comprising:
hashing the one or more other datasets to generate respective hash values corresponding to the one or more other datasets; and
storing the respective hash values at the first blockchain node.

### Claim 5 (depends on 4)

The computer-implemented method of claim 4, wherein the request for the second dataset comprises a hash value corresponding to the second dataset.

### Claim 6 (depends on 5)

The computer-implemented method of claim 5, further comprising:
subsequent to receiving the second dataset, hashing the second dataset, to generate a second hash value; and
comparing the second hash value to a stored hash value corresponding to the second dataset.

### Claim 7 (depends on 6)

The computer-implemented method of claim 6, further comprising:
determining that the second hash value does not match the stored hash value corresponding to the second dataset; and
in response to determining that the second hash value does not match the stored hash value corresponding to the second dataset, reporting the second blockchain node as a faulty node.

### Claim 8 (depends on 6)

The computer-implemented method of claim 6, further comprising:
receiving, at the first blockchain node, each other dataset, in addition to the second dataset, of the one or more other datasets, from corresponding other blockchain nodes;
combining the first dataset and the one or more other datasets to form, as a formed encoded block, the encoded block; and
decoding the formed encoded block, to generate the first block of the blockchain.

### Claim 9 (depends on 1)

The computer-implemented method of claim 1, comprising selecting the first block of the blockchain for encoding based on the first block of the blockchain having been stored on the blockchain for a predetermined amount of time.

### Claim 10 (depends on 1)

The computer-implemented method of claim 1, wherein the ECC is performed when a utilization rate of computational resources of the first blockchain node is less than or equal to a predetermined value or when usage of storage space of the first blockchain node is greater than or equal to a predetermined percentage.

### Claim 11

A computer-implemented system, comprising:
one or more computers; and
one or more computer memory devices interoperably coupled with the one or more computers and having tangible, non-transitory, machine-readable media storing one or more instructions that, when executed by the one or more computers, cause the one or more computers to perform operations comprising:
executing error correction coding (ECC) on a first block of a blockchain, to generate an encoded block;
dividing the encoded block into a plurality of datasets;
storing, at a first blockchain node of the blockchain, a first dataset of the plurality of datasets, wherein one or more other datasets of the plurality of datasets are stored at a second blockchain node of the blockchain;
receiving, at the first blockchain node, from another computing device, a request for blockchain data;
determining that the blockchain data is included in the first block;
identifying the second blockchain node which a second dataset is stored at, wherein the second dataset is one of the one or more other datasets;
sending, to the second blockchain node, a request for the second dataset; and
receiving, at the first blockchain node, from the second blockchain node, the second dataset.

### Claim 12 (depends on 11)

The computer-implemented system of claim 11, wherein identifying the second blockchain node is based on an index that stores a correspondence between each dataset of the plurality of datasets and a respective blockchain node at which the dataset is stored.

### Claim 13 (depends on 12)

The computer-implemented system of claim 12, wherein the index provides a correspondence between a dataset identifier of each dataset of the plurality of datasets and a node identifier of the respective blockchain node at which the dataset is stored.

### Claim 14 (depends on 11)

The computer-implemented system of claim 11, wherein the operations comprise:
hashing the one or more other datasets to generate respective hash values corresponding to the one or more other datasets; and
storing the respective hash values at the first blockchain node.

### Claim 15 (depends on 14)

The computer-implemented system of claim 14, wherein the request for the second dataset comprises a hash value corresponding to the second dataset.

### Claim 16 (depends on 15)

The computer-implemented system of claim 15, wherein the operations comprise:
subsequent to receiving the second dataset, hashing the second dataset, to generate a second hash value; and
comparing the second hash value to a stored hash value corresponding to the second dataset.

### Claim 17 (depends on 16)

The computer-implemented system of claim 16, wherein the operations comprise:
determining that the second hash value does not match the stored hash value corresponding to the second dataset; and
in response to determining that the second hash value does not match the stored hash value corresponding to the second dataset, reporting the second blockchain node as a faulty node.

### Claim 18 (depends on 16)

The computer-implemented system of claim 16, wherein the operations comprise:
receiving, at the first blockchain node, each other dataset, in addition to the second dataset, of the one or more other datasets, from corresponding other blockchain nodes;
combining the first dataset and the one or more other datasets to form, as a formed encoded block, the encoded block; and
decoding the formed encoded block, to generate the first block of the blockchain.

### Claim 19 (depends on 11)

The computer-implemented system of claim 11, wherein the operations comprise selecting the first block of the blockchain for encoding based on the first block of the blockchain having been stored on the blockchain for a predetermined amount of time.

### Claim 20

A non-transitory, computer-readable medium storing one or more instructions that, when executed by a computer system, cause the computer system to perform one or more operations comprising:
executing error correction coding (ECC) on a first block of a blockchain, to generate an encoded block;
dividing the encoded block into a plurality of datasets;
storing, at a first blockchain node of the blockchain, a first dataset of the plurality of datasets, wherein one or more other datasets of the plurality of datasets are stored at a second blockchain node of the blockchain;
receiving, at the first blockchain node, from another computing device, a request for blockchain data;
determining that the blockchain data is included in the first block;
identifying the second blockchain node which a second dataset is stored at, wherein the second dataset is one of the one or more other datasets;
sending, to the second blockchain node, a request for the second dataset; and
receiving, at the first blockchain node, from the second blockchain node, the second dataset.
