Je pense qu’il est temps d’animer la discussion sur la gouvernance de la blockchain v2. J’ai reçu plusieurs sollicitations d’utilisateurs et ai moi même plein d’idées. Si on est prêt à temps, on pourra l’implémenter d’ici la migration, sinon on pourra le faire après, mais dans tous les cas, il faut que ce soit réfléchi collectivement.
Voici certains sujets qui peuvent alimenter la réflexion:
- Point d'étape sur la Ğ1v2 (partie “gouvernance”)
- Dissocier le droit de forger du droit de voter les runtime upgrade
- Système de vote Ğ1 -- on-chain / off-chain -- "hard" / "soft"
- Scope of technical committee within on-chain governance
- Governance: adaptive quorum biaising
Dans l’idée, on devrait travailler le sujet en amont en petit groupe avec 1-2 devs et 4-5 utilisateurs et proposer un atelier bien plus large pour les RML17. Cet atelier pourra avoir lieu avec tous les devs sur le camping pour associer un maximum de personnes par exemple le mercredi matin où le FISH n’est pas disponible.
Quelques informations à prendre en compte dans la discussion :
- la question de la gouvernance est trop importante pour être laissée à la charge seule des développeurs. Ce serait à la fois une responsabilité trop lourde et un piège de mauvaise représentation. Nous avons absolument besoin que des utilisateurs s’emparent de cette question
- lorsque l’on doit implémenter quelque chose, il faut que tout soit spécifié dans les moindres détails (personnes éligibles au vote, durée du vote, conditions de cloture du vote, conditions de soumission d’une proposition, quotas, seuils, …) on ne peut donc pas se contenter d’idées générales, il faut les expliciter méticuleusement
- les contraintes techniques ne devraient pas déterminer la forme que prendra cet outil de gouvernance, mais il peut arriver qu’elles viennent alimenter la réflexion. Elles doivent être prises en compte à un moment ou un autre, d’où la nécessité de faire travailler ensemble les utilisateurs (en essayant d’être représentatif de la communauté Ğ1) et les développeurs (à la fois en tant que membres, mais ayant la compréhension technique)
- le pouvoir de modification du code représente un pouvoir absolu sur le futur (le passé n’étant pas modifiable dans une blockchain), il permet de tout faire et ne doit donc pas être pris à la légère. Pour l’instant dans la v1 il est détenu par les forgerons, dans le code actuel de la v2 il est détenu par un comité technique fermé modifié par vote de celui-ci. Idéalement il doit être détenu par la communauté entière sans que cela soit bloquant pour prendre des décisions.
- l’abstention est souvent majoritaire, et doit être systématiquement prise en compte.
- le consentement est une notion fondamentale qui doit éclairer toute réflexion de gouvernance
- toutes les décisions étaient déjà possibles en v1, mais compliquées car nécessitant une mise à jour logicielle et risquées car si les forgerons étaient divisés, la mise à jour pouvait donner lieu à un fork et donc scinder la monnaie en deux. L’avantage de la v2 sur substrate, c’est les “forkless runtime upgrades”, c’est-à-dire la possibilité de faire des mises à jour sur l’ensemble du réseau une fois le consensus établi. De plus certaines décisions ne nécessitent pas de mise à jour de code, juste l’appel d’un extrinsic, ce qui facilite grandement leur application et permet de gérer un plus grand nombre de propositions.
- dans la réflexion sur le système de vote, il faut prendre en compte la compréhension de ce pour quoi on vote. Ça implique de produire et valider des informations vulgarisées mais correctes dans la langue maternelle du membre, et de garantir leur validation officielle pour éviter la désinformation.
Quelques exemples de décision qui doivent pouvoir être prises (ou pas) :
- correction de bug : cette décision est souvent très technique et difficile à vulgariser, et nécessite une modification du code (donc le plus haut degré de pouvoir). Elle doit pouvoir avoir lieu relativement vite pour limiter l’impact du bug. Il peut arriver que révéler en détail la nature du bug facilite son exploitation en attente d’une correction, et donc doit être prise dans un certain secret. Cette décision nécessite une forte confiance dans un nombre limité de personnes ayant des compétences techniques poussées, c’est un cas très délicat à mon avis, il faudra le détailler en visio.
- modification d’un paramètre : cette décision peut être assez simple à expliquer et ne pas nécessiter de modification de code (dépend des cas). Mais elle peut avoir un impact très fort sur la communauté. Exemple : changer le nombre de certifications nécessaires pour produire le DU ou être à son tour capable de certifier
- nomination d’un forgeron : les forgerons ont en temps normal un rôle essentiellement technique, mais ceci peut prendre une dimension importante dans les moments de conflits car ils sont en mesure de produire un fork, c’est-à-dire s’accorder sur une version alternative de la blockchain, et donc de scinder la communauté en deux. Normalement les forgerons sont gérés par la sous-toile forgeron, mais un vote pourrait par exemple aboutir à la nomination de forgerons hors toile de confiance. Ce point aussi nécessite des échanges poussés en visio
- éjection d’un membre : pour être bien clair, ceci est déjà possible en v1 si les forgerons s’accordent pour une mise à jour du code qui prive un utilisateur de son statut de membre, ce n’est donc pas spécifique à la v2. C’est une décision qui ne nécessite pas forcément du pouvoir de modification du code, mais a une énorme portée symbolique. Un système de gouvernance doit être en mesure de prendre ce genre de décision sans que cela impacte la confiance de la communauté dans la Ğ1. Ce genre de décision peut être légitime si on se rend compte qu’une personne a plusieurs comptes membres. Se doter explicitement ce cette capacité peut augmenter la confiance globale dans la toile si ses conditions d’application sont justes et consenties par une immense majorité.
- amende : pour démystifier, c’est également possible en v1 si une majorité des forgerons s’y accorde. Un organe de gouvernance peut décider de retirer des Ğ1 à un compte pour les mettre sur un autre (trésorerie commune par exemple, ou compte inaccessible). Encore une fois, il faut s’assurer que ce genre de décision ne soit pas pris de manière abusive. Mais si on se rend compte que quelqu’un a mené une grande escroquerie, il peut être pertinent d’avoir un moyen d’action pour lui retirer les Ğ1 mal acquises
- récupération d’un compte perdu (solde ou identité) : en v1 c’est aussi possible via une mise à jour logicielle d’une majorité de forgeron, mais c’était un processus très lourd, donc on ne l’a jamais fait. En v2 ce sera plus facile, il faut donc savoir si on se l’autorise (on peut aussi décider de ne pas le faire, c’est-à-dire de refuser de traiter ces propositions, mais c’est en soi une décision de gouvernance). Une des difficultés de ce genre de décision est que l’on peut recevoir de nombreuses demandes et ne pas avoir la capacité de les examiner. Le processus de gouvernance doit donc avoir un mécanisme anti-spam pour éviter d’avoir à gérer trop de propositions impossibles à traiter. Mais sous certaines conditions, on pourrait vouloir permettre la récupération de compte, tout en s’assurant que ce ne soit pas utilisable à de mauvaises fins.
Je vais prochainement proposer une date pour une visio. Pour l’instant les personnes que je sais intéressées (n’hésitez pas à signaler votre intérêt pour écouter / participer à ces discussions, tout en sachant qu’il y aura un grand atelier public au RML17 et que ceci est surtout un travail de préparation en amont) :
- Caroline (rencontrée chez Yvv)
- Fab (sur Telegram “questions aux développeurs”)
- Bertrand Ollivier (sur Telegram “questions aux développeurs”)