# Simple Backrunner ## Blueprint [Github Link](https://github.com/bhakiyakalimuthu/backrunner) - [x] Subscribe to mempool txs on websocket client - [x] Filter for Uniswap (SwapRouter02) trades - [x] Filter for multicall - [x] Decode calldata - [x] Data using geth abi package - [x] Filter for exactInputSingle & exactOutputSingle - [x] swapExactTokensForTokens & swapTokensForExactTokens will not be implemented in this prototype - [x] Extract trade data from multicall calldata - [x] Reminder: inner deadline param has to be removed - [x] Filter for (TOKEN -> WETH) swaps ONLY - [x] Assume executor will only hold WETH - [x] Implement executor contract [Contract](https://github.com/bhakiyakalimuthu/backrunner/blob/ceca740e7083f916e6718059c0ddf103766b7ad3/contracts/BackrunExecutor.sol) - [x] Accept trade data as param to execute function - [x] Buy tokens (which mempool user will have sold) on Uniswap - [x] (my_buy_amount == mempool_user_sell_amount == mempoolTx.amountIn) - [x] Sell all purchased tokens on Sushiswap - [x] Return updated WETH balance - [x] Simulation-based profit analysis (not ideal, but quick & easy to implement) - [x] Blindly/optimistically build backrun bundle - [x] Simulate on local MEV-Geth or use Flashbots callBundle - [x] Determine whether bundle is worth sending to onchain - [x] Create and send Flashbots bundle via sendBundle ## Todo - [ ] Profit calculation - [ ] Test contract against local mainnet fork - [ ] Deploy contract on mainnet & update - [ ] Extend the trade to different DEX - [ ] Add more trade pairs