# Lesson 7

- [Lesson 7: Outline](/prompt_web3/lesson-7/lesson-7-outline.md)
- [Lesson 7: Assignments & Exercises](/prompt_web3/lesson-7/lesson-7-assignments-and-exercises.md)
- [E1 - Uniswap Flashswap dual Arbitrage Bot](/prompt_web3/lesson-7/lesson-7-assignments-and-exercises/e1-uniswap-flashswap-dual-arbitrage-bot.md): I want to make a Flashloan tri arbitrage Bot. They project aims for the V1 version are below.
- [E1 - FlashSwapV3.sol](/prompt_web3/lesson-7/lesson-7-assignments-and-exercises/e1-uniswap-flashswap-dual-arbitrage-bot/e1-flashswapv3.sol.md): The smart contract utilizes the flash function. It can execute a trade with only ETH neccesary for gas.
- [E1 - dualArbScan.js](/prompt_web3/lesson-7/lesson-7-assignments-and-exercises/e1-uniswap-flashswap-dual-arbitrage-bot/e1-dualarbscan.js.md): This is the main script that runs a constant loop, looking for arb trades. In short, it retrives the pool information and formats the information needed to get a quote from the arbQuote.js file.
- [E1 - arbQuote.js](/prompt_web3/lesson-7/lesson-7-assignments-and-exercises/e1-uniswap-flashswap-dual-arbitrage-bot/e1-arbquote.js.md): arbQuote is called for each trade route, which is a token hop route + some additional variables, like the flashswap inputs, should there actually be an arb opportunity.
- [Lesson 7: Final notes & Project Repo](/prompt_web3/lesson-7/lesson-7-assignments-and-exercises/lesson-7-final-notes-and-project-repo.md): In this lesson I build a flashswap arbitrage bot, that uses many interfaces and inherits libraries from UniswapV3 and OpenZeppelin. All to explore modular programming.
