IP Library Granted Patent US 11,507,569
Granted Patent B2
US 11,507,569 · App. 17/320,114 · Granted Nov 22, 2022

Methods for extending a proof-of-space-time blockchain

Inventors: Bram Cohen (San Francisco, CA); Krzysztof Pietrzak (Vienna, AT); Mariano Sorgente (Tokyo, JP)
Assignee: Chia Network Inc.
G06F16/2379G06F12/0223H04L9/3239G06F2212/1048H04L9/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,507,569
App. No.
17/320,114
Granted
Nov 22, 2022
Kind
B2
Abstract

A method for extending a blockchain comprises, at a space server: allocating an amount of drive storage for generating proofs-of-space; or accessing a first challenge based on a prior block of the blockchain, the prior block comprising a first proof-of-space and a first proof-of-time; in response to accessing the first challenge, generating a second proof-of-space based on the first challenge and the amount of drive storage, the second proof-of-space indicating allocation of the amount of drive storage; accessing a second proof-of-time based on the prior block and indicating a first time delay elapsed after extension of the blockchain with the prior block; generating a new block comprising the second proof-of-space and the second proof-of-time; and broadcasting the new block over a distributed network.

Claims (102)

1. A method for extending a blockchain comprises, at a space server:

allocating an amount of drive storage for generating proofs-of-space;

accessing a first challenge based on a prior block of the blockchain, the prior block comprising:

a first proof-of-space; and

a first proof-of-time;

in response to accessing the first challenge, generating a second proof-of-space based on the first challenge and the amount of drive storage, the second proof-of-space indicating allocation of the amount of drive storage;

accessing a second proof-of-time based on the prior block and indicating a first time delay elapsed after extension of the blockchain with the prior block;

generating a new block comprising:

the second proof-of-space; and

the second proof-of-time; and

broadcasting the new block over a distributed network.

2. The method of claim 1 :

wherein allocating the amount of drive storage for generating proofs-of-space comprises:

generating a plot file:

characterized by the amount of drive storage; and

associated with the space server; and

storing the plot file on a drive accessible by the space server; and

wherein generating the second proof-of-space based on the first challenge and the amount of drive storage comprises generating the second proof-of-space based on the first challenge and the plot file.

3. The method of claim 2 :

wherein generating the plot file comprises generating a set of tables representing proofs-of-space based on a plot seed, the set of tables representing proofs-of-space characterized by a resistance to time-space tradeoff attacks; and

wherein generating the second proof-of-space based on the first challenge and the plot file comprises identifying a proof-of-space responsive to the first challenge in the set of tables representing proofs-of-space.

4. The method of claim 3 :

wherein generating the set of tables representing proofs-of-space based on the plot seed comprises:

generating a first table in the set of tables by, for each initial entry in a series of initial entries:

executing a pseudorandom function of the initial entry and the plot seed to generate an output entry in a series of output entries, the output entry corresponding to the initial entry; and

for each pair of output entries in the series of output entries satisfying a matching condition, executing a cryptographic hash function based on a pair of initial entries corresponding to the pair of output entries to generate a table-two entry in a series of table-two entries; and

generating each table in the set of tables subsequent to the first table by, for each pair of forward-propagated entries satisfying the matching condition in a series of forward-propagated entries of the table, executing the cryptographic hash function based on a set of initial entries corresponding to the pair of forward propagated entries to generate a subsequent-table entry in a series of subsequent-table entries; and

wherein identifying the proof-of-space responsive to the first challenge in the set of tables representing proofs-of-space comprises identifying a final-table entry in a series of final table entries, the final table entry:

responsive to the challenge; and

representing a binary tree of entries extending through the set of tables.

5. The method of claim 4 , wherein generating the set of tables representing proofs-of-space based on the plot seed further comprises:

backpropagating through each table in the set of tables to remove entries that do not satisfy the matching condition; and

compressing the set of tables to establish pointers representing propagation of entries in the set of tables, the pointers defining a binary tree extending through the set of tables.

6. The method of claim 1 , wherein accessing the second proof-of-time comprises receiving the second-proof-of-time from a time server in the distributed network.

7. The method of claim 1 , wherein accessing the second proof-of-time comprises executing a verifiable delay function based on the prior block for the first time delay to generate the second proof-of-time.

8. The method of claim 1 :

wherein generating the second proof-of-space based on the first challenge and the amount of drive storage comprises:

generating the second proof-of-space based on the first challenge and the amount of drive storage, the second proof-of-space indicating allocation of the amount of drive storage; and

