Skip to content

j-vp/uniswapv3-book

 
 

Repository files navigation

Uniswap V3 Development Book

Uniswap V3 Development Book cover

This book will teach how to develop an advanced decentralized application! Specifically, we'll be building a clone of Uniswap V3, which is a decentralized exchange.

Why Uniswap?

  • It implements a very simple mathematical concept, x * y = k, which still makes it very powerful.
  • It's an advanced application that has a thick layer of engineering on top of the simple formula.
  • It's permissionless and battle-tested. Learning from an application that's been running in production for several years and handling billions of dollars will make you a better developer.

What we'll build

Front-end application screenshot

We'll build a full clone of Uniswap V3. It won't be an exact copy and it won't be production-ready because we'll do something in our own way and we'll definitely introduce multiple bugs. So, don't deploy this to the mainnet!

While our focus will primarily be on smart contracts, we'll also build a front-end application as a side hustle. 🙂 I'm not a front-end developer and I cannot make a front-end application better than you, but I can show you how a decentralized exchange can be integrated into a front-end application.

The full code of what we'll build is stored in a separate repository:

https://github.com/Jeiwan/uniswapv3-code

You can read this book at:

https://uniswapv3book.com/

Questions?

Each milestone has its own section in the GitHub Discussions. Don't hesitate to ask questions about anything that's not clear in the book!

Table of Contents

  • Milestone 0. Introduction

    1. Introduction to markets
    2. Constant Function Market Makers
    3. Uniswap V3
    4. Development Environment
  • Milestone 1. First Swap

    1. Introduction
    2. Calculating Liquidity
    3. Providing Liquidity
    4. First Swap
    5. Manager Contract
    6. Deployment
    7. User Interface
  • Milestone 2. Second Swap

    1. Introduction
    2. Output Amount Calculation
    3. Math in Solidity
    4. Tick Bitmap Index
    5. Generalize Minting
    6. Generalize Swapping
    7. Quoter Contract
    8. User Interface
  • Milestone 3. Cross-tick Swaps

    1. Introduction
    2. Different Price Ranges
    3. Cross-Tick Swaps
    4. Slippage Protection
    5. Liquidity Calculation
    6. A Little Bit More on Fixed-point Numbers
    7. Flash Loans
    8. User Interface
  • Milestone 4. Multi-pool Swaps

    1. Introduction
    2. Factory Contract
    3. Swap Path
    4. Multi-pool Swaps
    5. User Interface
    6. Tick Rounding
  • Milestone 5. Fees and Price Oracle

    1. Introduction
    2. Swap Fees
    3. Flash Loan Fees
    4. Protocol Fees
    5. Price Oracle
    6. User Interface
  • Milestone 6: NFT positions

    1. Introduction
    2. ERC721 Overview
    3. NFT Manager
    4. NFT Renderer

Running locally

To run the book locally:

  1. Install Hugo.
  2. Clone the repo:
    $ git clone https://github.com/Jeiwan/uniswapv3-book
    $ cd uniswapv3-book
  3. Run:
    $ hugo server -D
  4. Visit http://localhost:1313/ (or whatever URL the previous command outputs!)

TODO

  1. Fix the padding before
  2. Milestone 2, Tick Bitmap Index: what happens when there are no ticks? Will it keep looping until it reaches max/min tick?
  3. Milestone 3: liquidity management
  4. Somewhere: clarify that sqrtP has better precision than ticks and that current price is never computed from current tick.
  5. Where to start for complete Uniswap beginners
  6. Add dark mode (with images)
  7. Make a PDF
  8. Improve the formula in "The Mathematics of Uniswap V3"
  9. Ideas for Extras:
    1. Tick math implementation. Explanation of the math in TickMath contract.
    2. Breakdown of the alpha-router: https://github.com/Uniswap/swap-router-contracts

About

Uniswap V3 Development Book

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published