Fun Fact: While usually being displayed in a human fasion e.g. 24/08/2016 04:00 PM, in most storage engines the time is actually encoded as the number of milliseconds elapsed since 'unix epoch' (Jan 01 1970 00:00 UTC), for simplicity's sake. Computers think more rationally about time than us.
new Date().getTime() 1472047486711 // a timestamp
Traditionally on a client/server architecture, the server will record (in a database most likely) and serve back timestamps to the clients. This is how twitter, the BBC, or any traditional website work.
While this is good enough for normal web browsing, any person who has access to the server hosting the timestamp, will be able to edit and fake it. Therefore these timestamps cannot be trusted. They are not a 100% viable proof.
While the idea of prooving the existence of something at a certain date is not new, the currently most used implementation uses TimeStamping Authorities (TSA). These TSAs are privately owned, audited companies and if the technique is implemented correctly, it is cryptographically safe to trust the timestamps. In theory no one can backdate the records.
A blockchain is the perfect support for the creation of trusted timestamps, because of their immutability. Storing a plain hash of your file on the current block is enough to prove that the file existed at moment the block was recorded or earlier, as long as you keep the original copy of the file !. The most popular website for doing that today is http://www.originstamp.org/ which uses the most popular cryptocurrency: Bitcoin.
Today's uses of trusted timestamps
- Book, music and patent registration
- Insurance contracts
- Lawsuit settlements
- Medical trials recording
- Patient prescriptions
- Imagery and CCTV
- E-learning certification
- Proof of attendance (security guards, care workers, etc)
As you can see, it is far from being useless. Actually, our need for trusted timestamps is growing all the time.
While the OriginStamp website is already good, I believe we can have a better system using STEEM. Here is why:
- Publishing data (however short) has a transaction fee on the BTC blockchain
- Because of this, they only publish hashes once a day, therefore timestamps are not trusted until 24 hours
STEEM transfers have no transaction fees, and it takes only 4 seconds maximum to get data added to the blockchain. STEEM is a free TSA in theory.
In practise we still need to own two accounts that send each other some money with the hash of the file in the memo and some way to quickly verify that a hash exists on the blockchain.
I have built a simple api for creating and verifying timestamps on the STEEM blockchain. I also made a GUI for it on steemwhales in order to use it easily in the browser, and hash your files automatically in MD5, SHA1 or SHA256. Here are the links:
Developers, you can call the timestamping api directly like so:
curl --data "hash=<your hash here>" http://steemwhales.com:6060/time/request
curl --data "hash=<your hash here>" http://steemwhales.com:6060/time/verify
I don't have much hope many steem users will have a big need for this, after all this is still a niche. For those wondering, yes I have a personal use for it. Maybe some people in need for it might stumble upon my post from google in the future though.
For those wondering, big SteemWhales update coming soon, stay tuned. :)