IP Library Granted Patent US 10,447,480
Granted Patent B2
US 10,447,480 · App. 15/394,842 · Granted Oct 15, 2019

Event verification receipt system and methods

Inventors: Risto Alas (Tallinn, EE); Hema Krishnamurthy (Phoenix, AZ)
Assignee: Guardtime SA
H04L9/3239G06F21/64H04L2209/38H04L2209/56
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,447,480
App. No.
15/394,842
Granted
Oct 15, 2019
Kind
B2
Abstract

Blockchain blocks are provided with either or both of two element types that enable later verification of block validity. One element type is identifiers, such as signatures, of trusted validators that approve entry of the block into the blockchain. Another element is a history hash tree that encodes data from not only the current block, but also at least one previous block.

Claims (48)

1. A method for testing the validity of entries in a database data structure, comprising:

in at least one blockchain node server, receiving a signal from a client system to register an event in the database data structure, said database data structure comprising a blockchain, which in turn comprises a sequentially linked series of blocks such that each block encodes at least partial state information of an immediately preceding block;

within at least selected blocks of the blockchain after an initial block in a group of blocks, which includes the initial block, including a representation of a history hash tree, including its structure, having a highest-level root value and, as lowest level inputs, a plurality of leaf input values derived from block-specific information stored in the initial block in the group of blocks, and at least one other block in the group of blocks, said block-specific information encoding data corresponding to each event that the respective block comprises and each leaf input value corresponding to the block-specific information of a corresponding one of the initial block or at least one other block,

computing said highest level root value by iterative, pairwise functional combination of the leaf input values and intermediate history tree node values;

in a block-verification phase, verifying a purportedly valid block by recomputing the highest-level root value from the representation of the history hash tree included in the purportedly valid block, including the information of the at least one preceding selected block, and accepting the purportedly valid block as being valid only if the recomputed highest-level root value is the same as the highest-level root value originally computed for the corresponding block.

2. The method of claim 1 , further comprising:

registering the event as one of a plurality of events that are combined using a block hash tree by iterative, pairwise hashing until a single block root value is computed;

for each event registered in the block, returning to the client system a receipt, said receipt encoding at least an identifier of the block and block sibling hash tree values enabling recomputation of the block root value by iterative, pairwise recomputation of the event with the block sibling hash tree values;

whereby a purportedly authentic representation of the event may be subsequently verified as being validly included in the block if, upon recomputing a block hash tree path represented by the block sibling values, from the purportedly authentic representation of the event up through the block hash tree, the same block root value is obtained as is contained in the receipt.

3. The method of claim 2 , further comprising submitting the block root value as the leaf input value of the respective block.

4. The method of claim 1 , further comprising:

grouping the series of blockchain blocks into block groups;

for each group, computing a separate group history hash tree, each having a root value for the respective block group; and

storing the root value of each group in the first block of an immediately following group history hash tree, such that the initial input value of the immediately following group encodes the root value of the history hash tree of the previous group.

5. The method of claim 4 , further comprising computing progressively growing, partial group history hash trees for each series of blocks within a group by constructing, for each block in the group, a hash tree of the tree input values of all the previous blocks in the same group, each partial group history hash tree having a partial group root value.

6. The method of claim 1 , further comprising:

grouping the series of blockchain blocks into block groups;

for each group, computing a separate group history hash tree, each having a root value for the respective block group; and

storing a representation of the entire history hash tree of the immediately preceding group of blocks in the first block of each group of blocks, such that the initial input value of each group encodes the history hash tree of the previous group.

7. The method of claim 1 , further comprising:

storing and digitally signing a previous portion of the history hash tree; and

beginning with the next selected block after the previous portion, restarting and storing in newly created blocks a new, progressively constructed history hash tree having the root value of the previous portion of the history hash tree as an initial hash tree input value.

8. The method of claim 7 , further comprising publishing the root value of the previous portion of the history hash tree in a medium that is irrefutable with respect to third parties of interest.

