Last Thursday I was browsing the cryptotwitter and then I found a public posted request which got my creative motor started to make Proof.ink - a service for storing file hashes on the Steem chain.
Here is how I got to it: I saw a tweet by fellow Steem User @fav: "Is there a service on #eos or #BitShares that lets me upload a PDF hash as proof of signature?". Now afaik there wasn't such a thing. Since starting with Steem I do know my way around some some of the graphene chains but still Steem stands out for it's ease and availability of developer tools, sdk's and apis. So I proposed to @fav in that thread: "could it also be on Steem? (as that has unencrypted memos by default) - ie easier to retrieve data without need to decode memo.". And then I went on with researching the needs for such a service and over the weekend finetuned it, and launching it today - (also on Producthunt - if you have a twitter account feel free to like it over there for visibility - )
So what does Proof.ink do?
Proof.ink's service is pretty straightforward. If you have a document of which you want to know with 100% certainty that it's contents has not been changed, tampered with or altered in any form, use Proof.ink.Proof.ink's frontpage |
Proof.ink works by fingerprinting your file (no matter how big), without the need to upload it, inside your browser. The result of this calculation is a unique SHA256 hash / fingerprint of your file.
By enabling you to store the fingerprint publicly on the Steem blockchain, Proof.ink can guarantee the integrity of the fingerprint of the file as how it was created at a given time by a given user. This way others can use this service to validate the fingerprint on the blockchain and against the file they receive.
Client-side (no upload!) fingerprinting in javascript |
The Steem chain serves as a public accessible ledger with provable immutability at it's core, for a trustless public store of the derived file's fingerprint.
How does Proof.ink store your hash?
Well... actually... you need to do that yourself! You need to use your Steem account to send a public transfer to @proof.ink with a special json formatted memo containing the hash. You can send any amount, as low as 0.001 Steem/SBD but the default suggested amount is higher :)Checkout-screen including "what to store" & "how to post" |
When checking out you can broadcast your message using:
- Steem Keychain
- SteemConnect
- steem://-uri spec supporting apps such as Vessel (and SteemWallet soon)
- Manual
- QR Code
Once you go to the checkout phase, the Proof.ink starts monitoring for transactions related to your filehash and once the transaction is found, you get a JSON certificate file, which you can share along your original "fingerprinted" document, so others can always lookup using this JSON certificate and the file to check if it meets the integrity.
After discovering your hash on the blockchain, a proof.ink.txt certificate file is available for download |
I think proof.ink is a nice little web app focussing on 1 thing only, namely generating an offline file hash/fingerprint and optionally storing it on the Steem blockchain for proof of time.
You can use it for example in fav's usecase: "So I got a signed PDF, and all parties need to be able to verify the hash on chain via a tool to check whether it's still the original file". Thanks @fav for the inspiration!
Source of Proof.ink at Github: https://github.com/roelandp/proof.ink
https://Proof.ink
Ps. If you like what I am doing here, consider a witness vote for '@roelandp' - Thanks!