De l’argent pour rien avec des contrats intelligents

9 Sep 2019

Êtes-vous intéressé par les contrats intelligents ? Savez-vous ce qu’est le dépassement d’entier ? En fait, le dépassement d’entier est un problème provenant du domaine de la programmation, mais un contrat intelligent est essentiellement un programme, vous voudrez donc peut-être comprendre de quoi il s’agit.

En d’autres termes, si un entier non signé est stocké dans une seule cellule de mémoire d’un octet, il ne peut prendre que les valeurs comprises entre 0 et 255. Cela signifie que si aucune autre condition n’est spécifiée, 255 + 1 = 0 ; plus inquiétant, 0 – 1 = 255. C’est ainsi que la plupart des processeurs modernes traitent ces données.

Dans de nombreux langages de programmation modernes, le programme lui-même contrôle si un débordement s’est produit pendant les opérations arithmétiques. Si c’est le cas, il y a de fortes chances pour que ce ne soit pas ce que le programmeur cherchait à faire, il est donc préférable d’interrompre le programme et de s’assurer qu’il ne causera pas de bugs plus tard.

Qu’est-ce que les contrats intelligents ont à voir avec tout cela ?

Un tel contrôle n’est pas prévu dans les contrats intelligents pour Ethereum lors du traitement d’argent. Ce qui veut dire que si vous n’avez aucun jeton et que vous en envoyez un à un ami, vous recevrez un quintillion de jetons. Évidemment, le programme doit être interrompu sur-le-champ et la transaction incorrecte annulée.

Pourquoi les développeurs de l’Ethereum mettraient ainsi en œuvre leur arithmétique est un mystère. Mais pour que les règles universelles de mathématiques humaines s’appliquent aux contrats intelligents, chaque programmeur de contrats intelligents doit ajouter plus de 100 lignes de code contenant les fonctions normales d’addition, de multiplication, etc.

Sinon, avec un quintillion crédité sur leur compte, le ciel est la limite. Un escroc pourrait entrer dans un échange de cryptomonnaie et acheter tous les bitcoins ou l’éther qu’il veut. A n’importe quel prix.

Ce scénario n’est pas purement théorique ; il s’est en réalité produit un certain nombre de fois avec plusieurs types de devises. Habituellement, nous apprenons l’existence du problème du code après que l’agresseur ait réussi son tour et qu’il ait disparu les poches pleines. Mais même après cela, rien ne peut être fait : les contrats intelligents sont gravés dans la pierre, ils ne peuvent être modifiés ou corrigés.

Débordement et bitcoin

En vérité, le problème du débordement d’entiers ne se limite pas à l’éthéréum. Bien avant, Bitcoin avait le même problème.

Le débordement d’entiers a fait que deux portefeuilles Bitcoin se sont retrouvés avec 184 milliards de bitcoins le 15 août 2010. Inutile de préciser que cette évolution n’était pas la bienvenue pour les fondateurs. Ils (Satoshi Nakamoto) ont rapidement modifié le code, corrigé le bug, annulé l’historique financier et prétendu que rien ne s’était passé.

Mais qu’est-ce que le démantèlement de l’histoire signifie ? Un exemple : si j’achetais des bitcoins pour une valeur de 10.000 $ aujourd’hui, le démantèlement ferait en sorte que mes bitcoins reviendraient au vendeur, contrairement à mes dollars, que je ne récupérerai pas. Et si un démantèlement avait lieu maintenant plutôt qu’en 2010, les conséquences seraient colossales, car maintenant, chaque jour, environ 5 milliards de dollars de transactions de bitcoin sont réalisées.

Ce qui précède, ainsi que d’autres cas, démontre que la chaîne de blocage n’est inchangeable que si tout se déroule comme prévu. Sinon, le pré-budget et la chaîne de blocage peuvent être modifiés.

Retour aux contrats intelligents

La décision des développeurs d’Ethereum semble plutôt bizarre, il semblerait qu’ils aient arrangé des pièges pour les programmeurs de contrats intelligents. Vous devez avoir beaucoup d’expérience ou être très concentré (ou les deux) pour vous éviter à vous ou à vos investisseurs de perdre tout votre argent du jour au lendemain. Et c’est encore une autre raison pour laquelle le code de contrat intelligent doit faire l’objet d’une vérification minutieuse. Dans le cadre de Kaspersky Token Offering Security, nos experts analysent les vulnérabilités et les fonctionnalités non documentées des contrats intelligents. Vous pouvez en savoir plus à ce sujet sur notre page d’offre de sécurité de jeton.