Duniter, Théorie relative de la monnaie et projets autour des monnaies libres

Rédigé par moul - - Aucun commentaire
Article mis à jour le 30 mars 2017.

Logo de Duniter


Ce billet fait le tour des projets autour des monnaies libres. Dans un premier temps, le projet Duniter sera présenté, puis son fonctionnement technique et son état d’avancement seront abordés. Ensuite, les monnaies de tests Méta Brouzouf, Test Net et Ğtest et la première monnaie libre Ğ1 seront passées en revue. Puis, les clients Sakia, Césium et Silkaj seront présentés. Enfin, la traduction en anglais de la Théorie relative de la monnaie, le jeu Ğéconomicus et les rencontres des monnaies libres seront abordés.

Présentation

Duniter est un projet de monnaie cryptographique qui a pour but d’implémenter des logiciels libres créateurs de monnaies libres au sens de la théorie relative de la monnaie. Ces monnaies libres permettront la mise en place d’un équivalent du revenu de base par création monétaire : le dividende universel ou DU. Le projet Duniter, à l’origine nommé uCoin, a été démarré en juin 2013 par Cédric Moreau, alias cgeek. Ce projet se base sur les travaux de la théorie relative de la monnaie, TRM, développée par Stéphane Laborde, alias Ğaluel. Duniter a hérité des principes de fonctionnement du projet OpenUDC. Ce projet initié par Jean-Jacques Brucker alias jbar en novembre 2011 n’est pas aussi avancé que le projet Duniter et ne connaît pas le même rythme de développement. OpenUDC est écrit en langage C et est basé sur le serveur web lighttpd et sur OpenPGP pour la gestion de la toile de confiance.

Architecture du réseau


Architecture du réseau Duniter avec les nœuds au centre et les clients en périphérie.

Duniter hérite son architecture réseau d’OpenUDC. À ma connaissance, il s’agit des deux seuls réseaux ayant une architecture sous forme nœuds-clients. Cette architecture est un mixte des deux architectures réseau communément utilisées, à savoir les architectures client-serveur et pair à pair. Le réseau Duniter est donc constitué de nœuds et de clients. Les nœuds s’occupent d’écrire dans la chaîne de blocs (blockchain en anglais) et les clients émettent des transactions et des certifications.

L’architecture de Bitcoin est entièrement pair à pair et uniquement constitué de nœuds. On se retrouve alors, de façon absurde, avec tout l’historique (représentant aujourd’hui plus de 110 Go) sur son mobile ou sur son ordinateur de bureau. La récente création de clients Bitcoin fait tendre l’architecture vers une forme nœuds-clients.

L’architecture de Duniter quant à elle, permet de conserver l’aspect pair à pair, car tout membre du réseau peut avoir un serveur avec un nœud qui va inscrire des blocs dans la chaîne de blocs et ainsi participer à la décentralisation du réseau ainsi qu’à sa robustesse. Il est également possible de participer à la monnaie sans avoir à administrer un serveur. En résumé, cette architecture distingue bien les différents rôles clients et nœuds.

Nœud Duniter

Le logiciel nœud est implémenté en JavaScript ES 6.0 et fonctionne sur la dernière version de Node.js. Duniter est paru en version 0.20.0 le 27 juin 2016. Duniter est distribué sous licence GNU AGPLv3. Il est fonctionnel sous les distributions GNU/Linux. Il est compatible avec tous les systèmes d’exploitation. Il est fonctionnel sous les architectures de processeurs 64 bits et ARM.


Interface web de gestion d’un nœud Duniter.

Fonctionnement

Le fonctionnement de Duniter est le suivant. Lorsqu’un client émet une transaction ou une certification, cette information est partagée parmi tous les nœuds puis est mise en attente. Ensuite, pour que ces informations soient inscrites dans la chaîne de blocs, les nœuds doivent d’abord calculer leur preuve de travail (proof of work, PoW en anglais).


Informations relatives à la monnaie.

Preuve de travail

Chaque nœud a une preuve de travail personnalisée qui diminue au cours du temps, leur permettant d’ajouter un bloc. Dès l’ajout d’un bloc, leur difficulté augmente, les mettant en liste d’attente décentralisée. La chaîne de blocs est l’entité commune à tous les nœuds qui permet la décentralisation et empêche la falsification de transactions et de certifications.

