Post

Projet : Hackathon


Description et contexte

Le Decentralized Identity Foundation (DIF) Hackathon était un hackathon autour du web décentralisé qui s’est déroulé entre le 26 octobre 2023 et le 03 décembre 2023, réunissant plus de 400 participants. Le but de ce hackathon était de créer des applications utilisant les technologies du web décentralisé et au minimum une des technologies proposées par la DIF (Decentralized Web Node, DIDCOmm, Presentation Exchange, DID Lint, BBS Signature Scheme,Trust Establishment and the Universal Resolver).

Afin d’aider les participants à débuter dans le web décentralisé, la DIF a mis à disposition des participants des ressources et des tutoriels pour apprendre à utiliser les technologies du web décentralisé. Ces ressources étaient entre autres :

  • Le SDK de TBD, basé sur le Web5 et permettant de construire des web apps décentralisées.
  • Veramo, un framework JavaScript facilitant l’utilisation de données cryptographiquement vérifiables.
  • Universal Resolver, un outil permettant de résoudre des identifiants décentralisés (DID).
  • DID Lint, un outil permettant de vérifier la syntaxe et structure d’un document DID.

Après une période de recherches, nous avons décidé de nous orienter vers le Web5 avec le SDK de TBD. Nous avons choisi cette technologie car l’organisation fournissait des tutoriels, exemples et de la documentation plutôt bien faite pour une si jeune entreprise. De plus, nous avons jugé que de construire un web app serait l’idée la plus judicieuse pour nous dans ce hackathon. Nous nous sommes donc basés sur une mini application de chat décentralisé fournie par TBD et nous avons décidé de l’améliorer en y ajoutant des fonctionnalités.

Le repo GitHub est disponible ici.

Mon rôle

J’ai débuté ce projet en tant que chef de projet et ai principalement participé à ses débuts, dans la phase de recherches, compréhension et mise en place do Proof Of Concept (POC).

Les détails sont disponibles ci-dessous dans Mes Réalisations.

Fonctionnement général de l’application

Decentralized Chat App Screenshot de l’application Source : Auteur

L’application contient les fonctionnalités suivantes :

  • Création d’un DID (Decentralized Identifier), d’une DWN (Decentralized Web Node) et d’un agent gérant ces derniers.
  • Création d’un nouveau chat à l’aide du DID de l’autre personne.
  • Copie de son propre DID.
  • Envoi et réception de messages dans le chat.

Pour créer un nouveau chat avec quelqu’un il suffit de :

  1. Copier son DID à l’aide du bouton.
  2. Envoyer son DID à la personne avec qui on veut chatter.
  3. Attendre que la personne nous envoie un message.
  4. La connexion est établie et on peut commencer à chatter.

Mes apprentissages

Ce projet m’a permis d’abord permis d’acquérir des connaissances techniques sur le web décentralisé. J’ai pu comprendre et tester des technologies telles que les DID, DWN, agents, DIDComm, Protocoles et Verifiable Credentials. Ces éléments étant la base du web décentralisé, je sens que j’ai acquis les bases de compréhension de ce domaine et suis prêt à m’attaquer à des projets plus complexes qui m’attendraient dans le futur.

Au niveau de la gestion de projet, j’ai également appris à travailler avec des technologies émergentes, peu documentées et en constante évolution. Ceci nous a également posé plusieurs problèmes :

  • Si une erreur liée au récent SDK était rencontrée, il était difficile de trouver une solution, car nous étions parmi les premiers à la rencontrer.
  • Si le SDK recevait une mise à jour, notre application arrêtait de fonctionner car elle utilisait les DWN de TBD qui elles avaient été mises à jour et ne pouvaient donc plus communiquer avec des applications tournant sur l’ancienne version.

Pour pallier à ces erreurs, j’ai du expérimenter avec de nouveaux moyens d’obtenir les informations que je cherchais. J’ai par exemple suivi leur livestreams réguliers où il parlaient des avancements réalisés et répondaient à certaines questions. J’ai également rejoint leur groupe Discord où j’ai pu poser des questions et obtenir de l’aide ainsi que consulter les problèmes des autres participants et les posts des développeurs du SDK.

