WIP: Blockchain for Document Validation
First I’m new with blockchain, so if you find any wrong statement in this article feel free to let me know
What is Blockchain?
From Wikipedia: “A blockchain is a continuously growing list of records, called blocks, which are linked and secured using cryptography. Each block contains typically a hash pointer as a link to a previous block, a timestamp and transaction data”
[TODO: Blockchain Diagram]
Blockchain visualization
To make you understand blockchain better, please watch the following video. In this video and application the author present how blockchain works very detailed and with the visualization makes us easy to understand blockchain.
Video
Demo Application
Why Blockchain?
Blockchain enable us to create an unalterable information or data with date and time stamp. This is the main reason why blockchain become the most popular technology for digital currency.
With block chain you can prove, that a certain information, like file, document, or phone call existed at a certain point in time, and make sure it was never been altered, beyond any doubt.
By using blockchain as document validation will makes no more legal disputes on when a document or form whether it was changed or not. Easy to track when an email or document was send or if it is the original or who is the author.
Open Source Implementation: Chainpoint
From Chainpoint official website, Chainpoint is an open standard for creating a timestamp proof of any data, file, or process. With Chainpoint you can Anchor an unlimited amount of data to multiple blockchains, verify the integrity and existence of data without relying on a trusted third-party.
Chainpoint links a hash of your data to a blockchain and returns a timestamp proof. A Chainpoint service receives hashes which are aggregated together using a Merkle tree. The root of this tree is anchored in the Bitcoin and Ethereum blockchains. Throughout this process a Chainpoint proof is created and continually upgraded. The final Chainpoint proof defines a path of operations that cryptographically links your data to one or more blockchains.
Example
Payload Data:
{
“@context”: “http://schema.org/",
“@type”: “Person”,
“name”: “Jane Doe”,
“jobTitle”: “Professor”,
“telephone”: “(425) 123–4567”,
“url”: “http://www.janedoe.com"
}
Result signature:
{
"@context": [
"http://schema.org/",
"https://w3id.org/security/v1"
],
"@type": "Person",
"name": "Jane Doe",
"jobTitle": "Professor",
"telephone": "(425) 123-4567",
"url": "http://www.janedoe.com",
"signature": {
"type": "EcdsaKoblitzSignature2016",
"created": "2017-09-13T08:59:31Z",
"creator": "ecdsa-koblitz-pubkey:1LGpGhGK8whX23ZNdxrgtjKrek9rP4xWER",
"nonce": "e56af26a",
"signatureValue": "IJ72CAk9/pf+4YjwEAWLQvYdFx3iX2SBPmAEH27FvFIdP2d4esw3tUw7oULbrOmvvEHYG96dvY2ubV731xFNK64="
}
}
When someone try to alter the data, example alter the type field
{
"@context": "http://schema.org/",
"@type": "Person Change",
"name": "Jane Doe",
"jobTitle": "Professor",
"telephone": "(425) 123-4567",
"url": "http://www.janedoe.com"
}
The signature will change:
{
"@context": [
"http://schema.org/",
"https://w3id.org/security/v1"
],
"@type": "Person Change",
"name": "Jane Doe",
"jobTitle": "Professor",
"telephone": "(425) 123-4567",
"url": "http://www.janedoe.com",
"signature": {
"type": "LinkedDataSignature2015",
"created": "2017-09-13T09:01:52Z",
"creator": "https://example.com/jdoe/keys/1",
"domain": "json-ld.org",
"nonce": "ee9af2d7",
"signatureValue": "A3EW/Uc0zRwu+4Qe2DKflfCf1GzrD2BATmydSQ2KvzXsvfepfiOBFPpZ5Wz4qUsNq3K7DK4ARHwaAycmFSI6SpC90Zh1kZttM9M2nIWIQBKyjqQrHGp5uXsy/Ox3D0GdDdnMXh+31UnyNM9wIKrHquABawEqc5ZK9ZZUsNYGvmo="
}
}
By comparing the given signature and payload data, we can determine whether the data has been tampered or not without using any third-party solutions.