このプロジェクトについて

FlashLoanArbitrage(リポジトリ名 flashloan-routing-engine)は、Ethereum DeFi会場でのETH/USDCフラッシュローン裁定取引を実現するため、SolidityスマートコントラクトとローカルNode.jsスクリプト(goflash.js)を組み合わせた英語の教育用プロジェクトです。 READMEに記載されたワークフローによると、コントラクトはUSDC建てのフラッシュローンを受け取り、借入資金を使用して価格の低い会場でETHを購入し、価格の高い会場で売却します。その後、手数料とガス代を含むローンを返済し、残りの利益を変換してユーザーに還元します。借入先としては、Aave(手数料0.05%、最大10,000,000 USDC)、dYdX(0.05%、最大500,000 USDC)、Uniswap V3(0.01%、最大5,000,000 USDC)、Balancer(0.02%、最大1,000,000 USDC)がサポートされています。また、フラッシュローン手数料は借入額に応じて変動するため、ウォレット残高に対して控えめな借入額にすることが推奨されています。 付属のスクリプト goflash.js は、オラクル参照としてChainlink、およびUniswap V2、SushiSwap、Curve Finance、Balancerから約60秒ごとにETH/USDC価格をポーリングし、上昇/下降/不変のインジケーターと共に表示します。観測されたスプレッドが0.9%以上に達した場合のみ裁定取引のシグナルを出し、会場間の最大価格差も報告します。 実行手順としては、goflash.jsとpackage.jsonを任意のフォルダにダウンロードし、npm installを実行後、node goflash.jsを起動します。依存関係には ethers ^6.11.1、inquirer ^8.2.6、chalk ^4.1.2が含まれています。初回起動時には、新しいウォレットの作成または秘密鍵による既存ウォレットのインポートを選択するインタラクティブメニューが表示され、鍵は同フォルダのwallet.jsonに書き込まれます。その後、メニューからDeFiプロトコルの選択、ETH建ての借入額設定、ウォレットの再作成、ウォレットのインポート、「Start Arbitrage(裁定取引開始)」および「Exit(終了)」を選択できます。 READMEに記載されている注意点として、純利益の前に取引手数料(0.1%と記載)と0.05%のスリッページおよびガス代が差し引かれること、ウォレット残高が0.1 ETH未満の場合、10 ETH以上のローンに対するガス代をカバーするには不十分であること、そして実際の市場で0.9%のスプレッドは稀であり、スクリプトがデモンストレーション目的でシミュレーション上の機会を時折表示することが明記されています。トラブルシューティングセクションでは、モジュール形式のエラー、無効な秘密鍵形式、資金不足、RPCの再接続について説明されています。 セキュリティガイダンスでは、wallet.jsonをコミットせず.gitignoreに追加すること、秘密鍵のオフラインバックアップを保持すること、専用ウォレットを使用すること、少額から開始することがユーザーに求められています。本プロジェクトは教育目的で「現状有姿」で共有されており、利用はユーザー自身の責任となります。 評価にあたっての留意点として、設計上、秘密鍵がローカルのJSONファイルに平文で保存されること、およびガス代のためにウォレットにETHを補充する必要があることが挙げられます。資金を移動させる前にコントラクトとスクリプトをレビューすべきであり、本資料において収益性が主張または証明されているわけではありません。