# US 11,030,044 B2 · Dynamic blockchain data storage based on error correction code

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

- Number: US 11,030,044 B2
- Document ID: US11030044B2
- Status: Granted
- Kind: B2
- Application number: 17/086,030
- Filed: 2020-10-30
- Published: 2021-03-11
- Granted: 2021-06-08
- Earliest claimed: 2019-11-13
- Assignees: Alipay (Hangzhou) Information Technology Co., Ltd.
- Applicants: Alipay (Hangzhou) Information Technology Co., Ltd.
- Inventors: Haizhen Zhuo; Zhonghao Lu
- Web page: https://patentgrep.com/patent/US11030044B2

## CPC

- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F 11/182: {based on mutual exchange of the output between redundant processing components}
- G06F 16/2365: {Ensuring data consistency and integrity}
- G06F 21/645: {using a third party}
- H03M 13/154: {Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial}
- H04L 9/3239: {involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD}
- H04L 9/50: {using hash chains, e.g. blockchains or hash trees}
- H04L 63/123: {received data contents, e.g. message integrity}
- 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)
- H03M: CODING; DECODING; CODE CONVERSION IN GENERAL (using fluidic means F15C4/00; optical analogue/digital converters G02F7/00; coding, decoding or code conversion, specially adapted for particular applications, see the relevant subclasses, e.g. G01D, G01R, G06F, G06T, G09G, G10L, G11B, G11C, H04B, H04L, H04M, H04N; ciphering or deciphering for cryptography or other purposes involving the need for secrecy G09C)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Disclosed herein are methods, systems, and apparatus, including computer programs encoded on computer storage media, for storing blockchain data. One of the methods includes receiving a request for performing error correction coding (ECC) to one or more blocks of a blockchain, obtaining the one or more blocks based on blockchain data received from at least one blockchain node of the blockchain network, and performing ECC of the one or more blocks to generate one or more encoded blocks, wherein a code rate of the one or more encoded blocks equals a minimum number of honest blockchain nodes required by the blockchain network and a total number of blockchain nodes of the blockchain network.

## Claims

### Claim 1

A computer-implemented method for processing blockchain data performed by a first blockchain node of a blockchain network, the method comprising:
receiving a request for performing error correction coding (ECC) to one or more blocks of a blockchain;
obtaining the one or more blocks based on blockchain data received from at least one second blockchain node of the blockchain network; and
performing ECC of the one or more blocks to generate one or more encoded blocks, wherein a code rate of the one or more encoded blocks equals a minimum number of honest blockchain nodes required by the blockchain network and a total number of blockchain nodes of the blockchain network.

### Claim 2 (depends on 1)

The method of claim 1, wherein the blockchain data received from the at least one second blockchain node are a plurality of datasets divided from an ECC encoded version of the one or more blocks, and the obtaining the one or more blocks further comprises:
identifying one or more datasets divided from the ECC encoded version of the one or more blocks that are stored locally in the first blockchain node; and
decoding the one or more blocks based on the one or more datasets that are stored locally and the plurality of datasets received from the at least one second blockchain node.

### Claim 3 (depends on 1)

The method of claim 1, wherein the at least one second blockchain node is at least one full blockchain node, and wherein the obtaining the one or more blocks further comprises retrieving the one or more blocks from the at least one full blockchain node.

### Claim 4 (depends on 3)

The method of claim 3, wherein the one or more blocks are first one or more blocks, and retrieving the first one or more blocks further comprises:
sending hash values of the first one or more blocks to the at least one full blockchain node;
receiving second one or more blocks from the at least one full blockchain node; and
determining the second one or more blocks are authentic if hash values of the second one or more blocks are same as hash values of the first one or more blocks.

### Claim 5 (depends on 1)

The method of claim 1, wherein the request includes the code rate, and instructions to divide each of the one or more encoded blocks to a plurality of datasets and assign the plurality of datasets to the blockchain nodes of the blockchain network.

### Claim 6 (depends on 5)

The method of claim 5, further comprising:
for each encoded block of the one or more encoded blocks:
dividing the encoded block into the plurality of datasets according to the instructions; and
storing at least one of the plurality of datasets assigned to the first blockchain node according to the instructions.

### Claim 7 (depends on 6)

The method of claim 6, further comprising:
hashing a remainder of the plurality of datasets other than the at least one of the plurality of datasets assigned to the first blockchain node to generate hash values corresponding to the remainder of the plurality of datasets;
storing the hash values; and
deleting the one or more blocks and the remainder of the plurality of datasets.

### Claim 8 (depends on 7)

