Pruning entries in tamper-evident data stores
AssigneeSchvey, Inc.
InventorsJeffrey Schvey, George Rabanca, Joby Thundil, Josh Dillon
Life of this patent
Estimating the term…
Abstract
Provided is a process that includes pruning entries in a tamper-evident data store while maintaining tamper-evident properties of prior and subsequent entries after pruning. Operations include traversing a linked list of instances of program state of a smart contract in the tamper-evident data store and pruning identified instances of program state in the tamper-evident data store.
Claims24
A tangible, non-transitory, machine-readable medium storing instructions that when executed by one or more processors effectuate operations comprising:
- receiving, with a computer system, a request to prune data stored in a tamper-evident data store, wherein:
- the data includes first program state of a first program at a first time,
- the first program is one of a plurality of programs having program state stored in the tamper-evident data store,
- the request uniquely identifies the first program with an identifier that distinguishes the first program from a second program among the plurality of programs,
- the tamper-evident data store comprises a directed acyclic graph of cryptographic hash pointers,
- a first subset of the cryptographic hash pointers have cryptographic hash values based on the first program state of the first program at the first time,
- a second subset of the cryptographic hash pointers have cryptographic hash values based on second program state of the first program at a second time,
- a third subset of the cryptographic hash pointers have cryptographic hash values based on the first program state of the first program at the first time, the second program state of the first program at the second time, and a program state of the second program from before the first time, and
- the tamper-evident data store comprises or is associated with a record that links the first subset of the cryptographic hash pointers to the second subset of the cryptographic hash pointers;
- in response to the request, based on the identifier and the record that links the first subset of the cryptographic hash pointers to the second subset of the cryptographic hash pointers, with the computer system, selecting:
- a first subset of nodes of the directed acyclic graph having first content based on the first program state of the first program at the first time, the hash values of first subset of the cryptographic hash pointers being based on the first content, and
- a second subset of nodes of the directed acyclic graph having second content based on the second program state of the first program at the second time, the hash values of second subset of the cryptographic hash pointers being based on the second content;
- pruning, with the computer system, the first program state and the second program state from the tamper-evident data store by changing the first content and the second content in memory, wherein:
- after the pruning, cryptographic hash values of the directed acyclic graph of cryptographic hash pointers are internally consistent, and
- after the pruning, the program state of the second program from before the first time remains in the tamper-evident data store.
A method, comprising:
- receiving, with a computer system, a request to prune data stored in a tamper-evident data store, wherein:
- the data includes first program state of a first program at a first time,
- the first program is one of a plurality of programs having program state stored in the tamper-evident data store,
- the request uniquely identifies the first program with an identifier that distinguishes the first program from a second program among the plurality of programs,
- the tamper-evident data store comprises a directed acyclic graph of cryptographic hash pointers,
- a first subset of the cryptographic hash pointers have cryptographic hash values based on the first program state of the first program at the first time,
- a second subset of the cryptographic hash pointers have cryptographic hash values based on second program state of the first program at a second time,
- a third subset of the cryptographic hash pointers have cryptographic hash values based on the first program state of the first program at the first time, the second program state of the first program at the second time, and a program state of the second program from before the first time, and
- the tamper-evident data store comprises or is associated with a record that links the first subset of the cryptographic hash pointers to the second subset of the cryptographic hash pointers;
- in response to the request, based on the identifier and the record that links the first subset of the cryptographic hash pointers to the second subset of the cryptographic hash pointers, with the computer system, selecting:
- a first subset of nodes of the directed acyclic graph having first content based on the first program state of the first program at the first time, the hash values of first subset of the cryptographic hash pointers being based on the first content, and
- a second subset of nodes of the directed acyclic graph having second content based on the second program state of the first program at the second time, the hash values of second subset of the cryptographic hash pointers being based on the second content;
- pruning, with the computer system, the first program state and the second program state from the tamper-evident data store by changing the first content and the second content in memory, wherein:
- after the pruning, cryptographic hash values of the directed acyclic graph of cryptographic hash pointers are internally consistent, and
- after the pruning, the program state of the second program from before the first time remains in the tamper-evident data store.
A tangible, non-transitory, machine-readable medium storing instructions that when executed by one or more processors effectuate operations comprising:
- receiving, with a computer system, a request to prune data stored in a tamper-evident data store, wherein:
- the data includes first program state of a first program at a first time,
- the first program is one of a plurality of programs having program state stored in the tamper-evident data store,
- the request uniquely identifies the first program with an identifier that distinguishes the first program from a second program among the plurality of programs,
- the tamper-evident data store comprises a directed acyclic graph of cryptographic hash pointers,
- a first subset of the cryptographic hash pointers have cryptographic hash values based on the first program state of the first program at the first time,
- a second subset of the cryptographic hash pointers have cryptographic hash values based on second program state of the first program at a second time,
- a third subset of the cryptographic hash pointers have cryptographic hash values based on the first program state of the first program at the first time, the second program state of the first program at the second time, and a program state of the second program from before the first time, and
- the tamper-evident data store comprises or is associated with a record that links the first subset of the cryptographic hash pointers to the second subset of the cryptographic hash pointers based on the first program state and the second program state of the first program at different times;
- in response to the request, based on the identifier and the record that links the first subset of the cryptographic hash pointers to the second subset of the cryptographic hash pointers, with the computer system, selecting:
- a first subset of nodes of the directed acyclic graph having first content based on the first program state of the first program at the first time, the first content comprising a cryptographic transaction hash of a first transaction on a decentralized computing platform by which the first program was deployed, and the hash values of first subset of the cryptographic hash pointers being based on the first content, and
- a second subset of nodes of the directed acyclic graph having second content based on the second program state of the first program at the second time, the second content comprising a cryptographic transaction hash of a second transaction by which the first program was invoked to mutate program state of the first program from the first program state to the second program state, and the hash values of second subset of the cryptographic hash pointers being based on the second content;
- pruning, with the computer system, the first program state and the second program state from the tamper-evident data store by changing the first content and the second content in memory, wherein:
- pruning comprises changing the cryptographic transaction hash of the first transaction and the second transaction on the decentralized computing platform,
- after the pruning, cryptographic hash values of the directed acyclic graph of cryptographic hash pointers are internally consistent, and
- after the pruning, the program state of the second program from before the first time remains in the tamper-evident data store.
Dependencies are inferred from the claim text.