The DAO Hack — Le premier gros défi pour les smart contracts, les DAOs et Ethereum

Si c’est possible, c’est que c’est permis, hein?!

Rappel des faits

Après 7 mois de travail, l’équipe de Slock.it lance TheDAO, la toute première DAO. Le nom n’est pas particulièrement bien choisi, c’est un peu comme si vous créez une entreprise et vous la nommez “L’Entreprise”. Cela peut prêter à confusion surtout si vous ne savez pas ce qu’est une DAO. (voici d’ailleurs une petite présentation)

Bref. La mission de TheDAO était d’être le tout premier fond d’investissement autonome et décentralisée. Elle s’est créée en 2 étapes.

  • Durant la première phase, plus de 100 millions de dollars en éthers ont été levés en seulement 2 semaines en mai dernier auprès de plusieurs milliers de membres de la communauté Ethereum. En échange des éthers, ils deviennent des investisseurs et obtiennent des “DAO tokens”. Ces tokens vont leur permettre de voter et investir pour les projets que d’autres personnes vont soumettre à The DAO. Plus d‘un milliard de tokens ont ainsi été distribués.
  • Durant la seconde phase, tout le monde peut soumettre des projets à The DAO. A partir de ce moment là, toute personne possédant des tokens peut voter et financer les projets qu’elle souhaite proportionnellement aux tokens qu’elle possède. Les projets sélectionnés obtiennent alors les fonds en éthers.

The DAO est donc une sorte de fond d’investissement, ou plateforme de crowdfunding (complètement autonome et décentralisé) dans la mesure où les termes des contrats sont libres et fixés par les projets qui sont soumis. Chaque porteur de projet fixe ses règles.

Comme dans le cas de ce hack d’un distributeur de friandises, tout le monde peut voir à chaque instant dans l’adresse de la DAO combien d’éthers elle possède. Dans la stupeur et l’impuissance générale, le vol a eu lieu au nez et à la barbe de tous.

Malheureusement cette seconde phase n’a jamais eu lieu. Le 17 juin, un individu ayant au préalable acheté des tokens a pu exécuter le smart contract de TheDAO d’une façon inattendue.

Il faut bien comprendre que le montant levé par TheDAO (8M d’éthers soit au moment de la levée $110 M) était bloqué au sein d’une adresse contrôlée uniquement par le smart contract de TheDAO et que cette organisation n’est pas par définition contrôlée par qui que ce soit. Le seul moyen de transférer cet argent hors de l’adresse de TheDAO était d’utiliser ses tokens. Le pouvoir était donc remis de façon directe, proportionnelle et décentralisée à l’ensemble des investisseurs. En théorie, une fois le token utilisé, celui-ci n’est plus utilisable. La somme correspondante en éthers est alors transférée vers une autre adresse contrôlée par le porteur du projet (par le biais d’une autre DAO appelée child DAO).

Mais dans le cas présent, le hacker a réussi à ré-utiliser ses tokens de façon répétée ce qui lui a permis de transférer plus de 3,6 Millions d’éthers vers une autre adresse qu’il contrôle.

Transactions répétées de 258 ETH pour un total de 3,6 millions vers l’adresse du hacker: “0x304a554a310c7e546dfe434669c62820b7d83490"

Un communiqué supposé du hacker

Peu de temps après, une lettre ouverte ‘à The DAO et à la communauté Ethereum’ a été postée sur Pastebin. Bien que la signature du message n’est apparemment pas celui de l’adresse Ethereum utilisée par le hacker, les propos de son auteur sont particulièrement élaborés et pertinent au vue de la situation. Extrait:

“J’ai examiné avec attention le code de The DAO et ai décidé d’y participer après avoir vu que l’exécution d’une des fonctionnalités était récompensée par des éthers supplémentaires. J’ai fait usage de cette fonctionnalité et ai obtenu à juste titre 3,641,694 éthers, et je voudrai remercier The DAO pour cette récompense. […] Je suis déçu par ceux qui ont caractérisé l’usage intentionnel de cette fonctionnalité comme un ‘vol’. - The Attacker

Non sans un certain cynisme, ‘The Attacker' met en évidence deux problèmes clefs qui ont souvent été évoqués par la communauté et auxquels elle doit désormais en tirer les leçons et apporter une réponse appropriée.

Le vol de TheDAO n’est pas un vol

Il faut bien comprendre que dans le cas d’un smart contract, la transaction se fait dès lors qu’une personne effectue ce qui est demandé par le contrat. En d’autres termes, même si les développeurs du smart contract de TheDAO ne l’ont pas programmé dans l’intention de permettre ce vol, le hacker n’a fait qu’exécuter le smart contract, certes d’une façon inattendue. Il n’y a donc aucun bug dans un smart contract. Le hacker n’a fait qu’exploiter une exception du code de la même manière qu’une personne peut recourir à une clause particulière d’un contrat de travail. Dans les deux cas, il faut être une personne particulièrement avertie soit au niveau des rouages du smart contract, soit au niveau juridique.

Même si l’on était tenté de dire que les développeurs du smart contract sont responsables de ce hack, la réalité est que le smart contract à l’instar d’un contrat de travail est un document ‘public’ accessible par tous. La simple description textuelle de ce qu’est censé faire le contrat n’est pas le contrat. Le code EST le contrat. Ne pas savoir lire le code et s’en référer uniquement à sa description est donc extrêmement pénalisant autant pour les utilisateurs que pour le développement des DAOs.

Gouvernance de la blockchain d’Ethereum

Avec cet événement, ce n’est pas simplement les participants de TheDAO qui sont impactés, c’est la cohésion de l’ensemble de la communauté Ethereum qui est mise à l’épreuve. Doit-elle privilégier l’irréversibilité (ou plutôt devrai-je dire immutabilité) de sa blockchain ou faire preuve de solidarité envers les avant-gardistes de la DAO en la modifiant ?

Les miners d’Ethereum sont largement favorables à un “soft fork” permettant d’exclure l’adresse utilisée par le hacker. Le hacker ne pourrait pas utiliser l’argent volé. Cependant dans le cas du soft fork, l’argent ne peut pas être rendu à The DAO puis à leurs propriétaires.

Le 2nd choix marquerait un précédent, car bien que la situation soit particulièrement exceptionnelle, si Ethereum continue à se développer, de nombreuses DAOs verront le jour et des problèmes de ce type réapparaîtront probablement. Est-ce que les miners d’Ethereum vont devoir en permanence trancher sur les litiges des futurs DAOs ? Sans compter que les répercussions notamment légales de ce que l’on appelle un soft fork (exclure l’adresse du hacker) ou un hard fork (faire un retour en arrière et rembourser les investisseurs) sont difficiles à anticiper.

Un hangout modéré par Andreas M. Antonopoulos particulièrement instructif sur cet événement.

--

--

JAK TRAN
Bitcoin, Ethereum, DAOs, smart contracts pour les nuls

#android #collectiveintelligence #Bitcoin #Ethereum #blockchains #smartcontracts