DeFi : Comment ChatGPT et l’IA pourraient bien sauver la finance décentralisée

Collectionnez les articles du JDC en NFT

Collecter cet article

L’IA et les cryptos – En parallèle de l’essor de l’informatique, l’intelligence artificielle a toujours été au cœur des ambitions des informaticiens. Effectivement, nombreux ont été les développeurs à rêver de programmes présentant une réelle intelligence. Plus récemment, l’avènement de solutions comme ChatGPT a remis l’IA sur le devant de la scène.

ChatGPT : le renouveau de l’IA

En novembre 2022, un outil d’un nouveau genre va soudainement remettre l’intelligence artificielle sous les feux des projecteurs. En effet, ce jour là l’entreprise OpenAi fondée en 2015, dévoile ChatGPT, le fruit de plusieurs années de recherche.

En pratique, ChatGPT (Chat Generative Pre-trained Transformer) est un modèle de traitement et de génération de langage. Dès la première utilisation, force est de constater que ses résultats sont bluffants.

ChatGPT est un chatbot basé sur l'intelligence artificielle AI

En effet, ChatGPT est une interface de chat (ou « agent conversationnel »), grâce auquel il est possible de poser tout type de questions à une intelligence artificielle.

Vu qu’un exemple vaut mieux que mille mots, voici comment ChatGPT se définit lui-même : 

« ChatGPT est un modèle de traitement du langage développé par OpenAI. Il utilise une approche d’apprentissage profond pour générer des réponses à des questions ou des phrases d’entrée en se basant sur un grand corpus de données textuelles. ChatGPT est capable de comprendre le contexte et de produire des réponses cohérentes et significatives. »

Peu après l’ouverture d’un accès public à ChatGPT, celui-ci a connu un engouement sans précédent. En effet, il n’aura fallu que 5 jours à ChatGPT pour enregistrer son premier million d’utilisateurs.

En parallèle de ChatGPT, divers autres modèles similaires ont vu le jour et des dizaines d’entreprises se sont engouffrées dans la brèche de l’intelligence artificielle.

>> Jouez la sécurité ! Inscrivez-vous sur Binance, et économisez 10% de frais (lien commercial) <<

Intelligence artificielle et cryptomonnaies

Évidemment, la tendance qui entoure actuellement l’intelligence artificielle a également impacté l’écosystème des cryptomonnaies.

Rapidement, des dizaines de cryptomonnaies plus ou moins connectées au secteur de l’intelligence artificielle on vu leur valeur exploser.

Plusieurs cryptomonnaies liées à l'IA ont vu leur cours exploser.
Plusieurs cryptomonnaies liées à l’IA ont vu leur cours exploser.

Cependant, avant de crier à la nouvelle narrative IA dans les crypto il convient de se pencher d’un peu plus près sur ces projets. En effet, la majorité des projets n’ont pour le moment pas de produit fonctionnel. Par conséquent, le supposé lien entre l’IA et la crypto ne pourrait être qu’un buzz word.

Crypto et IA : une incompatibilité totale ?

Alors que certains influenceurs et investisseurs envisagent une « IA-season », où les projets liant crypto et IA seraient au cœur de l’attention, d’autres acteurs de l’écosystème y voient une hérésie.

Par exemple, le fondateur du protocole Yearn, Andre Cronje a récemment déclaré : « Blockchain et IA ne peuvent pas se mélanger ».

Selon lui les deux secteurs seraient en tout point antagonistes, en déclarant : 

« La blockchain et l’IA ne sont pas complémentaires, et (pour l’instant) tous ceux qui sautent dans le train de l’“IA” le font simplement pour des raisons de pump & dump. Si vous voyez un projet tout d’un coup “pivoter vers l’IA”, cela signifie juste qu’ils n’avaient rien et qu’ils sont morts dans la course. »

D’autres acteurs de l’écosystème ont émis des avis similaires quant au mélange entre IA et blockchains.

IA : le futur sauveur de la DeFi ?

Bien que l’IA et les cryptos puissent ne jamais pouvoir se mélanger au sein d’un même projet, l’IA pourrait tout de même révolutionner l’écosystème crypto et plus particulièrement l’écosystème de la Finance Décentralisée (DeFi).

