Smart contracts, dumb code ou quand le blockchain déraille

Michel Jaccard, avocat, spécialiste du droit des technologies, Bilan.ch  14 Juillet 2016

Smart contracts, dumb code ou quand le blockchain déraille

Le monde de la finance est en ébullition. Et pas seulement parce que nos amis anglais ont pris des décisions qui ébranlent les marchés. Les têtes pensantes de l’industrie semblent inquiètes : face à la déferlante des technologies de rupture (disruptive technologies), leurs jours seraient comptés. Si la mention des fintech ne suffit plus, à elle seule, à effrayer, essayez de tester les nerfs de vos amis banquiers en parlant de blockchain et de smart contracts.

Nous n’en sommes plus à parler de bitcoin, cette monnaie virtuelle volatile apparue il y a quelques années, très médiatisée et qui a attiré des investissements colossaux en capital-risque, surtout outre-Atlantique. Bitcoin, ce n’était que le début. Le caractère radical de l’innovation dans le domaine de la finance, celui qui est susceptible de bouleverser l’industrie, se rapporte à la technologie sur laquelle se base bitcoin, à savoir le blockchain ou la chaîne de blocs.

Procédés cryptographiques

Il serait illusoire de chercher à expliquer précisément dans ce billet le blockchain. De nombreuses descriptions de cette technologie et de son fonctionnement  sont disponibles en ligne – avec toute une palette d’approches bien sûr : la version technique, le « blockchain expliqué aux enfants de 5 ans » (bonne chance…), des infographies subtiles ou encore des vidéos explicatives comme celle, enthousiaste sinon prophétique, réalisée récemment par le World Economic Forum.

Je me limiterai donc à décrire le blockchain comme une technologie qui permet, par l’emploi de procédés cryptographiques et dans le strict cadre fixé par un protocole de programmation défini, de transférer des informations d’une personne (ou d’une machine) à une autre, et de faire valider ledit transfert par une communauté de personnes (ou de machines) appliquant cette technologie et respectant les protocoles agréés. En fonction du protocole spécifique applicable, les informations transférées peuvent être des monnaies virtuelles, mais aussi toutes les informations qui peuvent avoir une valeur pour le correspondant, ce qu’on nomme de façon générique des « actifs numériques » (digital assets), y compris des instructions pour effectuer des opérations simples (payer, transférer un titre, délivrer un certificat, etc…).

On parle dans ce cas de contrats intelligents (smart contracts), en ce sens que leur exécution est automatique, sans qu’une intervention humaine soit nécessaire. Pour être clair, il s’agit donc plus d’un code informatique qui s’exécute automatiquement que de véritables contrats intelligemment négociés.

Concrètement, Alice peut transférer des créances à Bob (dans le monde de la cryptographie, pour une raison que j’ignore, ce sont toujours Alice et Bob qui cherchent à communiquer…) en envoyant, sous forme cryptée, l’ensemble des informations de la transaction à travers le réseau, chacun des membres de la communauté pouvant en vérifier l’authenticité. Ceux qui le font, les fameux « mineurs », s’y emploient en appliquant des algorithmes cryptographiques. Ils agissent en général non pas par altruisme mais par appât du gain, la plupart des applications issues du blockchain (dont bitcoin) prévoyant une rémunération des mineurs qui résolvent les premiers les équations de vérification.

Les transactions authentifiées sont ensuite ajoutées, par blocs, à une chaîne, le blockchain, un fichier qui « pèse » aujourd’hui 70 GB (s’agissant de bitcoin) et qui n’est autre qu’un livre de comptes de toutes les transactions vérifiées intervenues dans la communauté depuis la première transaction. Ce registre est en général public – on peut par exemple, pour le bitcoin, visualiser presque en temps réels les échanges qui interviennent et l’ajout de blocs à la chaîne.

Les avantages d’une telle technologie sont multiples : transparence, résilience et confiance pour citer les principaux.

Le code est la loi

