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ớ:
- L = xy
- P = y/x
- Δy = L * ΔP
- Δ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:
- Tính canFillAmount cho current price range.
- So sánh canFillAmount với Δy để xác định P1.
- Tính filledAmount và remainAmount.
- Tính Δx.
- 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