rust substrate HugoTrentesaux Moteur blockchain 2022-01-29

Duniter v2 🏗

Une évolution nécessaire et bénéfique 👍

Le logiciel Duniter a connu de nombreuses évolutions depuis son baptème en avril 2016, et les technologies de blockchain également. Alors qu'à l'époque une solution "faite maison" était pertinente, nous pensons qu'il est aujourd'hui préférable de nous baser sur des briques logicielles largement testées et éprouvées pour garantir le passage à l'échelle. Le framework blockchain Substrate nous semble particulièrement adapté à nos besoins. En effet, son architecture modulaire par "pallet" nous permettra d'assembler des briques développées par des professionnels et de nous concentrer sur ce qui fait la spécificité de Duniter : sa toile de confiance et la création monétaire par Dividende Universel (DU).

Migration de la Ğ1 🏆

Le premier objectif de Duniter est de propulser la monnaie Ğ1 dont la toile de confiance comporte aujourd'hui 4268 membres avec une croissance actuelle de 300 membres / mois. Nous souhaitons coordonner la communauté pour une transition vers Duniter v2 aussi douce que possible sans "hard fork". Chaque membre conservera son statut, chaque compte conservera son solde, les paramètres monétaires resteront pratiquement inchangés, les wallets (anciennement "clients") seront adaptés, et nous chercherons à rendre la durée d'indisponibilité aussi courte que possible (idéalement inférieur à une journée).

Ouverture à l'international 🌍

Contrairement à la solution "faite maison" documentée essentiellement en français, Substrate nous ouvre vers une communauté de développeurs internationale. Duniter apportera ce qu'il manque à l'univers des cryptomonnaies : une théorie monétaire solide. Réciproquement, le monde des cryptomonnaies apportera à Duniter l'expertise nécessaire pour passer au stade supérieur de l'expérimentation d'une monnaie libre. Afin de faciliter la compréhension, nous allons utiliser un vocabulaire précis déjà bien installé.

La blockchain comme ressource commune 🌲

🔗 forum

Duniter v1 s'inscrivait déjà dans une démarche globale consistant à considérer la blockchain comme un commun, une ressource gérée collectivement par une communauté selon la définition donnée par https://lescommuns.org/. La migration vers Substrate est une occasion idéale de pousser la réflexion plus loin, en introduisant des outils de gouvernance on-chain pour les décisions collectives (vote, évolution du protocole) et l'attribution des ressources finies de la blockchain (ex. résistance au spam).

Quelques points techniques 👩‍💻

Rentrons maintenant dans une partie technique, où nous aborderons les questions concrètes posées par cette migration.

Table des matières

  1. Une évolution nécessaire et bénéfique 👍
    1. Migration de la Ğ1 🏆
    2. Ouverture à l'international 🌍
    3. La blockchain comme ressource commune 🌲
  2. Quelques points techniques 👩‍💻
    1. Abandon de la POW → BABE/GRANDPA 👾
    2. Sous-toile forgerons 🌋
    3. Pallet "Democracy", utilisations envisagées 🌿
    4. frais d'extrinsics / mesures antispam 🤖
    5. déclaration d'identité via premier certificateur 🔱
    6. 1 bloc = 6 sec → oracle pour calculs coûteux (ex. règle de distance) ✍️
    7. Changement de paradigme UTXO → compte 🏛
    8. Production du DU 🗜

Abandon de la POW → BABE/GRANDPA 👾

🔗 forum 🔗 forum

La preuve de travail (proof of work, "pow") était un point souvent critiqué. Bien que la difficulté personnalisée de Duniter permette de réduire la consommation d'énergie et de répartir l'ajout de blocs entre les forgerons, les algorithmes BABE pour l'ajout de blocs et GRANDPA pour la finalisation nous permettront d'accélérer grandement la validation des données (~30 minutes → ~30 secondes) tout en limitant le "gaspillage" de ressources CPU.

Sous-toile forgerons 🌋

🔗 forum

Dans Duniter v1, tout membre de la toile de confiance (web of trust, "wot") obtient d'un seul coup les droits de créer le DU, certifier, et ajouter des blocs. Cela constitue une faille de sécurité importante car en s'emparant d'une trentaine de comptes mal sécurisés il est possible de prendre le contrôle de toute la blockchain. Avec l'augmentation du nombre d'utilisateurs, il est préférable de dissocier les différents droits pour n'accorder l'ajout de bloc que selon des conditions de sécurité non imposables au grand public.

Pallet "Democracy", utilisations envisagées 🌿

frais d'extrinsics / mesures antispam 🤖

déclaration d'identité via premier certificateur 🔱

🔗 forum

1 bloc = 6 sec → oracle pour calculs coûteux (ex. règle de distance) ✍️

🔗 forum

Changement de paradigme UTXO → compte 🏛

🔗 forum

Production du DU 🗜

🔗 forum