Effectivement, en plus de pouvoir faire la conversation, un outil comme ChatGPT est également en mesure d’analyser et écrire du code informatique. Et c’est sur cet aspect particulier que ChatGPT pourrait sauver la DeFi.

En effet, l’écosystème de la finance décentralisée offre de nombreuses innovations et une inclusion financière sans précédent. Toutefois, celle-ci est gangrénée par les hacks en tout genre. 

En 2022, plus de 2,8 milliards de dollars ont ainsi été dérobés par des hackers dans l’écosystème crypto. Dans une triste majorité des hacks, les smart contracts exploités n’ont peu, ou pas, été audités. Par conséquent, des milliers de smart contracts sont déployés avec des failles, attendant patiemment qu’un hacker les découvrent.

C’est là qu’entre en jeu ChatGPT. En effet, grâce à la littérature disponible sur internet concernant les failles de smart contracts et les bonnes pratiques à adopter en Solidity, ChatGPT est en mesure de devenir un allié de taille dans le domaine.

ChatGPT pour la détection de failles DeFi

Considérons que nous parlons de failles, revenons à la faille originelle. En 2016, la première DAO d’Ethereum, intitulée The DAO voyait le jour. The DAO devait agir comme une société de capital-risque dirigée par des investisseurs. Pour ce faire, une levée de fonds en ETH était menée.

Malheureusement, une faille dans le code du smart contract permettait à un attaquant de vider le contrat. Environ 150 millions de dollars en ETH ont été dérobés par le hacker.

En pratique, le contrat présentait une faille dite « reentrancy ». Une faille désormais bien connue, mais qui chaque année est toujours à l’origine de hacks. Ainsi, en 2022, Ola Finance et Rari Capital ont été victimes de ce type d’attaque. Ces deux projets ont perdu au total 83,6 millions de dollars.

Alors, voyons si cela avait pu être évité en utilisant ChatGPT. Pour ce faire, nous allons prendre un smart contract qui présente une vulnérabilité de type reentrancy

 // SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

/*
EtherStore is a contract where you can deposit and withdraw ETH.
This contract is vulnerable to re-entrancy attack.
Let's see why.

1. Deploy EtherStore
2. Deposit 1 Ether each from Account 1 (Alice) and Account 2 (Bob) into EtherStore
3. Deploy Attack with address of EtherStore
4. Call Attack.attack sending 1 ether (using Account 3 (Eve)).
   You will get 3 Ethers back (2 Ether stolen from Alice and Bob,
   plus 1 Ether sent from this contract).

What happened?
Attack was able to call EtherStore.withdraw multiple times before
EtherStore.withdraw finished executing.

Here is how the functions were called
- Attack.attack
- EtherStore.deposit
- EtherStore.withdraw
- Attack fallback (receives 1 Ether)
- EtherStore.withdraw
- Attack.fallback (receives 1 Ether)
- EtherStore.withdraw
- Attack fallback (receives 1 Ether)
*/

contract EtherStore {
    mapping(address => uint) public balances;

    function deposit() public payable {
        balances[msg.sender] += msg.value;
    }

    function withdraw() public {
        uint bal = balances[msg.sender];
        require(bal > 0);

        (bool sent, ) = msg.sender.call{value: bal}("");
        require(sent, « Failed to send Ether »);

        balances[msg.sender] = 0;
    }

    // Helper function to check the balance of this contract
    function getBalance() public view returns (uint) {
        return address(this).balance;
    }
}

contract Attack {
    EtherStore public etherStore;

    constructor(address _etherStoreAddress) {
        etherStore = EtherStore(_etherStoreAddress);
    }

    // Fallback is called when EtherStore sends Ether to this contract.
    fallback() external payable {
        if (address(etherStore).balance >= 1 ether) {
            etherStore.withdraw();
        }
    }

    function attack() external payable {
        require(msg.value >= 1 ether);
        etherStore.deposit{value: 1 ether}();
        etherStore.withdraw();
    }

    // Helper function to check the balance of this contract
    function getBalance() public view returns (uint) {
        return address(this).balance;
    }
}

En utilisant ce code, nous demandons à ChatGTP si celui-ci détecte une quelconque faille dans le contrat et sa réponse est sans appel : « Oui, le contrat est vulnérable à une attaque reentrancy. »

