IP Library Granted Patent US 11,960,502
Granted Patent B2
US 11,960,502 · App. 17/555,053 · Granted Apr 16, 2024

Byzantine fault tolerance protocol for backing up blockchains

Inventors: Ittai Abraham (Herzliya, IL); Guy Gueta (Herzliya, IL); Igor Golikov (Herzliya, IL); Toly Kournik (Herzliya, IL); Tsvetomir Dimitrov (Sofia, BG)
Assignee: VMware LLC
G06F16/273G06F11/1451G06F2201/80
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,960,502
App. No.
17/555,053
Granted
Apr 16, 2024
Kind
B2
Abstract

In some embodiments, a method sends first messages that request first information for a set of blocks of the blockchain to the N replicas. Each replica maintains a respective instance of the blockchain. Second messages is received from at least a portion of the N replicas. The second messages include the first information for the set of blocks from each respective instance of the blockchain that is maintained by the N replicas. The method analyzes the first information to determine whether a consensus on the first information is reached by a number of replicas. When consensus is reached, a request is sent to a replica for one or more blocks to back up to a backup blockchain and second information is received for the one or more blocks from the replica. The method uses the second information to back up the one or more blocks in the backup blockchain.

Claims (56)

1. A method for using a backup client to back up a blockchain in a state machine replication system comprising N replicas, the method comprising:

sending a plurality of first messages that request first information, the first information including identification information for a set of blocks of the blockchain to the N replicas, wherein each replica in the N replicas maintains a respective instance of the blockchain;

receiving a plurality of second messages from at least a portion of the N replicas, the plurality of second messages including the first information for the set of blocks from each respective instance of the blockchain that is maintained by the at least the portion of the N replicas;

analyzing the first information from the plurality of second messages to determine whether a consensus on the first information included in the plurality of second messages is reached by a number of replicas;

when consensus is reached, sending to a replica a request that identifies, using the identification information, one or more blocks to back up to a backup blockchain;

receiving second information, that is stored, for the one or more blocks in the respective instance of the blockchain from the replica; and

using the second information to back up the one or more blocks in the backup blockchain.

2. The method of claim 1 , further comprising:

before sending the plurality of first messages, receiving a plurality of third messages from the at least the portion of the N replicas, wherein the plurality of third messages indicate a state of each respective instance of the blockchain that is stored by the N replicas; and

analyzing the plurality of third messages to determine whether a consensus on the state is reached by the number of replicas.

3. The method of claim 2 , wherein the plurality of third messages are received based on sending of a plurality of fourth messages, wherein the plurality of fourth messages request the state of each respective instance of the blockchain from the N replicas.

4. The method of claim 2 , further comprising:

when the consensus on the state is reached, determining whether the backup blockchain needs to be updated based on the state of each respective instance of the blockchain that is received in the plurality of third messages.

5. The method of claim 4 , wherein the backup blockchain needs to be updated when the backup blockchain is missing a block from respective instances of the blockchain that are stored on the number of replicas.

6. The method of claim 1 , wherein the backup blockchain is stored in storage external to the N replicas, the method comprising:

restoring a block from the backup blockchain to a respective instance of the blockchain that is maintained by a replica.

7. The method of claim 1 , further comprising:

when the block is stored in the backup blockchain, communicating a status of the backup blockchain to the replica to allow the replica to delete a block in the blockchain, wherein the blockchain is stored by the replica.

8. A non-transitory computer-readable storage medium containing instructions for using a backup client to back up a blockchain in a state machine replication system comprising N replicas, wherein the instructions, when executed, control a computer system to be operable for:

sending a plurality of first messages that request first information, the first information including identification information for a set of blocks of the blockchain to the N replicas, wherein each replica in the N replicas maintains a respective instance of the blockchain;

receiving a plurality of second messages from at least a portion of the N replicas, the plurality of second messages including the first information for the set of blocks from each respective instance of the blockchain that is maintained by the at least the portion of the N replicas;

analyzing the first information from the plurality of second messages to determine whether a consensus on the first information included in the plurality of second messages is reached by a number of replicas;

when consensus is reached, sending to a replica a request that identifies, using the identification information, one or more blocks to back up to a backup blockchain;

receiving second information, that is stored, for the one or more blocks in the respective instance of the blockchain from the replica; and

