Il y a un peu plus d’un an Ă  prĂ©sent, nous avons dĂ©veloppĂ© une solution d’horodatage basĂ©e sur une blockchain. Elle permet de prouver l’antĂ©rioritĂ© d’un contenu (une idĂ©e ou une crĂ©ation par exemple) via l’utilisation d’une blockchain publique Ethereum directement depuis son navigateur. Donc sans organe central de contrĂŽle. Il s’agit d’un cas d’usage simple mais parfaitement applicable aux besoins mĂ©tiers des applications de nos clients : sceller un contenu et ses mĂ©tadonnĂ©es de maniĂšre sĂ»re et pĂ©renne. Le code source est publiĂ© sous la licence Apache 2.

Pour faciliter la lecture, nous vous proposons une sĂ©rie de cinq articles qui prĂ©sentent trois points de vue complĂ©mentaires de l’outil :

  1. Point de vue conceptuel : 🎹 Comprendre les notions de base d’une blockchain publique
  2. Point de vue utilisateur : đŸ•ș Interagir avec l’application dĂ©centralisĂ©e
  3. Point de vue dĂ©veloppeur : 🏭 Configurer son environnement de dĂ©veloppement
  4. Point de vue dĂ©veloppeur : đŸ€ Comprendre le dĂ©veloppement du smart contract
  5. Point de vue dĂ©veloppeur : đŸ’» Comprendre le dĂ©veloppement du client

Ce second article prĂ©sente l’utilisation de l’outil. Nous allons voir que la majoritĂ© des concepts prĂ©sentĂ©s dans le premier article ne sont pas visibles par l’utilisateur : le travail ergonomique est primordial. Cependant, pour des besoins pĂ©dagogiques autour de cet outil utilisĂ© comme dĂ©monstrateur, nous avons fait le choix de prĂ©senter certaines informations d’ordre technique : les informations transmises Ă  la blockchain, les adresses manipulĂ©es, etc.

# Configuration initiale

Pour la mise en place initiale, on procĂšde en trois Ă©tapes, quelque soit le nombre d’applications dĂ©centralisĂ©es Ethereum utilisĂ©es (Ă  rĂ©aliser une seule fois) :

  • SĂ©lectionner le rĂ©seau, par exemple Ropsten
  • Alimenter son compte, par exemple avec le robinet Metamask.

# Bloc technique informatif

Concernant l’application en tant que telle, on retrouvera un bloc technique informatif “Statut de connexion”. En effet, nous avons choisi d’afficher quelques informations d’ordre purement technique comme nous l’avons mentionnĂ© prĂ©cĂ©demment :

L’attribut alt de cette image est vide, son nom de fichier est billet-blockchain-2-3.png.

On y retrouve notamment le rĂ©seau connectĂ© (l’instance de la blockchain ; le testnet Ropsten en l’occurrence), l’adresse du smart contract dĂ©ployĂ© ainsi que le pseudonyme du compte utilisateur (son adresse).

Les Ă©changes de donnĂ©es seront rĂ©alisĂ©s Ă  travers l’extension Metamask, entre le compte utilisateur local et le smart contract rĂ©fĂ©rencĂ©.

# Organisation de l’outil

L’outil est organisĂ© en blocs fonctionnels :

# RĂ©fĂ©rencer un document – opĂ©ration d’écriture

Pour référencer un document, on le glisse dans le bloc dédié avant de lui associer un commentaire éventuel. Ce dernier est une métadonnée :

L’outil calcule automatiquement l’empreinte unique du fichier : son hashcode. Cette information est essentielle car elle sera intĂ©grĂ©e Ă  la transaction. UltĂ©rieurement pour prouver l’horodatage du fichier, on recalculera son empreinte qui devra ĂȘtre la mĂȘme sans quoi cela signifierait que le fichier n’est pas exactement le mĂȘme qu’au dĂ©part. En effet, la modification d’un seul caractĂšre suffit Ă  modifier l’empreinte d’un contenu.

Les donnĂ©es qui seront ancrĂ©es dans la blockchain sont indiquĂ©es Ă  titre informatif dans le bloc : l’empreinte et le commentaire facultatif.

Le rĂ©fĂ©rencement du fichier est initiĂ© aprĂšs avoir acceptĂ© les frais de transactions inhĂ©rents. Ceux-ci sont prĂ©levĂ©s sur le portefeuille de l’utilisateur :

