Friday, October 17, 2014

Using bitcoin based blockchain as notary service without third party

We have seen a lot of notary services that use bitcoin ( or any bitcoin based currency ) blockchain. Those services always have some server side component or require client side notary software.

If you have some bitcoin based crypto currency wallet then you have all you need to perform time stamping of a document and to prove that you have performed that time stamp. For this purpose I have developed https://github.com/Slavco/selfnotary and released under MIT licence.

What is the purpose of this software and how to use?

As a developer I want to be able to prove that I have created https://github.com/Slavco/selfnotary. That is why I have downloaded the selfnotary-master.zip, created a backup copy and i have verified this archive against Dogecoin blockchain.


Step by step how self notary service is used:

  1. Download the archive, extract to some folder and start index.html in your web browser. No need of internet connection for this .html page to work.

  2. Choose the desired blockchain and select the document you want to prove that is yours.
  3. The page will generate Document hash ( sha256 of the UTF-8 encoded file ) and Notary address where we need to send some amount of coins to prove that we hold this document. Funds on the address could not be spend by anyone.
  4. Send small amount of coins to the destination address ( my case Dogecoins )

  5. That's it. Now I have performed a backup of the document I want to prove that is mine and backup of the wallet that create the transaction.
     


Now I need to prove that I'm the owner of this file.


  1. I'll use the selfnotary tool to upload the document and to see generated address: DRdMhvJCnU6d9CYeu8kGCi92RbX5n4CgAg
  2. Let's check this address on some blockchain explorer: https://dogechain.info/address/DRdMhvJCnU6d9CYeu8kGCi92RbX5n4CgAg
  3. You can notice the first transaction to this address: https://dogechain.info/tx/880d239f9ae029d4b526cd878387e4b0d6d35d6fd0f5742274e5c6216f8ddac0


    This is the time I claim I have the file from.
  4. Lets prove that I'm the owner of the sender address:

  5. Here are the details:

    Message-    "Hello this is my archive"
    Signature-   "H6rbG9J42BJR23FSvfWsQOHgp32cqAlkakmt+woLTI/gagsrLq4bgtEXjHfXRX53dsw17L5W7y/KBuHyTO9WVzk="

    Now anyone could verify that I'm the owner of the private key of the sender address.

This way I can claim that I'm the first who poses this document and I can prove that I'm the owner of the private key that caused transaction. Having backup of my document ( archive ) and my wallet I have a proof forever that I'm holder of the archive at transaction time.

Hope you like this project and I hope this project will help saving your work from thief. This could be applied on any type of digital documents and any coin bitoin based blockchain.

For some large files this html/js application could be very slow and for that purpose next period i'll create command line selfnotary tool.


BTC:  1LuckAsHuFJ3Y59aztSxzHaBtRihc2vDmX
FTC:  6sLaveXfN6Nhi96LVufa4GjrojGnXsbc4w
VTC:  VpzZ7DnyoznqZxFjKqsJEVkSn74AiczX7a
DOGE:  DCze9pB2xcUWkKPYQ7BW6Lu8gaF5eqzk9o