Concentrated Liquidity là mô hình cung cấp thanh khoản được Uniswap triển khai trên phiên bản v3 của giao thức này. Nó hứa hẹn làm tăng hiệu quả sử dụng vốn lên gấp nhiều lần so với mô hình cũ.
Chuẩn bị hành trang đón sóng Concentrated Liquidity (Phần 1)
Để tìm hiểu chi tiết về mô hình này đặc biệt là với những người mới, bài viết dưới đây sẽ dẫn dắt các bạn đi từ những khái niệm sơ khai nhất. Và trong xuyên suốt bài viết tác giả sẽ sử dụng các ví dụ minh hoạ thông qua thị trường trứng gà.
Phần 1: Các kiến thức nền tảng
Order Book
Đầu tiên, chúng ta có một trang trại chăn nuôi thuộc sở hữu của Musk, gà trong trang trại cho rất nhiều trứng và Musk muốn bán đi lấy tiền, Musk đóng vai trò là người bán. Bạn không nuôi được gà, nhưng muốn ăn trứng, bạn đóng vai trò là người mua.
Cần đủ 2 yếu tố để giao dịch được thực hiện:
- Một là Musk và bạn gặp được nhau;
- Hai là giá mà Musk muốn bán bằng với giá bạn đồng ý mua.
Được rồi, bây giờ một người thứ 3 tên CZ xuất hiện và anh ta có một cuốn sổ. Anh ta gặp bạn và ghi nhu cầu mua trứng của bạn vào sổ, ví dụ 2 quả trứng gà với giá 2.000đ/quả. CZ cũng gặp chủ trang trại Musk và ghi thông tin bán trứng vào sổ, ví dụ 100 quả với giá 2.000đ/quả. CZ cũng gặp chủ trang trại A, B, C và người có nhu cầu mua X, Y, Z khác và ghi hết vào sổ.
Sau khi xem xét sổ, CZ thấy Bạn và Musk có thể trao đổi với nhau và tiến hành thực hiện lệnh mua bán cho Bạn và Musk. Còn những người khác do muốn bán giá quá cao hoặc muốn mua quá rẻ nên vẫn ở chế độ chờ.
Như vậy, CZ giúp hai bên thực hiện hoạt động mua bán trao đổi, bù lại anh ta sẽ thu một khoản phí cho công sức của mình. Đây chính là mô hình Orderbook mà các sàn CEX sử dụng hiện tại.
Với mô hình Orderbook bạn sẽ biết được chính xác giá mà bạn sẽ mua hoặc bán, nhưng đổi lại bạn sẽ cần chờ đợi cho đến khi có người đồng ý mua/bán với mức giá đã đặt.
Orderbook của Binance cho cặp BTC/USDT
Mô hình này hoạt động hiệu quả với những thị trường có tính thanh khoản cao, tức luôn có người đồng ý mua/bán ở nhiều mức giá, bạn có thể ngay lập tức mua hoặc bán ở bất kỳ thời điểm và mức giá nào. Tại các sàn giao dịch tập trung, bạn có thể thực hiện thêm nhiều loại hình lệnh nâng cao như TP/SL hoặc lệnh điều kiện khác.
Tuy nhiên, đối với những thị trường thanh khoản thấp mô hình này hoạt động kém hiệu quả, người dùng có thể phải chờ đợi ngày qua ngày để lệnh của mình được khớp. Thêm vào đó, bản chất của Orderbook là bạn đang giao dịch những con số tượng trưng cho mặt hàng chứ không phải giao dịch hàng hóa thực sự bạn sở hữu.
Ví dụ, khi bạn thực hiện cặp giao dịch BTC/USDT trên sàn giao dịch Binance, thì thực sự bạn đang giao dịch các con số đại diện cho số BTC và USDT bạn sở hữu, còn BTC, USDT thực tế của bạn đang nhờ Binance trông coi hộ.
Quay lại với những giá trị cốt lõi của Blockchain:
- Phi tập trung – Decentralized
- Không cần cấp phép – Permissionless
- Không cần đặt niềm tin – Trustless
- Minh bạch – Transparent
- Tự trông nom tài sản – Self-Custody
Xuất phát từ toàn bộ những điều trên, mô hình AMM đã ra đời đặt nền móng cho hệ sinh thái DeFi. AMM tạo nên thị trường đạt đầy đủ tiêu chuẩn mà Blockchain hướng tới.
AMM
AMM (Automated Market Maker) là công cụ tạo lập thị trường tự động, ở đó giá và các lệnh mua bán được thực hiện theo logic thiết lập sẵn thông qua một smart contract. Cơ sở cốt lõi hình thành nên AMM nằm ở Liquidity Pool – bể thanh khoản.
Mô hình hoạt động của AMM. Nguồn: Uniswap
Mô hình x * y = k
Chúng ta sẽ tìm hiểu về cách hoạt động của Liquidity Pool thông qua ví dụ tiếp tục với thị trường trứng gà.
Quay trở lại thị trường trứng gà, sau nhiều phàn nàn về lòng tin và sự minh bạch của hệ thống sổ sách bởi CZ, một chàng trai tên là Adams đã đứng lên và bảo rằng:
“Tôi có phương pháp khác giúp mọi người mua bán tự động và minh bạch.”
Adams đưa cho chủ trang trại Musk một cái giỏ, bảo với anh ta hãy tự tạo ra thị trường trứng gà bằng cách bỏ cả trứng và tiền vào giỏ với tỷ lệ tương ứng.
Musk định giá ban đầu là 2.000đ/quả trứng và muốn khởi tạo thị trường với 100 quả trứng. Vì vậy, anh ta cần bỏ vào giỏ 100 quả trứng, tương ứng với đó là 200.000đ.
Chiếc giỏ này hoạt động tự động theo công thức mà Adams đã thiết lập trước:
x * y = k
Trong đó:
- x: số lượng trứng gà
- y: số lượng tiền
- k: hằng số không đổi là tích của x và y
Thay số vào ví dụ trên:
x*y = k ⇔ 100 * 200.000 = 20.000.000
Bạn lại muốn ăn trứng gà, bạn đến bên chiếc giỏ của Adams và muốn mua một quả trứng. Chiếc giỏ sẽ tính toán số tiền bạn cần trả dựa theo công thức x*y=k như sau:
Giả sử không có phí giao dịch.
– Hằng số k là không đổi
– Số x’ (trứng gà) mới sau khi bị lấy đi 1 quả là 99
=> Số lượng tiền y’ mới cần có trong giỏ để k bảo toàn bằng 20.000.000 là: y’ = k/x’ ⇔ y’ = 20.000.000/99 = 202.020,20đ
=> Số tiền cần trả = y’-y = 202.020,2 – 200.000 = 2.020,2đ
Như vậy bạn cần đưa 2.020,2đ vào giỏ để lấy ra 1 quả trứng gà. Các giá trị mới trong giỏ trứng gà là:
- x = 99 quả
- y = 202020,2đ
- k = 20.000.000 (không đổi)
- Giá tham chiếu lúc này đã tăng từ 2.000đ/quả thành 2.020,2đ/quả
Có thể thấy bạn phải trả 2.020,2đ thay vì định giá ban đầu 2.000đ/quả, khoản 20,2đ này gọi là trượt giá, bạn mua hoặc bán số lượng càng lớn so với hằng số k thì trượt giá sẽ càng lớn.
Hằng số k thể hiện tính thanh khoản của cặp giao dịch x/y, hay ở trong ví dụ trên là trứng gà/vnđ.
Bạn có thể làm ví dụ ngược lại cho trường hợp người nào đó muốn bán trứng gà vào giỏ để lấy tiền ra để hiểu cách hoạt động của pool thanh khoản.
Do hằng số k không đổi nên hai hệ số x và y sẽ chạy từ tiệm cận 0 đến ∞. Quan sát hình bên dưới, hai trục x và y đại diện cho số lượng hàng hoá X và Y, đường cong màu đỏ thể hiện cho sự di chuyển của giá cả, hay tỉ lệ quy đổi của hai loại hàng hoá X và Y theo công thức x*y=k.
Đường cong bên trong được lấy ví dụ cho k=100 và bên ngoài là k=500. Có thể thấy số lượng hàng hoá trong Pool càng lớn, tức hằng số k=x*y càng lớn thì đường cong càng dịch chuyển ra phía ngoài, thể hiện cho tính thanh khoản càng lớn.
Đường cong được tạo ra bởi mô hình x*y=k thể hiện sự dịch chuyển của giá cả
x*y=k là mô hình kinh điển được các AMM của đa số DEX sử dụng (Uniswap, PancakeSwap, SushiSwap,…)
Mô hình x + y = k
Ngoài ra, các bạn cũng cần biết mô hình x+y=k thường được sử dụng trong các cặp giao dịch stablecoin. Công thức này sẽ giúp giảm thiểu độ trượt giá mà người tham gia phải gánh chịu.
Mô hình x+y=k
Lúc này, giá cả thay vì di chuyển trên một đường cong như x*y thì giá sẽ di chuyển trên một đường thẳng như hình trên và có hai điểm giao cắt với trục x và y tại mốc có giá trị = k, tức bằng x+y.
Nếu như với x*y=k không bao giờ xảy ra giao cắt với hai trục x,y, có nghĩa là bạn cần bỏ ra ngày một nhiều số lượng tài sản X để đổi được tài sản Y theo cấp số nhân và bạn sẽ không bao giờ có thể rút hết X hoặc Y ra khỏi Pool thì mô hình x+y=k lại khác.
Điểm giao cắt thể hiện cho việc số lượng một loại tài sản có thể về 0, đổi lại lợi ích của mô hình này là giảm thiểu sự trượt giá cho những người tham gia giao dịch.
Nguyên lý cung cấp thanh khoản cho pool
Bên trên là cách một Liquidity Pool theo mô hình x*y=k hoạt động.
Như đã phân tích, khi bạn giao dịch với khối lượng càng lớn so với k, bạn càng chịu nhiều sự ảnh hưởng của trượt giá, vậy nên cách tốt nhất để giảm thiểu điều này là tăng hằng số k lên bằng cách tăng thêm số lượng cho cặp tài sản x, y trong Pool, hay nói cách khác là tăng thanh khoản cho Pool.
Để làm điều này, những nhà tạo lập thị trường sẽ cho phép các nhà đầu thêm vào Pool một số lượng tài sản x và y theo tỉ lệ 1:1 để tăng tính thanh khoản cho Pool. Đổi lại những nhà cung cấp thanh khoản sẽ được chia sẻ một phần phí giao dịch thu được từ người tham gia mua/bán, ngoài ra còn nhiều incentives khác mình sẽ phân tích ở phần sau. Hoạt động này được gọi là Liquidity Farming hay Liquidity Mining.
Vì sao phải bổ sung tài sản theo tỉ lệ 1:1?
Vì nếu bạn thêm theo tỉ lệ khác sẽ làm thay đổi tỉ lệ của cặp x:y trong Pool, từ đó làm giá dịch chuyển.
Bạn cũng cần biết rằng không phải pool tài sản nào cũng cho phép cộng đồng đóng góp. Có những pool chỉ giới hạn cho một nhóm nhà đầu tư được cấp quyền đóng góp gọi là Private Pool, hoặc có những Pool chỉ chủ dự án mới được quyền thêm thanh khoản.
Quay lại với ví dụ thị trường trứng gà, giả sử trong Pool vẫn đang có 100 trứng và 200.000đ, giá tham chiếu là 2.000đ/quả.
Bạn được Musk airdrop cho 20 quả trứng gà trong chuyến tham quan trang trại gần đây. Và bạn quyết định cho số trứng này vào giỏ Adams để kinh doanh chung.
Để giá không biến động thì bạn cần thêm 20 quả trứng cùng số tiền tương ứng tại mức giá 2.000đ/quả => Số tiền cần thêm vào là: 20 * 2.000 = 40.000đ.
Số lượng mới trong giỏ là:
- x: 120 quả trứng
- y: 240.000đ
- k: 28.800.000
- Giá: 2.000đ/quả
Bây giờ, một người khách hàng thực hiện mua 1 quả trứng gà thì ta sẽ tính được giá mà anh ta phải trả như sau:
=> y’ = k/x’ ⇔ y’ = 28.800.000/119 = 242.016,81đ
=> Số tiền cần trả cost = y’-y ⇔ 242.016,81 – 240.000 = 2.016,81đ
Có thể thấy chi phí mua một quả trứng gà đã giảm từ 2.020,2đ xuống còn 2.016,81đ (tiết kiệm 3,39đ).
Thanh khoản càng lớn thì sự trượt giá càng nhỏ. Nguồn: Uniswap
Đến đây, các bạn đã hiểu được tính thanh khoản ảnh hưởng tới sự trượt giá như thế nào.
Vậy nên các dự án luôn có chương trình khuyến khích cung cấp thanh khoản bằng nhiều cách như:
- Chia sẻ doanh thu từ phí giao dịch;
- Phân phối thêm token của dự án cho những người cung cấp thanh khoản.
Ngoài ra, khi cung cấp thanh khoản cho các cặp giao dịch, các nhà cung cấp thanh khoản – Liquidity Provider (LP) còn nhận về các token LP đại diện cho quyền sở hữu của mình đối với Pool thanh khoản đó. Các token LP này ngoài việc là bằng chứng cổ phần còn có thể tham gia vào nhiều hoạt động khác trong không gian DeFi như quyền biểu quyết, stake, thế chấp,… để tiếp tục gia tăng lợi nhuận. Hoạt động như vậy được gọi là Yield Farming.
Và như bạn biết rồi đó, bất cứ hoạt động nào trong thị trường tài chính đều tiềm tàng rủi ro. Phần sau đây, chúng ta sẽ tìm hiểu về những rủi ro khi trở thành một Liquidity Provider.
Những rủi ro khi tham gia cung cấp thanh khoản
Impermanent loss (Tổn thất tạm thời)
Cụm từ bạn thường hay được nghe tới nhất là Impermanent loss – tổn thất tạm thời hay còn gọi là tổn thất chưa ghi nhận hoặc tổn thất vô thường. Đây là rủi ro quan trọng bậc nhất bạn cần nắm trước khi bước chân vào con đường cung cấp thanh khoản.
Impermanent loss – tổn thất tạm thời là khoản tổn thất chênh lệch giữa việc bạn mang token đó đi cung cấp thanh khoản so với việc chỉ cần hold nó trong ví.
Khoản tổn thất tạm thời này từ đâu mà ra? Đó là do việc giá đã di chuyển so với thời điểm bạn thêm cặp thanh khoản. Và vì sao lại là tạm thời? Vì bạn chưa tháo thanh khoản và bán token của mình thì khoản lỗ đó vẫn chỉ là trên giấy tờ, chưa thành hiện thực.
Để làm rõ Impermanent loss, chúng ta sẽ trở lại với ví dụ về thị trường trứng gà.
Vẫn là giỏ trứng gà ban đầu với 100 trứng; 200.000đ, giá là 2.000đ/quả, vẫn là bạn thêm cặp trứng:vnđ với giá trị: 20 quả: 40.000đ vào giỏ tại mức giá là 2.000đ.
Bây giờ cùng tính giá trị của toàn bộ cặp thanh khoản mà bạn thêm vào:
- Giá trị trứng thêm vào: 20 trứng * 2.000đ/quả = 40.000đ
- Số tiền mặt đối ứng: 40.000đ
- Tổng là: 80.000đ
Với 80.000đ giá trị này bạn sẽ nhận được 16,7% cổ phần của Pool.
Sau khi thêm vào giỏ và trải qua một ngày, nhiều người mua, bán khác nhau, thì số lượng Trứng và Tiền trong giỏ còn lại như sau:
- k: không đổi vẫn bằng 28.800.000
- Trứng: 80 quả
- Tiền: 360.000đ
- Giá đã tăng từ 2.000đ/quả lên thành 4.500đ/quả
Bây giờ, nếu bạn muốn rút số trứng gà và tiền đã đóng góp vào giỏ ban đầu ra và mang đi bán, các giá trị được tính toán như sau:
16,7% cổ phần hiện tại sẽ rút được:
- Trứng: 80 * 16,7% = 13,33 quả
- Tiền: 360.000 * 16,7% = 60.000đ
Tổng giá trị quy ra vnđ mà bạn thu về khi thanh lý là:
13,33 trứng * giá trứng mới + Tiền vnđ rút từ pool ⇔ 13,33 * 4.500 + 60.000 = 120.000đ
Đặt tình huống nếu bạn không mang trứng góp vào giỏ để kinh doanh mà chỉ giữ ở nhà thì giá trị quy đổi ra vnđ số tài sản của bạn là:
20 quả trứng * giá trứng mới + Tiền vnđ đối ứng cho cặp thanh khoản
⇔ 20 * 4.500 + 40.000 = 130.000đ
Impermanent loss = 130.000 – 120.000 = 10.000đ
Bạn có thể làm tương tự ví dụ trên cho trường hợp giá giảm để hiểu hơn về Impermanent loss.
Khoản tổn thất tạm thời này có thể trở thành tổn thất vĩnh viễn khi mà giá không bao giờ quay trở lại mốc bạn đã thêm thanh khoản.
Công thức mà các LP chuyên nghiệp thường áp dụng để tính toán khi thêm thanh khoản là:
Lợi nhuận = Phí giao dịch được chia sẻ + Incentives – Impermanent loss
Vì vậy, trước khi tham gia cung cấp thanh khoản bạn cần chắc chắn rằng con số lợi nhuận trong công thức trên là dương.
Những rủi ro khác
Ngoài rủi ro về tổn thất tạm thời, còn các rủi ro cố hữu khác đến từ thị trường DeFi như:
Rủi ro smart contract
Khi đưa tiền vào smart contract thì bạn đang giao hoàn toàn tài sản của mình cho smart contract quản lý. Nếu smart contract xảy ra lỗi, bạn có thể mất toàn bộ số tiền đã đưa vào. Vì vậy, chỉ nên cung cấp thanh khoản cho những dự án uy tín và có smart contract đã được các tổ chức lớn audit.
Rủi ro quản lý tài sản
Khi cung cấp thanh khoản, bạn sẽ được nhận lại LP token là bằng chứng cổ phần của bạn đối với Pool thanh khoản. Bạn có thể mang LP token này đi tham gia các hoạt động yield farming để gia tăng lợi nhuận, nhưng cũng sẽ dẫn tới rủi ro bị mất LP token này vì một lý do nào đó như hack hoặc smart contract của một bên thứ ba nữa. Vì vậy, hãy chắc chắn rằng bạn hiểu mình đang làm gì trước khi tham gia Yield Farming.
Tiếp theo trong phần 2, chúng ta sẽ tìm hiểu về mô hình thanh khoản tập trung – Concentrated Liquidity.