Toujours au niveau de la gestion de projet, nous avons également dû apprendre à être particulièrement flexibles. En effet, à plusieurs reprises lorsque TBD mettait ses DWNs à jour, nous avons du accorder du temps à de nouvelles recherches autour du bugfixing, ce qui repoussait les tâches initiales que nous avions prévues. Nous avons également du gérer le Voyage Apprenant de notre équipe à Belgrade qui a eu lieu en même temps que le hackathon. Nous avons donc “perdu” presque 2 semaines de travail sur le projet. Tous ces éléments nous ont amené à une décision : repousser le rendu au fin de semestre et ne pas soumettre le projet au hackathon.

Nous avons également décidé d’utiliser ce projet comme utilitaire pouvant servir au différents membres de l’équipe pour réaliser du travail en lien avec une compétence qu’ils souhaiteraient développer mais qui n’aurait pas été possible autre part.

Mes réalisations

Comme mentionné plus haut, j’ai passé beaucoup de temps initialement à faire des recherches sur les différents éléments et composants du web décentralisé. Je vais donc résumer et expliquer ces éléments ci-dessous.

Decentralized Identifiers (DID)

Les DIDs sont des identifiants qui représentent qui ou quoi que ce soit sur le web décentralisé. Ils peuvent être attribués à une personne, un objet, un modèle de données, voire à toute entité abstraite. Leur objectif est de donner à un individu ou à une organisation un contrôle sur leur identité. Contrairement aux identifiants traditionnels liés à des fournisseurs de services spécifiques (comme Google, Facebook, Amazon, etc.), les DIDs ne dépendent pas d’une autorité externe centralisée pour valider votre identité.

DID Exemple de DID Source

Decentralized Web Node (DWN)

Les DWN sont des mécanismes de stockage de données et de relais de messages qui peuvent être utilisés pour localiser des données publiques ou privées avec des autorisations spécifiques. On peut les considérer comme des magasins de données personnels, ce qui signifie que vous possédez vos données. Vous pouvez sauvegarder et synchroniser vos données à différents endroits, ainsi que les envoyer et les recevoir.

Il existe deux mécanismes d’autorisation d’accès aux données :

  • Autorisations : permettent à quelqu’un de lire, écrire ou supprimer des enregistrements de données spécifiques sur votre nœud. Elles sont actives, manuelles, explicites
  • Protocoles : installent un protocole qui définit les types de données et les autorisations pour une application web décentralisée. Ils sont passifs et contractuels

DWN Exemple d’échange entre DWN Source

Protocoles

Les protocoles définissent un schéma de données et le contrat selon lequel deux DWNs communiquent. Ils sont écrits en JSON. Chaque document de protocole comporte quelques clés de base :

  • “types” : définit tous les éléments dans le protocole
  • “structure” : détaille la relation et les interactions entre les types
  • “$actions” : spécifie un ensemble d’autorisations détaillant qui est autorisé à faire quoi sur quel type (lecture/écriture)

Verifiable Credentials (VC)

Les VCs sont des attestations numériques qui déclarent des faits spécifiques. Par exemple, un VC pourrait indiquer qu’une personne a obtenu un diplôme de baccalauréat dans une université donnée. Ils permettent de fournir des attributs spécifiques sans révéler l’identité complète de la personne.

Les VCs fonctionnent selon un modèle à trois parties :

  • Émetteur (Issuer) : Signe des attestations concernant le Titulaire.
  • Titulaire (Subject) : Possède l’attestation signée par l’Émetteur.
  • Vérificateur (Verifier) : N’importe qui peut effectuer une vérification.

Verifiable Credentials Trust Triangle Exemple du triangle de confiance Source

De nombreux VCs sont utilisés avec des JWT (JSON Web Token) pour la vérification. Voici le processus en trois étapes :

  1. Alice présente sa son verifiable credential désignant qu’elle a obtenu un diplôme (VC avec JWT) à un futur employeur.
  2. L’employeur utilise la clé publique de l’université pour vérifier la signature du JWT.
  3. La vérification réussie démontre que Alice a effectivement obtenu son diplôme.

VC Example Exemple de Verifiable Credential Source : Auteur

Agents

Les agents sont des logiciels qui agissent au nom de l’utilisateur pour gérer l’identité, les données et les interactions avec d’autres applications. On peut les se les représenter comme des boîtes qui contiennent des DIDs, des clés privées et une DWN.

This post is licensed under CC BY 4.0 by the author.