LapTrinhBlockchain

Chia sẻ kiến thức về Lập Trình Blockchain

Kiến thức Blockchain, Nâng cao Kiến thức

Swap 1 lần hay swap nhiều lần trên các nền tảng Dex lợi hơn?

Swap 1 lần hay swap nhiều lần trên các nền tảng Dex lợi hơn?

Swap 1 lần hay swap nhiều lần trên các nền tảng Dex lợi hơn?

Chia sẻ bài viết
5
(8)

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’0r’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’0r’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’0r’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 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.

Bài viết này có hữu ích với bạn?

Kích vào một biểu tượng ngôi sao để đánh giá bài viết!

Xếp hạng trung bình 5 / 5. Số phiếu: 8

Bài viết chưa có đánh giá! Hãy là người đầu tiên đánh giá bài viết này.

Trả lời

Giao diện bởi Anders Norén