Contrat intelligent trop stupide pour fonctionner? Eh oui, cela arrive

Pour ceux et celles qui s’intéressent au concept des contrats intelligents (ou «smart contracts»), les médias rapportaient récemment une histoire intéressante illustrant les dangers du concept technologique en question avec les déboires de la cryptomonnaie YAM.

Comme on s’en souviendra, le concept du contrat intelligent implique la création (et on parle de technique ici, pas de relation entre deux parties) de règles qu’on associe à un actif intangible, comme une cryptomonnaie. Les applications potentielles sont nombreuses, mais, en pratique, pour l’instant, souvent limitées aux cryptomonnaies. Une fois la règle imbriquée (en quelque sorte) dans un système numérique, l’ordinateur est alors placé aux commandes et ceux qui veulent interagir avec l’actif en question sont alors régis par ces règles fixées au départ.

Dans le cas de YAM, un contrat intelligent avait été créé pour gérer notamment les règles touchant le consensus des usagers (comme des actionnaires de société par actions) dans un but de gouvernance de la cryptomonnaie en question. Le hic avec ce concept, c’est que si on commet une erreur au moment de programmer le contrat intelligent, il peut s’avérer ensuite impossible de corriger l’erreur. C’est ce qui s’est passé avec YAM, moins de 2 jours après son lancement, alors qu’on a découvert l’erreur suivante dans le code:

Smartcontract error

Comme c’est souvent le cas en programmation, une différence qui peut sembler mineure à un néophyte peut pourtant s’avérer catastrophique du point de vue de la fonctionnalité du programme. C’est ce qui s’est passé ici, alors que l’erreur dans le code régissant YAM (impossible à corriger une fois le contrat intelligent coulé dans le béton, pour ainsi dire) entraîne la création de trop d’unités de cette cryptomonnaie, empêchant ainsi l’atteinte du quorum requis pour prendre des décisions de consensus entre les usagers dans certaines circonstances. Bref, l’erreur a rendu YAM non viable, et la cryptomonnaie a donc avorté.

Comme quoi il n’y a pas qu’en droit qu’un mot ou une virgule de trop peut coûter cher!

Il s’agit ici d’une bonne illustration du problème que la création de règles immuables, comme ce qui se passe avec un contrat intelligent, peut avoir comme conséquences graves, même quand toutes les parties s’entendent pour dire que ce qui a été écrit ne représente pas réellement ce qu’on visait comme résultat. Avec un contrat normal (juridique), les parties s’entendent simplement pour apporter un correctif, alors qu’avec un contrat intelligent, c’est l’ordinateur qui décide, s’appuyant sur les instructions immuables du départ.

Avec ce petit problème, en une trentaine de minutes, YAM a vu sa valeur passer de 60M$+ à un beau 0$. Ouch!

On a beau appeler ce genre de dispositif un «contrat intelligent», l’intention des parties n’a que peu à y faire, puisque c’est le code qui ultimement décidera du fonctionnement du système qu’on aura ainsi créé.