TL;DR

Cet article présente une implémentation pratique de la vie associative dans le contexte Covid-19. La technologie sous-jacente utilisée est une blockchain privée de type Ethereum dont les aspects réglementaires et sécuritaires sont discutés fonctionnellement et techniquement. L’objectif est de fournir une alternative digitale sûre pour la gestion des associations et plus spécifiquement des syndicats de copropriété.

Votre takeway

A la fin de cet article :

  • Vous aurez une idée précise des capacités fonctionnelles d’une blockchain de type Ethereum
  • Vous aurez configuré votre premier portefeuille Ethereum sur votre smartphone
  • Vous aurez reçu votre première dotation d’ether
  • Vous aurez réalisé votre première interaction avec des smart contracts Ethereum

Cette balade vous donnera normalement quelques clés de compréhension du monde Blockchain et suffisamment de pratique pour devenir un initié.

Quelques éléments de contexte

La mise sous tutelle de nos sociétés par le virus Covid-19 a provoqué un chamboulement sans précédent dans la façon dont nous organisons notre vie quotidienne. Du travail aux écoles en passant par les supermarchés et les lieux de loisirs, nous avons dû adapter nos habitudes pour prévenir toute propagation du virus. L’une des mesures récurrentes est la distanciation sociale. Une distanciation qu’on s’impose

  • dans les transports en commun
  • dans les cafés et restaurants
  • dans les open spaces de travail
  • et enfin dans tout rassemblement de nature sociale

Tenir une association est ainsi aujourd’hui rendu quasiment impossible par la contrainte sanitaire. Il faut donc trouver des alternatives pour maintenir une vie civile associative riche et conforme aux règlements nationaux.

Quelle réponse des nouvelles technologies ?

Nous assistons depuis plusieurs années à une digitalisation croissante des services administratifs à travers des portails (avec l’exemple des marchés public), des applications web et mobiles (comme avec les infractions routières) ou des services citoyens essentiels comme la légalisation ou la copie conforme (un bel exemple étant wraqi amené à prendre à scaler sur tout le royaume).

D’une part, digitaliser la vie associative ne serait qu’un pas dans cette direction en donnant plus de garanties au citoyen dans sa participation dans les instances civiles de la société.

D’autre part, nous pouvons peut être encore sauver le soldat blockchain du Peak of Inflated Expectations :

PoIE Blockchain Comme nous pouvons le constater, la plupart des grandes promesses de la blockchain sont encore dans l’early stage de l’innovation ou des attentes exagérées. C’est le cas notamment des smart contract qui seront la base du pacte entre le citoyen membre d’une association et l’association personne morale d’un point de vue juridique.

Toutefois, et sans se laisser abattre par ce jugement du Gartner, il semble possible à travers une blockchain correctement pensée de répondre à la problématique de gérer la distanciation sociale de manière sécurisée.

Rôles et responsabilité d’une association

Les associations sont régies au Maroc par un dahir fondateur du 15 novembre 1958 complété par des textes en fonction du type d’association (syndicat de copropriété, association d’utilité publique, partis politiques ou unions).

Trois faits structurants nous intéressent particulièrement :

  • Une association dispose de membres qui peuvent y adhérer ou la quitter sous certaines réserves. Certains de ces membres ont des statuts particuliers (président, secrétaire général, assesseur, etc.)
  • Une association doit tenir ses assemblées générales et en informer ses membres à l’avance
  • Chaque membre a droit d’interaction avec son association à travers notamment le vote lors de l’assemblée générale

Si nous prenons l’exemple de l’association de copropriétaires, nous retrouvons sous une forme simple ces trois événements. C’est précisément ce type d’association qu’il serait intéressant de digitaliser car la copropriété s’impose à la plupart d’entre nous naturellement.

Principe d’une blockchain

Je décrivais dans des articles précédents le concept de blockchain dans une introduction à la blockchain et au bitcoin et les limitations et problématiques associées. Sans m’appesantir une fois de plus sur le sujet, notons les deux points suivants qui nous intéressent.

Tout d’abord, toute blockchain est associée à une notion d’identité numérique. Cette identité est portée par le couple clé publique - clé privée utilisée pour interagir avec la blockchain.

