À propos du projet

FlashLoanArbitrage est un petit projet Node.js pour le trading DeFi sur Ethereum avec des flash loans. Bien que la description du dépôt le présente comme un gestionnaire de portefeuille DeFi, le README documente un bot d'arbitrage composé d'un script local (goflash.js) et d'un smart contract associé. Fonctionnement Le script compare les prix ETH/USDC de cinq sources : un oracle Chainlink utilisé comme prix de base, Uniswap V2, SushiSwap, Curve Finance et Balancer. Il attend une différence de prix d'au moins 0,9 % entre les plateformes avant d'agir ; en dessous de ce seuil, il continue la surveillance pour éviter les transactions déficitaires. Lorsque l'écart est suffisant, le flux décrit dans le README est le suivant : conversion préalable de l'ETH de l'utilisateur en USDC, emprunt d'un flash loan en USDC par le contrat, achat d'ETH sur la plateforme la moins chère, vente sur la plus chère, remboursement du prêt plus les frais de flash-loan et de gas, puis conversion du profit restant d'USDC vers ETH. Le README précise que le solde du portefeuille sert uniquement au gas et que l'ETH n'est pas transféré dans le contrat. Fournisseurs de flash-loans et limites Quatre protocoles sont listés comme sources de flash-loans, chacun avec des frais annoncés et une taille maximale de prêt en USDC : Aave (0,05 %, jusqu'à 10 000 000), dYdX (0,05 %, jusqu'à 500 000), Uniswap V3 (0,01 %, jusqu'à 5 000 000) et Balancer (0,02 %, jusqu'à 1 000 000). Le README note que des prêts plus importants impliquent des frais plus élevés et recommande dYdX ou Uniswap V3 pour des frais réduits. Configuration et utilisation Les instructions concernent une machine locale : obtenir goflash.js et package.json, les placer dans un dossier, exécuter npm install, puis node goflash.js. Au premier lancement, le script propose de créer un nouveau portefeuille (l'adresse et la clé privée sont affichées et la clé est sauvegardée dans wallet.json dans le même dossier) ou d'importer un portefeuille existant via une clé privée préfixée par 0x. Ensuite, un menu interactif apparaît dans le terminal, affichant le solde et l'adresse du portefeuille, avec des options pour choisir le protocole DeFi, définir le montant du prêt en ETH, recréer le portefeuille, importer un autre portefeuille, lancer l'arbitrage et quitter. Le mode arbitrage scanne les prix sur toutes les plateformes environ toutes les 60 secondes et affiche un tableau de prix en direct avec des indicateurs de hausse/baisse/stabilité ainsi que l'écart maximum observé. Avertissements et notes de comportement Le README avertit à plusieurs reprises sur l'hygiène des clés privées : ne jamais partager wallet.json ou la clé, l'ajouter au .gitignore, conserver des sauvegardes hors ligne et utiliser un portefeuille dédié. Il précise également qu'un solde inférieur à 0,1 ETH est insuffisant pour servir des prêts supérieurs à 10 ETH en raison du gas, et liste les coûts pris en compte (frais de trading 0,1 %, slippage 0,05 %, gas, frais de flash-loan). Une section de dépannage traite des erreurs de format de module, du format de clé privée invalide, des fonds insuffisants, de l'indisponibilité du RPC et des paires V2 manquantes. Il est explicitement indiqué que les écarts de prix de 0,9 % sont rares sur les marchés réels, qu'une opportunité simulée est occasionnellement affichée pour démonstration, et que le projet est partagé tel quel à des fins éducatives et utilisé aux risques de l'utilisateur. Détails techniques Le projet est une application JavaScript/Node.js avec trois dépendances : ethers (^6.11.1) pour l'interaction avec Ethereum, inquirer (^8.2.6) pour le CLI interactif et chalk (^4.1.2) pour l'affichage coloré de la console. La structure des fichiers documentée comprend goflash.js, package.json, le fichier wallet.json auto-généré et le README. Aucune condition de licence au-delà de la mention d'usage éducatif et de risque utilisateur n'est fournie, et aucun test, script de déploiement ou résultat de performance public n'est décrit.