Comment coder un prêt Flash avec Aave – Finematics

Please follow and like us:

Alors, comment coder un prêt flash en quelques étapes simples? Et comment pouvez-vous interagir avec les contrats intelligents d’Aave? Vous trouverez des réponses à ces questions dans ce tutoriel.

Que sont les prêts flash?

Un prêt flash est une fonctionnalité qui vous permet d’emprunter n’importe quel montant d’actifs disponible auprès d’un pool de contrats intelligents désigné sans aucune garantie. Les prêts flash sont des éléments de base utiles dans DeFi car ils peuvent être utilisés pour des choses comme l’arbitrage, l’échange de garanties et l’auto-liquidation.

Les prêts flash, bien qu’initialement introduits par le protocole Marble, ont été popularisés par Aave et Dydx.

Alors, quel est le piège?

Un prêt flash doit être emprunté et remboursé dans le cadre de la même transaction blockchain.

Si vous souhaitez en savoir plus sur les prêts flash, consultez notre article sur les prêts flash ici.

Avant de commencer

Ce guide nécessite une compréhension de base des contrats intelligents Solidity et comment utiliser Remix. Vous pouvez trouver la documentation Remix ici.

Cela nécessite également d’installer votre portefeuille Metamask et de le basculer sur le réseau de test Kovan.

Pour exécuter des contrats intelligents sur Ethereum, vous devrez également avoir de l’ETH dans votre portefeuille. Vous pouvez obtenir du Kovan testnet ETH en allant sur faucet.kovan.network et en vous connectant avec votre compte Github. Vous pouvez demander 1 testnet ETH une fois par jour.

Nous aurons également besoin de DAI. Pour demander DAI, allez sur testnet.aave.com/faucet et cliquez sur DAI, puis cliquez sur le bouton «Soumettre».

D’accord, la dernière étape consiste à configurer votre environnement Remix. Allez sur remix.ethereum.org et sélectionnez la version 0.6.6+ du compilateur Solidity.

Contrat intelligent de prêt Flash

Super, il est temps de commencer à travailler sur notre prêt flash. Commençons par créer un fichier de contrat intelligent de base.

Voici le premier morceau de code dont nous avons besoin.

Cela importera toutes les dépendances nécessaires et créera un fichier de base FlashLoan.sol contrat intelligent qui hérite de FlashLoanReceiverBase qui est un contrat abstrait qui fournit quelques éléments utiles comme un moyen de rembourser le prêt flash.

Le constructeur Flashloan.sol accepte l’adresse de l’un des fournisseurs de pool de prêt de l’Aave. Nous y reviendrons plus tard.

Vous pouvez maintenant appuyer sur le bouton de compilation.

Cela devrait télécharger toutes les dépendances pertinentes et entraîner une erreur car nous n’avons pas implémenté toutes les méthodes nécessaires à partir du FlashLoanReceiverBase à l’instant.

Il est temps d’ajouter 2 fonctions manquantes. Le premier est notre réel flashPrêt fonction qui sera utilisée pour déclencher un prêt flash. L’autre est la méthode manquante de FlashLoanReceiverBaseexecuteOperation qui sera appelée après le déclenchement de la méthode de prêt flash.

Fonction de prêt flash

Ajoutons d’abord la fonction flashLoan.

Voici l’extrait de code.

Il est temps de nous assurer que nous comprenons toutes les parties pertinentes.

le flashPrêt paramètre de fonction _atout est l’adresse d’un actif que nous souhaitons emprunter à l’aide d’un prêt flash, par exemple ETH ou DAI.

Nous définissons notre fonction comme onlyOwner, donc seul le propriétaire du contrat peut appeler la fonction.

Ici, nous définissons le montant emprunté dans l’unité mineure – wei qui est 10 ^ 18, donc cette valeur est égale à 1. Si nous passons l’adresse DAI comme _atout nous emprunterons 1 DAI, si nous passons l’adresse ETH, nous emprunterons 1 ETH.

Maintenant, nous pouvons utiliser un ILendingPool interface fournie par Aave et appel flashPrêt fonction avec tous les paramètres requis tels que l’actif que nous voulons emprunter, le montant de cet actif et un supplément Les données paramètre.