Notons que son équivalent dans le monde réel est le couple carte d’identité et signature personnelle.

  • La clé publique représente votre adresse unique sur le réseau, dans le monde réel il s’agit de vos nom, prénom et date de naissance réunis dans un pack (communément appelé carte d’identité). Il s’agit d’une information personnelle mais globalement publique (dans le sens où vous pouvez la communiquer sans risque si besoin) et vous identifie de manière unique (sauf grosse malchance)
  • La clé privée vous permet d’apposer votre seau sur vos interactions dans le monde de la blockchain. Il s’agit de votre signature qui est personnelle et que vous n’apprenez à personne. Dans le monde réel, sauf très bon faussaire, elle est infalsifiable. Dans le monde de la blockchain, elle ne peut être contrefaite sauf à disposer de moyens techniques hors de portée de l’état de l’art actuel (à l’exclusion des ordinateurs quantiques)

La vie courante nous apprend que la carte d’identité et la signature d’une personne ne sont pas parfaites et peuvent être forgées. Dans le cas de la blockchain, le couple clés privée-publique sont quasiment inattaquables grâce à la cryptographie moderne. Si l’inverse était possible, cela se saurait étant donné les récompenses monétaires en jeu (hacker le bitcoin revient à empocher des milliards de dollars si cela est fait sans fanfaronner).

Le deuxième élément essentiel ici est la notion de consensus. Dans le cas d’une blockchain, toute transaction est revue par les membres de cette blockchain avant d’être considérée comme “valide”. Cette forme de validation par les pairs rend très difficile sinon impossible d’introduire une transaction contrefaite (signature falsifiée ou identité remplacée) tant que les pairs sont nombreux (blockchain publique) ou de confiance (blockchain privée).

Dans le monde réel, ce consensus est remplacé par l’autorité. Que ce soit chez le notaire ou le fonctionnaire de la préfecture, nous partons du principe que l’Etat nous garantit le bon fonctionnement de ses institutions. Même si nous observons des scandales notamment immobiliers ces dernières années.

Nous allons donc utiliser l’identité numérique et le consensus comme socle technique de notre copropriété.

Blockchain et association

La blockchain dont nous parlons sera une blockchain Ethereum. Celle-ci est considérée aujourd’hui comme l’ordinateur-plateforme décentralisé du monde. Ouverte à tous, elle permet à n’importe qui d’y héberger ses applications et c’est précisément ce que nous allons faire.

Comment s’identifier dans une blockchain Ethereum ?

A moins d’être un développeur informatique curieux, il y a peu de chance que vous interagissiez avec une blockchain sans un outil user-friendly. Cet outil prendra la forme d’une extension sur votre navigateur ou d’une application sur votre smartphone. Par construction, vous serez obligés de faire une confiance quasi totale à l’outil que vous utilisez car c’est votre proxy pour aller dans la blockchain.

Je privilégie personnellement MetaMask (qui fonctionne sur Chrome, Firefox, Android et iOS) pour une interaction simple avec Ethereum, et Geth pour la manipulation technique.

Avec MetaMask, vous pouvez générer le fameux couple de clé qui formera votre identité et signature. Gardez la clé privée au chaud et ne la communiquez à personne car cela reviendrait à communiquer un mot de passe.

Ainsi, nous accomplissons le premier pas pour rentrer dans le monde de la blockchain, à travers une copropriété fictive qu’on nommera La communauté des Curieux

La blockchain dont vous êtes le héros

A partir de maintenant, je vous propose trois chemins de technicité croissante selon ce que vous êtes venu chercher sur cet article.

  1. Je ne suis pas du tout un technicien et je veux tester la copropriété de la communauté des Curieux. Vous êtes sur le bon chemin, keep going
  2. J’ai des connaissances techniques et je souhaite les approfondir en comprenant comment cette copropriété est construite et les bases technologiques derrière. Un autre article est disponible. Suivez ce chemin
  3. J’ai de bonnes connaissances d’administration système. Je veux contribuer au réseau qui est construit et devenir un validateur de confiance. Un autre article est là aussi disponible. Suivez ce chemin

Resume

La communauté des Curieux

Mes premiers pas pour être un utilisateur de blockchain

Partons du principe que vous avez un smartphone Android. Les mêmes étapes sont réalisables avec un smartphone Apple ou sur Google Chrome.

Il faut commencer par mettre en place son couple clé publique / clé privée. Ce couple vous permettra de vous identifier et de signer vos manipulations. Installez l’application MetaMask sur Android de l’éditeur ConsenSys, ou MetaMask sur iOS. Si vous êtes sur un desktop, il faudra l’extension MetaMask pour Google Chrome.

