Vendredi 17 juin 2016, 3,6 millions d’Ethers représentant à cette date plus de 50 millions d’euros ont été détournés de TheDAO, « smart-contract » le plus attendu et le mieux financé de l’histoire, déployé sur la Blockchain d’Ethereum. Retour sur les faits, analyse et perspectives à travers une série d’articles.
Afin de ne pas noyer les lecteurs qui ne seraient pas déjà familiers avec le crypto-jargon et le concept de TheDAO, j’ai écrit cette première partie en guise de session de rattrapage. Cette partie se veut la plus factuelle possible.
En support de cette introduction, je recommande vivement la lecture du communiqué du Cercle du Coin sur l’attaque de la DAO.
Dans une seconde partie, je présenterai les différentes solutions de sortie de crise qui ont été proposées et leurs implications probables, Soft Fork, Hard Fork, Laissez Faire.
Enfin dans un dernier article il s’agira de tirer les leçons qui s’imposent et d’essayer de prendre un peu de recul, en suivant l’adage “ce qui ne nous tue pas, nous rend plus fort”.
Partie 1 : état des lieux et session de rattrapage pour les crypto-débutants
Qu’est-ce qu’une Blockchain (ouverte):
C’est une base de données transparente, sécurisée et mise à jour de façon conjointe par des milliers de participants répartis tout autour du globe. L’intérêt d’un tel système est d’offrir un outil de gestion (monétaire, contractuel etc.) extrêmement fiable, décentralisé et ouvert à tous. Ce système comptable a été défini et mis en pratique pour la première fois grâce au protocole Bitcoin. Ainsi, la Blockchain de Bitcoin est la première Blockchain de l’histoire, c’est aussi celle qui rassemble la plus grosse communauté (plusieurs millions de personnes[1]) et qui sécurise le plus gros volume d’actifs (plus de 9 milliards de dollars présentement).
Qu’est-ce qu’Ethereum :
Très succinctement, à l’image de Bitcoin c’est un réseau pair à pair et open-source qui permet à chacun d’effectuer des transferts de valeur ou encore d’effectuer des calculs (plus complexes que sur le réseau Bitcoin) et qui permet de faire tourner des programmes, souvent appelés « smart-contracts ».
Le réseau Ethereum, à l’image de Bitcoin, fonctionne autour d’une comptabilité par Blockchain transparente et distribuée. Pour plus de détail à propos d’Ethereum je renvoie les curieux vers cet article très pédagogique de Rick Seeger.
Qu’est-ce qu’un « Smart-Contract » :
Appliqué à notre cas d’espèce, un « smart-contract » ou encore « contrat intelligent » est un programme informatique déployé sur une Blockchain (celle d’Ethereum dans le cas de TheDAO)[2].
A l’image d’un programme classique, un « smart-contract » exécute automatiquement le set d’instructions qu’il contient, c’est l’aspect standard du « smart-contract ». L’aspect révolutionnaire tient au fait qu’une fois déployé sur une Blockchain, le « smart-contract » ne peut plus être modifié, ni arrêté, pas même par ceux qui l’ont créé[3]! Le programme s’exécute alors de façon automatique et autonome suivant les instructions initiales.
L’idée et tout l’intérêt du concept est de disposer d’un outil informatique qui offre la certitude qu’une fois conclu, un accord ne pourra pas être rompu. Un pari, une promesse, effectués à travers un smart-contract seront exécutés même si leurs auteurs changent d’avis par la suite. L’idéal étant de garantir la force obligatoire des contrats non plus par le droit, mais par le code informatique, pensée souvent résumée par le slogan « Code is Law ». De façon plus nuancée, il s’agit d’essayer d’offrir un outil de gestion des conflits, automatisé, rapide et prévisible en guise d’alternative aux lourdes procédures juridiques traditionnelles.
Qu’est-ce que TheDAO :
DAO est l’acronyme d’« Organisation Autonome Décentralisée». Derrière ce vocabulaire un peu pompeux, TheDAO n’est rien d’autre qu’un « smart-contract », à savoir, comme nous venons de le voir, un programme informatique déployé sur la Blockchain d’Ethereum qui exécute de façon automatique et irrévocable l’ensemble des règles qui le composent.
Le narratif :
L’idée derrière TheDAO est de fournir un outil d’investissement collectif ouvert à tous, administré par un smart-contract public et impartial. En quelque sorte TheDAO devait être une plateforme de financement participatif autonome et sans intermédiaire déployée sur le réseau Ethereum.
Pour participer à cette aventure, pendant la levée de fonds initiale de la DAO, il suffisait d’envoyer des Ethers (la monnaie du réseau Ethereum) à l’adresse du smart-contract TheDAO (0xbb9bc244d798123fde783fcc1c72d3bb8c189413). A la suite de quoi ces Ethers étaient bloqués sur le smart-contract TheDAO conjointement avec ceux des autres participants en attendant d’être réinvestis dans des projets, conformément aux règles publiquement inscrites dans ce smart-contract et admises de tous. En contrepartie du versement des Ethers, chaque participant à la DAO reçoit des DAO Tokens à hauteur de sa participation. Ce sont ces DAO Tokens qui confèrent des droits de vote permettant à tous les investisseurs de s’exprimer pour ou contre le financement d’un projet, ainsi que des droits à des dividendes le cas échéant. En outre, chaque participant à TheDAO était libre de soumettre un projet à financer à la communauté, et surtout chacun devait être libre de retirer ses fonds du véhicule d’investissement collectif à tout moment en suivant une procédure nommée « split ». Nous y reviendrons.
Je n’entre pas davantage dans les détails du projet (quorum de participation, rewards, règles de vote etc.).[4] L’essentiel est de savoir que ce concept de plateforme de financement participatif administrée par un smart-contract Ethereum a soulevé beaucoup d’espoir et un incroyable engouement.
En à peine un mois le projet a levé plus de 12 millions d’Ethers soit quasiment 14% de la quantité totale en circulation équivalant à plus de 150 millions de dollars (à la date de clôture de la levée de fonds, le 28 Mai 2016) ! Fort de ces chiffres TheDAO aura été la campagne de crowfunding la plus importante de l’histoire !
Retour à la réalité : Le Hack !
Vendredi 17 juin 2016, en dépit des audits de sécurité menés sur le code source de TheDAO par de nombreux développeurs de talent, dont les créateurs d’Ethereum et du langage de programmation Solidity[5] en personne (Vitalik Buterin, Gavin Wood, Alex van De Sande, Vlad Zamfir) , un hacker parvient à utiliser la fonction split inscrite dans le smart-contract afin de siphonner 3,6 millions d’Ethers de la DAO, soit environ 33% de tous les Ethers investis dans TheDAO.
A propos des détails (très) techniques de l’attaque, je renvoie ceux que les lignes de code n’effraient pas vers cet article de Peter Vessenes « Deconstructing theDAO Attack : A brief Code Tour » et aussi vers ces deux articles de Phil Dian : « Analisys of the DAO exploit » et « Chasing The DAO Attacker’s Wake ».
Voici maintenant un petit bilan de la situation.
Etat des lieux au 23/06 et précisions importantes :
- Actuellement, le Hacker ne peut pas disposer à sa guise des Ethers qu’il a détournés. Techniquement à travers la fonction split, le Hacker a réussi à drainer 3,6 millions d’Ether de la DAO collective (souvent appelée la « Main DAO »), vers une nouvelle DAO fille dont il a le contrôle, qualifiée par la communauté de « Dark DAO ». Conformément aux règles inscrites dans le smart-contract TheDAO, lors de la création d’une DAO Fille à la suite d’un Split, tous les fonds qui sont versés sur la DAO fille sont immobilisés pour une durée de 27 jours. Ces fonds ne redeviennent disponibles qu’une fois ce délai de 27 jours écoulé.
Autrement dit, depuis le 17 juin 2016, les fonds détournés par le Hacker sur la Dark DAO sont gelés et cela pour une durée de 27 jours. Passé ce délai, le Hacker pourra retirer les 3,6 millions d’Ethers de la Dark DAO vers les adresses Ethereum de son choix. Le problème, c’est que pour empêcher cette dynamique infernale, il faudrait non seulement modifier le protocole Ethereum (Soft ou Hard Fork) mais il faudrait encore qu’une large majorité des participants au réseau Ethereum (mineurs, bourses d’échanges etc.) acceptent de leur plein gré et de façon coordonnée d’appliquer ces modifications. Nous y reviendrons. - Suite à cette première attaque du 17 juin, d’autres attaques de moindre envergure répliquant le même schéma ont suivi. Face à cette menace de voir l’intégralité de la « Main DAO » siphonnée, une équipe de hackers altruistes, des “White Hats“, a choisi d’intervenir en drainant les fonds restants de la « Main DAO » vers une DAO fille dont ils ont le contrôle, désormais appelée la « White Hat DAO » ou encore la « Robin Hood DAO » !
Ces White Hats sont en contact avec l’équipe de Slock.it (à l’origine de TheDAO) et comptent parmi eux au moins un membre éminent de la fondation Ethereum, Alex Van de Sande. A travers cette action ils essaient de mettre plus de 7,6 millions d’Ethers en sécurité soit un peu plus des deux tiers du total des Ethers investis dans TheDAO. - Au final, la « Main DAO » ne contient plus rien. Tous les Ethers ont été transférés et temporairement bloqués sur des DAO filles : 3,6 millions d’Ethers, soit un tiers du total sont sur la « DarkDAO », et les deux tiers restants, soit 7,6 millions d’Ethers sont sur deux « WhiteHats DAO ».
Il est important de savoir que ces DAO filles héritent des mêmes propriétés que la Main DAO, elles sont par conséquent vulnérables aux mêmes attaques ! Pour l’instant, comme nous l’avons vu, les Ethers déposés dessus sont bloqués durant un délai de 27 jours à compter de la date de création de la DAO Fille.
A l’issue de ce délai, il est possible que nous assistions à des contre-attaques tant à l’encontre du Hacker afin d’essayer de reprendre sur lui le contrôle de la DarkDAO, que de la part du Hacker à l’encontre de la DAO des White Hats pour les mêmes raisons.
Pour résumer, à l’heure actuelle la situation est figée, mais dans une vingtaine de jours les attaques pourraient reprendre. - Soft Fork, Hard Fork, Laissez Faire, de nombreuses solutions de sortie de crise ont été proposées. Toutes ces options sont activement débattues au sein de la communauté Ethereum. Nous les présenterons et les étudierons en détail dans le prochain épisode.
- Les DAO Tokens sont toujours échangeables sur les différentes places de marché et s’évaluent actuellement aux alentours de 1 DAO pour 0,007 Ethers.
- Attention, par contre il n’est plus possible d’utiliser la fonction Split du smart-contract pour récupérer les Ethers associés à des DAO tokens. Et oui la Main DAO est vide. Alors prenez garde, si vous choisissez de Split quand même, vous perdrez vos tokens ! Don’t split !
- Le solde, l’historique des transactions et des splits, toutes ces informations relatives à TheDAO sont publiquement inscrites sur la Blockchain d’Ethereum et accessibles à cette adresse.
- En plus du site officiel de The DAO, Twitter et le réseau social Reddit (r/Ethereum et r/TheDAO) sont des endroits à connaître pour prendre le pouls de la communauté et suivre en direct l’évolution de la situation.
Conclusion 1ère partie
L’ambitieuse expérience TheDAO n’aura pas résisté longtemps à l’épreuve du réel. Il est désormais flagrant que ce smart-contract n’était pas suffisamment sûr ni bien pensé pour protéger les 150 millions de dollars qui ont été investis dessus. Au-delà de ce constat d’échec, il s’agit maintenant de déterminer une stratégie à adopter pour mettre fin à ce fiasco, tout en évitant au maximum les effets de bords indésirables. Soft Fork, Hark Fork, Laissez Faire, ces différentes solutions de sortie de crise sont actuellement vivement débattues au sein de la communauté. Nous analyserons en détail ces différentes options et leurs conséquences probables dans le prochain épisode.
En attendant, stay safe !
Commentaires