La création des blocs n’est pas comme dans le Bitcoin, dans laquelle c’est la course à la puissance de calcul et in-fine au gaspillage d’énergies et de ressources. L’identification des membres rend possible une difficulté personnalisée. Ainsi, des nœuds disposants de puissances de calcul très différentes auront les mêmes chances d’écrire des blocs.

Remuniter


Remuniter.
Remuniter est un système de rémunération des générateurs de blocs. Pour ce faire, une clé publique reçois des dons et remuniter redistribue la monnaie aux générateurs de blocs. Ils sont rémunérés pour ce travail de sécurisation de la monnaie. Ce fonctionnement permet de rémunérer les générateurs de blocs sans créer de nouvelle monnaie. À l’instar des monnaies cryptographiques de minages qui ne sont de facto plus des monnaies libres.

Transactions

Les transactions sont faites à partir de sources, dans le cas de Duniter il s’agit de la création monétaire via les dividendes universels. Ces DU, sont cocréés par chaque membre et sont ajoutés dans les blocs de la chaîne par les nœuds à un intervalle de temps définis par les paramètres de la monnaie.

Toile de confiance

Toile de confiance globale de la monnaie
de test Méta Brouzouf en juin 2015.
Toile de confiance du Méta Brouzouf avec les
identités à une distance de trois de la mienne.

La toile de confiance (web of trust, WoT en anglais), basé sur le principe de décentralisation, a été mise en place pour éviter qu’un individu reçoive plusieurs DU. Le statut de membre permet de créer ses DU, de certifier des identités et d’écrire des blocs. Les conditions actuelles pour être membre sont d’avoir un nombre minimum de certifications. Les certifications ont une durée de vie limitée. Ceci permet, dans le cas où un membre décède où souhaite quitter la communauté qu’il ne puisse plus créer de DU. Ces paramètres sont configurables au lancement de la monnaie.

La seconde version du protocole Duniter DUP a ajouté une condition supplémentaire à remplir pour être membre. L’identité doit être à une distance minimum de tous les membres de la communauté. De plus, un stock de certifications est mis en place. Un intervalle de temps est nécessaire entre deux certifications pour être inscrite dans le registre commun. Ces paramètres sont testés dans la monnaie Test Net.

Dans la monnaie libre Ğ1, il est nécessaire pour être membre, d’avoir cinq certifications et d’être à une distance de cinq sauts de certifications de tous les membres de la communauté. Il est possible d’émettre au maximum cent certifications. Ces conditions créent une toile de confiance avec une moyenne de seize millions de membres. Duniter permet de mettre en place plusieurs monnaies libres avec lesquels il sera possible de faire des échanges entre-elles. Les certifications expirerent au bout de deux ans. Les certifications provenant d’un même membre sont validées au minimum une fois tous les cinq jours.

Consensus émergeant


Chaîne de blocs et ses deux embranchements

Le consensus émergeant également appelé multi-branching, a été la nouvelle fonctionnalité de la version 0.12 de Duniter qui permet à chaque nœud de forker, c’est-à-dire de dévier dans sa version de chaîne de blocs. Les nœuds décident d’adopter la meilleure version de la chaîne de blocs et rejettent les autres blocs.

Cette fonctionnalité a été mise en place pour qu’une seule chaîne soit choisie dans les cas où plusieurs blocs sont créés en même temps ou bien qu’un bloc ne soit pas valide. Cela rend possible l’évolution de la version du logiciel nœud. Dans le cas où certains nœuds, en part minoritaire, sont sur une nouvelle version du logiciel, leurs blocs ne seront pas acceptés. Dans le cas où plus de 50 % des nœuds proposent cette nouvelle version, alors les nœuds choisiront cette version de la chaîne de blocs.

Transactions entre communautés monétaire

Les transactions entre chaînes de blocs a été implémenté dans la seconde version du protocole. Cette fonctionnalité permet d’échanger de la monnaie entre deux systèmes monétaires qui seraient basés sur des monnaies cryptographique. Ça fonctionne avec un secret partagé qui est stocké dans la chaîne de blocs, qui par la suite permet de faire un échange entre les deux chaînes de blocs.

Monnaies de test


Graphe qui représente l’évolution du nombre de membres et de la masse monétaire relative au DU et au nombre de membres dans le Méta Brouzouf.