L’application MetaMask de l’éditeur ConsenSys est-elle le moyen le plus sécurisé pour stocker ses clés ? Pour un usage quotidien sans prise de tête, c’est la meilleure alternative sur le marché à laquelle font confiance des centaines de milliers de personnes. Mais les gros porteurs de crypto-monnaies, ceux dont les enjeux monétaires dépassent les dizaines de millions de dollars, iront vers des solutions spécialisées de type hardware wallet ou cold storage. Pour notre usage en tant que curieux, MetaMask sera suffisant.

Une fois l’application installée, il faut la configurer : Metamask

On commence par créer un nouveau compte en

  • cliquant sur Create a new wallet
  • remplissant un mot de passe
  • acceptant les conditions générales et ensuite cliquant sur le bouton Create a new password

Votre compte est désormais créé. MetaMask propose une option supplémentaire de sécurisation pour les gens qui perdent leur mot de passe ou leur téléphone (car la clé privée est stockée ce dernier et ne peut être retrouvée autrement). Cette option est très importante dans le cas où vous manipulez une vraie crypto-monnaie et des smart contracts réels. Pour nous, les enjeux ne sont pas aussi importants mais il est toujours bon de se forcer à adopter une best practice.

Vous pouvez cliquer sur Remind me later pour sauter cette étape et finaliser la création de la wallet. Mais elle vous sera redemandé plus tard, donc notez les 12 mots et jouez le jeu.

Et voilà, vous voici sur la blockchain Ethereum :

Metamask

Votre identifiant ou clé publique est l’adresse hexadécimale (qui commence par 0x…) dans le champ en bleu clair. Votre signature ou clé privée est stockée dans l’application et cryptée avec votre mot de passe. Par défaut, l’application vous connecte au réseau Ethereum mondial (Ethereum Main Network) et vous affiche un solde logique de 0 ETH.

Les ethers que vous voyez ici sont de vrais ethers qui ont une valeur sur les marchés. Vous pouvez en acheter avec Buy mais je vous le déconseille fortement pour de multiples raisons. Pour nous, tout ceci n’a pas d’importance car nous allons sortir du réseau mondial et nous connecter au petit réseau des Curieux.

Voici une vidéo qui montre les grandes étapes pour se connecter à notre réseau :

En cliquant sur le bouton hamburger en haut à gauche (ce sont les trois lignes stackées), on ouvre les paramètres :

Metamask

Il faut ensuite aller dans Settings et choisir Networks :

Metamask

Puis Add Network

Metamask

Courage c’est presque fini

A présent, il faut renseigner le lien du réseau qui est hébergé sur une de mes machines. Vous pouvez donner le nom que vous voulez dans le champs “Network Name”. Ensuite, remplir le champs RPC Url avec le lien suivant : https://curieux.ma/blockchain/

Enfin, finaliser avec le bouton Add : Metamask

La configuration étant terminée, il faut aller sur la Dapp. Voici une vidéo qui montre les grandes étapes pour y accéder :

Il faut utiliser le navigateur de MetaMask (présent dans le menu vu auparavant Browser) pour aller sur le site de la communauté des curieux avec le champs Search or Type URL : curieux.ma Metamask

Une fois sur le site, il faudra accepter la tentative de lien entre votre compte MetaMask et le site à travers le bouton Connect. Le message de warning nous explique les dangers à associer un compte avec un site malveillant, surtout dans le cas où notre compte contiendrait une vraie crypto monnaie qui aurait de la valeur. Metamask

Si vous désirez changer de réseau et flirter avec le Main Ethereum Network par exemple, il suffit d’aller dans le menu puis bouton Wallet puis cliquez encore sur Wallet tout en haut de l’écran. Vous aurez le choix entre les différents réseaux, celui qu’on vient d’ajouter étant tout en bas.



Félicitations

Bravo, nous avons accompli toutes les étapes de configuration de notre compte Ethereum et d’association avec l’application web (qu’on appellera à partir de maintenant Dapp pour distributed application) curieux.ma. A présent, nous pouvons interagir avec la blockchain et ses smart contracts de manière intuitive et user-friendly !

Que faire sur la Dapp ?