Notons que la transparence est somme toute assez relative, puisque le registre ne contient pas l’identité des intervenants, sans qu’un anonymat total ne puisse pourtant être garanti. La résilience, elle, découle du caractère incrémental de la chaîne de blocs, qui ne peut être manipulée ou modifiée sans laisser de trace. Quant à la confiance, elle résulte de l’écosystème lui-même, la communauté étant aux commandes et personne n’étant en mesure de changer les règles pour les imposer aux autres, ou de tricher. Tout le monde est soumis aux mêmes règles, celles qui permettent au système de fonctionner et aux smart contracts d’exécuter automatiquement leurs instructions, sans interférence humaine (et donc faillible). Selon une expression bien établie aujourd’hui, le code est la loi.

Le blockchain en est à ses balbutiements – vous admettrez cependant que la technologie est séduisante et les applications possibles époustouflantes. C’est pourquoi certains projets liés au blockchain, sans qu’ils aient été forcément bien pensés et conçus, connaissent d’ores et déjà un succès fou. C’est le cas par exemple de The DAO (pour Decentralized Autonomous Organization), qui s’appuie sur la plateforme Ethereum (parfois vue comme un bitcoin 2.0).

The DAO s’inscrit dans la droite ligne de la philosophie du blockchain. L’idée est de lancer un fonds d’investissement décentralisé et démocratique, qui ne pourrait être manipulé par une minorité : ce sont ceux qui financent (par des ether) the DAO qui prennent les décisions d’investissement ; chacun peut se retirer (avec un effet décalé de 28 jours) et toucher les gains de son investissement. Le tout est géré par des smart contracts, sans intervention humaine aucune. Dès son lancement, the DAO a connu un succès tel qu’il a été doté de l’équivalent en ether de 150 millions USD.

Comment rivaliser si vous êtes un banquier ou un financier ? The DAO, c’était le coup de grâce annoncé… Jusqu’au 17 juin dernier, lorsqu’un petit malin (en fait, il semble que ce soit un programmeur hors pair) a trouvé le moyen d’exploiter une faille dans le code, lui permettant de se faire créditer plusieurs fois sa mise, par le biais des fameux contrats intelligents que personne ne peut rompre. Evidemment, vu le caractère public du blockchain en question, le détournement n’est pas passé inaperçu, mais que voulez-vous faire ? Pas de tribunal qui peut être saisi de mesures conservatoires, pas de clause du contrat qui annule la transaction si elle est frauduleuse. Or, le code est la loi. En quelques heures, ce sont 50’000’000 USD (en ether) qui ont passé entre les mains du « hacker ».  Je maintiens à dessein les guillemets, car c’est bien là tout le problème.

Techniquement, il n’y a pas eu de vol de données ou d’ether, c’est une erreur de programmation qui est à l’origine de cette fuite de capitaux – pour ceux que cela intéresse, je les invite à consulter la description technique de ce qui est arrivé. Celui qui s’en est pris à the DAO est certes un profiteur, mais il n’a semble-t-il rien fait d’illégal. Il va même, le lendemain de son exploit, adresser une lettre ouverte à la communauté – je vous encourage à la lire – dans laquelle il revendique son bon droit (en précisant qu’il a consulté des avocats, ce qui semble-t-il est encore un gage de sérieux dans le monde du blockchain…), menace de poursuites légales ceux qui l’empêcheraient de collecter ses ether à l’issue du délai de quarantaine de 28 jours prévu par le smart contract lui-même, remercie the DAO pour le gain et souhaite bonne chance à la communauté.

Les règles n’ont pas été violées

Il y a évidemment beaucoup d’ironie et de mauvaise foi dans ce texte, mais néanmoins quelques éléments valables. Les règles fixées par la communauté dans le code n’ont pas été violées. L’ « attaquant » rappelle que c’est le code de the DAO qui seul fait foi s’agissant des obligations juridiques des parties prenantes au système, et qu’il ne peut être modifié unilatéralement. Si la communauté cherche a posteriori à modifier les règles présentées comme inviolables et immuables, c’est bien la preuve que l’humain reste aux commandes – avec tous les travers que le blockchain voulait éviter : appropriation et contrôle, gouvernance douteuse, manipulation et abus, absence de recherche du bien commun, censure et conflits d’intérêts, …

