Une erreur de frappe transfère 36 millions de dollars de jetons JUNO saisis vers une mauvaise adresse (donc un mauvais portefeuille). Les validateurs, les développeurs et les détenteurs de jetons ne savent pas qui est responsable de l’erreur de copier-coller qui a déplacé les jetons vers une adresse à laquelle personne ne peut accéder.
La blockchain Juno, basée sur Cosmos, va continuer de servir de cas d’étude passionnant sur les difficultés de la gouvernance onchain. La semaine dernière, un vote sans précédent de la communauté a abouti à la décision suivante : saisir des millions de dollars de jetons $JUNO dans le portefeuille d’une baleine (gros investisseur) accusée d’avoir profité de manière abusive d’un airdrop destiné à la communauté. Ce gros investisseur a cherché à détourner le principe de rémunérer les utilisateurs actifs de la plateforme à son avantage personnel. Cependant, au lieu d’envoyer les fonds à une adresse contrôlée par la communauté Juno, comme prévu initialement, une erreur de programmation a envoyé les fonds à la mauvaise adresse mercredi.
Gouvernance blockchain : une proposition de sanction contre un utilisateur malveillant adoptée en consensus
La gouvernance basée sur la blockchain est un processus vraiment caractéristique du web3, un consensus démocratique qui modélise la volonté d’une communauté directement codifiée sur la blockchain. On écrit souvent également “code is law” (“le code fait loi”) : en effet, le vote de la communauté aurait dû déplacer tout seul les jetons d’une adresse blockchain spécifique à une autre. Et pourtant, l’échec de plusieurs mesures de protection implémentées par l’homme cette semaine montre à quel point la gouvernance centrée sur le code doit encore gagner en maturité.
La proposition 20 de Juno, qui a été adoptée avec un soutien écrasant de la communauté la semaine dernière, a révoqué les jetons de Takumi Asano, un investisseur japonais accusé d’avoir utilisé l’airdrop de Juno pour un montant de 120 millions de dollars en février. Il s’agit du premier exemple majeur à ce jour d’une communauté blockchain votant pour modifier le solde de jetons d’un seul utilisateur accusé d’avoir agi de manière malveillante. Selon le vote de la communauté, Asano dirigeait un service d’échange qui aurait dû rendre ses portefeuilles inéligibles pour le “stakedrop” Juno, qui a donné des jetons JUNO aux “stakers” sur la blockchain Cosmos Hub. Après un retard de quelques jours, le vote de la semaine dernière était censé exécuter automatiquement un code déplaçant les fonds “joués” – qui valent maintenant environ 36 millions de dollars – du portefeuille d’Asano vers une adresse “Unity” contrôlée par la communauté Juno.
Seulement… les choses ne se sont pas passées comme prévu. Lorsque le code a été exécuté mercredi, une erreur de programmation a conduit au déplacement 3 millions de jetons JUNO révoqués vers une adresse erronée sur la blockchain à laquelle personne – ni Asano ni la communauté Juno – n’a accès.
Proposition 20 : Le copier-coller qu’il ne fallait pas suivre bêtement.
Andrea Di Michele, un membre de l’équipe de développeurs fondateurs de Juno “Core-1” qui se fait appeler “Dimi”, a déclaré à CoinDesk que le transfert truqué était le résultat d’une erreur de copier-coller. “Lorsque j’ai donné aux développeurs [de la proposition 20] l’adresse du contrat intelligent [Unity], j’ai collé l’adresse du contrat intelligent et juste en dessous, j’ai mis le hash de la transaction. Mais je n’ai pas écrit ‘le hash de la transaction est ceci’, j’ai juste mis le hash de la transaction”, a expliqué Dimi. Selon Dimi, les développeurs ont accidentellement copié le hachage de la transaction – qui ressemblait à l’adresse du portefeuille – plutôt que l’adresse elle-même. En conséquence, les fonds saisis ont fini par se retrouver sur une adresse de la blockchain Juno à laquelle personne n’a accès.
Les validateurs qui déploient des nœuds pour faire fonctionner des blockchains de preuve d’enjeu (Proof of stake) comme Juno sont théoriquement responsables de faire leurs propres vérifications concernant les mises à niveau sur la blockchain, comme celle qui est venue avec la proposition 20. C’est cette communauté désintermédiée de validateurs – et non un développeur spécifique – qui est responsable de l’émission des blocs, de la sécurisation du réseau et du traitement des mises à niveau de manière “décentralisée”. Parmi les plus de 120 validateurs de Juno, aucun n’a semblé remarquer que l’adresse d’Unity avait été collée de manière incorrecte.
Daniel Hwang, responsable des protocoles chez stakefish, l’un des validateurs de Juno, a résumé ses pensées dans un message adressé à CoinDesk : “We f**k up big time”. Plutôt que les programmeurs qui ont collé la mauvaise adresse dans le code de la proposition 20, Hwang a déclaré que les événements de cette semaine étaient “plus la faute des validateurs” qui ont finalement exécuté ce code.
no sugarcoating it.
Validators must be responsible for the code they run.
Today was a sobering reminder of the need for standard operating procedures and diligence when running infra for our networks. Incoming standards.
We’ll do better. Thank you for sticking with us.
— Daniel Hwang (🌳,🌳) (@danhwang88) May 6, 2022
Traduction : “Les développeurs peuvent se tromper… mais en fin de compte, il devrait y avoir des hypothèses de confiance sur lesquelles on ne peut pas se fier”, a déclaré Hwang. “Les validateurs doivent faire des recherches eux-mêmes afin de vérifier réellement le code que nous exécutons et faisons fonctionner.”
Alors que faire maintenant pour Juno ?
L’équipe de développeurs de Juno et la communauté de la chaîne ont toujours l’intention de transférer les fonds d’Asano dans le contrat Unity contrôlé par la communauté plutôt que de les “brûler” involontairement comme Asano déclare que cela pourrait arriver. (Asano a précédemment déclaré qu’il poursuivrait les validateurs de Juno si ses fonds étaient jetés au lieu d’aller à ses supposés “investisseurs”).
Pour l’instant, le plan consiste à déplacer les fonds vers l’adresse Unity via une mise à jour déjà prévue de la blockchain. Au lieu d’apporter de simples améliorations au code, cette mise à jour réécrira le grand livre de Juno afin que les fonds bloqués soient réaffectés à Unity. Une proposition de gouvernance vaguement formulée pour donner le feu vert à la mise à niveau, la proposition 21, qui a pour objectif que la mise à niveau “finalise le transfert de fonds de la proposition Unity” et réaffecte les fonds à une adresse de réserve.
La réécriture de la blockchain, et donc de ce qu’on appelle couramment le livre de compte est un évènement extrêmement rare qui ne peut se produire que si un consensus des possédants du token est atteint, et nul doute qu’il le sera puisqu’il s’agit de récupérer de la valeur sinon définitivement perdue.
Rappelons qu’un tel évènement a déjà eu lieu, et qu’il s’agit même d’un séisme historique ayant abouti… à la blockchain d’Ethereum telle qu’on la connait aujourd’hui ! Souhaitons le même succès à la blockchain Juno.