La Dapp nous permet de faire quatre type d’opérations : Metamask

  1. Recevoir de l’ether : Pour manipuler la blockchain, il faut avoir un peu de solde d’ether. Vous n’en avez bien sûr pas au départ, donc un bouton vous permet d’en recevoir gratuitement à raison d’une fois par minute au maximum. Plus de précision ici

  2. Créer mon association : Simplement créer une nouvelle association avec un nom de votre choix. L’adresse unique de l’association vous est renvoyée si la création s’est bien déroulée

  3. Rechercher une association : Si vous avez une adresse identifiante d’association, vous pouvez visualiser son détail et lancer des actes d’administration sur cette association comme devenir membre, devenir président, dissoudre l’association, bannir un membre etc.

  4. Gérer une association : Deux actes sont couverts dans cet onglet : Voter une décision et acter une décision lorsqu’elle a eu assez de votes. Par exemple voter pour la cooptation d’un membre, voter une dissolution, acter le bannissement d’un membre, acter la consignation d’un référendum qui a eu suffisamment de votes etc.

  5. Votre historique : Afin de ne pas avoir à se rappeler tout le temps des adresses, cet onglet vous permet de garder les contrats d’association et d’administration que vous avez créés et recherchés

Toutes les transactions faites sur notre blockchain prennent entre 5 et 15 secondes pour être validées et agrégées dans un bloc. Cela peut vous donner l’impression qu’il ne s’est rien passé mais il faut être patient et attendre la confirmation de la transaction. Les manipulations de consultation sont instantanées car elles n’impliquent pas de transaction. Si vous trouvez que c’est long, dites-vous qu’une transaction dans le réseau de la blockchain du Bitcoin dure en moyenne entre 10 et 20 minutes avec des pics à plus d’une heure.

Notons deux points importants sur le screenshot précédent :

  • Tout d’abord l’adresse publique de votre compte est affichée avec un solde. Dans mon cas, c’est l’adresse 0x485d493eb472e10469f14bada83c33941c018a76 (enchanté) comme sur la capture d’écran
  • La crypto-monnaie du réseau Ethereum est appelée l’ether. Le solde d’ether accompagne l’adresse. Et visiblement, j’ai été généreux envers moi-même.

Quelques règles fonctionnelles dans les contrats

  1. Seul un membre d’une association peut voter une proposition pour cette association
  2. Le créateur d’une association est le premier membre de celle-ci et devient de facto son président
  3. Il faut au moins 50% de vote pour acter une cooptation, 51% de vote pour un changement de président, un référendum ou un bannissement de membre et 67% de vote pour acter une dissolution
  4. On ne peut bannir un membre dans une association qui n’est constituée que de celui-ci. Le président ne peut être banni de l’association tant qu’il est président

Vos premiers pas

Je vous propose tout d’abord de récupérer un peu d’ether en allant dans l’onglet correspond. Votre solde devrait être crédité d’un ether au bout d’une dizaine de secondes.

Il se peut qu’à ce moment l’application vous demande de sécuriser votre compte en écrivant sur un bout papier votre clé privée sous forme de mots aléatoires. Jouez le jeu, c’est une bonne pratique de sécurité.

A présent, vous avez le choix entre créer votre propre association et demander à des amis de vous rejoindre en se faisant coopter ou bien de rejoindre mon association “Les Curieux” à l’adresse 0x519990f0102CB72363B417230174eBE531EB4227.

Dans le deuxième cas, il faut aller dans l’onglet Rechercher une association et renseigner l’adresse ci-dessus. Puis cliquer sur Rejoindre l’association après avoir renseigné votre pseudonyme. Un contrat de cooptation sera généré et vous pouvez me l’envoyer par LinkedIn ou mail pour que je vote pour la cooptation.

Une fois suffisamment de votes de membre effectués (dont le mien), vous pouvez aller dans Gérer une association et renseigner l’adresse du contrat de cooptation. Puis cliquer sur Acter et devenir membre de l’association.

Une fois membre, vous pouvez soumettre des référendums, devenir président ou encore bannir un membre. Chacune de ces actions suit la logique suivante : un contrat d’administration reflétant les actions précédentes est créé. Les membres de l’association votent et lorsque le nombre de vote suffisant est recueilli, n’importe qui peut acter le contrat pour entériner la décision.

Points importants

Qu’est ce que cet ether que nous manipulons dans le cadre de cet article ?

  • Il s’agit d’un ether de test déconnecté des ethers publiques qui ont eux une valeur marchande. Vous ne pourrez ni le vendre sur les marchés de crypto-currency ni le transférer à des gens sur le réseau main Ethereum publique. Mais vous pouvez le transférer à quelqu’un connecté à notre réseau de test si vous le voulez

L’ether manipulé a-t-il une valeur ?

  • Non. D’une part car il n’est à priori pas revendable donc par définition il ne vaut rien. D’autre part parce que vous pouvez en obtenir gratuitement à travers le bouton Recevoir de l’ether. Enfin si vous n’êtes pas convaincu, je vous invite à aller sur les articles techniques où j’explique comment je m’en suis octroyé une quantité quasi infinie (plusieurs milliards de milliards de milliards) afin d’être tranquille dans les tests. Donc non, un asset dont la quantité est infinie et possédé en majorité écrasante par une seule personne a une valeur marchande nulle

