0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Hiểu Về Uniswap V3: Quản Lý Thanh Khoản và Price-Range (Phần 1)

Đăng vào 3 tuần trước

• 3 phút đọc

Giới thiệu

Uniswap V3 là một trong những giao thức DeFi nổi bật, tuy nhiên, để hiểu và vận dụng hiệu quả, nhiều người dùng cần thời gian để tiếp cận. Chỉ sau khoảng 2.5 năm, mình mới thực sự nắm bắt được các khía cạnh quan trọng của Uniswap V3. Bài viết này sẽ hướng dẫn bạn từ những khái niệm cơ bản nhất để làm rõ cách thức hoạt động của Uniswap V3.

1. Quản Lý Thanh Khoản Qua Price-Range

1.1 Khái Niệm Price-Range

Uniswap V3 ra đời nhằm giải quyết vấn đề “hiệu quả sử dụng vốn” mà phiên bản V2 gặp phải. Trong V2, thanh khoản của mọi liquidity provider (LP) được trải rộng trên toàn bộ khoảng giá (từ 0 đến +∞). Trong khi đó, V3 cho phép các LP chọn lựa price-range cụ thể, nhằm tối ưu hóa hiệu quả sử dụng vốn của họ.

Ví dụ:

Giả sử giá của 1 ETH đang là $3500 USDT trong pool. Alice có 2 ETH và 7000 USDT và muốn cung cấp thanh khoản:

  • V2: Khi Alice thêm vào, toàn bộ số ETH và USDT của cô sẽ được hòa tan với reserves của pool ở mức giá hiện tại mà không có sự chọn lựa.
  • V3: Nếu Alice dự đoán giá ETH sẽ tăng lên $4000-$4500, cô có thể chỉ cung cấp ETH vào khoảng price-range này. Số USDT còn lại có thể được thêm vào khoảng giá thấp hơn để phòng trường hợp ETH giảm giá.

Khái Niệm Tick

Ticks trong V3 nằm trong khoảng từ MIN_TICK [-887272] đến MAX_TICK [887272]. Mỗi tick tương ứng với một giá tài sản theo công thức: price=1.0001^tick. Ví dụ, giá tại tick 1000 là 1.0001^1000 = 1.1051653926.

Khái Niệm Tick-Spacing

Tick-spacing được xác định một lần khi tạo pool và không thể thay đổi sau này. Có 3 cặp fee-tick-spacing mặc định:

  • Fee = 0.05% tương ứng với Tick-spacing = 10
  • Fee = 0.3% tương ứng với Tick-spacing = 60
  • Fee = 1% tương ứng với Tick-spacing = 200

Khái Niệm Price-Range

Price-range được định nghĩa bới hai tick (lower và upper). Khoảng cách giữa hai tick này phải là bội số của tick-spacing. Ví dụ, nếu pool được khởi tạo với tick-spacing là 200, price-range có giá thấp nhất và hẹp nhất là [-887200, -887000].

1.2 Quản Lý Thanh Khoản Qua Từng Price-Range

Giả sử có các tick A, B, C, D, E, mỗi tick cách nhau một bội số của tick-spacing:

  • Alice thêm 50 Liquidity vào price-range A-B. Lúc này, liquidityNet tại A và B sẽ cập nhật:

    • A: liquidityNet = 50
    • B: liquidityNet = -50
  • Bob thêm 100 Liquidity vào price-range B-D, và Carol thêm 150 Liquidity vào C-E. Các liquidityNet tương ứng cũng được cập nhật.

Cuối cùng, chúng ta có thể tính toán được liquidity của từng price-range và thấy rằng các price-range có thể chồng chéo lên nhau, dẫn đến sự tạo ra liquidity cho các khoảng giá nhỏ hơn.

Ví dụ, contract lưu trữ liquidity dưới dạng mapping thì khi có ai đó thêm thanh khoản vào một price-range mới, contract sẽ phải cập nhật lại liquidity của các price-range liên quan. Điều này cho thấy tính năng tuyệt vời của liquidityNet trong Uniswap V3.

Kết Luận

Qua bài viết này, hy vọng rằng bạn đã hiểu rõ hơn về cách mà Uniswap V3 quản lý thanh khoản thông qua các price-range và ticks. Hẹn gặp lại bạn trong phần tiếp theo, nơi mình sẽ giải thích cách tính toán amountToken0 và amountToken1 khi thêm và rút thanh khoản.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào