IP Library Granted Patent US 11,611,439
Granted Patent B2
US 11,611,439 · App. 16/899,065 · Granted Mar 21, 2023

Tree structure for byzantine fault tolerance

Inventors: Jason Ansel (Mountain View, CA); Marek Olszewski (San Francisco, CA)
Assignee: CELO FOUNDATION
H04L9/3236G06F11/0751G06F11/2097H04L9/3247H04L67/1097G06F2201/82H04L9/50
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,611,439
App. No.
16/899,065
Granted
Mar 21, 2023
Kind
B2
Abstract

Systems and techniques are provided for a tree structure for byzantine fault tolerance. A validator computing device may receive a candidate block from a block producer. The block producer may be a second validator computing device of the distributed network. The validator computing device may determine whether or not the candidate block is valid. The validator computing device may sign an indication of whether or not the candidate block is valid to generate a signature. The validator computing device may send the signature to a third validator computing device that is a sibling node to the validator computing device. The validator computing device may receive a second signature from the third validator computing device. The validator computing device may combine the signature and the second signature to generate a combine signature if the signature and the second signature agree.

Claims (50)

1. A computer-implemented method comprising:

broadcasting, by a first of a plurality of validator computing devices of a distributed network to the rest of the plurality of validator computing devices, a candidate block;

determining, by the validator computing devices, whether the candidate block is valid or invalid;

generating, by each of the validator computing devices, a signature that indicates whether the validator computing device determined the block to be valid or invalid;

combining, by each one of the validator computing devices, the signature of the validator computing device with the signature of a validator computing device that is a sibling node of the one of the validator computing devices in a tree structure when the signature of the one of the validator computing devices and the signature of the validator computing device that is the sibling node agree, to generate combined signatures;

sending, by any validator computing device whose signature disagrees with the signature of a validator computing device that is its sibling node, the signature of the validator computing device to the first validator computing device;

removing, from the tree structure, at least one virtual node based on a disagreement between signatures between sibling validator computing devices, generating one or more independent subtree in the tree structure;

sending, by each of the validator computing devices that is the leftmost child node of a root node of each of the one or more independent subtrees, the combined signatures of the validator computing device to the first validator computing device; and

determining a consensus on whether the candidate block is valid or not valid based on the signatures and combined signatures sent to the first validator computing device.

2. The method of claim 1 , further comprising, after removing, from the tree structure, at least one virtual node based on a disagreement between signatures between sibling validator computing devices, generating one or more independent subtree in the tree structure:

combining, by each one of the validator computing devices that operates a virtual node, the combined signatures generated by the validator computing device with the combined signatures generated by a validator computing device that is a operating a virtual node that is a sibling node of the virtual node operated by the one of the validator computing devices in the tree structure when the combined signatures generated by the one of the validator computing devices and the combined signatures generated by the validator computing device that is operating the virtual node that is the sibling node agree, to generate combined signatures; and

sending, by any validator computing device operating a virtual node that generated combined signatures that disagree with the combined signatures of a validator computing device that is operating a virtual node that is a sibling node of the virtual node, the combined signatures generated by the validator computing device to the first validator computing device.

3. The method of claim 1 , further comprising, before determining a consensus on whether the candidate block is valid or not valid based on the signatures and combined signatures sent to the first validator computing device:

broadcasting, by the first validator computing device, the signatures and combined signatures to the validator computing devices of the distributed network;

determining, by each of the validator computing devices of the distributed network, whether the signature of the validator computing device is included in the signatures and combined signatures broadcast by the first validator computing device; and

sending, by each of the validator computing devices that determines that its signature is not included in the signatures and combined signatures, the signature of the validator computing device to the first validator computing device.

4. The method of claim 1 , further comprising:

determining a number of infractions for each of the validator computing devices in the distributed network;

removing a specified number of the validator computing devices with the highest number of infractions from the tree structure;

moving one or more validator computing devices that remain in the tree structure to empty positions in the tree structure created by the removing of the specified number of the validator computing devices form the tree structure, wherein the one or more validator computing devices are moved to the left; and

inserting the removed validator computing devices into the tree structure at the right side of the tree structure.

5. The method of claim 4 , wherein an infraction comprises disagreeing with a consensus on the validity of a candidate block.