Enfin, lorsque la transaction est crĂ©Ă©e dans la blockchain, l’outil indique son identifiant ainsi qu’un QR code afin de la retrouver rapidement :

Il faut savoir que ce processus est asynchrone. La transaction est propagĂ©e et doit ĂȘtre acceptĂ©e par le rĂ©seau, ce qui prend quelques secondes Ă  quelques minutes. Lorsque c’est le cas, une confirmation apparait dans le bloc “EvĂ©nements” :

Un lien permet de gĂ©nĂ©rer un “certificat” produit au format pdf, qui reprend les informations essentielles de l’enregistrement. Il doit ĂȘtre conservĂ© Ă  cĂŽtĂ© du document :

# VĂ©rifier un document – opĂ©ration de lecture

Contrairement aux opĂ©rations d’écriture, la consultation des informations d’une blockchain n’engendre pas de frais pour l’utilisateur.

Pour vĂ©rifier si un document est rĂ©fĂ©rencĂ© et par qui, la mĂȘme ergonomie est employĂ©e. On glisse le document dans le bloc dĂ©diĂ© :

Lorsque le fichier a Ă©tĂ© rĂ©fĂ©rencĂ©, on retrouve son empreinte, le commentaire associĂ©, le compte qui l’a enregistrĂ©, l’horodatage ainsi que le numĂ©ro de bloc dans la blockchain.

Evidemment, lorsque le fichier est inconnu, l’outil l’indique sans Ă©quivoque :

Comme nous l’avons mentionnĂ© dans le premier article, il faut savoir que la blockchain permet de consulter les informations qu’elle porte de maniĂšre transparente. Par exemple, on retrouve la transaction suivante :

Dans l’application, un bloc dĂ©diĂ© permet de consulter l’ensemble des empreintes avec une organisation paginĂ©e des donnĂ©es. Il s’agit d’une mise en forme des donnĂ©es des enregistrements rĂ©cupĂ©rĂ©es Ă  partir du smart contract liĂ©. Un clic sur un Ă©lĂ©ment fournit plus de dĂ©tails :

Les captures prĂ©cĂ©dentes illustrent la transparence affichĂ©e par la blockchain, qui est bien sĂ»r limitĂ©e Ă  ce qu’on a voulu y intĂ©grer. Par exemple, le contenu d’un document n’est pas accessible : seule son empreinte est consultable.

Pour complĂ©ter, notons que nous pouvons connaĂźtre le compte Ă  l’origine d’une transaction et consulter l’ensemble des transactions de ce dernier, mais pas connaĂźtre de maniĂšre simple qui a rĂ©alisĂ© l’opĂ©ration : il ne s’agit pas d’anonymisation mais de pseudonymisation.

Pour continuer, nous vous proposons de consulter le tutoriel de l’outil en ligne que le bouton situĂ© tout en haut Ă  droite permet de relancer, avant de rĂ©aliser un premier test :

# Pour continuer

Cet article a Ă©tĂ© l’occasion de prĂ©senter notre application dĂ©centralisĂ©e basĂ©e sur une blockchain.

Il faut retenir que le travail sur l’expĂ©rience utilisateur est primordial au mĂȘme titre que pour toute application. Dans la mesure oĂč il s’agit d’une application dĂ©centralisĂ©e, l’utilisateur gĂšre son propre compte contrairement Ă  une application classique en client / serveur, le serveur Ă©tant habituellement le tiers de confiance. A ce titre, il est nĂ©cessaire de configurer son portefeuille puis de confirmer les transmissions de donnĂ©es dans la blockchain car elles sont sujettes Ă  des frais unitaires.

D’autre part, la force probante de ce mĂ©canisme est Ă©levĂ©e dans la mesure oĂč l’information est diffusĂ©e directement depuis le compte utilisateur vers le tiers indĂ©pendant que reprĂ©sente la blockchain publique et augmente avec le nombre de nƓuds implĂ©mentant la blockchain en question. Pour information, la blockchain Ethereum Ă©tait animĂ©e par 8727 nƓuds le 21/10/2020.

Dans le prochain article, nous expliquerons comment configurer son poste de dĂ©veloppement avant de passer au dĂ©veloppement en lui-mĂȘme.