This project showcases an arbitrage trading strategy using a Solidity smart contract for the Uniswap V2 platform. Additionally, it includes an automation script that runs as a cron job to execute arbitrage trades based on the routers which provides the best opportunity for arbitrage.
The core of this repository is the arbitrage smart contract, which leverages the Uniswap V2 decentralized exchange for trading. The contract includes the following features:
- Swap Function: Private function to execute a token swap on a specified router.
- Get Amount Out: Public function to estimate the amount of token output for a given input amount.
- Trade Function: External function to perform arbitrage trading between selected routers.
- Deposit and Withdraw Funds: Functions to deposit and withdraw tokens into/from the contract.
- Check Balance: Function to view the current token balances held by the contract.
The repository also includes an automation script that interacts with the smart contract. The script performs the following steps:
- Setup: Connects to the Ethereum network using your private key and provider URL.
- Finding Trade Opportunities: Identifies favorable trade opportunities by comparing output amounts across different routers.
- Executing Trades: Initiates arbitrage trades using the identified routers.
- Error Handling: Provides detailed error messages and logging in case of trade failures.
Arbitrage transactions, which rely on price differences, can become less profitable or even result in losses due to MEV. While this bot does not protect against MEV, one potential solution to mitigate its impact is to use Flashbots. Flashbots is a research and development organization focused on mitigating the negative externalities of MEV. Their platform allows users to submit transactions directly to miners in a way that avoids the open mempool and reduces the risk of MEV exposure.