6. The method of claim 4 , wherein an infraction comprises sending a signature directly to the first validator computing device when the signature should have been combined with another signature to generate a combined signature.

7. The method of claim 4 , wherein the infractions are determined over a sliding window of a specified number of previous candidate blocks.

8. The method of claim 4 , wherein the infractions are weighted.

9. The method of claim 1 , wherein the tree structure is a binary tree comprising the validator computing devices on the bottom level of the tree structure and virtual nodes on other levels of the tree structure.

10. A system comprising: one or more computers and one or more storage devices storing instructions which are operable, when executed by the one or more computers, to cause the one or more computers to perform operations comprising:

broadcasting, by a first of a plurality of validator computing devices of a distributed network to the rest of the plurality of validator computing devices, a candidate block;

determining, by the validator computing devices, whether the candidate block is valid or invalid;

generating, by each of the validator computing devices, a signature that indicates whether the validator computing device determined the block to be valid or invalid;

combining, by each one of the validator computing devices, the signature of the validator computing device with the signature of a validator computing device that is a sibling node of the one of the validator computing devices in a tree structure when the signature of the one of the validator computing devices and the signature of the validator computing device that is the sibling node agree, to generate combined signatures;

sending, by any validator computing device whose signature disagrees with the signature of a validator computing device that is its sibling node, the signature of the validator computing device to the first validator computing device;

removing, from the tree structure, at least one virtual node based on a disagreement between signatures between sibling validator computing devices, generating one or more independent subtree in the tree structure;

sending, by each of the validator computing devices that is the leftmost child node of a root node of each of the one or more independent subtrees, the combined signatures of the validator computing device to the first validator computing device; and

determining a consensus on whether the candidate block is valid or not valid based on the signatures and combined signatures sent to the first validator computing device.

11. The system of claim 10 , wherein the instructions further cause the one or more computers to perform operations comprising:

combining, by each one of the validator computing devices that operates a virtual node, the combined signatures generated by the validator computing device with the combined signatures generated by a validator computing device that is a operating a virtual node that is a sibling node of the virtual node operated by the one of the validator computing devices in the tree structure when the combined signatures generated by the one of the validator computing devices and the combined signatures generated by the validator computing device that is operating the virtual node that is the sibling node agree, to generate combined signatures; and

sending, by any validator computing device operating a virtual node that generated combined signatures that disagree with the combined signatures of a validator computing device that is operating a virtual node that is a sibling node of the virtual node, the combined signatures generated by the validator computing device to the first validator computing device.

12. The system of claim 11 , wherein the instructions further cause the one or more computers to perform operations comprising:

broadcasting, by the first validator computing device, the signatures and combined signatures to the validator computing devices of the distributed network;

determining, by each of the validator computing devices of the distributed network, whether the signature of the validator computing device is included in the signatures and combined signatures broadcast by the first validator computing device; and

sending, by each of the validator computing devices that determines that its signature is not included in the signatures and combined signatures, the signature of the validator computing device to the first validator computing device.

13. The system of claim 12 , wherein the instructions further cause the one or more computers to perform operations comprising:

determining a number of infractions for each of the validator computing devices in the distributed network;

removing a specified number of the validator computing devices with the highest number of infractions from the tree structure;

moving one or more validator computing devices that remain in the tree structure to empty positions in the tree structure created by the removing of the specified number of the validator computing devices form the tree structure, wherein the one or more validator computing devices are moved to the left; and

inserting the removed validator computing devices into the tree structure at the right side of the tree structure.

14. The system of claim 12 , wherein an infraction comprises disagreeing with a consensus on the validity of a candidate block.

15. The system of claim 12 , wherein an infraction comprises sending a signature directly to the first validator computing device when the signature should have been combined with another signature to generate a combined signature.

16. The system of claim 10 , wherein the tree structure is a binary tree comprising the validator computing devices on the bottom level of the tree structure and virtual nodes on other levels of the tree structure.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 6, 2023
From: ANSEL, JASON; OLSZEWSKI, MAREK
To: CELO FOUNDATION
Reel/Frame 062294/0700 →
Continuity (2)
Provisional Application 62859717 · Jun 11, 2019
Related Publication 20200396081A1 · Dec 17, 2020