Data security of shared blockchain data storage based on error correction code
View Patent ↗Disclosed herein are methods, systems, and computer-readable media for storing blockchain data. Exemplary methods includes receiving a request from a blockchain node requesting removal from a blockchain network; identifying a plurality of blocks associated with blockchain data stored by the blockchain node; determining: a first difference between a number of remaining blockchain nodes excluding the blockchain node requesting removal and a maximum number of tolerable faulty blockchain nodes, a second difference between the number of remaining blockchain nodes storing a dataset of information bits or redundant bits divided from an ECC-encoded version of the block and the number of remaining blockchain nodes storing a dataset of redundant bits divided from the ECC-encoded version of the block, and smaller of the first and second difference; and retrieving blockchain data associated with the block from the blockchain node in response to determining that the first difference is less than the second difference.
1. A computer-implemented method for processing blockchain data in a trusted execution environment (TEE) executing on a computing device communicably coupled to a blockchain network, the method comprising:
receiving a request from a blockchain node to be removed from the blockchain network;
identifying a plurality of blocks associated with blockchain data stored by the blockchain node;
determining, for each block in the plurality of blocks:
a first difference between a total number of remaining blockchain nodes of the blockchain network excluding the blockchain node requesting to be removed and a maximum number of faulty blockchain nodes tolerable by the remaining blockchain nodes,
a second difference between a first number of the remaining blockchain nodes that store a dataset of information bits or redundant bits divided from an error correction coding (ECC) encoded version of the block and a second number of the remaining blockchain nodes that store a dataset of redundant bits divided from the ECC encoded version of the block, and
whether the first difference is less than the second difference;
retrieving blockchain data associated with the block from the blockchain node in response to determining that the first difference is less than the second difference; and
allowing the request from the blockchain node to be removed from the blockchain network after the retrieving the blockchain data.
2. The method of claim 1 , further comprising:
determining that the blockchain data associated with the block is the block itself; and
encoding the block using ECC to generate an encoded block, wherein a code rate of the block equals a minimum number of honest blockchain nodes required by the remaining blockchain nodes divided by a total number of the remaining blockchain nodes, and wherein the minimum number of honest blockchain nodes required and the maximum number of faulty blockchain nodes tolerable add up to a total number of the remaining blockchain nodes.
3. The method of claim 1 , further comprising:
determining that the blockchain data associated with the block is a dataset divided from an ECC encoded version of the block;
retrieving a remainder of datasets divided from the ECC encoded version of the block from a plurality of blockchain nodes;
decoding the block based on the dataset and the remainder of datasets; and
encoding the block using ECC to generate an encoded block, wherein a code rate of the block equals a minimum number of honest blockchain nodes required by the remaining blockchain nodes divided by a total number of remaining blockchain nodes, and wherein the minimum number of honest blockchain nodes required and the maximum number of faulty blockchain nodes tolerable add up to a total number of the remaining blockchain nodes.
4. The method of claim 2 , further comprising:
dividing the encoded block into a plurality of datasets after the encoding the block using the ECC, wherein a number of the plurality of datasets equals the total number of the remaining blockchain nodes;
calculating hash values of the plurality of datasets; and
sending one of the plurality of datasets and hash values of the selected dataset to each of the remaining blockchain nodes.
5. The method of claim 2 , wherein the ECC is performed when utilization rate of computational resource of the computing device is less than or equal to a predetermined value.
6. The method of claim 2 , wherein the ECC is erasure coding performed by adding redundant bits to one or more blocks.
7. The method of claim 1 , wherein the maximum number of faulty blockchain nodes tolerable is determined based on a practical Byzantine fault tolerance (PBFT) consensus protocol.
8. A system communicating shared blockchain data, comprising:
one or more processors; and
one or more computer-readable devices coupled to the one or more processors and having tangible, non-transitory, machine-readable media storing one or more instructions that, when executed by the one or more processors, perform operations comprising:
receiving a request from a blockchain node to be removed from a blockchain network;
identifying a plurality of blocks associated with blockchain data stored by the blockchain node;
determining, for each block in the plurality of blocks:
a first difference between a total number of remaining blockchain nodes of the blockchain network excluding the blockchain node requesting to be removed and a maximum number of faulty blockchain nodes tolerable by the remaining blockchain nodes,
a second difference between a first number of the remaining blockchain nodes that store a dataset of information bits or redundant bits divided from an error correction coding (ECC) encoded version of the block and a second number of the remaining blockchain nodes that store a dataset of redundant bits divided from the ECC encoded version of the block, and
whether the first difference is less than the second difference;
retrieving blockchain data associated with the block from the blockchain node in response to determining that the first difference is less than the second difference; and
allowing the request from the blockchain node to be removed from the blockchain network after the retrieving the blockchain data.
9. The system of claim 8 , the operations further comprising:
determining that the blockchain data associated with the block is the block itself; and
encoding the block using ECC to generate an encoded block, wherein a code rate of the block equals a minimum number of honest blockchain nodes required by the remaining blockchain nodes divided by a total number of the remaining blockchain nodes, and wherein the minimum number of honest blockchain nodes required and the maximum number of faulty blockchain nodes tolerable add up to a total number of the remaining blockchain nodes.
10. The system of claim 8 , the operations further comprising:
determining that the blockchain data associated with the block is a dataset divided from an ECC encoded version of the block;
retrieving a remainder of datasets divided from the ECC encoded version of the block from a plurality of blockchain nodes;
decoding the block based on the dataset and the remainder of datasets; and
encoding the block using ECC to generate an encoded block, wherein a code rate of the block equals a minimum number of honest blockchain nodes required by the remaining blockchain nodes divided by a total number of remaining blockchain nodes, and wherein the minimum number of honest blockchain nodes required and the maximum number of faulty blockchain nodes tolerable add up to a total number of the remaining blockchain nodes.
11. The system of claim 9 , the operations further comprising:
dividing the encoded block into a plurality of datasets after the encoding the block using the ECC, wherein a number of the plurality of datasets equals the total number of the remaining blockchain nodes;
calculating hash values of the plurality of datasets; and
sending one of the plurality of datasets and hash values of the selected dataset to each of the remaining blockchain nodes.
12. The system of claim 9 , wherein the ECC is performed when utilization rate of computational resource of the computing device is less than or equal to a predetermined value.
13. The system of claim 9 , wherein the ECC is erasure coding performed by adding redundant bits to one or more blocks.
14. The system of claim 8 , wherein the maximum number of faulty blockchain nodes tolerable is determined based on a practical Byzantine fault tolerance (PBFT) consensus protocol.
15. A non-transitory, computer-readable medium storing one or more instructions executable by a computer system to perform operations comprising:
receiving a request from a blockchain node to be removed from a blockchain network;
identifying a plurality of blocks associated with blockchain data stored by the blockchain node;
determining, for each block in the plurality of blocks:
a first difference between a total number of remaining blockchain nodes of the blockchain network excluding the blockchain node requesting to be removed and a maximum number of faulty blockchain nodes tolerable by the remaining blockchain nodes,
a second difference between a first number of the remaining blockchain nodes that store a dataset of information bits or redundant bits divided from an error correction coding (ECC) encoded version of the block and a second number of the remaining blockchain nodes that store a dataset of redundant bits divided from the ECC encoded version of the block, and
whether the first difference is less than the second difference;
retrieving blockchain data associated with the block from the blockchain node in response to determining that the first difference is less than the second difference; and
allowing the request from the blockchain node to be removed from the blockchain network after the retrieving the blockchain data.
16. The non-transitory, computer-readable medium of claim 15 , the operations further comprising:
determining that the blockchain data associated with the block is the block itself; and
encoding the block using ECC to generate an encoded block, wherein a code rate of the block equals a minimum number of honest blockchain nodes required by the remaining blockchain nodes divided by a total number of the remaining blockchain nodes, and wherein the minimum number of honest blockchain nodes required and the maximum number of faulty blockchain nodes tolerable add up to a total number of the remaining blockchain nodes.
17. The non-transitory, computer-readable medium of claim 15 , the operations further comprising:
determining that the blockchain data associated with the block is a dataset divided from an ECC encoded version of the block;
retrieving a remainder of datasets divided from the ECC encoded version of the block from a plurality of blockchain nodes;
decoding the block based on the dataset and the remainder of datasets; and
encoding the block using ECC to generate an encoded block, wherein a code rate of the block equals a minimum number of honest blockchain nodes required by the remaining blockchain nodes divided by a total number of remaining blockchain nodes, and wherein the minimum number of honest blockchain nodes required and the maximum number of faulty blockchain nodes tolerable add up to a total number of the remaining blockchain nodes.