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 :
- Point de vue conceptuel : 🎨 Comprendre les notions de base d’une blockchain publique
- Point de vue utilisateur : 🕺 Interagir avec l’application décentralisée
- Point de vue développeur : 🏠Configurer son environnement de développement
- Point de vue développeur : 🤝 Comprendre le développement du smart contract
- 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) :
- Installer l’extension Metamask :
- 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 :
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.
20 novembre 2020 at 18 h 35 min
Je vous remets l’ensemble des liens de la sĂ©rie :
• 🎨 Comprendre les notions de base d’une blockchain publique
 ↳ https://blog.atolcd.com/solution-blockchain-horodatage-1-concepts/
• 🕺 Interagir avec l’application décentralisée
 ↳ https://blog.atolcd.com/solution-blockchain-horodatage-2-utilisation/
• 🏠Configurer son environnement de développement
 ↳ https://blog.atolcd.com/solution-blockchain-horodatage-3-dev-environnement/
• 🤝 Comprendre le développement du smart contract
 ↳ https://blog.atolcd.com/solution-blockchain-horodatage-4-dev-smart-contract/
• 💻 Comprendre le développement du client
 ↳ https://blog.atolcd.com/solution-blockchain-horodatage-5-dev-client-web/
• 🚄 Synthèse globale
 ↳ https://blog.atolcd.com/solution-blockchain-horodatage-5-dev-client-web/#synthese-de-la-serie-darticles