The DAO : post mortem

A Scene in the New York Morgue -- Identification of the Unknown Dead - Stanley Fox (1866)

Le tumulte du naufrage de The DAO commence à s’apaiser. Les esprits échauffés par l’affaire se sont calmés, qu’ils aient été pour ou contre le sauvetage du radeau de la Méduse. L’occasion de revenir sur les évènements à tête reposée, comme un épilogue à cette affaire. L’occasion également, pour ceux qui ne l’auraient pas déjà fait, de récupérer leurs ethers, sur la chaine principale (ETH) comme sur la chaine Ethereum Classic (ETC).

Au commencement, un projet fou, porté par une équipe de passionnés

Le projet The DAO a vu le jour au sein de la société Slock.it. Inspirée d’écrits plus anciens, à commencer par ceux de Vitalik Buterin sur le sujet, la structure décentralisée et gouvernée par la multitude devait être l’outil de financement par excellence de projets développés sur la blockchain Ethereum. Sans revenir en détails sur ses caractéristiques, qui ont été abondamment détaillées sur ce site, rappelons que les participants anonymes de The DAO, dont les règles étaient régies par des smart-contracts, pouvaient voter sur des projets pour leur accorder ou non un financement, la mise en œuvre pratique de ces financements devant être assurée par une structure juridique dédiée localisée en Suisse, DAO.LINK.

Le projet lancé par la petite startup allemande a rapidement motivé une communauté très importante. Le code de The DAO a été dévoilé publiquement sur le github de Slock.it et développé pendant de nombreux mois avec la contribution de la communauté, qui comptait à l’époque plus de 4 000 membres (sur le slack The DAO). Le code final est déployé sur la blockchain publique Ethereum en mai 2016, suscitant l’enthousiasme de toute la communauté Ethereum et au-delà : nombreux sont les néophytes qui sont emballés par le concept d’une organisation à la gouvernance distribuée. La presse se fait rapidement écho de l’initiative, car The DAO collecte rapidement près de 50 millions de dollars, qui se rapprocheront des 150 millions à la fin de la période de création. Bref, The DAO semblait un succès, et tout semblait aller pour le mieux, jusqu’au funeste 17 juin 2016….

Plus d’informations sur The DAO :

