Hồ bơi thanh khoản là cốt lõi của Uniswap và là tâm điểm của mỗi lần nâng cấp. Nếu nói rằng từ V2 đến V3, sự thay đổi chính là tính thanh khoản tập trung, thì từ V3 đến V4, sự thay đổi chính là hồ bơi thanh khoản. Trong V4, các thay đổi của hồ bơi thanh khoản chủ yếu có các khía cạnh sau:
Mỗi hồ bơi thanh khoản trong V3 cần phải triển khai một hợp đồng riêng, trong khi trong V4 tất cả các hồ bơi thanh khoản đều nằm trong hợp đồng PoolManager.
Phí không còn bị giới hạn ở một vài giá trị cụ thể, có thể tự do đặt phí.
V4 hỗ trợ phí động, có thể điều chỉnh tỷ lệ phí dựa trên các điều kiện cụ thể.
Dưới đây sẽ lần lượt trình bày chi tiết các khía cạnh cải tiến, khám phá sâu hơn về nguyên lý thực hiện và ảnh hưởng của chúng.
PoolManager
Trong Uniswap V3, hồ bơi thanh khoản được triển khai thông qua hợp đồng UniswapV3Factory, mỗi hồ bơi đều là một hợp đồng thông minh riêng biệt. Đồng thời, mỗi chuỗi còn có một hợp đồng Proxy (hợp đồng này trên hầu hết các chuỗi có địa chỉ là 0x364484dfb8f2185b90e29fbd10ac96fca8a7e4a7). Khi thêm thanh khoản, người dùng cần thực hiện giao dịch với hợp đồng Proxy, hợp đồng Proxy sẽ gọi hợp đồng Pool. Trong quá trình này, tiền phải chuyển vào hợp đồng Proxy trước, sau đó chuyển vào Pool để trở thành thanh khoản, cuối cùng hợp đồng Proxy sẽ phát cho người dùng một NFT như một bằng chứng về quyền lợi thanh khoản. Có thể thấy quá trình này rất phức tạp và sẽ tiêu tốn nhiều gas. Ngoài ra, khi người dùng giao dịch token, nếu sử dụng giao dịch nhiều bước, cũng sẽ phải chuyển đổi giữa các hợp đồng Pool khác nhau, cũng phải tốn thêm một số gas.
Để giải quyết vấn đề này, Uniswap V4 đã giới thiệu mô hình singleton, cho phép tất cả các hồ bơi được quản lý thông qua hợp đồng PoolManager. Trong PoolManager có một biến _pools, biến này lưu trữ trạng thái của tất cả các hồ bơi. Nếu muốn tạo một hồ bơi mới, chỉ cần thêm một cặp khóa-giá trị vào biến _pools, không cần triển khai hợp đồng. Khi thực hiện giao dịch, tiền cũng không cần phải chuyển giữa các hợp đồng khác nhau, chỉ cần ghi chép trong PoolManager là đủ.
Làm như vậy mang lại nhiều lợi ích, chúng ta có thể đưa ra một phép so sánh thô. Chẳng hạn, chúng ta cần thực hiện giao dịch từ BTC sang USDC, sau đó tính toán đường dẫn phát hiện rằng việc đầu tiên đổi BTC thành ETH, sau đó đổi ETH thành USDC là cách tiết kiệm nhất. Do đó, đường dẫn đổi của chúng ta là BTC->ETH->USDC.
Đối với Uniswap V3, nó giống như một chợ thực phẩm, mỗi quầy hàng đều phải thực hiện một lần thanh toán, thông báo cho các ERC20 để thực hiện thanh toán, cần thanh toán riêng cho BTC, ETH, USDC.
Uniswap V4 giống như một siêu thị lớn, chỉ cần nạp tiền khi vào cửa, rút tiền khi ra khỏi cửa, mọi giao dịch ở mỗi quầy đều là nợ, không thực sự thanh toán. Chỉ thanh toán cuối cùng cho hai tài sản BTC và USDC.
Hai phần của phí tiết kiệm trong quá trình này bao gồm:
Gọi hợp đồng chéo, trong thị trường V3 mỗi lần di chuyển quầy (địa chỉ hồ bơi) đều cần phải trả phí, trong khi V4 chỉ trả một lần.
Phí thanh toán ERC20, mô hình siêu thị lớn của V4 đã loại bỏ toàn bộ chi phí thanh toán trong các đường dẫn giao dịch.
Xét tầm quan trọng của hợp đồng PoolManager, Uniswap cũng tổ chức một hoạt động khai thác địa chỉ ầm ĩ, để chọn một địa chỉ may mắn cho PoolManager, cũng có thể tiết kiệm gas cho người dùng. Điều này cho thấy sự quan tâm của chính thức đối với hợp đồng này.
Việc thực hiện mô hình lợi nhuận đơn lẻ phụ thuộc vào công nghệ lưu trữ tạm thời. Lưu trữ tạm thời là một phương pháp lưu trữ dữ liệu mới trong Ethereum, được đề xuất trong EIP-1153 và sẽ được triển khai vào năm 2024 thông qua nâng cấp Cancun. Nó cho phép lưu trữ tạm thời dữ liệu trong suốt thời gian thực hiện một giao dịch đơn lẻ và tự động xóa sau khi giao dịch kết thúc. Lưu trữ tạm thời lấp đầy khoảng trống của các cơ chế lưu trữ hiện có, đặc biệt phù hợp với những tình huống mà dữ liệu chỉ cần có hiệu lực trong một giao dịch đơn lẻ và cần đọc/ghi thường xuyên. Dưới đây là so sánh giữa Lưu trữ tạm thời, Lưu trữ, Bộ nhớ và Dữ liệu gọi.
Chính nhờ việc giới thiệu cơ chế lưu trữ tạm thời (Transient Storage), Uniswap V4 có thể lưu trữ trạng thái giao dịch với chi phí cực thấp trong một giao dịch đơn lẻ mà không cần ghi các biến trung gian vào lưu trữ blockchain vĩnh viễn. Thiết kế này không chỉ giảm tiêu thụ gas cho mỗi giao dịch mà còn nâng cao hiệu quả giao dịch của V4.
Phí
Ngoài mô hình singleton, một thay đổi lớn khác là phí. So với V3, hồ bơi thanh khoản V4 có thể tự do thiết lập tỷ lệ phí, không còn bị giới hạn ở một vài giá trị cụ thể. Để hiểu điều này trực quan, chúng ta có thể xem xét các tham số tạo hồ bơi. Trong V3, tham số tạo hồ bơi là như sau:
địa chỉ token0: token đầu tiên của hồ bơi
địa chỉ token1: token thứ hai của hồ bơi, thường được sắp xếp theo địa chỉ giữa token đầu tiên và thứ hai
uint24 phí: tỷ lệ phí của hồ bơi, chỉ có thể chọn từ 1%, 0.3%, 0.05%, 0.01%
Trong V4, các tham số tạo được đóng gói thành đối tượng PoolKey. Các trường của đối tượng này bao gồm:
Tiền tệ currency0: token 0. (Loại tiền tệ là bí danh của loại địa chỉ)
Tiền tệ currency1: token 1.
uint24 phí: tỷ lệ phí của hồ bơi, có thể đặt không vượt quá 100%, nếu đặt là 0x800000, có nghĩa là hồ bơi sử dụng phí động.
int24 tickSpacing: khoảng cách tick của tính thanh khoản. Có thể chỉ định tự do, từ 2 đến 32766.
IHooks hooks: hook của Pool, muốn tìm hiểu chi tiết có thể xem bài viết trước đây.
Từ những tham số này có thể thấy, các tham số khởi tạo của hồ bơi thanh khoản chủ yếu bao gồm hai phần: token và phí.
Thiết lập phí trong V4 có hai tham số, phí và tickSpacing, trong khi V3 chỉ có phí. Đối với phí, V3 chỉ có thể thiết lập bốn giá trị (1%, 0.3%, 0.05%, 0.01%), so với V2 chỉ có thể thiết lập 0.3%, đã có một số tiến bộ. Nhưng trong V4, tỷ lệ phí có thể được chọn tự do trong các số nhỏ hơn 100%, điều này mang lại tự do cao hơn trong việc tạo hồ bơi, có thể thiết lập giá trị phí chính xác hơn dựa trên đặc điểm của token.
tickSpacing là độ phân giải của tính thanh khoản. Giá trị nhỏ hơn có thể cải thiện độ chính xác giá; tuy nhiên, giá trị nhỏ hơn sẽ dẫn đến giao dịch swap thường xuyên hơn qua tick, từ đó tạo ra chi phí gas cao hơn. Trong V3, tick spacing được xác định bởi tỷ lệ phí, mối quan hệ tương ứng như sau:
V4 đã loại bỏ mối quan hệ ràng buộc này, do đó phí và tick spacing đã trở thành hai tham số được thiết lập riêng, trong V4, tick spacing có thể lấy bất kỳ số nguyên nào từ 2 đến 32766. Còn về việc giá trị này có lớn hay nhỏ, phải cân nhắc giữa độ chính xác giá và tần suất giao dịch. Ví dụ, đối với stablecoin, tick spacing nên nhỏ, trong khi đối với token như BTC có giá gần trăm ngàn, tick spacing có thể lớn hơn để tiết kiệm gas. Việc tách rời tỷ lệ và tick spacing tương đương với việc xóa bỏ mối quan hệ giữa giá token và độ chính xác, điều này sẽ có lợi cho các loại tiền có giá cao.
Cách thiết lập tùy ý này đã mang lại một vấn đề. Đối với cùng một cặp giao dịch, mỗi phí, mỗi loại tick spacing đều là một hồ bơi mới, vì vậy số lượng hồ bơi sẽ tăng lên đáng kể. Ví dụ, trong V3, USDC-ETH có ba hồ bơi 0.05%, 0.3% và 1%, và cả ba hồ bơi đều rất hoạt động, xếp hạng thanh khoản đều trong top 50. Đến V4, do tỷ lệ có 1,000,000 khả năng, hồ bơi USDC-ETH trong V4 có thể dễ dàng xuất hiện hàng trăm hồ bơi. Nếu tính đến các Hook khác cũng tính là hồ bơi mới, số lượng hồ bơi trong tương lai sẽ còn nhiều hơn. Điều này chắc chắn sẽ phân tán tính thanh khoản của mỗi hồ bơi.
Phí động
Phí động là sự thay đổi lớn nhất trong V4 ngoài Hook, có ý nghĩa không kém gì tính thanh khoản tập trung trong V3. Phí động có nghĩa là phí của hồ bơi thanh khoản không còn cố định ở một giá trị cụ thể nào, mà có thể điều chỉnh bất cứ lúc nào dựa trên tình hình cụ thể của thị trường. Tính linh hoạt này giúp phí động có thể phát sinh nhiều tình huống sử dụng khác nhau, mang lại nhiều ứng dụng và chiến lược đổi mới cho Uniswap, từ đó nâng cao hiệu quả và khả năng thích ứng của toàn bộ giao thức. Dưới đây là một số tình huống điều chỉnh phí động có thể xảy ra:
Điều chỉnh theo giá thị trường hiện tại trong chế độ này, việc điều chỉnh phí gắn liền với biến động giá thị trường. Ví dụ, khi giá của một tài sản tăng, phí cũng sẽ tăng tương ứng và ngược lại. Cách điều chỉnh này có thể giúp Uniswap thích ứng tốt hơn với sự thay đổi của môi trường thị trường, đặc biệt là khi giá tài sản biến động mạnh, việc tăng phí có thể bù đắp cho rủi ro của nhà cung cấp thanh khoản.
Điều chỉnh theo khối lượng giao dịch trong thời gian có khối lượng giao dịch lớn, phí có thể được giảm giá hoặc ưu đãi. Chế độ này phù hợp với các giao dịch lớn, vừa có thể thu hút các nhà giao dịch tần suất cao để giảm chi phí giao dịch, vừa có thể khuyến khích nhà cung cấp thanh khoản cung cấp nhiều thanh khoản hơn, đặc biệt là trong các thị trường có khối lượng lớn, biến động giá nhỏ. Qua việc tối ưu hóa cấu trúc phí, có thể đạt được sự cân bằng giữa nhu cầu thị trường và lợi nhuận của nhà cung cấp thanh khoản.
Điều chỉnh theo phí gas mạng cơ chế này làm cho phí gắn liền với mức độ tắc nghẽn của mạng blockchain. Khi phí gas mạng cao, hồ bơi thanh khoản có thể tự động tăng phí, kiểm soát tốc độ thay đổi thanh khoản; trong khi khi mạng ít tắc nghẽn hơn, phí có thể được giảm nhẹ. Cách điều chỉnh này giúp tăng hiệu quả hoạt động của hồ bơi thanh khoản, cũng giúp người dùng tận hưởng chi phí giao dịch thấp hơn khi phí mạng thấp.
Điều chỉnh theo giá bên ngoài (như oracle) thông qua việc kết hợp với oracle bên ngoài hoặc nguồn dữ liệu thị trường, Uniswap có thể điều chỉnh phí một cách động dựa trên giá bên ngoài chính xác. Cơ chế điều chỉnh này có thể đảm bảo phí của hồ bơi thanh khoản luôn khớp với tình hình thực tế của thị trường, từ đó cung cấp cơ chế định giá công bằng và chính xác hơn. Ví dụ, khi sự biến động trên thị trường của một tài sản tăng, phí có thể tăng lên để phản ánh rủi ro của nó.
Điều chỉnh vào những thời điểm cụ thể chiến lược này cho phép điều chỉnh tỷ lệ phí vào những thời điểm cụ thể (như hàng năm, hàng quý hoặc hàng tuần). Cách này phù hợp với những tình huống cần xem xét định kỳ môi trường thị trường hoặc tối ưu hóa theo nhu cầu theo mùa. Ví dụ, hàng năm điều chỉnh dựa trên hiệu suất thị trường và nhu cầu thanh khoản của năm trước để duy trì sự phát triển bền vững lâu dài của hệ thống.
Qua các ví dụ trên, có thể thấy rằng việc giới thiệu phí động không chỉ cung cấp nhiều tính linh hoạt hơn cho hồ bơi thanh khoản mà còn mang lại lợi ích và cơ hội tiết kiệm khác nhau cho nhà cung cấp thanh khoản và người dùng. Đối với nhà cung cấp thanh khoản, phí động có thể cung cấp lợi nhuận cao hơn trong thời gian thị trường biến động mạnh, từ đó khuyến khích họ cung cấp nhiều thanh khoản hơn trong thời gian rủi ro cao; trong khi đối với người dùng thông thường, việc điều chỉnh phí động có thể tối ưu hóa theo khoảng thời gian giao dịch, tình trạng thị trường hoặc mức độ tắc nghẽn mạng, giảm chi phí giao dịch, từ đó nâng cao trải nghiệm giao dịch và sức hấp dẫn tổng thể của nền tảng.
Tóm lại, phí động đã mang đến cho Uniswap một cách quản lý phí linh hoạt và thông minh hơn, không chỉ tăng cường khả năng thích ứng của thị trường mà còn cung cấp nhiều lựa chọn và cơ hội hơn cho nhà cung cấp thanh khoản và người dùng, thúc đẩy giao thức giao dịch phi tập trung phát triển không ngừng trong môi trường thị trường ngày càng phức tạp.
Dưới đây là lời trích dẫn từ Uniswap, mô tả cảnh quay của họ về phí động:
Cải thiện định giá theo biến động: điều chỉnh phí dựa trên biến động của thị trường, tương tự như các sàn giao dịch truyền thống điều chỉnh chênh lệch giá mua bán.
Định giá theo đơn hàng: định giá chính xác hơn cho các loại giao dịch khác nhau (ví dụ, giao dịch chênh lệch giá và giao dịch không thông tin).
Nâng cao hiệu quả và tính ổn định của thị trường: phí có thể được điều chỉnh theo tình hình thị trường theo thời gian thực, tối ưu hóa lợi ích của nhà cung cấp thanh khoản và người giao dịch. Phí động giúp kiềm chế sự biến động cực đoan của thị trường thông qua việc điều chỉnh các biện pháp khuyến khích theo thời gian thực.
Nâng cao hiệu quả vốn và lợi nhuận cho nhà cung cấp thanh khoản: thông qua việc tối ưu hóa phí, hồ bơi có thể thu hút nhiều thanh khoản hơn và thúc đẩy giao dịch hiệu quả hơn. Định giá phí chính xác hơn có thể mang lại lợi nhuận tốt hơn, từ đó thu hút nhiều vốn hơn vào hồ bơi.
Quản lý rủi ro tốt hơn: Trong thời gian biến động cao, phí có thể tăng lên để bảo vệ nhà cung cấp thanh khoản khỏi tổn thất tạm thời.
Chiến lược tùy chỉnh: Cung cấp các chiến lược phí phức tạp cho các cặp token hoặc phân khúc thị trường cụ thể.
Việc thực hiện phí động phụ thuộc vào Hook của hồ bơi thanh khoản. Hook là khái niệm mới trong V4, nó là một hợp đồng riêng biệt có thể tăng thêm logic cho hồ bơi thanh khoản. Thông qua Hook, hồ bơi thanh khoản có thể chèn một số hàm tùy chỉnh trước và sau giao dịch, trong các hàm này có thể thay đổi tỷ lệ phí. Do đó, cách thay đổi phí rất linh hoạt, chẳng hạn như khi thêm hoặc loại bỏ thanh khoản, hoặc trước và sau giao dịch swap đều có thể tính toán phí mới và thay đổi tỷ lệ phí của hồ bơi theo thời gian thực.
Nếu muốn cho phép hồ bơi thanh khoản sử dụng phí động, cần phải đặt tỷ lệ là 0x80000 khi tạo hồ bơi, tức là LPFeeLibrary.DYNAMIC_FEE_FLAG.
Có hai cách để thay đổi tỷ lệ phí động. Một là gọi IPoolManager.updateDynamicLPFee(key, newValue) trong Hook, thay đổi vĩnh viễn tỷ lệ phí của hồ bơi. Hàm này có thể gọi tại bất kỳ điểm nào trong Hook. Ví dụ dưới đây:
Chú ý: Sau khi tạo hồ bơi, tỷ lệ mặc định là 0, vì vậy cần thiết lập một giá trị ban đầu cho phí trong afterInitialize của Hook.
Một cách khác là tạm thời thay đổi tỷ lệ. Trong beforeSwap của Hook, có thể trả về một tỷ lệ, sau đó giao dịch swap này sẽ sử dụng tỷ lệ mới này. Trong khi đó, tỷ lệ phí của hồ bơi sẽ không thay đổi, các giao dịch khác cũng sẽ không bị ảnh hưởng.
Tuy nhiên, đối với phí động, có hai khái niệm dễ gây nhầm lẫn. Trong Hook cũng có thể thêm một phần phí bổ sung, nó không xung đột với phí của hồ bơi, cả hai có thể thu cùng lúc. Thực tế, phí của hồ bơi thanh khoản thường được gọi là phí LP, trong khi phí thu được từ Hook sẽ được gọi là phí Hook. Thông thường, khi đề cập đến phí động là chỉ phí của hồ bơi thanh khoản.
Tóm tắt
Là một giao thức AMM hàng đầu, việc cập nhật hồ bơi thanh khoản của Uniswap V4 một lần nữa khẳng định sự đổi mới và vị trí dẫn đầu của nó trong lĩnh vực giao thức giao dịch phi tập trung. Chuỗi các thay đổi này không chỉ tăng cường tính linh hoạt và khả năng mở rộng của giao thức mà còn nâng cao đáng kể sức cạnh tranh trên thị trường, giúp Uniswap V4 vượt xa nhiều đối thủ và tiếp tục giữ vị trí thống trị trong hệ sinh thái DeFi.
Tài liệu tham khảo
Hoạt động khai thác địa chỉ ầm ĩ: https://v4-address.uniswap.org/
[2] Lưu trữ tạm thời: Giải pháp dữ liệu tạm thời hiệu quả trong Solidity: https://learnblockchain.cn/article/9847
Bài viết trước đây: https://github.com/antalpha-labs/zelos
Tác giả: Steven Sun, Zelos