×

Storing differentials of files in a distributed blockchain

  • US 10,121,019 B2
  • Filed: 08/11/2017
  • Issued: 11/06/2018
  • Est. Priority Date: 06/02/2015
  • Status: Active Grant
First Claim
Patent Images

1. A tangible, non-transitory, machine-readable medium storing instructions that when executed by one or more processors effectuate operations comprising:

  • receiving, with one or more processors, a request to write a new version of a document to a tamper-evident, immutable data repository, wherein;

    the tamper-evident, immutable data repository stores a previous version of the document;

    the tamper-evident, immutable data repository stores a plurality of versions of a plurality of other documents; and

    the tamper-evident, immutable data repository stores versions of the document and the other documents in a data structure that renders previously stored versions of documents computationally infeasible to modify without making the data structure verifiably internally inconsistent;

    after receiving the request, determining, with one or more processors, that the new version of the document is different from the previous version of the document; and

    in response to determining that the new version of the document is different from the previous version of the document, storing, with one or more processors, a difference between the previous version of the document and the new version of the document by;

    obtaining the previous version of the document from the tamper-evident, immutable data repository;

    determining a set of changes that, when made to the previous version of the document, transform the previous version of the document into the new version of the document by comparing the new version of the document to the previous version of the document;

    storing the set of changes in the tamper-evident, immutable data repository without storing a full copy of the new version of the document in the tamper-evident, immutable data repository; and

    storing a pointer to the previous version of the document in association with the set of changes, the pointer directly or indirectly indicating wherein in the tamper-evident, immutable data repository to obtain the previous version of the document, the previous version being an initial version or a set of differences,wherein;

    the tamper-evident, immutable data repository comprises a plurality of directed acyclic graphs having edges defined by cryptographic hash pointers based on versions of documents stored in the tamper-evident, immutable data repository;

    determining that at least part of the new version of the document is different from a previous version of the document comprises;

    calculating a hash digest of at least part of the new version of the document;

    accessing a hash digest of at least part of the previous version of the document stored outside of the tamper-evident, immutable data repository; and

    determining that the hash digest of at least part of the new version of the document is different from the hash digest of at least part of the previous version of the document, wherein the new version of the document is determined to be different from the previous version of the document before retrieving the previous version of the document from the tamper-evident, immutable data repository responsive to the write request;

    obtaining the previous version of the document comprises;

    retrieving a previous difference between the previous version of the document and another version of the document previous to the previous version, the previous difference including another set of changes that transform the other version of the document previous to the previous version into the previous version of the document;

    accessing a pointer associated with the previous difference, the pointer identifying a location of a copy of the other version of the document previous to the previous version in the tamper-evident, immutable data repository;

    retrieving the other version of the document previous to the previous version with the pointer; and

    applying the other set of changes to the retrieved other version of the document to form the previous version of the document;

    obtaining the previous version of the document comprises;

    iteratively, in three or more iterations, through three or more previous version of the document, sequentially applying previous sets of changes, retrieving versions starting from a most recent version until reaching an initial version and then combining the versions starting from the initial version of the document until reaching the previous version to form the previous version;

    the three or more previous versions form a version graph for the document that contains a sequence of sets of changes to the document between writes to the tamper-evident, immutable data repository;

    one of the three or more previous versions of the document branches into a different document based on the one of the three or more previous versions of the document; and

    after writing, two current versions of documents in the tamper-evident, immutable data repository share overlapping subsets of previous versions.

View all claims
  • 1 Assignment
Timeline View
Assignment View
    ×
    ×