Celui-ci poursuit avec quelques explications concernant la faille et une piste pour la corriger : 

« Le problème se situe dans la fonction withdraw du contrat EtherStore. Elle envoie le solde au msg.sender sans vérifier si le msg.sender va rappeler le contrat EtherStore avant le retour de la fonction withdraw. »

Ensuite, ChatGPT nous explique comment un attaquant pourrait tirer parti de cette faille pour exploiter le contrat. Ces étapes qui pourraient mener au vol de l’intégralité des fonds déposés sur le contrat vulnérable.

Ainsi, les développeurs peuvent utiliser ChatGPT pour détecter des failles du type reentrancy dans le code source avant de déployer les contrats.

ChatGPT et les bonnes pratiques de développement

Au-delà de la détection de failles, ChatGPT permet également d’améliorer son code en y appliquant les bonnes pratiques de développements.

Ainsi, nous avons repassé le même code que précédemment, en demandant à ChatGPT s’il déceler d’autres problèmes que la reentrancy, par exemple au niveau des bonnes pratiques.

Une fois de plus ChatGTP s’avère être un allié fiable : « Oui, il y a d’autres problèmes dans le code en plus de la vulnérabilité de reentrancy. »

ChatGPT permet d'auditer efficacement le code des smart contracts et propose des améliorations
Réponse de ChatGPT concernant le smart contract présentant la reentrancy.

Ainsi, ChatGPT nous donne la liste de 4 potentiels problèmes : 

  • L’absence de protection contre les overflow / underflow ; 
  • L’absence de contrôle d’accès, pour gérer les autorisations sur les dépôts et retraits ; 
  • Le manque de gestion des erreurs potentielles ;
  • L’absence d’événements (events) dans le code.

En plus de ces remarques, ChatGPT a mis en lumière une liste de 5 mauvaises pratiques potentielles dans le code Solidity. Bien qu’elles ne représentent pas des failles à proprement parler, la présence de mauvaises pratiques ne permet pas une bonne maintenabilité du code.

D’autres failles DeFi identifiées par ChatGPT

Nous avons poursuivi nos tests de ChatGPT avec d’autres smart contracts qui présentent des failles. Pour ce faire, nous nous sommes basés sur des contrats éducatifs, réalisés par Trail of Bits, qui présentent des vulnérabilités.

Sur les 11 contrats testés, ChatGPT a trouvé la faille ou la vulnérabilité dans 10 cas.

Nom de la vulnérabilitéChatGPT a-t-il détecté la faille ?
Race ConditionOui
Bad RandomnessOui
Denial of ServiceOui
Forced Ether ReceptionNon
Incorrect interfaceOui
Integer OverflowOui
ReentrancyOui
Unchecked External CallOui
Unprotected FunctionOui
Variable ShadowingOui
Wrong Constructor NameOui

Cette expérience met en évidence l’intérêt d’utiliser ChatGPT en tant que développeur de smart contracts. En effet, ChatGPT permet de détecter des failles et des vulnérabilités potentielles en amont d’un audit.

Qui sait combien de hacks auraient pu être évités si tous les smart contracts avaient passé cette vérification basique, mais pourtant cruellement efficace.

Selon plusieurs experts, l’année 2023 pourrait être encore plus sanglante que 2022 en termes de hacks. En effet, ces derniers prédisent une augmentation du nombre de hacks sans réelles améliorations des bonnes pratiques du côté des développeurs. Toutefois, des outils tels que ChatGPT pourraient enrayer cette tendance en rendant l’écosystème plus sécurisé.

Les hacks sont des aléas malheureux, mais pas une fatalité. Besoin de tranquillité d’esprit pour vos cryptos ? Inscrivez-vous vite sur la plateforme Binance, et économisez 10 % sur vos frais de trading en suivant ce lien (lien commercial).

Renaud H.

Ingénieur en software et en systèmes distribués de formation, passionné de cryptos depuis 2013. Touche à tout, entre mining et développement, je cherche toujours à en apprendre plus sur l’univers des cryptomonnaies et à partager le fruit de mes recherches à travers mes articles.

Recevez un condensé d'information chaque jour