Trong thực tế bạn thỉnh thoảng có thể phải swap một lượng lớn trên các nền tảng Dex, và bạn sẽ có thể đặt ra câu hỏi: Nếu không tính phí mạng lưới và chỉ thực hiện swap trên 1 pool duy nhất thì swap 1 lần hay chia làm nhiều lần swap thì lợi hơn? Thực tế swap nhiều lần sẽ thiệt hơn vì không những bạn nhận được ít hơn mà còn trả thêm phí cho blockchain.
Để trả lời cho câu hỏi này chúng ta sẽ sử dụng toán học để kiểm tra. Đơn giản nhất chúng ta coi nền tảng Dex theo chuẩn của Uniswap V2 tức là theo công thức: x*y=K
Thực tế có ba trường hợp như sau:
- TH1: Nền tảng dex không tính phí
Trường hợp này là lý tưởng, gần như không xảy ra trong thực tế. - TH2: Nền tảng dex có tính phí
Trong trường hợp này chia làm 2 case nhỏ- TH2.1: Phí sẽ tách riêng ra
- TH2.2: Phí sẽ được đẩy lại làm thanh khoản cho pool
Trước khi đi vào công thức toán học, chúng ta cần quy ước trước 1 số kí hiệu:
- r0, r1: Lượng dự trữ ban đầu của pool thanh khoản (r0*r1=K). Trong đó:
- r0: Lượng dự trữ thanh khoản cho token0
- r1: Lượng dữ trữ thanh khoản cho token1
- dx: Lượng token0 muốn hoán đổi sang token1. Lượng này ta sẽ chia làm 2 phần:
dx = dx1 + dx2
Trong đó:- dx1: Lượng muốn hoán đổi lần 1
- dx2: Lượng muốn hoán đổi lần 2
- dy: Lượng token1 nhận được sau khi hoán đổi dx token0.
- dy1: Lượng token1 nhận được sau khi hoán đổi dx1 token0
- dy2: Lượng token1 nhận được sau khi hoán đổi dx2 token0
- f: Phí của pool, có giá trị từ 0 đến 1. Ví dụ f=0.01 tức pool thu 1% phí.
- p = 1 – f => Sư dụng tiện hơn
Vấn đề bây giờ ta cần so sánh giữa giá trị dy với giá trị (dy1+dy2) bằng toán học?
TH1: Nền tảng dex không tính phí
Nếu thực hiện hoán đổi 1 lần, ta có công thức sau:

Bây giờ ta chia làm 2 lần hoán đổi, lần 1 hoán đổi lượng dx1 ta được dy1 như sau:

Bây giờ thực hiện tiếp hoán đổi lần 2, r0 và r1 lúc này đã thay đổi thành r’0 và r’1 . Sau khi áp dụng công thức và biến đổi ta được:

Bây giờ ta sẽ tính tổng dy1+dy2:

Sau khi biến đổi ta nhận được dy = dy1 + dy2
Như vậy, trong trường hợp này swap một lần hay nhiều lần kết quả như nhau.
TH2.1: Nền tảng Dex có tính phí và phí sẽ tách riêng ra
Như các bạn biết, hầu hết các nền tảng Dex đều tính phí từ token vào hay là tokenIn. Trong trường hợp này chúng ta đang hoán đổi từ token0 sang token1 nên phí sẽ trừ vào token0. Nếu chúng ta muốn hoán đổi một lượng dx token0, thì sau khi tính phí, lượng sử dụng để swap thực sự sẽ chỉ còn: p*dx
Nếu thực hiện hoán đổi 1 lần, ta có công thức sau:

Bây giờ ta chia làm 2 lần hoán đổi, lần 1 hoán đổi lượng dx1 ta được dy1 như sau:

Bây giờ thực hiện tiếp hoán đổi lần 2, r0 và r1 lúc này đã thay đổi thành r’0 và r’1 . Sau khi áp dụng công thức và biến đổi ta được:

Như công thức ở trên, tôi đã rút gọn khi đặt:

Công thức này tương tự công thức ở TH1, do đó biến đổi ta sẽ tính được:
dy = dy1 + dy2
Như vậy, trong trường hợp này swap một lần hay nhiều lần kết quả như nhau.
TH2.2: Nền tảng Dex có tính phí và phí sẽ được đẩy lại làm thanh khoản cho pool
Nếu thực hiện hoán đổi 1 lần, ta có công thức sau:

Bây giờ ta chia làm 2 lần hoán đổi, lần 1 hoán đổi lượng dx1 ta được dy1 như sau:

Bây giờ thực hiện tiếp hoán đổi lần 2, r0 và r1 lúc này đã thay đổi thành r’0 và r’1 . Sau khi áp dụng công thức và biến đổi ta được:

Bây giờ ta sẽ tính tổng dy1+dy2:

Bây giờ ta cần biến đổi biểu thức trên để so sánh với dy, chúng ta nhớ rằng p luôn nhỏ hơn hoặc bằng 1:

Trong ảnh trên, chúng ta cần chú ý
- Từ dòng (1) sang dòng (2) là do: p*dx2<=dx2 (Xem tử số)
- Từ dòng (2) sang dòng (3) là do: p*r0<=r0 (Xem tử số)
- Từ dòng (3) sang dòng (4) là do: dx1>=p*dx1 (Xem mẫu số)
- Từ dòng (4) sang dòng (5) là do: dx<=p*dx (Xem tử số)
Như vậy trong trường hợp này, thì swap nhiều lần sẽ thiệt hơn so với swap 1 lần.
Việc giải thích cũng khá đơn giản, theo công thức tính dy, cùng 1 lượng đầu vào dx và r1 không đổi, nếu r0 tăng thì lượng dy nhận được sẽ ít hơn. Sau khi swap lần 1, phần phí được cộng thêm vào cho r0 mới, tức r0 tăng lên lượng dy nhận được sẽ thấp hơn.
Bạn cần chú ý rằng, nếu phí trừ ở phần output thì swap nhiều lần sẽ lợi hơn.
Trả lời