–        Déploiement de The DAO, « mère de toute les DAO » (qui déjà mettait en garde : « Il faut cependant garder à l’esprit que Slock.it, The DAO et même la blockchain Ethereum sont tous des projets en développement actif et qu’aucun d’entre eux n’a encore réellement fait ses preuves… » 

–        Quelques réflexions sur la DAO et sa valorisation

–        DAO Kézako – Comprendre l’Organisation Autonome Décentralisée

Panique sur Ethereum : le piratage de The DAO le 17 juin 2016…

Le 17 juin vers 9h, heure de Paris, profitant d’une faille dans le code gérant la sortie des fonds en ether de The DAO, un pirate parvient à siphonner 3 millions d’unités de cette cryptomonnaie (environ 50 millions de dollars au cours du jour) hors de l’organisation autonome pour les injecter dans un autre contrat autonome ; dont il pourra prendre l’entier contrôle 35 jours plus tard. The DAO est piraté, et le projet mis en grave danger.

C’est un séisme dans l’écosystème Ethereum : plus qu’une perte financière, c’est surtout une grande désillusion et une prise de conscience collective de la grande surface d’attaque d’Ethereum (comprendre : le nombre de failles exploitables) et de l’absolue nécessité de sécuriser le code informatique des smart-contracts. La confiance dans ce code, sur laquelle repose le projet entier, n’est possible que si celui-ci se comporte toujours comme prévu… Ceci nécessite de gros efforts tournés vers la sécurité, qui n’ont pas encore été déployés à l’époque.

Le piratage est un brutal rappel qu’un code informatique comporte des bugs et des failles, dont les conséquences peuvent être dramatiques lorsque ledit code gère des conséquentes quantités d’argent. Et que dire des projets comme celui de la start-up Slock.it, impliquant confier la gestion d’une serrure de porte à un smart-contract ? C’est une certaine naïveté de la communauté Ethereum, dont le projet enthousiasmant a attiré beaucoup de novices, qui vole en éclats face à cette première déconvenue.

Le délai de 35 jours avant que le pirate ne puisse accéder aux fonds laisse le temps cependant à la communauté de réagir… et de se déchirer. Deux camps se forment : ceux qui souhaitent corriger pour le futur les effets du piratage en effectuant un fork (une duplication avec modification) de la blockchain Ethereum, et ceux qui estiment qu’un tel fork est contraire aux principes régissant les blockchains, parmi lesquels l’immutabilité de la chaine occupe une belle place. Ils préfèrent laisser le pirate s’enfuir avec ses 3 millions d’ethers que remettre en cause ce principe. Sur ce sujet débat pour/contre le fork, un article détaillé a été rédigé, tandis qu’un autre article de Stéphane Bortzmeyer nous explique que l’immuabilité des chaines de blocs est un mirage.

Après quelques péripéties, le code du fork est finalement proposé par les développeurs de la Fondation. Un vote est organisé pour voter au prorata de ses ethers et un autre vote au sein des pools de minage au prorata de son hashrate. Le premier aboutit à 97% de vote pour et le résultat du second apparaîtra réellement au bloc de la fork.

Le 20 juillet, date prévue pour la création de la nouvelle chaîne, 85% des mineurs suivent le vote de la communauté. Les 15% restant rejoignent progressivement ce choix à l’exception d’une minorité qui souhaite rester sur la chaîne non-forkée.

…et la division de la communauté

A l’heure due, ce qui devait arriver arriva : la blockchain Ethereum a été divisée. Le 23 juillet, contre toute attente, la plateforme d’échange Poloniex décide de lister la cryptomonnaie de la chaine minoritaire, baptisée  Ethereum Classic (ETC), ce qui entraîne un vaste mouvement de spéculation. La part des mineurs qui soutiennent ETC suit fidèlement le rapport des valorisation entre ETH et ETC. L’ancienne chaîne, non-forkée, dans laquelle le hacker détient 3 millions d’ETC survit donc. Un nouveau subreddit est créé (/r/EthereumClassic), un site internet dédié (https://ethereumclassic.github.io/) reposant tout entiers sur l’idée que l’immutabilité des balances de cryptomonnaies sur la chaîne de blocs est un concept qui ne souffre d’aucune exception et que le fork représente un précédent trop dangereux pour être mis en oeuvre.

En parallèle, le fork s’effectue sans encombres sur la chaîne principale et 85-90 % des mineurs maintiennent celles-ci. Dans cette chaîne, les conséquences du hack ont été annulées pour le futur : à partir du bloc du fork (qui a été miné en juillet 2016), les ethers qui étaient détenus dans des contrats The DAO sont transférés d’autorité par les mineurs dans un simple contrat de retrait permettant aux détenteurs de DAO-tokens de les récupérer. Le contrat The DAO est laissé vide, témoin de l’événement.

Pendant quelques semaines, le débat fait rage entre partisans d’Ethereum et d’Ethereum Classic sur tous les canaux de communication possible ; un manifeste d’Ethereum Classic est rédigé, certains bitcoiners qui regardaient Ethereum avec mépris se prennent soudainement de passion pour sa version Classic… Rapidement, le tumulte s’essouffle cependant : la Fondation indique qu’elle ne suivra que la chaîne principale ; la quasi-totalité des développeurs de dApps suivent ; la chaîne ETC ne dispose d’aucune communauté réelle et apparaît surtout comme un support de spéculation, le cours de l’ETC s’effondre. La DEVCON2 arrive ; et avec elle de nouveaux défis… La page The DAO est progressivement tournée, et l’écosystème Ethereum se tourne vers l’avenir. Comme symbole, l’un des auteurs du code de TheDAO conclura sa présentation à la DEVCON2 par un émouvant message de mea culpa et remerciement à la communauté.

Six mois après le fork, quel bilan ?

Aujourd’hui, de nombreuses leçons ont été tirées de ces événements, par la Fondation, les acteurs de l’écosystème blockchain en général et l’ensemble de la communauté Ethereum en particulier. Voici les plus évidentes.

  • Il est nécessaire d’améliorer la sécurité des smart-contracts, essentielle à la création d’un écosystème viable de dApps (applications décentralisées) et plus largement de smart-contracts. En pratique, il faut d’abord que les contrats soient a minima testés, restestés, validés… c’est notamment l’objet du projet OpenZepplin. La sécurité passe aussi par une meilleure définition du langage Solidity (de nombreux efforts sont réalisés en ce sens depuis et le langage est mis à jour régulièrement), voire le développement de langages plus spécifiquement conçus pour la création de smart contracts et dont la vérification est plus simple (voir notamment le projet expérimental Viper de Vitalik Buterin). Le problème de la sécurité se pose cependant à un niveau plus fondamental, à savoir l’Ethereum Virtual Machine, et de nombreuses initiatives ont également été lancées sur ce front (voir le projet EVM2). Enfin des outils dits de « Vérification Formelle » sont développés pour analyser automatiquement les smart contracts et repérer leurs utilisations potentiellement frauduleuses ou imprévues.
  • L’immuabilité absolue des chaines de blocs est un mirage. Elle est techniquement impossible : les personnes qui exécutent le protocole restent des humains qui peuvent en modifier les règles par consensus. Ils ont le pouvoir de le faire, et ils le feront lorsqu’ils estimerons que c’est nécessaire. Ils l’ont fait pour The DAO, ils pourront le faire dans d’autres circonstances similaires ; on peut notamment imaginer un bug sévère provoquant l’arrêt de la blockchain : il semble improbable que ce bug ne soit pas corrigé par consensus même si cela implique d’altérer fortement la structure de celle-ci. C’est une réalité à laquelle les idéologues les plus radicaux de la blockchain ne peuvent échapper. En embrassant cette réalité sans grande hésitation, la communauté Ethereum a montré qu’elle faisait preuve, a cet égard, d’un pragmatisme efficace, éloigné des idéologies radicales qui gouvernent parfois les communautés blockchain.
  • La gouvernance d’Ethereum doit être clarifiée et in fine modifiée. Le projet Ethereum s’est révélé très centralisé et reposant, en réalité, sur la bonne volonté de quelques individus. Si la communauté a décidé ensemble de suivre (ou de ne pas suivre pour Ethereum Classic) la démarche de fork initiée par la Fondation, l’affaire a mis en lumière l’importance de la communication et la nécessité d’ouvrir à long terme la gouvernance de la blockchain pour ce type de décisions. C’est une chose de confier à la Fondation la recherche fondamentale sur la technologie et la mise en oeuvre des grands progrès techniques à venir. C’est une autre qu’elle soit en pratique à l’initiative de l’ensemble de décisions de gestion affectant la chaîne majoritaire, y compris celles touchant aux ethers portés au crédits de certains comptes déterminés… Au delà du risque juridique qu’un tel pouvoir ferait peser sur les membres de la Fondation s’il était confirmé ou formalisé, il ne semble pas sain que le développement du projet Ethereum demeure éternellement aux mains de la Fondation. Tout comme Satoshi Nakamoto a fini par s’effacer dans le projet Bitcoin, on attendra de Vitalik Buterin et de la Fondation se tournent vers d’autres projets une fois leur vision initiale, telle que décrite dans le Livre Blanc, réalisée. D’ici là, il semble inévitable que le projet soit tout entier porté par cette structure sur laquelle les financeur du projet ont porté leur confiance ; mais celle-ci devrait s’abstenir à l’avenir de toute intervention directe dans une affaire de cette ampleur, pour le bien de tous les acteurs concernés, et pour éviter dans la mesure du possible une autre division de la grande communauté qui s’est formée autour du projet.
  • Les organisation autonomes décentralisées provoquent l’enthousiasme. La création d’un fonds d’investissement décentralisé a provoqué une vague d’enthousiasme bien au delà de la communauté crypto ou blockchain, et fait connaitre Ethereum à des cercles non-initiés. L’idée d’un fonds à la gestion démocratique visant à développer un écosystème d’applications sur la blockchain Ethereum, qui pouvait sembler très idéaliste et n’intéresser qu’un nombre très restreint d’acteurs, a passionné pour l’expérience sociale qu’elle représentait. Le fait que cette organisation évolue indépendamment d’un état ou d’une personne privée a aussi été un facteur d’intérêt particulier. Ceci est très révélateur d’une envie d’essayer des autres modèles, aux modalités nouvelles même si non-éprouvés. Aux risques et périls des premiers à se lancer dans l’aventure, mais ces risques ont généralement été bien compris. Il semble en tout cas que l’idée d’une DAO ne soit pas morte ; d’autres projets similaires sont en cours de développement. Citons notamment CharityDAO, dont l’objectif est de rendre la collecte et l’utilisation de fonds par les organismes de charité plus transparents.

Le naufrage de The DAO restera l’un des événements fondateurs d’Ethereum. Première crise d’ampleur, à la fois technique et communautaire, elle a permis de définir plus clairement les valeurs portées par la Fondation et ce qu’elle était prête à risquer pour les réaliser. Elle a permis aux nouveaux initiés à la blockchain d’être confrontés à la dure réalité de la politique et à la dure loi du code. Cet événement devrait avoir, à long terme, un effet positif : la blockchain reste un système antifragile, qui se nourrit de ses échecs pour mieux muter et s’améliorer. Dans ce domaine comme dans tant d’autres, le meilleur est sans aucun doute à venir.


Comment récupérer mes ETH et mes ETC ? Si vous avez participé à la création de The DAO et n’avez pas encore récupéré vos ethers ou vos ethers classic, voici la marche à suivre aujourd’hui :

1. Rendez vous sur la page de la v3.3.7 de MyEtherWallet

2. Cliquer sur « dist-v3.3.7.zip« 

3. Extraire l’archive (automatique sous macOS, sous Windows suivre le guide, sous Linux vous savez forcément comment faire et vous avez déjà récupéré vos tokens de toute façon)

4. Après avoir extrait, rendez vous dans le dossier cible et double-cliquez sur « index.html »

5. Aller sur la page « The DAO » en modifiant le chemin dans la barre d’adresse de votre navigateur ; il faut y écrire […]/dist-v3.3.7/index.html#the-dao). Si l’interface ne s’affiche pas immédiatement, rechargez la page (cmd-r sur macOS ou F5 sous Windows, sous Linux… cf. plus haut).

6. Insérer les informations relatives à votre compte puis cliquez sur le bouton rouge dans chaque section (Withdraw DAO for ETC, Withdraw DAO for ETH et Withdraw extraBalance).

Si tout va bien, vous allez récupérer à la fois 100 % de vos ETH et environ 70 % de l’équivalent en ETC. Si tout ne va pas bien, commentez ci-dessous.

Simon Polrot

Avocat. Fondateur du site. Passionné par le projet Ethereum, je m'intéresse plus particulièrement à ses impacts sur la société contemporaine, et aux nouvelles pratiques juridiques qui en découleront.

6 Réponses

  1. f4b1 dit :

    Je n’avais pas vraiment compris tout l’ampleur de cette affaire, merci pour cette explication détaillé sur DAO et Ethereum !

  2. Jean-yves dit :

    Article clair et détaillé. Je ne comprends pas l’utilisation du néologisme antifragile, quelqu’un peut-il m’éclairer ?

  3. Jean-yves dit :

    Compris, merci, j’en apprend tout les jours.

  4. Jcga dit :

    Vraiment sympa à lire, grand merci 🙂

  5. Jcga dit :

    Bsoir j’ai bien suivi votre tuto qui m’ a enfin poussé à faire la manip.
    Hier j’ai reçu de MyEtherWallet 0.01 ETH sur mon compte afin de payer le « gas ».
    Pour les ETC j’ai réussi mais pour les ETH, j’ai reçu par deux fois en suivant la transaction : « Warning! Error encountered during contract execution [Bad jump destination]  » avec un montant de 0.0041 ETH, je ne suis pas le seul dans ce cas si je regarde les autres transactions. Que puis-je faire?
    Hier au 1er essai j’ai vraiment cru voir les ETH crédités pour ensuite disparaître. Merci bien pour votre aide, je suis un peu inquiet 🙂

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

En continuant à utiliser le site, vous acceptez l’utilisation des cookies. Plus d’informations

Les paramètres des cookies sur ce site sont définis sur « accepter les cookies » pour vous offrir la meilleure expérience de navigation possible. Si vous continuez à utiliser ce site sans changer vos paramètres de cookies ou si vous cliquez sur "Accepter" ci-dessous, vous consentez à cela.

Fermer