Même après avoir ajouté notre flashPrêt fonction, le code ne sera toujours pas compilé car nous devons ajouter le manquant executeOperation fonction.

Fonction executeOperation

Il est temps d’implémenter le dernier bit manquant avant de pouvoir essayer de déclencher notre fonction de prêt flash.

executeOperation La fonction sera appelée par le Prêts contrat après qu’un montant d’actif valide est demandé dans un prêt flash.

Voici un extrait de code pour le executeOperation fonction.

Tous les paramètres de la fonction executeOperation seront transmis automatiquement après le déclenchement d’un prêt flash valide à l’aide du flashPrêt fonction.

le exiger chèque est utilisé pour valider que nous avons reçu un montant correct d’un prêt flash.

Ensuite, nous pouvons insérer n’importe quelle logique arbitraire que nous voulons exécuter. À cette étape, nous avons tous les fonds d’un prêt flash disponible, nous pouvons donc, par exemple, essayer d’exécuter une opportunité d’arbitrage.

Après avoir utilisé un prêt flash, il est temps de le rembourser.

Ici, nous calculons combien nous devons rembourser qui est le montant emprunté + 0,09% du montant emprunté.

La dernière étape est d’appeler transferFundsBackToPoolInternal pour rembourser notre prêt flash.

Maintenant, nous pouvons essayer de recompiler notre code. Cette fois, tout devrait bien se compiler.

Il est temps de déclencher notre flashPrêt fonction.

Exécution du code

Super, notre contrat intelligent de prêt flash est compilé et prêt à être déployé.

Commençons par préparer 2 choses nécessaires:

  • LendingPoolAddressesProvider – pour déployer notre contrat intelligent, nous devons trouver l’adresse du contrat intelligent de prêt de l’Aave sur le testnet de Kovan. Vous pouvez trouver toutes les adresses ici. L’adresse Kovan est 0x506B0B2CF20FAA8f38a4E2B524EE43e1f4458Cc5
  • Adresse DAI – nous avons besoin d’une adresse contractuelle de DAI (ou de tout autre actif que vous souhaitez emprunter) sur le réseau de test Kovan. L’adresse DAI Kovan est 0xFf795577d9AC8bD7D90Ee22b6C1703490b6512FD

Il est temps de déployer notre contrat intelligent.

  1. Allez dans «Déployer et exécuter des transactions» sur Remix
  2. Sélectionnez “Injected Web3” (assurez-vous que votre Metamask est basculé sur Kovan)
  3. Sélectionnez un contrat à déployer – FlashLoan.sol
  4. Passe le LendingPoolAddressesProvider que nous avons trouvé quelques étapes plus tôt dans le champ à côté du bouton “Déployer”
  5. Appuyez sur le bouton «Déployer»
  6. Confirmez votre transaction Ethereum via Metamask

Si tout s’est bien passé – super! Nous avons maintenant notre FlashLoan.sol contrat intelligent déployé sur le réseau de test Ethereum – Kovan.

Voici l’étape cruciale dans l’exécution de notre contrat intelligent. Nous devons envoyer du DAI dans le contrat intelligent que nous venons de créer pour pouvoir payer les frais de prêt flash.

Vous pouvez trouver votre adresse de contrat intelligent en vérifiant la transaction Metamask que vous avez précédemment approuvée. La transaction de création d’un contrat intelligent devrait ressembler à celle-ci ici. À partir de cette transaction, vous pouvez extraire l’adresse du contrat intelligent (0x27016b23BEE0553A4aAa89b25Be58b93Fe647BBe dans notre cas).

Il est temps de déclencher notre fonction flashLoan à partir du contrat déployé. N’oubliez pas de transmettre une adresse correcte de l’actif que vous souhaitez emprunter. Dans notre cas, c’est l’adresse DAI sur le testnet Kovan.

Après avoir déclenché le flashPrêt et en acceptant une transaction Ethereum via Metamask, vous devriez voir une transaction similaire à celle-ci ici.

Félicitations! Vous venez de faire votre premier prêt flash!

Si vous avez apprécié ce didacticiel, vous pouvez également consulter Finematics sur Youtube et Twitter.


Crédit: Lien source

Laisser un commentaire

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