0
0
Lập trình
Admin Team
Admin Teamtechmely

Hướng dẫn Swap Token: Phần 3 - Quy trình thực hiện và tính toán thanh khoản

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

• 2 phút đọc

Cũng Dễ: Phần 3 - Quy Trình Swap Token

Trong phần trước, chúng ta đã trình bày rõ ràng hai công thức để tính toán amountToken0 và amountToken1 mà nhà cung cấp phải cung cấp khi thêm thanh khoản vào pool. Bây giờ, chúng ta sẽ đi vào chi tiết về quy trình swap và cách các con số được tính toán. Dưới đây là một số công thức cần nhớ:

  1. L = xy
  2. P = y/x
  3. Δy = L * ΔP
  4. Δx = L * Δ(1/P)

3. Swap

3.1 Swap Trong Một Price Range

Ví dụ 1: Swap Token1 Lấy Token0
Giả sử Alice đang muốn thực hiện một giao dịch swap với một lượng Δy Token1 để lấy Token0. Chúng ta cần tính lượng Δx Token0 mà Alice sẽ nhận được:

Tham số đã biết:

  • Δy
  • P0
  • L

Các bước tính toán:

  • Bước 1: Sử dụng công thức (3) để tính ΔP:
    ΔP = Δy / L
  • Bước 2: Tính P1:
    P1 = P0 + ΔP
  • Bước 3: Sử dụng công thức (4) để tính Δx:
    Δx = L * (P0 - P1)
    Nếu Δx âm, điều này có nghĩa là lượng Token0 trong pool sẽ giảm đi và Alice sẽ nhận ∣Δx∣ Token0.

Ví dụ 2: Swap Token0 Lấy Token1
Bob muốn swap một lượng Δx Token0 để lấy Token1:

Tham số đã biết:

  • Δx
  • P0
  • L

Các bước tính toán:

  • Bước 1: Sử dụng công thức (4) để tính P1:
    Δx = L * (1/P1 - 1/P0)
  • Bước 2: Tính Δy:
    Δy = L * (P1 - P0)
    Nếu Δy âm, ∣Δy∣ sẽ là lượng Token1 mà pool chuyển cho Bob.

3.2 Swap Cross Qua Các Price-Range

Nếu hiện tại không đủ thanh khoản, ví dụ:

  • Alice muốn swap Δy Token1 lấy Token0, nhưng chỉ có Δy1 trong price range D-E.
  • Số dư Δy2 Token1 sẽ phải chuyển sang price range E-F để hoàn tất giao dịch.

Bước 1: Tính Δx1 và Δy1 tại D-E.
Bước 2: Tính P2 tại E-F.
Bước 3: Tính Δx2 tại E-F.

3.3 Luồng Swap Hợp Lý

Pool cần chia lệnh swap thành các bước trong từng price range để đảm bảo quy trình thực hiện hợp lý. Các bước cụ thể gồm:

  1. Tính canFillAmount cho current price range.
  2. So sánh canFillAmount với Δy để xác định P1.
  3. Tính filledAmount và remainAmount.
  4. Tính Δx.
  5. Kiểm tra xem đã hoàn thành hay chưa.

3.4 Đối Chiếu Vào Code

Hàm swap sẽ dừng khi remainAmount = 0 hoặc giá vượt quá mức mà người dùng chấp nhận. Theo dõi các bước trong hàm computeSwapStep, từ cách tính canFillAmount đến việc tổng hợp các kết quả cuối cùng.

Bài sau sẽ đề cập đến Tick Bit Map và ý nghĩa của nó trong quy trình Swap.
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