Databases and the Blockchain
Cryptocurrency and Blockchain technologies have the potential to be as powerful and disruptive as the internet itself. Database systems need to evolve to leverage Blockchain capabilities.
The Blockchain represents a new type of database:
Transactions on the Blockchain are public.
Not controlled by any central party.
Transactions cannot be altered.
The full history of all transactions are preserved.
Hangzhou Internet Court (China)
“The usage of a third-party Blockchain platform that is reliable without conflict of interests provides the legal ground for proving the intellectual infringement.”
Arizona Bill HB2603
“A signature that is secured through Blockchain technology is considered to be in an electronic form and to be an electronic signature.”
National Conference of State Legislatures
“Blockchain legislation pending or passed in at least 18 US states.”
2016 Vermont Statutes Title12
“A digital record electronically registered in a Blockchain shall be self-authenticating pursuant to Vermont Rule of Evidence 902.”
Blockchain proofs and the law
The immutability of data within a Blockchain constitutes a revolution in computer science. For the first time, we have a way of storing data which cannot be altered and whose creation data and integrity can be cryptographically proven.
Data in a traditional database can be altered at any time by a database administrator or a privileged developer. In contrast, data in a public Blockchain is immutable. We now have an absolute mathematical proof of the veracity and provenance of a data item.
Blockchain cryptographic proofs are increasingly being recognized as legal proofs. We can foresee a day in which Blockchain records are held to the same evidentiary standards as DNA or fingerprint records.
What is ProvenDB?
ProvenDB layers on top of a standard database engine adding core Blockchain characteristics to the database. The resulting database respects all usual database “CRUD” operations (Create-Read-Update-Delete) but also provides the following:
By default, all versions of a data item are retained. Previous versions of a data item can be superseded, but original versions are never destroyed.
Selected versions of the database are hashed upon the Blockchain. These versions can be proven to have been created at the specified time and can be proven to have been unaltered.
The state of a database at any point in time can be retrieved.
The complete history of any item can be retrieved, showing its initial contents, and the changes made to the document at each point in time.
Why use ProvenDB?
To prove you created some content.
To prove the date of a legal or official document.
To prove that a document or data has not been tampered with or altered.
To prove the exact history (provenance) of some data.
How ProvenDB works
ProvenDB can prove multiple documents with a single hash using a Merkle tree. We don’t need a whole tree to prove an individual document that is included in the final hash - we only need the “Merkle path.” Thousands of documents can be included in a single Merkle tree - all anchored to a single Blockchain transaction.
What is a hash?
A hash is a mathematical “signature” of a document - a digital fingerprint. The chances of two documents having the same hash are infinitesimally small. Hashes are far, far more precise proofs of document identity than DNA or fingerprints.
ProvenDB can generate proofs for a database version or a single document. Although only the hash for a complete version is anchored on the Blockchain, ProvenDB can supply a Merkle tree path which provides cryptographic proof that a given document was included within the Blockchain hash. In this way, users of ProvenDB may obtain proofs for individual documents that can be validated without the need to access any other documents within the database.
ProvenDB presents a MongoDB compatible API to the database user. Every change to the database creates a new logical version within the database. The user can view the older versions at any time.
The database user requests a proof be placed on the Blockchain for a specific version. This proof can be used to prove the timestamp of the entire version or any document in that version.
- MongoDB compatible Database service.
- Data is represented as JSON documents.
- Documents contain metadata to track and manage version information.
- ProvenDB keeps all versions of each document.
- An update to a document creates a new version of a document without modifying the previous version.
- A delete operation that marks the document as logically deleted without removing its content.
- The user can query directly against previous versions of the database.
Fast Bulk Load
- ProvenDB can be placed in a fast bulk load mode which only insert, and query operations are permitted.
- Inserts may be submitted without the overhead of creating a new database version.
- ProvenDB can export the data and proofs for the entire database, a database version or individual documents.
- These exports can be independently verified against Blockchain proofs using open source tools, ensuring that your Blockchain proofs remain valid even if you no longer have access to ProvenDB.
- Serializable consistency ensures that versioning requests execute as if they had executed one at a time.
Right To Be Forgotten
- “forget” allows all data for a document to be purged without compromising any existing proofs.
- Forgotten documents are removed, but their hash value is retained.
- Proving or viewing a forgotten document is impossible; however other documents in the database version remain provable.
- ProvenDB allows data between two proven versions to be compacted.
- This saves storage without compromising the integrity of any database proofs.
Full Database Proofs
- The entire state of the database can be established with a single Blockchain proof.
- Proofs can also be obtained for individual documents.