executing a quality function based on the second proof-of-space and the first challenge to generate a second quality characterizing the second proof-of-space; and

further comprising calculating the first time delay based on the second quality.

9. The method of claim 1 , wherein accessing the second proof-of-time comprises accessing a verifiable-delay-function output based on the prior block and characterized by a number of verifiable-delay function iterations corresponding to the first time delay.

10. The method of claim 1 :

wherein generating the new block comprises generating a new canonical block comprising:

the second proof-of-space; and

the second proof-of-time; and

further comprising generating a new data block associated with the new canonical block, the new data block comprising:

a data payload;

a cryptographic signature based on the second proof-of-space; and

and a cryptographic hash of a prior data block.

11. The method of claim 10 , wherein generating the new data block associated with the new canonical block comprises generating the new data block associated with the new canonical block, the new data block comprising:

the data payload comprising transaction data and reward data;

the cryptographic signature based on the second proof-of-space; and

and the cryptographic hash of a prior data block.

12. The method of claim 1 , wherein accessing the first challenge based on the prior block of the blockchain comprises, in response to verifying the prior block as a valid block of the blockchain, accessing the first challenge based on the prior block.

13. A method for extending a blockchain comprises, at a time server:

accessing a prior block of the blockchain comprising:

a first proof-of-space; and

a first proof-of-time;

initiating a first thread of a verifiable delay function based on the prior block;

in response to executing a first number of iterations of the first thread:

generating a verifiable-delay-function output; and

broadcasting a second proof-of-time based on the verifiable-delay-function output over a distributed network, the first number of iterations indicating a first time delay elapsed after extension of the blockchain with the prior block;

accessing a new block comprising:

a second proof-of-space; and

the second proof-of-time; and

initiating a second thread of the verifiable delay function based on the new block.

14. The method of claim 13 :

wherein accessing the prior block of the blockchain comprises receiving the prior block from a first space server in the distributed network; and

wherein accessing the new block comprises receiving the new block from a second space server in the distributed network.

15. The method of claim 14 , wherein accessing the new block comprises accessing the new block comprising:

the second proof-of-space indicating allocation of an amount of drive storage on the second space server; and

the second proof-of-time.

16. The method of claim 13 :

wherein initiating the first thread of the verifiable delay function based on the prior block comprises initiating the first thread of the verifiable delay function based on a first cryptographic hash of the prior block; and

wherein initiating the second thread of the verifiable delay function based on the new block comprises initiating the second thread of the verifiable delay function based on a second cryptographic hash of the new block.

17. The method of claim 13 , wherein initiating the first thread of the verifiable delay function based on the prior block comprises:

generating a class group of unknown order based on a first cryptographic hash of the prior block; and

for each of the first number of iterations, squaring a binary quadratic form in the class group.

18. The method of claim 13 , further comprising calculating the first number of iterations based on a difficulty factor and a first time delay.

19. A method for extending a blockchain comprises:

at a space server:

allocating an amount of drive storage for generating proofs-of-space;

accessing a first challenge based on a prior block of the blockchain, the prior block comprising:

a first proof-of-space; and

a first proof-of-time; and

in response to receiving the first challenge, generating a second proof-of-space based on the first challenge and the amount of drive storage, the second proof-of-space indicating allocation of the amount of drive storage;

at a time server:

accessing the prior block;

initiating a first thread of a verifiable delay function based on the prior block; and

in response to executing a first number of iterations of the first thread:

generating a verifiable-delay-function output; and

broadcasting a second proof-of-time based on the verifiable-delay-function output to the space server, the first number of iterations indicating a first time delay elapsed after extension of the blockchain with the prior block;

at the space server:

receiving the second proof-of-time;

generating a new block comprising:

the second proof-of-space; and

the second proof-of-time; and

broadcasting the new block to the time server; and

at the time server:

receiving the new block; and

initiating a second thread of the verifiable delay function based on the new block.

20. The method of claim 19 , wherein the space server and the time server represent nodes in a distributed network and communicate via a gossip protocol.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 29, 2021
From: COHEN, BRAM; PIETRZAK, KRZYSZTOF; SORGENTE, MARIANO
To: CHIA NETWORK INC.
Reel/Frame 057962/0966 →
Continuity (4)
Continuation In Part 15931463 · May 13, 2020
Provisional Application 63177286 · Apr 20, 2021
Provisional Application 62850221 · May 20, 2019
Related Publication 20210271667A1 · Sep 2, 2021