ID Blockchain PoC

by Marcel Buob

Bienvenue

Ce site internet est un "Proof of Concept" qu'une base de données d'identification de personnes peut être déployée sur une blockchain et que des Dapp (applications décentralisées) peuvent être utilisées pour interagir avec les éléments enregistrés. Grâce aux 'Smart Contract', écrit en langage "Solidity" (compilé en bytcode dans l'Ethereum Virtual Machine) de la plateforme Ethereum, toutes les informations sont séquencées et sécurisées de façon immuable dans la blockchain une fois les contrats exécutés.

Important avant de commencer: Cette application est basée sur la technologie blockchain de Ethereum et il est donc nécessaire d'avoir des connaissances de base sur les fonctionnalités des Wallet ETH avant de l'utiliser. Afin de profiter pleinement des fonctionnalités de cette application, je vous conseils de prendre connaissance des informations présentent sous l'onglet "Infos & Docs" afin de pouvoir accéder à l'application en tant qu’administrateur et de voir tous les éléments. Vous y trouverez les informations nécessaires pour installer MetaMask (Browser Wallet Plugin), pour configurer ce dernier sur le réseau "Rinkeby Ethereum Test", pour configurer votre Wallet et pour importer une adresse ETH avec la clé privée. Cliquez ici pour plus d'informations...

Description et fonctionnalités

Dans cette démo, tout le monde peut ajouter des éléments, mais plusieurs niveaux d'autorisations ainsi qu'une séquence de validation des éléments ont été implémenté pour qu'il soit possible d'autoriser des utilisateurs spécifiques pouvant administrer les éléments. Du fait que cette application est basée sur la platform Ethereum, les utilisateurs sont liés à une adresse ETH sécurisée par une clé privée. Un utilisateur quelconque sera seulement en mesure de voir les éléments ajoutés par lui-même (éventuellement d'en modifier certaines données) et un administrateur pourra lui voir et administrer tous les enregistrements.

Autorisation d'accès

L'application ID Blockchain PoC (v0.1.0) possède 5 type d’accès ; Owner, Administrator, Write User, Read User et User. Ces types d'accès sont pour l'instant "hard" codé dans les contrats solidity (.sol) et chaque type d'accès peut être vérifié à l'aide des méthodes ; IsOwner(), IsAdmin(), IsWritePerson() et IsReadPerson(). Ces accès sont définit par l'addresse Ethereum utilisée pour la connexion à cette application. Seul les d'accès Owner, Administrator et User sont actuellement utilisé dans cette démo. Les différentes autorisations d'accès pour chaque type sont décrites ci-dessous.

User
Le type "User" peut ajouter une personne, ajouter une photo à cette personne et modifier les informations et la photo des personnes qu'il a lui-même ajoutées. Il peut aussi initier le workflow de validation pour ces entrées, mais une fois le workflow initié, il ne peut plus en modifier les données. Le "User" ne peut pas accéder aux informations des personnes saisies par un autre utilisateur, il peut toutefois accéder à une liste de fiche ID en recherchant par le nom exact. Si un "Administrator" modifie la photo d'une saisie appartenant à un "User", ce dernier ne pourra plus voir l'image jusqu'à ce que le "Owner" aura valider l'image.

Administrator
Le type "Administrator" peut effectuer toutes les fonction d'un "User" mais peut lui modifier les infos et la photo de toutes les personnes qui n'ont pas reçu une validation finale (getValidation(_refPerson)=1). Il peut aussi initier le workflow de validation pour ces entrées, et une fois le workflow initié, il peut toujours en modifier les données (avant validation finale). Le type "Administrator" peut accéder aux informations de toutes les personnes, il ne peut toutefois pas accéder à une photo non validée par le "Owner" enregistrée par un autre utilisateur. Il peut également effectuer la validation finale d'une fiche personne dont le workflow à été initié. Il ne peut pas valider une image et ne peut pas modifier les autorisations, il peut cependant voir la table des autorisations.

Owner
Le type "Owner" est le compte (adrese ETH) qui à déployer le "Smart Contract". Il peut effectuer toutes les opérations d'un "Administrator" mais peut à tout moment modifier les données (text et image) à tout moment du workflow de validation. Le type "Administrator" peut accéder aux informations de toutes les personnes et toutes les images. C'est seul lui qui valide les images. Il peut aussi ajouter ou supprimer les "Administrator" ainsi que gérer les autres droits d'accès.

Write User / Read User
Ces deux types sont en phase prototype dans le contrat et ne sont pas encore gérable dans cette version de l'application. Cliquez ici pour plus d'informations...

Workflow de validation

L'application ID Blockchain PoC (v0.1.0) possède 2 workflow de validation; la validation des fiches personnes et la validation des images de profiles (photo).

La validation de la photo ne peut être faite que par le "Owner" et comporte 2 statut; vrai=lorsque la photo à été validée, faux=lors que la photo à été ajoutée ou modifiée. Une Image non validée ne peut être vue que par l'utilisateur qui l'a ajouté ou modifié. Une fois la photo validée, celle-ci peut être vue par les (autres) administrateurs ou par le propriétaire de la fiche personne.

La validation de la fiche personne peut être faite par un "Administrator" et comporte 3 statut; -1=Validation non initiée, 0=Validation en attente, 1=Validé. Comme décrit plus haut, un "User" peut seulement initier la validation des ces propres fiches et les "Administrator" peuvent effectuer toutes les validations de toutes les fiches personnes. Lorsqu'un utilisateur initie la validation, la nouvelle fiche personne passe alors du statut de validation "-1" à "0", en attente de validation. Lorsqu'un "administrator" valide la fiche personne, cette fiche passe alors du statut de validation "0" à "1", validé. Ce même statut (-1,0,1) est automatiquement appliqué à la photo de la fiche aussi afin de définir les autorisations d'accès et modification.

Ajout/modification de personnes et leur photo

Comme déjà décrit ci-dessus, tout le monde peut ajouter une fiche personne mais la modification d'une fiche personne et ça photo est restreinte selon l'étape de validation et les autorisations d'accès. Voici un tableau récapitulatif des autorisations d'ajout ou de modification d'une fiche:



Recherches et listing

Il est possible d'effectuer des recherches par nom seulement. Seul les "Administrator" peuvent rechercher dans toutes les fiches personnes, les "User" ne peuvent rechercher que dans leurs propre saisies. Plusieurs listing sont disponible selon le type d'accès; all items, items to validate, validated items, search items. Les recherches doivent être précise et spécifique, seul une correspondance total donnera un résultat ('jean' n'est pas égal à 'Jean').

Coût en ETH

Les ETH dépensés sont des ether du réseau Rinkeby et n'ont aucune valeur marchande. Sur le site site rinkeby.io, les ether peuvent être obtenu gratuitement. Celon la taille de l'image (env. 100px/150px), l'ajout d'une personne varie entre 0.01 à 0.07 ETH. Ce qui serai énorme sur le réseau ETH principa, env. 30 USD à ce jour!

Utilisation et contact

L'utilisation de cette application est libre à tous et vous pouvez visiter mon Github si vous désirer faire tourner une version locale ou vous inspirer des codes source. Si vous avez besoin d'aide pour utiliser l'application, rendez-vous sur l'onglet "Infos & Docs". Vous y trouverez un mode d'emplois de l'application, des instructions pour installer MetaMask et vous connecter au réseau Rinkeby. D'autres lien et ressource y sont disponible. Si vous avez encore des questions ou un bug à reporter, veuillez m'envoyer un eMail à mon adresse buob.marcel@gmail.com

ID Blockchain Decentralized App

v0.1.0

Not conected

25%

Recherche par nom

Information:

Seuls les administrateurs peuvent voir les éléments de cette liste. Cliquez ici pour un accès admin...

Tous les éléments de type "person" sont affichés ci-dessous. Différents boutons de fonctions peuvent être disponible selon la phase de validation des éléments. Sélectionnez l'onglet "Functions" pour ajouter un nouvel élément dans la liste.

Information:

Seuls les administrateurs peuvent voir les éléments de cette liste.

Tous les éléments de type "person" se trouvant en attente de validation sont affichés ci-dessous. Les boutons "Modify" et "Final Validation" sont présent pour finaliser la validation ou pour modifier les informations de l'élément.

Information:

Seuls les administrateurs peuvent voir les éléments de cette liste.

Tous les éléments de type "person" déjà validés sont affichés ci-dessous. A ce stade de la validation, plus personne (sauf le contract owner) ne peut changer les informations des éléments.

Information:

Seul vos éléments de type "person" sont affiché ici. Il s'agis de la liste des éléments que vous avez saisi et enregistré (avec la présente adresse ETH).

Différents boutons de fonctions peuvent être disponibles selon la phase de validation des éléments. Sélectionnez l'onglet "Functions" pour ajouter un nouvel élément dans la liste.

Information:

Toutes les données insérées dans cette "Dapp" sont stockées sur la blockchain de "Rinkeby Test Network". Ce réseau implémente les mêmes caractéristiques techniques que le réseau principal de Etherneum, sauf que la difficulté de calcul n'augmente jamais et qu'il n'y a pas de "block reward".

Fonctions à disposition

Informations et documents