9. The method of claim 1 , further comprising:

progressively augmenting the history hash tree by adding to it a new lowest-level leaf node for each of a series of the blocks and recomputing the root value for the history hash tree;

deleting from the history hash tree a selected set of the lowest-level nodes and portions of the tree corresponding to aggregation of the selected set; and

computing a partial root value for the selected set and representing in the history hash tree the deleted selected set as the corresponding partial root value.

10. The method of claim 1 , further comprising:

submitting the block to at least one validating system and, for each validating system that approves the block for entry into the blockchain, including within the corresponding block an identifier of the validating system;

if a selected set of validating systems has approved the block, entering the block as a most recent entry in the blockchain; and

including in the receipt at least the identifiers of the validating systems that approved the block.

11. A method for testing the validity of entries in a database data structure, comprising:

in at least one blockchain node server, receiving a signal from a client system to register an event in the database data structure, said database data structure comprising a blockchain, which in turn comprises a sequentially linked series of blocks such that each block encodes at least partial state information of an immediately preceding block;

within at least selected blocks of the blockchain after an initial block, including a representation of a history hash tree having a highest-level root value and, as lowest level inputs, leaf input values derived from block-specific information stored in at least one preceding selected block, said block-specific information encoding data corresponding to each event that the respective block comprises,

computing said highest level root value by iterative, pairwise functional combination of the leaf input values and intermediate history tree node values;

progressively augmenting the history hash tree by adding to it a new lowest-level leaf node for each of a series of the blocks and recomputing the root value for the history hash tree;

deleting from the history hash tree a selected set of the lowest-level nodes and portions of the tree corresponding to aggregation of the selected set; and

computing a partial root value for the selected set and representing in the history hash tree the deleted selected set as the corresponding partial root value

in a block-verification phase, verifying a purportedly valid block by recomputing the highest-level root value from the representation of the history hash tree included in the purportedly valid block, including the information of the at least one preceding selected block, and accepting the purportedly valid block as being valid only if the recomputed highest-level root value is the same as the highest-level root value originally computed for the corresponding block.

12. A method for testing the validity of entries in a database data structure, comprising:

in at least one blockchain node server, receiving a signal from a client system to register an event in the database data structure, said database data structure comprising a blockchain, which in turn comprises a sequentially linked series of blocks such that each block encodes at least partial state information of an immediately preceding block;

within at least selected blocks of the blockchain after an initial block, including a representation of a history hash tree having a highest-level root value and, as lowest level inputs, leaf input values derived from block-specific information stored in at least one preceding selected block, said block-specific information encoding data corresponding to each event that the respective block comprises,

computing said highest level root value by iterative, pairwise functional combination of the leaf input values and intermediate history tree node values;

grouping the series of blockchain blocks into block groups;

for each group, computing a separate group history hash tree, each having a root value for the respective block group; and

storing the root value of each group in the first block of an immediately following group history hash tree, such that the initial input value of the immediately following group encodes the root value of the history hash tree of the previous group;

computing progressively growing, partial group history hash trees for each series of blocks within a group by constructing, for each block in the group, a hash tree of the tree input values of all the previous blocks in the same group, each partial group history hash tree having a partial group root value

in a block-verification phase, verifying a purportedly valid block by recomputing the highest-level root value from the representation of the history hash tree included in the purportedly valid block, including the information of the at least one preceding selected block, and accepting the purportedly valid block as being valid only if the recomputed highest-level root value is the same as the highest-level root value originally computed for the corresponding block.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 3, 2019
From: GUARDTIME IP HOLDINGS LIMITED
To: GUARDTIME SA
Reel/Frame 049073/0592 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 30, 2016
From: ALAS, RISTO; KRISHNAMURTHY, HEMA
To: GUARDTIME IP HOLDINGS LIMITED
Reel/Frame 040808/0067 →
Continuity (1)
Related Publication 20180189312A1 · Jul 5, 2018
Cited By (3)
US 12,250,320 US 12,505,120 US 12,711,500