Que faire ?

Tous ceux qui comptent dans l’écosystème Ethereum se sont mobilisés. Même les maîtres à penser de la communauté Bitcoin se sont exprimés (révélant une certaine rivalité – sentiment bien humain, étranger aux machines, entre les différents courants). Quelques jours déjà après l’attaque, les options ont été discutées :

1. Exploiter la même faille du code, cette fois-ci au détriment de l’attaquant, ce qui est possible puisque les ether qui lui ont été transférés restent sous le contrôle des mêmes « smart contracts ». Cela a été tenté pendant quelques jours semble-t-il, réduisant les pertes – mais rendant ainsi certains membres de la communauté complices de l’attaque, dont l’illégalité est alors plus difficile à démontrer.

2. Procéder à une soft fork : il s’agirait de convaincre une majorité des mineurs de ne pas vérifier les transactions émanant ou impliquant les ether sur lesquels l’attaquant a mis la main, lorsqu’il cherchera à les échanger sur le blockchain. Du coup, la somme détournée ne pourrait être recyclée dans le système, et deviendrait inutile. Plusieurs problèmes sont cependant survenus : cela équivaut à jouer au chat et à la souris sur une longue période, les mineurs principaux doivent agir de façon disciplinée, on ne peut exclure quelques renégats, sachant que l’intérêt de la plupart d’entre eux est financier, et qu’ils sont rémunérés en validant des transactions, donc pourquoi se priver de le faire en l’espèce, sachant par ailleurs que l’attaquant a promis des récompenses importantes aux mineurs qui se rangeraient de son côté ? En fin de compte, un nouveau « bug » dans la programmation du protocole a été identifié en cas de soft fork, si bien que ce n’est aujourd’hui plus une option.

3. Ne rien faire du tout. C’est la moins mauvaise des solutions, car la seule qui respecte les principes et la philosophie de la fondation Ethereum et de the DAO. Ceux qui ont écrit le code (comme les législateurs qui édictent des lois permettant à des petits malins de profiter du système) doivent être blâmés. Smart contracts certes, mais dumb code, selon un excellent article paru juste après l’attaque. Il faut vivre avec les conséquences (pertes financières) mais respecter les principes (pour assurer un avenir à l’ether et la confiance du monde dans d’autres projets similaires à the DAO).

4. La dernière possibilité est de procéder à un hard fork, autrement dit, déchirer les pages du livre de compte postérieures au 16 juin, déclarer hors la loi le lambeau de blockchain qui pourrait être généré par le biais de smart contracts impliquant l’attaquant qui, tel un bâtard, perd tous ses droits non pas en raison de son sang (son childDAO est bien d’ascendance légitime) mais en raison de règles édictées après sa naissance. Ce serait une violation crasse des principes de décentralisation et d’immuabilité du code revendiqués par les promoteurs de the DAO, mais c’est pourtant ce que la communauté a décidé de faire, à une écrasante majorité, même si les difficultés techniques paraissent nombreuses, notamment s’agissant de la nécessité de couper de façon nette et décisive le lien de filiation au sein du blockchain de façon quasi simultanée au niveau mondial, à l’issue de la période de quarantaine, à savoir dans les prochains jours.

Restera alors aux avocats (humains, s’entend), se faisant payer en espèces sonnantes et trébuchantes j’imagine, à traîner devant les tribunaux les auteurs du code défectueux pour tenter de récupérer quelques millions d’ether pour les victimes d’une fraude massive… Cherchez l’innovation !

Source : Smart contracts, dumb code ou quand le blockchain déraille

A propos de l'auteur

Publications Connexes

Faire un Commentaire

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