using the second information to back up the one or more blocks in the backup blockchain.

9. The non-transitory computer-readable storage medium of claim 8 , further operable for:

before sending the plurality of first messages, receiving a plurality of third messages from the at least the portion of the N replicas, wherein the plurality of third messages indicate a state of each respective instance of the blockchain that is stored by the N replicas; and

analyzing the plurality of third messages to determine whether a consensus on the state is reached by the number of replicas.

10. The non-transitory computer-readable storage medium of claim 9 , wherein the plurality of third messages are received based on sending of a plurality of fourth messages, wherein the plurality of fourth messages request the state of each respective instance of the blockchain from the N replicas.

11. The non-transitory computer-readable storage medium of claim 9 , further operable for:

when the consensus on the state is reached, determining whether the backup blockchain needs to be updated based on the state of each respective instance of the blockchain that is received in the plurality of third messages.

12. The non-transitory computer-readable storage medium of claim 11 , wherein the backup blockchain needs to be updated when the backup blockchain is missing a block from respective instances of the blockchain that are stored on the number of replicas.

13. The non-transitory computer-readable storage medium of claim 9 , wherein the backup blockchain is stored in storage external to the N replicas, and the instructions are further operable for:

restoring a block from the backup blockchain to a respective instance of the blockchain that is maintained by a replica.

14. The non-transitory computer-readable storage medium of claim 9 , further operable for:

when the block is stored in the backup blockchain, communicating a status of the backup blockchain to the replica to allow the replica to delete a block in the blockchain, wherein the blockchain is stored by the replica.

15. An apparatus for using a backup client to back up a blockchain in a state machine replication system comprising N replicas, the apparatus comprising:

one or more computer processors; and

a non-transitory computer-readable storage medium comprising instructions, that when executed, control the one or more computer processors to be operable for:

sending a plurality of first messages that request first information that includes identification information for a set of blocks of the blockchain to the N replicas, wherein each replica in the N replicas maintains a respective instance of the blockchain;

receiving a plurality of second messages from at least a portion of the N replicas including the first information for the set of blocks from each respective instance of the blockchain that is maintained by the at least the portion of the N replicas;

analyzing the first information from the plurality of second messages to determine whether a consensus on the first information included in the plurality of second messages is reached by a number of replicas;

when consensus is reached, sending a request to a replica that identifies one or more blocks using the identification information to back up to a backup blockchain;

receiving second information that is stored for the one or more blocks in the respective instance of the blockchain from the replica; and

using the second information to back up the one or more blocks in the backup blockchain.

16. The apparatus of claim 15 , further operable for:

before sending the plurality of first messages, receiving a plurality of third messages from the at least the portion of the N replicas, wherein the plurality of third messages indicate a state of each respective instance of the blockchain that is stored by the N replicas; and

analyzing the plurality of third messages to determine whether a consensus on the state is reached by the number of replicas.

17. The apparatus of claim 16 , wherein the plurality of third messages are received based on sending of a plurality of fourth messages, wherein the plurality of fourth messages request the state of each respective instance of the blockchain from the N replicas.

18. The apparatus of claim 16 , further operable for:

when the consensus on the state is reached, determining whether the backup blockchain needs to be updated based on the state of each respective instance of the blockchain that is received in the plurality of third messages.

19. The apparatus of claim 18 , wherein the backup blockchain needs to be updated when the backup blockchain is missing a block from respective instances of the blockchain that are stored on the number of replicas.

20. The apparatus of claim 15 , wherein the backup blockchain is stored in storage external to the N replicas, and the instructions are further operable for:

restoring a block from the backup blockchain to a respective instance of the blockchain that is maintained by a replica.

21. The apparatus of claim 15 , further operable for:

when the block is stored in the backup blockchain, communicating a status of the backup blockchain to the replica to allow the replica to delete a block in the blockchain, wherein the blockchain is stored by the replica.

Assignments (2)
CHANGE OF NAME Recorded Feb 27, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 066692/0103 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 11, 2022
From: ABRAHAM, ITTAI; GUETA, GUY; GOLIKOV, IGOR; KOURNIK, TOLY; DIMITROV, TSVETOMIR
To: VMWARE, INC.
Reel/Frame 059891/0565 →
Continuity (1)
Related Publication 20230195750A1 · Jun 22, 2023