La monnaie de test Méta Brouzouf, lancée le 22 janvier 2014 a eu en moyenne une vingtaine de membres et au maximum trente à un instant t. Plus de cent personnes ont testé la monnaie. Elle a donc fonctionné plus d’un an, ce qui représente plus de 350 années étant donné que chaque jour représente un an. Sa chaîne de blocs a atteint plus de 52 500 blocs. Cette monnaie de test nous a permis de faire évoluer les logiciels.

Il était prévu que cette monnaie crashe au moment où la valeur de la masse monétaire stockée dans une variable de type int atteigne la valeur maximale possible. La masse monétaire a atteint plus de 50.10¹⁸ Méta Brouzouf.

Une autre monnaie de test utilisant la seconde version du protocole Duniter a été lancée. Elle est appelée Test Net. Puis, la monnaie de test Ğtest.

Première monnaie libre : Ğ1

Paquet Duniter pour YunoHost

Je développe un paquet qui facilite l’installation d’un nœud Duniter sur YunoHost. YunoHost est une distribution GNU/Linux basée sur Debian orientée auto-hébergement qui se déploie en un clic. De plus, le projet la brique Internet, qui met en place des petits serveurs pré-configurés avec YunoHost, permettrait de déployer facilement des nœuds.

Sakia, le client de bureau


Sakia 0.30 ouvert sur l’onglet réseau contenant les nœuds.

Présentation

Sakia est un logiciel libre, sous licence GNU GPL v3, client conçu pour ordinateur de bureau. Il est multi-plateforme et multilingue traduit en sept langues. Il est implémenté avec le langage Python 3.5 et la bibliothèque graphique Qt 5. Il s’agit du client Duniter le plus avancé.

Historique

Le projet a démarré en janvier 2014 par canercandan, puis a été repris par Gaël alias Inso en décembre 2014. vit a contribué, en particulier à la vue de la toile de confiance. Pour ma part, je teste et signale des bugs.

Sakia est parue en version 0.11 le 4 décembre 2015 avec une nouvelle interface graphique et avec un nouvel algorithme de gestion du consensus émergeant et de la décentralisation. À l’occasion de cette nouvelle version le logiciel a changé de nom ; passant de Cutecoin à Sakia, en référence à la roue persane qui sert à remonter l’eau.

La version 0.12 est parue le 19 février 2016. Il s’agit de la dernière version compatible avec le protocole 0.1. Le mode oubli a été ajouté. Plusieurs améliorations sur l’interface ; notamment de nouvelles icônes et des couleurs. La connexion avec les nœuds se fait à présent en priorité via des websockets ce qui permet de recevoir instantanément un nouveau bloc. Les builds sont à présent réalisés avec pyinstaller au lieu de cx_Freeze. Une nouvelle vue exploration, permet de visualiser les liens entre les identités enregistrées dans la monnaie avec la possibilité de changer la distance entre les identités.

La version 0.20 est parue le 7 juin 2016. Cette version apporte la compatibilité avec la seconde version du protocole Duniter.

Logo de Sakia.
Interface d’accueil avec la tuile de la communauté.

Fonctionnalités actuelles

Il permet :
  • de gérer plusieurs comptes au sein de plusieurs communautés.
  • d’effectuer des transactions, d’afficher les transactions ainsi que la création des dividendes universels.
  • d’afficher la quantité de monnaie dans quatre référentiels : l’unité, le DU, la Σ quantitatif, la Σ relatif et le DU par jour.
  • l’affichage du montant de la transaction dans le référentiel dividende universel à l’instant de la transaction, également nommée sans l’oubli. L’oubli correspond à la perte de valeur relative à la masse monétaire d’un montant, dû au passage du temps.
  • de certifier des identités, de rejoindre et prochainement de pouvoir quitter une communauté.
  • d’afficher dans deux graphiques la toile de confiance ou les liens de certifications entre les identités enregistrées.
  • d’afficher l’état du réseau et des nœuds.
  • d’afficher les informations relatives à la monnaie.
  • de gérer sa liste de contacts.

Césium, l’application web et mobile

