Prompt Web3
  • 🤓Web3 Refresher Course with GptTutor
  • Creating your own Custom personas
  • Creating The Web3 GptTutor
  • Prompting the course sylibus
  • Prompting new lessons
  • Expanding parts of a lesson
  • Lesson 1
    • Lesson 1: Outline
    • Lesson 1: Assignments & Exercises
      • A1: Smart contracts in the real world
      • E1: HelloWorld.sol
  • Lesson 2
    • Lesson 2: Outline
    • Lesson 2: Assignments & Exercises
      • A1: Ethereum gas costs, data types and control structures - A brief take
      • E1: AssetManagement.sol
    • Lesson 2: Final notes and code repos
  • Lesson 3
    • Lesson 3: Outline
    • Lesson 3: Assignments & Excercises
      • A1 - Notes on View and Pure modifiers in Solidity
      • E1: EthWallet.sol
      • E1: Hardhat Tests
      • E1: NextJs Front End
    • Lesson 3: Final notes & Final project + repo
  • Lesson 4
    • Lesson 4: Outline
    • Lesson 4: Assignments & Exercises
      • A1 - Solidity error handling - notes on require, revert and assert
      • E1: EthWallet.sol - Update
      • E1 - EthWallet.test.js - Update
      • E1: NextJs Front End - Update
    • Lesson 4: Final notes & Final project + repo
  • Lesson 5
    • Lesson 5: Outline
    • Lesson 5: Assignments & Exercises
      • A1 - Using structs and mappings to manage complex data in Solidity
      • E1 - OrderSystem.sol
      • E1 - OrderSystem.test.js
    • Lesson 5: Final notes & Project Repo
  • LESSON 6
    • Lesson 6: Outline
    • Lesson 6: Assignments & Exercises
      • A1 - Solidity Interfaces - Facilitating interaction, modularity and Dapp upgradability
      • E1 - Ranked Choice Voting system
        • E1 - BallotContract.sol
        • E1 - IBallotContract.sol
        • E1 - VotingContract.sol
        • E1 - RCVotingSystem.test.js
      • E1 - Feedback
    • Lesson 6: Final notes & Project Repo
  • Lesson 7
    • Lesson 7: Outline
    • Lesson 7: Assignments & Exercises
      • E1 - Uniswap Flashswap dual Arbitrage Bot
        • E1 - FlashSwapV3.sol
        • E1 - dualArbScan.js
        • E1 - arbQuote.js
      • Lesson 7: Final notes & Project Repo
Powered by GitBook
On this page
  • Final thoughts
  • Smart contract progress
  • Deployments and Repositories
  1. Lesson 7
  2. Lesson 7: Assignments & Exercises

Lesson 7: Final notes & Project Repo

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.

PreviousE1 - arbQuote.js

Last updated 10 months ago

Final thoughts

I am happy in some ways about this project. Firstly, I created what I set out to make: a working defi arbitrage bot. The journey has taken me deep into the UniswapV3 protocol. A marvel in smart contract engineering.

It would have been nice If the bot made any money but still to this day it has not had a succesful arbitrage trade. This stratergy is far to simple. All of the thousand dollar+ defi arbitrage trades have 3 or 4 hops or more. It would have been great to explore how to find these kinds of opportunities.

Smart contract progress

  • Utilized well-known tested smart contract interfaces and libraries.

  • Utilized a complex defi instrument in the form of flashswaps.

  • Created a node.js back-end to work together with the smart contract.

  • My first Foundry project.

  • Got deep into the UniswapV3 protocol.

Deployments and Repositories

Smart contract address (Arbitrum Mainnet)

Arbitrum Mainnet

FlashSwapV3 deployed to:

Github Repo -

0xf812197DbdbcD0f80cD003C20f695dc8d06bC3b0
https://github.com/SimSimButDifferent/UniV3FlashSwapDualArbBot