IP Library Granted Patent US 10,708,071
Granted Patent B1
US 10,708,071 · App. 16/195,536 · Granted Jul 7, 2020

Consensus protocols in distributed computing systems

Inventors: Nicola Greco (Cambridge, MA); Juan Batiz-Benet (Palo Alto, CA); David Allen Dalrymple (Las Vegas, NV)
Assignee: Protocol Labs, Inc.
H04L9/3271G06F16/134H04L9/0637H04L9/0643H04L2209/38
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 10,708,071
App. No.
16/195,536
Granted
Jul 7, 2020
Kind
B1
Abstract

One method includes: (a) forwarding an input challenge to a prover at a start time, the input challenge having a time-stamp; (b) receiving a proof of storage responsive to the input challenge from the prover; (c) generating a new input challenge based on the proof of storage and forwarding the new input challenge to the prover; (d) repeating steps (b) and (c) resulting in a final proof; (e) receiving a proof result based on the final proof, the proof result having a time-stamp; (f) determining that the time between the start time time-stamp and the proof result time-stamp is less than a specified period of time; and (g) determining a winning prover from a plurality of candidate provers where a probability of a candidate prover being a winning prover is proportional to the candidate prover's assigned storage which is indicated at least in part by the candidate miner's proof result.

Claims (64)

1. A method comprising:

receiving a final proof from a prover, the prover:

receiving client data from a client;

storing the received client data using prover-accessible storage that is not publicly accessible;

receiving an initial input challenge, the initial input challenge having a start time time-stamp indicating the start time;

producing an initial proof responsive to the initial input challenge, the initial proof proving that the prover is storing the received client data;

generating a new input challenge based at least in part on the initial proof;

producing a new proof responsive to the new input challenge, the new proof proving that the prover is storing the received client data; and

repeating the generating step and the producing a new proof step a number of times, wherein each generating step is based at least in part on a most recent new proof, to produce a final proof proving the storage of the received client data over time, wherein the received client data is stored using prover-accessible storage that is not publicly accessible;

receiving the final proof, the final proof having a final-proof time-stamp indicating the time the final proof is received;

determining that the time between the start time time-stamp and the final proof time-stamp is less than a specified period of time;

determining a winning prover from a plurality of candidate provers where a probability of a candidate prover being a winning prover is proportional to the candidate prover's assigned storage indicated at least in part by a candidate miner's final proof proving the storage of the received client data during the time between the start time and the final proof time;

receiving a new block from the winning prover; and

adding the new block to a blockchain-based file storage system.

2. The method of claim 1 wherein the final proof is based at least in part on the most-recent in time verification of an amount of data a candidate miner has been storing.

3. The method of claim 1 wherein the proof result is based at least in part on a set of proofs of storage.

4. The method of claim 1 wherein the final proof is based on useful work.

5. The method of claim 4 wherein the useful work is storage of data.

6. The method of claim 1 wherein the method further comprises

(a) receiving at a prover original data from a client for storage by a prover;

(b) receiving at the prover a challenge from a verifier; and

(c) receiving a proof result from the prover indicating that the original data has been stored by the prover at least through a specified period of time.

7. The method of claim 6 wherein the verifier is the client.

8. A method comprising:

receiving a final proof from a miner, the miner:

receiving client data from a client;

storing the received client data using miner-accessible storage that is not publicly accessible;

receiving an initial input challenge at a start time, the initial input challenge having a start time time-stamp indicating the start time;

producing an initial proof responsive to the initial input challenge, the initial proof proving that the miner is storing the received client data;

generating a new input challenge based at least in part on the initial proof;

producing a new proof responsive to the new input challenge, the new proof proving that the miner is storing the received client data; and

repeating the generating step and the producing a new proof step a specified number of times wherein each generating step is based at least in part on a most recent new proof, to produce a final proof at a final proof time, the final proof proving the storage of the received client data over time, wherein the received client data is stored using miner-accessible storage that is not publicly accessible;

receiving the final proof from the miner, the final proof having a final proof time-stamp indicating the time the final proof is received;

determining that the time between the start time time-stamp and the final proof time-stamp is less than a specified period of time;

electing a miner from the plurality of candidate miners at a specified point in time where the probability of winning the election by a candidate miner is proportional to the candidate miner's assigned storage which is indicated at least in part by a candidate miner's final proof proving the storage of the received client data during the time between the start time time-stamp and the final proof time-stamp;

receiving a new block from the elected miner; and

adding the new block to a blockchain-based file storage system.

9. The method of claim 8 wherein the final proof is based at least in part on the most-recent in time verification of an amount of data a candidate miner has been storing.

10. The method of claim 8 wherein the final proof is based at least in part on a set of proofs of storage.

11. The method of claim 8 wherein the final proof is based on useful work.

12. The method of claim 11 wherein the useful work is storage of data.

13. The method of claim 8 wherein the method further comprises

receiving at a miner original data from a client for storage by a miner;

receiving at the miner a challenge from a verifier; and

receiving a proof result from the miner indicating that the original data has been stored by the miner at least through a specified period of time.

14. The method of claim 13 wherein the verifier is the client.

15. A system comprising:

one or more computers and one or more storage devices on which are stored instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations comprising:

receiving a final proof from a prover, the prover:

receiving client data from a client;

storing the received client data using prover-accessible storage that is not publicly accessible;

receiving an initial input challenge at a start time, the initial input challenge having a time-stamp indicating the start time;

producing an initial proof responsive to the initial input challenge, the initial proof proving that the prover is storing the received client data;

generating at the prover a new input challenge based at least in part on the initial proof;

producing a new proof responsive to the new input challenge, the new proof proving that the prover is storing the received client data; and

repeating the generating step and the producing a new proof step a number of times, wherein each generating step is based at least in part on a most recent proof, to produce a final proof proving the storage of the received client data over time, wherein the received client data is stored using prover-accessible storage that is not publicly accessible;

receiving the final proof, the final proof having a final proof time-stamp indicating the time the proof result is received;

determining that the time between the start time time-stamp and the final proof time-stamp is less than a specified period of time;

determining a winning prover from a plurality of candidate provers where a probability of a candidate prover being a winning prover is proportional to the candidate prover's assigned storage which is indicated at least in part by a candidate miner's proof proving the storage of the received client data during the time between the start time and the final proof time;

receiving a new block from the winning prover; and

adding the new block to a blockchain-based file storage system.

16. The method of claim 15 wherein the final proof is based at least in part on the most-recent in time verification of an amount of data a candidate prover has been storing.

17. The method of claim 15 wherein the final proof is based at least in part on a set of proofs of storage.

18. The method of claim 1 wherein the final proof is based on useful work and the useful work is storage of data.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2020
From: GRECO, NICOLA; BATIZ-BENET, JUAN; DALRYMPLE, DAVID ALLEN
To: PROTOCOL LABS, INC.
Reel/Frame 052805/0120 →
Continuity (3)
Provisional Application 62697123 · Jul 12, 2018
Provisional Application 62697091 · Jul 12, 2018
Provisional Application 62697097 · Jul 12, 2018
Cited By (2)
US 12,579,082 US 12,704,972