The method of claim 7, wherein the request is a first request and the one or more encoded blocks are first one or more encoded blocks, the method further comprising:
receiving a second request for performing ECC to the one or more blocks of a blockchain in response to a new blockchain node storing the one or more blocks being added to the blockchain network;
retrieving the one or more blocks from the new blockchain node; and
performing ECC of the one or more blocks to generate second one or more encoded blocks, wherein a code rate of the second one or more encoded blocks equals the minimum number of honest blockchain nodes required by the blockchain network and a new total number of blockchain nodes after the new blockchain node is added.

### Claim 9 (depends on 8)

The method of claim 8, wherein the new blockchain node is a full node that stores a copy of the blockchain.

### Claim 10 (depends on 1)

The method of claim 1, wherein the ECC is performed when utilization rate of computational resource of the first blockchain node is less than or equal to a predetermined value.

### Claim 11 (depends on 1)

The method of claim 1, wherein the ECC is erasure coding performed by adding redundant bits to the one or more blocks.

### Claim 12

A non-transitory, computer-readable medium storing one or more instructions executable by a computer system to perform operations for processing blockchain data performed by a first blockchain node of a blockchain network, the operations comprising:
receiving a request for performing error correction coding (ECC) to one or more blocks of a blockchain;
obtaining the one or more blocks based on blockchain data received from at least one second blockchain node of the blockchain network; and
performing ECC of the one or more blocks to generate one or more encoded blocks, wherein a code rate of the one or more encoded blocks equals a minimum number of honest blockchain nodes required by the blockchain network and a total number of blockchain nodes of the blockchain network.

### Claim 13 (depends on 12)

The non-transitory, computer-readable medium of claim 12, wherein the blockchain data received from the at least one second blockchain node are a plurality of datasets divided from an ECC encoded version of the one or more blocks, and obtaining the one or more blocks further comprises:
identifying one or more datasets divided from the ECC encoded version of the one or more blocks that are stored locally in the first blockchain node; and
decoding the one or more blocks based on the one or more datasets that are stored locally and the plurality of datasets received from the at least one second blockchain node.

### Claim 14 (depends on 12)

The non-transitory, computer-readable medium of claim 12, wherein the at least one second blockchain node is at least one full blockchain node, and wherein obtaining the one or more blocks further comprises retrieving the one or more blocks from the at least one full blockchain node.

### Claim 15 (depends on 14)

The non-transitory, computer-readable medium of claim 14, wherein the one or more blocks are first one or more blocks, and retrieving the first one or more blocks further comprises:
sending hash values of the first one or more blocks to the at least one full blockchain node;
receiving second one or more blocks from the at least one full blockchain node; and
determining the second one or more blocks are authentic if hash values of the second one or more blocks are same as hash values of the first one or more blocks.

### Claim 16 (depends on 12)

The non-transitory, computer-readable medium of claim 12, wherein the request includes the code rate, and instructions to divide each of the one or more encoded blocks to a plurality of datasets and assign the plurality of datasets to the blockchain nodes of the blockchain network.

### Claim 17 (depends on 16)

The non-transitory, computer-readable medium of claim 16, the operations further comprising:
for each encoded block of the one or more encoded blocks:
dividing the encoded block into the plurality of datasets according to the instructions; and
storing at least one of the plurality of datasets assigned to the first blockchain node according to the instructions.

### Claim 18 (depends on 17)

The non-transitory, computer-readable medium of claim 17, further comprising:
hashing a remainder of the plurality of datasets other than the at least one of the plurality of datasets assigned to the first blockchain node to generate hash values corresponding to the remainder of the plurality of datasets;
storing the hash values; and
deleting the one or more blocks and the remainder of the plurality of datasets.

### Claim 19 (depends on 18)

The non-transitory, computer-readable medium of claim 18, wherein the request is a first request and the one or more encoded blocks are first one or more encoded blocks, the operations further comprising:
receiving a second request for performing ECC to the one or more blocks of a blockchain in response to a new blockchain node storing the one or more blocks being added to the blockchain network;
retrieving the one or more blocks from the new blockchain node; and
performing ECC of the one or more blocks to generate second one or more encoded blocks, wherein a code rate of the second one or more encoded blocks equals the minimum number of honest blockchain nodes required by the blockchain network and a new total number of blockchain nodes after the new blockchain node is added,
wherein the new blockchain node is a full node that stores a copy of the blockchain.

### Claim 20

A computer-implemented system for processing blockchain data performed by a first blockchain node of a blockchain network, the 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, perform operations comprising:
receiving a request for performing error correction coding (ECC) to one or more blocks of a blockchain;
obtaining the one or more blocks based on blockchain data received from at least one second blockchain node of the blockchain network; and
performing ECC of the one or more blocks to generate one or more encoded blocks, wherein a code rate of the one or more encoded blocks equals a minimum number of honest blockchain nodes required by the blockchain network and a total number of blockchain nodes of the blockchain network.