Ce réseau de test existera-t-il à long terme ?

  • Si d’autres personnes deviennent des miners (le réseau est ouvert aux contributions sur le port 30303, CF le troisième article) et décident de garder ce réseau en vie, oui. Personnellement, je maintiendrai mon noeud de test aussi longtemps que des gens s’amuseront avec puisqu’il me coûte à peu près $5/mois soit pas grand chose. Mais pas indéfiniment car j’ai bon espoir de voir émerger un réseau Ethereum marocain avec un vrai ether marocain.

Puis-je développer ma Dapp sur ce réseau ?

  • Oui mais contactez-moi auparavant car d’une part ce réseau est hébergé sur une petite machine qui n’est pas faite pour une volumétrie importante. D’autre part car il vous est aussi simple de déployer votre propre réseau Ethereum avec une dizaine de lignes de code. Si vous voulez expérimenter, on peut en parler même si je ne peux empêcher techniquement personne d’utiliser ce réseau

Pourquoi aurais-je confiance dans l’application curieux.ma ?

  • C’est un bon réflexe et quand on manipule de la blockchain, il faut toujours questionner chaque intermédiaire. Dans le cas de curieux.ma, l’application est constituée de code uniquement sur votre navigateur. Et les échanges se font entre votre application et la blockchain directement. Aucun flux de donnée ne passe par le site curieux.ma, aucune donnée n’y est stockée (cela rend aussi compliqué l’experience utilisateur et vous forcer à mémoriser des adresse, j’en suis conscient). L’avantage est que le code de curieux.ma (principalement javascript) est totalement auditable et utilisable avec n’importe quelle blockchain Ethereum. Je pense que cette démarche illustre au mieux l’esprit de la blockchain et de la décentralisation

Nos revendications technologiques

Il me semble clair aujourd’hui que le pays a besoin d’une infrastructure de type blockchain publique marocaine pour soutenir l’innovation et dupliquer de belles réussites de blockchain vues dans d’autres pays. Une blockchain n’a de sens que si elle est :

  • Accessible : c’est-à-dire peu chère et utilisable avec de la monnaie souveraine (ou convertible)
  • Distribuée : à savoir qu’il existe suffisamment de noeuds partagés par assez de personnes aux intérêts divergents pour la rendre de confiance au regard des usages qui y seraient hébergés

La blockchain Ethereum mondiale publique remplit parfaitement le deuxième rôle mais pas du tout le premier. L’utiliser revient à puiser dans sa dotation e-commerce et le coût de transaction oscille entre 5dh et 20dhs. Sans compter que se doter de crypto-monnaie étrangère nous soumets de facto à la réglementation de l’Office de changes.

Nous avons donc besoin d’une blockchain publique de type Ethereum (par exemple) marocaine dont les noeuds seraient répartis de manière équilibrée entre les grandes entreprises et institutions du pays. L’ether produit ainsi serait alors revendu (en dirham) aux entrepreneurs souhaitant l’utiliser pour innover afin d’amortir les serveurs qui l’hébergent. Ou gratuitement dans le cadre de conventions pré-établies, mais en général il vaut mieux laisser le marché faire et ne pas whitelister à priori les usages.

Ce type de blockchain verrait également émerger des uses cases autour de crypto-monnaies souveraines marocaines, autour de la wallet mobile (au vrai sens du terme, ie d’avoir de l’argent cryptographiquement dans son téléphone et pas dans un serveur centralisé comme c’est ennuyeusement le cas aujourd’hui) et enfin autour de l’identité numérique et de l’e-citoyenneté.

Conclusion

La blockchain est un bel outil qui promet de changer la notion de confiance dans le monde digital. Comme nous l’avons vu, de surface, son utilisation apparaît comme une application comme une autre avec en plus cette notion intéressante de wallet sécurisée contenant de la crypto-monnaie. Mais l’usage qui en est fait pourrait libérer le consommateur digitale de la tutelle d’acteurs centralisés et fermés, et lui offrir plutôt un écosystème riche avec lequel interagir nativement.

J’espère en tout cas que cet article vous a permis de faire vos premiers pas dans ce monde porteur de beaucoup de promesses de disrupter la façon dont nous interagissons avec le monde.

Liens vers les photos

Photo by Andrew Johnson on Unsplash