Césium est un client web a été démarré par cgeek et qui a été repris par kimamila. Il est développé en JavaScript.
Il est aussi bien utilisable en tant qu’application web qu’application de bureau ainsi que sur les ordinateurs de poche tel Android, Ubuntu Touch et Firefox OS.

Paramètres et informations sur Ğ1 dans Césium.

Silkaj, le client en ligne de commande

Silkaj est le client que je développe en Python. Il permet d’analyser le réseau Duniter et d’envoyer des transactions.

Visualisation de la rotation de la difficulté de génération du prochain bloc par les nœuds du réseau.

Éditions de la Théorie relative de la monnaie

La théorie relative de la monnaie est sous GNU GPL v.3 et est actuellement en version 2.718 qui tend vers le nombre e.

Génération automatisée de la TRM

La génération automatisée de la TRM est une idée originale de Stéphane Klein. Ce projet a été repris par Vincent Texier alias vit. Il permet de générer, avec le générateur de document Sphynx, la TRM est disponible aux formats PDF, HTML et EPUB. Ceci a permit d’améliorer l’édition francophone de la TRM ainsi que d’aboutir à une nouvelle édition papier.

Traduction de la TRM en anglais

La traduction de la TRM vers l’anglais a été mise en place par vit avec l’outil propriétaire Transifex. Olm_e, refusant de participer à la traduction sur Transifex, s’est mis à traduire sa version sur un pad. Finalement, ces deux versions ont été fusionnées et migrées sur notre propre outil de traduction Weblate que nous avons mis en place, car il nous permet également de traduire les interfaces des logiciels. La TRM a été traduite par inso, moi, sb, Olm_e, vit, Magali, cgeek et beaucoup d’autres personnes. Nous sommes arrivés à l’obtention de la version anglophone Relative theory of money, RTM qui est entièrement traduite. Elle a été traduite par des personnes non anglophones maternels. Elle nécessite donc une relecture par des anglophones.

Autres projets

La TRM pour les enfants.
La TRM en couleur.

David Chazalviel alias Cuckooland a publié les sources de ces deux productions sous licence libre GNU GPL v.3. Elles sont traduites en français et en anglais et sont accessibles sur son site web :
  • La TRM pour les enfants : explication simplifiée et illustrée de la TRM. Existe au format papier.
  • La TRM en couleur : interface web permettant de simuler l’évolution d’un système monétaire en modifiant des paramètres comme le taux de croissance ou le nombre de membres.
  • TRM en détail : interprétation de la TRM par Emmanuel Bultot, docteur en mathématique. Existe au format papier.

Ğéconomicus

Ğéconomicus s’est inspiré du jeu « la corbeille » sous licence non libre cc-by-sa-nc pour réaliser un jeu libre sous licence libre GNU GPL v3 qui intègre la dimension temporelle de renouvellement des générations dont l’objectif est d’éveiller à la différence de résultats qu’apporte sur le long terme l’utilisation dans l’économie d’une monnaie libre par rapport à une monnaie dette, un autre type de monnaie ou l’absence de monnaie.

La version 2.0 est sortie le premier avril 2016. Elle met en place des valeurs progressives. Cette version a été jouée pour la première fois lors des septièmes rencontres des monnaies libres.

Rencontres des monnaies libres

Jeu Ğéconomicus lors des RML6.
Développement sur Duniter lors des RML7.
Conférence de Matiou lors des RML7.
Les rencontres des monnaies libres (RML ou FMM pour free money meeting) se déroulent tous les six mois en novembre et en juin. Elles sont organisées sur quatre jours. Les deux premiers jours sont orientés développements informatique et le week-end est orienté vers la découverte des monnaies libres avec la possibilité de jouer au jeu Ğéconomicus, des ateliers d’approfondissement de la TRM et des conférences.
Les neuvièmes rencontres ont eu lieu du 1e au 4 juin 2017 au Havre.
La dixième rencontre de la monnaie libre aura lieu du 23 au 26 novembre 2017 à Montpellier.

Conférences

Conférence de cgeek : techniques et concepts
sous-jacents des implémentations de monnaies libres.
Conférence de vit :
Duniter, logiciel de création de monnaies libres.
Conférence de Ğaluel : perspectives informatiques,
monnaies inattendues, relativité et nouveau monde.

Liens externes

Théorie relative de la monnaie

Projet Duniter

Ğéconomicus

Rencontres des monnaies libres

Autres