Comment stocker des informations dans la Blockchain ?

Joconde réalisant un DAB sous une pluie de bitcoins

Magnifique DAB, rappelant la Blockchain, les bitcoins, et De Vinci…

La problématique

Récemment je cherchais une solution pour pouvoir prouver de manière immuable l’existence de documents à une date précise (donc du timestamping de document, avec la preuve de leur existence). Amateur de Bitcoin, j’ai tout de suite pensé à la technologie Blockchain. Je suis alors parti avec l’idée de créer ma propre crypto-monnaie et ma propre blockchain pour palier à ce problème. Très vite se sont posés quelque difficultés, il faut:

  • Créer une crypto
  • Une bonne puissance de calcul et donc fédérer des mineurs autour de la cryptomonnaie pour garantir l’irréversibilité des documents stockés dessus
  • Fédérer toute une communauté car sinon ce serait une blockchain privée et on perd un peu de l’intérêt de la Blockchain.

Donc pourquoi ne pas utiliser la blockchain bitcoin !

« Stocker » un document dans la Blockchain

Vous ne le savez peut-être pas, mais il existe plusieurs champs dans une transaction Bitcoin, celui-nous intéressant étant le champ OP_RETURN.

Ce champ est très important pour nous car il est optionnel et son contenu reste à la discrétion de l’émetteur, ce champ peut contenir au maximum 80 octets (donc 80 caractères). Donc c’est cool on a un moyen de stocker un message de 80 caractères sur la blockchain! Mais bon 80 c’est peu si on veut par exemple stocker un brevet… C’est alors qu’interviennent les hashs.

Un hash est une fonction crpytographique qui va calculer « l’empreinte », la « signature » d’un document. Ici on va utiliser le SHA-256 qui produit un hash d’une longueur de 64 caractères. Donc, quel est le procédé?

  1. On prend notre document que l’on hash, on obtient sa signature
  2. On fait une transaction bitcoin et on personnalise le champ OP_RETURN en le remplissant avec la signature
  3. Si quelqu’un veut verifier l’existence du document, on n’a plus qu’à lui donner le document et la transaction bitcoin
  4. Il pourra refaire le chemin en vérifiant que la signature du document est bien celle stockée dans la blockchain

Génial, non ? Eh bien pas vraiment, certes on a pu stocker notre signature dans la blockchain mais imaginons que nous mettions ce processus en production dans une agence de gestion de propriété intellectuelle justement. Imaginons que l’on ait 20 brevets à enregistrer par seconde.

  • Bitcoin ne peut aujourd’hui que supporter 7 transactions par seconde au maximum
  • Une transaction n’est pas gratuite, le cout moyen d’aujourd’hui s’élevant à 1.80$

Mais alors comment faire ?

Merkle Tree et protocole ChainPoint

Mais oui! C’est évident! Au lieu de mettre une signature par transaction, on pourrait mettre plusieurs documents grâce à un Arbre de Merkle.

Kécécé un arbre de Merkle ?

Schéma de Merkle Tree

Imaginons que nous ayons 8 documents à envoyer dans la Blockchain, on va:

  1. Hasher tout ces documents
  2. Les regrouper par paire
  3. Concatener (ex: bon + jour = bonjour) chaque membre des différentes paires et on calcule le hash de cette concaténation.
  4. Finalement répéter les étapes 2 et 3 jusqu’à arriver à un seul hash, la Racine de Merkle (Merkle Root)

C’est cette Merkle Root que l’on va mettre dans la Blockchain. Pour vérifier si le document a bien fait partie de la construction de cette Merkle Root, il n’est pas nécessaire d’avoir toutes les signatures mais seulement celle de l’élément avec lequel le premier pairage a été réalisé ainsi que les sommes en « diagonales » (cf. schéma)

Schéma Merkle Tree avec highlight Les éléments entourés en magenta sont les informations que nous devons connaître afin de reconstituer la Merkle Root, et ainsi vérifier que notre hash a bien participé à sa création.

On règle donc grâce à ce protocole le problème de coût (en les mutualisant) ainsi que celui de la limite des transactions (étant donné qu’on met plein de documents dans la même transaction)

Ce protocole a été créé et formalisé et se nomme ChainPoint, il introduit également un système de reçu pour verifier que le document a bien été inscrit dans la blockchain, je vous laisse le lien vers leur whitepaper.

Et si je n’ai pas plein de documents, comment faire ?

Pas de souci! Il existe aujourd’hui plusieurs entreprises s’occupant de réaliser cette mutualisation et donc vous faisant payer un prix très bas, voir quasi-inexistant, on en retiendra deux:

 

Si vous avez aimé cet article, n’hésitez pas à le partager :).

PS: DAB ==> Data Anchoring on Bitcoin et POE ==> Proof of Existence ^_^

 

12 Comments

  1. Un article très interessant 😀

  2. It is perfect time to make some plans for the future and it’s time to be happy.

    I’ve read this post and if I could I want to suggest you few interesting things or suggestions.
    Perhaps you could write next articles referring to this article.
    I want to read more things about it!

  3. I simply could not leave your website prior to suggesting that I actually enjoyed the standard information an individual supply in your visitors?
    Is gonna be again incessantly in order to check out new posts

  4. Way cool! Some very valid points! I appreciate you penning this article and also the rest of the
    site is extremely good.

  5. I like what you guys are usually up too. This kind of clever work and exposure!
    Keep up the amazing works guys I’ve incorporated you guys to our blogroll.

  6. I’ve been surfing online more than three hours today, yet I never found any interesting article like yours.
    It’s pretty worth enough for me. In my opinion, if all webmasters
    and bloggers made good content as you did, the web will be a lot more useful than ever before.

  7. Hello! This is my 1st comment here so I just
    wanted to give a quick shout out and tell you I really enjoy reading your articles.
    Can you recommend any other blogs/websites/forums that deal with the same topics?
    Thank you so much!

  8. Heya i’m for the first time here. I found
    this board and I find It really useful & it helped me out much.
    I hope to give something back and aid others like you helped me.

  9. Basically to follow up on the up-date of this matter on your web-site and would really want to let you know simply how much I treasured the time you took to generate this helpful post. In the post, you really spoke on how to truly handle this issue with all ease. It would be my personal pleasure to accumulate some more ideas from your web site and come up to offer people what I discovered from you. Many thanks for your usual wonderful effort.

  10. Wow, this article is nice, my sister is analyzing these kinds of things,
    therefore I am going to inform her.

  11. Hello,

    merci pour cet article très enrichissant qui nourrit ma réflexion personnelle.

    Du coup je me demandais, si je ne souhaite pas mutualiser et que j’ai juste besoin de prouver l’existence de deux documents à une date donnée, je peux le faire moi-même.

    • Hello Christophe,

      Effectivement, vous pouvez juste le hasher, faire une transaction Bitcoin et inclure le hash du documents sans passer par un tiers 🙂

      ~Nacio

Leave a comment

Your email address will not be published.


*