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 danger 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 associent à un actif intangible, comme par exemple, 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 quelques sortes) 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égies 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 renverser 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) résulterait dans la création de trop d’unités de cette cryptomonnaie, empêchait ainsi l’atteinte d’un quorum requis pour prendre des décisions de consensus entre les usagers dans certaines circonstances. Bref, l’erreur a rendu YAM non-viable, laquelle cryptomonnaie a donc avorté.

Comme quoi, il n’y a pas qu’en droit qu’un mot ou un 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 drastiques, 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 corriger, alors qu’avec un contrat intelligent, c’est l’ordinateur qui décide, basé sur ses 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 surnommer ce genre de dispositif un «contrat intelligent», l’intention des parties n’a que peut à y faire, puisque c’est le code qui ultimement décidera du fonctionnement du système qu’on aura ainsi créé.