Part 2/3: How To Timestamp & Prove A Document Existed At A Certain Point In Time
In Part 1 we discussed how to turn any file into a mnemonic phrase that allows us to yield as many Bitcoin private key/address pairs as we wish. Using this same method we can effectively timestamp a document to prove its existence at a certain point in time without using any centralized third party. On top of that, we can timestamp a file without adding any unnecessary bloat to the Bitcoin blockchain, making it look like just another transaction. While this method does not prove ownership of the file, it can disprove claims to a modified, forged or fraudulent document. Remember, this method simply claims that the file in question existed at a given blockheight.
So how exactly do we go about time-stamping a file?
It’s actually quite simple. All we need to do is grab the Bitcoin address generated from our file (Again, this process was discussed in Part 1) and send a small amount of BTC to it. Once this transaction confirms you can officially claim that your document did in fact exist as of that blockheight. Sure someone can copy your file, make modifications to it and timestamp it in an attempt to claim it as their own, but as long as you can prove that the transaction for your file is confirmed at a smaller blockheight it immediately disproves their claim.
Let’s see this in action:
So that we can better understand how this works, let’s do an experiment. Create a .txt file with the following text, “Corey Phillips is the true author of this document.” (without the quotes). Save the file and upload it to the Bitimage demo site here. Now if your text editor is true and didn’t modify or add new lines upon saving the file, it will produce the following address, “bc1q9fqsn0ffrmzrdw7rm6g2c0m6k36l3an6m7dd6q”. By looking at this address you can see that there is 1 transaction that took place and that its confirmed blockheight is 585,027. Now modify the file to read, “Money printer goes brrrrrrr.” Once saved and uploaded to Bitimage it will not only produce a completely new set of addresses, but any attempt to timestamp this document will yield a higher blockheight and immediately prove that this document is not the same as the previous document and was either tampered with or modified. We didn’t even need to change an entire sentence in the document in order to demonstrate this. Adding just a single space to the document is enough to yield a completely new hash and set of addresses.
Problems with this method:
Remember, this method only claims that a given file existed at a certain point in time. It does not and cannot claim that a file is the original when compared to multiple versions/modifications of that file. For example, if I’m writing an article that someone manages to steal, they can timestamp their version before I am able to and claim that they are the original author of that article. At this point, there’s no way to prove that my version was the original. I can only claim that my version existed at a certain blockheight compared to theirs depending on when they timestamped it.
In Part 3 we’re going to discuss how to turn the mnemonic phrase generated from a file into encrypted audio files using minimodem. I’m really looking forward to writing Part 3 and hope to have that one out soon. So, until then…
Have any questions? Feel free to reach out:
Github: https://github.com/coreyphillips
Twitter: @coreylphillips