Coder Social home page Coder Social logo

uniswapv3-book's Introduction

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
    5. What We'll Build
  • 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. Milestone 2, Tick Bitmap Index: what happens when there are no ticks? Will it keep looping until it reaches max/min tick?
  2. Milestone 3: liquidity management
  3. Somewhere: clarify that sqrtP has better precision than ticks and that current price is never computed from current tick.
  4. Add dark mode (with images)
  5. Make a PDF
  6. Add Next/Back buttons to the bottom of pages.
  7. 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

uniswapv3-book's People

Contributors

6 avatar apoorvlathey avatar eflatun avatar f3d0ss avatar j-vp avatar jeiwan avatar jikdo avatar jordanejl avatar larryob avatar majecty avatar pongib avatar rv12r avatar samlaf avatar uniyj avatar y1cunhui avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.