Bài viết này sẽ giới thiệu về một số AMM quan trọng trong hệ sinh thái Solana.
Tác giả: ZAN
Trong trạng thái hiện tại của ngành Web3, các sản phẩm liên quan đến DeFi chiếm lĩnh thị trường một cách tuyệt đối. Trong số đó, AMM (Automated Market Maker, nhà tạo lập thị trường tự động) là một phần quan trọng, là động lực mạnh mẽ cho sự thay đổi trong lĩnh vực tài chính Web3. Bài viết này sẽ giới thiệu một vài giải pháp AMM quan trọng trong hệ sinh thái Solana, hy vọng có thể cung cấp một số trợ giúp cho LP (Liquidity Provider, nhà cung cấp thanh khoản) trong việc lựa chọn chiến lược đầu tư của mình.
CPMM
CPMM (Constant Product Market Maker) là một trong những triển khai AMM cơ bản nhất, được áp dụng trong nhiều sản phẩm. Ở đây, tôi sẽ lấy AMM dựa trên sản phẩm không đổi do Raydium phát hành làm ví dụ. Sản phẩm không đổi có nghĩa là lượng cung cấp của hai loại token trong pool có một sản phẩm cố định: X * Y = k.
Đối với những người cung cấp thanh khoản, khi bất kỳ ai thêm thanh khoản vào bể (thêm tài sản), CPMM sẽ tự động tạo tài khoản liên kết cho địa chỉ ví và phát hành LP Token (mỗi cặp mã thông báo đều có Mint LP Token riêng), LP Token này được sử dụng để chứng minh rằng địa chỉ ví đó nắm giữ một phần trong bể nào đó, và sẽ bị tiêu hủy Token tương ứng khi người cung cấp thanh khoản rút tiền.
Chương trình trên chuỗi của CPMM được phát triển bằng Anchor, mã chương trình có thể được tìm thấy ở đó. Dưới đây, chúng ta sẽ xác nhận một cách đơn giản nó được thực hiện như thế nào để duy trì sản phẩm không đổi.
Đầu tiên, khi người dùng sử dụng Raydium để hoán đổi token qua CPMM, sẽ kích hoạt các lệnh liên quan đến swap.
Ví dụ (chỉ để minh họa tình huống, bài viết này không chịu trách nhiệm cho bất kỳ Token nào): khi người dùng muốn sử dụng USDC để trao đổi TRUMP, họ có thể thực hiện trao đổi thông qua bể TRUMP-USDC.
Ví dụ, chúng ta xem giao dịch này, để đơn giản, hãy bỏ qua các lệnh khác trong giao dịch và chỉ xem phần Raydium. Tìm Raydium CPMM: swapBaseInput:
Trong Input Accounts, chúng ta có thể thấy token đầu vào là USDC, token đầu ra là TRUMP. Trong AMM của hệ sinh thái Solana, LP Pair có thể được biểu thị đơn giản thông qua Token Account mà không cần tạo một hợp đồng chương trình mới và triển khai (chẳng hạn như hợp đồng factory thường được sử dụng trong Ethereum). Khi giao dịch xảy ra, nó sẽ tương tác trực tiếp với Chương trình CPMM của Raydium, chương trình Solana sẽ thay đổi trạng thái của Token Account tương ứng thông qua địa chỉ pool, địa chỉ token, v.v. để thực hiện thao tác swap.
Ví dụ như lệnh swapBaseInput ở trên, mã có thể tìm thấy ở đây. Sau một loạt kiểm tra trước, số lượng token mục tiêu cụ thể có thể đổi được đã được tính toán thông qua ConstantProductCurve.swap_base_input_without_fees:
Trong đó công thức được sử dụng là:
Sau khi tổng lượng của TokenX và TokenY thay đổi, tích của chúng nên được giữ nguyên. Phía bên trái của công thức là tích sau khi thay đổi, bên phải là tích trước khi thay đổi.
Công thức chuyển đổi Δy (tức là số lượng token y mà chúng ta có thể đổi được) có được thông qua phép biến đổi toán học như trên:
Cụ thể là phần delta_y = (delta_x * y) / (x + delta_x) trong mã. Lưu ý rằng phép tính này không bao gồm phí giao dịch, vì nó đã được trừ trong logic trước của swap_base_input.
CLMM
CLMM ( Nhà tạo lập thị trường thanh khoản tập trung ) Cũng giống như AMM do Raydium phát hành, nó tương tự như Uniswap V3, mỗi cặp token cũng có nhiều mức phí, có thể tạo ra một bể tương ứng cho từng mức.
Do việc triển khai CLMM tham khảo Uniswap V3, nên khi học về nó, nhiều khái niệm và cách triển khai có thể tham khảo từ cách thực hiện của Uniswap. Nó cũng kế thừa các khái niệm của Uniswap như tick, nhiều tầng phí, tính thanh khoản tập trung, v.v. Thêm nội dung có thể tìm thấy trong khóa học phát triển DEX do ZAN phát hành: Thực hành phát triển DEX - Phân tích mã Uniswap - Cách Uniswap hoạt động - ZAN
Tuy nhiên, cần lưu ý rằng, tương tự như CPMM, do đặc điểm của chuỗi Solana, Raydium CLMM không cần triển khai một hợp đồng riêng cho mỗi pool, vì vậy cũng không có khái niệm hợp đồng nhà máy. Điều này khác với Uniswap.
CLMM cho phép người cung cấp thanh khoản chọn một khoảng giá khi cung cấp vốn, vốn sẽ chỉ được phân phối trong khoảng đã chọn:
Đối với các hồ bơi thanh khoản tập trung, các mã thông báo tồn tại ở hai phía của giá hiện tại, và khoảng giá được chọn trong hình trên bao gồm giá hiện tại, vì vậy sẽ phân bổ vốn cho hai loại mã thông báo trong hồ bơi.
Chúng tôi cũng có thể chỉ tiêm một loại token nhất định để cung cấp cái gọi là tính thanh khoản một chiều (như hình dưới). Điều này khá giống với lệnh giới hạn trong mô hình tài chính truyền thống, vốn chỉ sử dụng quỹ của LP khi giá token đạt đến một phạm vi nhất định, tuy nhiên, mô hình này cũng cần xem xét nhiều điểm rủi ro hơn.
Nói chung, đối với các bể có biến động giá nhỏ, LP thường có xu hướng chọn một phạm vi nhỏ hơn; ngược lại, đối với những bể có biến động giá rất lớn, thì có xu hướng chọn một phạm vi lớn hơn. Mục đích của điều này là để cố gắng không để giá hiện tại thoát ra khỏi phạm vi giá mà mình đã chọn, gây ra quá nhiều tổn thất không thường xuyên.
Cần lưu ý rằng, thanh khoản tập trung mặc dù có thể giúp tăng tỷ lệ sử dụng vốn của LP, nhưng cũng đặt ra yêu cầu cao hơn về nhận thức tài chính của LP, LP cần quản lý thanh khoản của mình một cách tích cực hơn. Nếu LP không ứng phó tốt, thì sự dao động thường xuyên trên chuỗi sẽ dễ dàng dẫn đến việc LP chịu tổn thất không thường xuyên nghiêm trọng.
DLMM
DLMM (Dynamic Liquidity Market Maker) là sản phẩm AMM được Meteora phát triển, nó cũng thuộc loại Uniswap V3, và cũng rất giống với CLMM đã đề cập ở trên. DLMM cũng cho phép LP tập trung vốn của mình trong một khoảng giá nhất định gần với giá hiện tại. Tuy nhiên, DLMM có một số khác biệt trong việc thực hiện cụ thể và cung cấp một số tính năng đặc sắc.
DLMM cung cấp khái niệm Bin, các pool sẽ bắt đầu từ giá cơ sở, mỗi khoảng Bin step sẽ tồn tại như một Bin. Nếu giao dịch xảy ra trong cùng một Bin, thì các nhà giao dịch sẽ được hưởng lợi từ việc không bị trượt giá. Điều này có thể tăng đáng kể khối lượng giao dịch và tỷ lệ thành công của giao dịch, về lý thuyết LP có thể thu được nhiều phí giao dịch hơn.
Tương tự như CLMM, các token trong pool cũng phân bố ở hai bên của giá hiện tại, một token chỉ cần cung cấp tính thanh khoản một bên. Nhưng theo khái niệm Bin, Bin hiện tại được kích hoạt (cho thấy giá trao đổi hiện tại) sẽ có hai loại token. Tức là:
Bin hiện tại được kích hoạt: Trong đó có hai loại token, việc trao đổi token trong Bin hiện tại sẽ được thực hiện theo giá cố định và không có độ trượt;
Các Bin khác: Phân bố ở hai bên của Bin đang được kích hoạt, mỗi bên chỉ tồn tại một loại token duy nhất.
Khi lượng token trong Bin đang kích hoạt thay đổi, nếu một bên token giảm xuống 0, DLMM sẽ thiết lập Bin đang kích hoạt hiện tại thành Bin tiếp theo bên trái hoặc bên phải của nó, tùy thuộc vào tình hình thực tế trong hồ bơi. Điều này nhằm thúc đẩy sự thay đổi giá trong hồ bơi.
Khi LP cung cấp tính thanh khoản, DLMM đưa ra 3 chiến lược, bao gồm Spot, Curve và Bid Ask.
Trong đó, Spot là phổ biến nhất, hầu hết các bể thanh khoản đều khá phù hợp, có thể coi là một trong những chiến lược thanh khoản đơn giản nhất.
Curve thì thích hợp hơn cho những pool có sự biến động giá rất nhỏ, chẳng hạn như cặp stablecoin. Sự biến động giá trong những pool này rất nhỏ, giống như hình dạng của nó cho thấy, việc phân bổ vốn LP tập trung trong khoảng này có thể tối đa hóa việc thu phí giao dịch.
Bid Ask thì phù hợp hơn cho những pool có sự biến động giá rất lớn. Mọi người luôn có xu hướng thực hiện nhiều giao dịch arbitrage hơn trong những pool như vậy, giá cả có thể rất khó để tập trung trong một khoảng nhỏ nào đó. Chiến lược này thường yêu cầu LP điều chỉnh vị thế của mình thường xuyên, để tránh giá thoát khỏi phạm vi quỹ mà họ đã thiết lập. Do liên quan đến khả năng phán đoán thị trường, điều này thường không dễ dàng.
Tóm tắt
AMM như một phần quan trọng trong lĩnh vực tài chính Web3, thông qua cơ chế độc đáo và đổi mới của nó, thúc đẩy sự phổ biến và phát triển của tài chính phi tập trung. Với sự tiến bộ không ngừng của công nghệ và sự hoàn thiện của hệ sinh thái, AMM có khả năng đóng vai trò lớn hơn trong tương lai, thay đổi hơn nữa cấu trúc tài chính truyền thống.
Nội dung chỉ mang tính chất tham khảo, không phải là lời chào mời hay đề nghị. Không cung cấp tư vấn về đầu tư, thuế hoặc pháp lý. Xem Tuyên bố miễn trừ trách nhiệm để biết thêm thông tin về rủi ro.
Nghiên cứu AMM hệ sinh thái Solana
Tác giả: ZAN
Trong trạng thái hiện tại của ngành Web3, các sản phẩm liên quan đến DeFi chiếm lĩnh thị trường một cách tuyệt đối. Trong số đó, AMM (Automated Market Maker, nhà tạo lập thị trường tự động) là một phần quan trọng, là động lực mạnh mẽ cho sự thay đổi trong lĩnh vực tài chính Web3. Bài viết này sẽ giới thiệu một vài giải pháp AMM quan trọng trong hệ sinh thái Solana, hy vọng có thể cung cấp một số trợ giúp cho LP (Liquidity Provider, nhà cung cấp thanh khoản) trong việc lựa chọn chiến lược đầu tư của mình.
CPMM
CPMM (Constant Product Market Maker) là một trong những triển khai AMM cơ bản nhất, được áp dụng trong nhiều sản phẩm. Ở đây, tôi sẽ lấy AMM dựa trên sản phẩm không đổi do Raydium phát hành làm ví dụ. Sản phẩm không đổi có nghĩa là lượng cung cấp của hai loại token trong pool có một sản phẩm cố định: X * Y = k.
Đối với những người cung cấp thanh khoản, khi bất kỳ ai thêm thanh khoản vào bể (thêm tài sản), CPMM sẽ tự động tạo tài khoản liên kết cho địa chỉ ví và phát hành LP Token (mỗi cặp mã thông báo đều có Mint LP Token riêng), LP Token này được sử dụng để chứng minh rằng địa chỉ ví đó nắm giữ một phần trong bể nào đó, và sẽ bị tiêu hủy Token tương ứng khi người cung cấp thanh khoản rút tiền.
Chương trình trên chuỗi của CPMM được phát triển bằng Anchor, mã chương trình có thể được tìm thấy ở đó. Dưới đây, chúng ta sẽ xác nhận một cách đơn giản nó được thực hiện như thế nào để duy trì sản phẩm không đổi.
Đầu tiên, khi người dùng sử dụng Raydium để hoán đổi token qua CPMM, sẽ kích hoạt các lệnh liên quan đến swap.
Ví dụ (chỉ để minh họa tình huống, bài viết này không chịu trách nhiệm cho bất kỳ Token nào): khi người dùng muốn sử dụng USDC để trao đổi TRUMP, họ có thể thực hiện trao đổi thông qua bể TRUMP-USDC.
Ví dụ, chúng ta xem giao dịch này, để đơn giản, hãy bỏ qua các lệnh khác trong giao dịch và chỉ xem phần Raydium. Tìm Raydium CPMM: swapBaseInput:
Trong Input Accounts, chúng ta có thể thấy token đầu vào là USDC, token đầu ra là TRUMP. Trong AMM của hệ sinh thái Solana, LP Pair có thể được biểu thị đơn giản thông qua Token Account mà không cần tạo một hợp đồng chương trình mới và triển khai (chẳng hạn như hợp đồng factory thường được sử dụng trong Ethereum). Khi giao dịch xảy ra, nó sẽ tương tác trực tiếp với Chương trình CPMM của Raydium, chương trình Solana sẽ thay đổi trạng thái của Token Account tương ứng thông qua địa chỉ pool, địa chỉ token, v.v. để thực hiện thao tác swap.
Ví dụ như lệnh swapBaseInput ở trên, mã có thể tìm thấy ở đây. Sau một loạt kiểm tra trước, số lượng token mục tiêu cụ thể có thể đổi được đã được tính toán thông qua ConstantProductCurve.swap_base_input_without_fees:
Trong đó công thức được sử dụng là:
Sau khi tổng lượng của TokenX và TokenY thay đổi, tích của chúng nên được giữ nguyên. Phía bên trái của công thức là tích sau khi thay đổi, bên phải là tích trước khi thay đổi.
Công thức chuyển đổi Δy (tức là số lượng token y mà chúng ta có thể đổi được) có được thông qua phép biến đổi toán học như trên:
Cụ thể là phần delta_y = (delta_x * y) / (x + delta_x) trong mã. Lưu ý rằng phép tính này không bao gồm phí giao dịch, vì nó đã được trừ trong logic trước của swap_base_input.
CLMM
CLMM ( Nhà tạo lập thị trường thanh khoản tập trung ) Cũng giống như AMM do Raydium phát hành, nó tương tự như Uniswap V3, mỗi cặp token cũng có nhiều mức phí, có thể tạo ra một bể tương ứng cho từng mức.
Do việc triển khai CLMM tham khảo Uniswap V3, nên khi học về nó, nhiều khái niệm và cách triển khai có thể tham khảo từ cách thực hiện của Uniswap. Nó cũng kế thừa các khái niệm của Uniswap như tick, nhiều tầng phí, tính thanh khoản tập trung, v.v. Thêm nội dung có thể tìm thấy trong khóa học phát triển DEX do ZAN phát hành: Thực hành phát triển DEX - Phân tích mã Uniswap - Cách Uniswap hoạt động - ZAN
Tuy nhiên, cần lưu ý rằng, tương tự như CPMM, do đặc điểm của chuỗi Solana, Raydium CLMM không cần triển khai một hợp đồng riêng cho mỗi pool, vì vậy cũng không có khái niệm hợp đồng nhà máy. Điều này khác với Uniswap.
CLMM cho phép người cung cấp thanh khoản chọn một khoảng giá khi cung cấp vốn, vốn sẽ chỉ được phân phối trong khoảng đã chọn:
Đối với các hồ bơi thanh khoản tập trung, các mã thông báo tồn tại ở hai phía của giá hiện tại, và khoảng giá được chọn trong hình trên bao gồm giá hiện tại, vì vậy sẽ phân bổ vốn cho hai loại mã thông báo trong hồ bơi.
Chúng tôi cũng có thể chỉ tiêm một loại token nhất định để cung cấp cái gọi là tính thanh khoản một chiều (như hình dưới). Điều này khá giống với lệnh giới hạn trong mô hình tài chính truyền thống, vốn chỉ sử dụng quỹ của LP khi giá token đạt đến một phạm vi nhất định, tuy nhiên, mô hình này cũng cần xem xét nhiều điểm rủi ro hơn.
Nói chung, đối với các bể có biến động giá nhỏ, LP thường có xu hướng chọn một phạm vi nhỏ hơn; ngược lại, đối với những bể có biến động giá rất lớn, thì có xu hướng chọn một phạm vi lớn hơn. Mục đích của điều này là để cố gắng không để giá hiện tại thoát ra khỏi phạm vi giá mà mình đã chọn, gây ra quá nhiều tổn thất không thường xuyên.
Cần lưu ý rằng, thanh khoản tập trung mặc dù có thể giúp tăng tỷ lệ sử dụng vốn của LP, nhưng cũng đặt ra yêu cầu cao hơn về nhận thức tài chính của LP, LP cần quản lý thanh khoản của mình một cách tích cực hơn. Nếu LP không ứng phó tốt, thì sự dao động thường xuyên trên chuỗi sẽ dễ dàng dẫn đến việc LP chịu tổn thất không thường xuyên nghiêm trọng.
DLMM
DLMM (Dynamic Liquidity Market Maker) là sản phẩm AMM được Meteora phát triển, nó cũng thuộc loại Uniswap V3, và cũng rất giống với CLMM đã đề cập ở trên. DLMM cũng cho phép LP tập trung vốn của mình trong một khoảng giá nhất định gần với giá hiện tại. Tuy nhiên, DLMM có một số khác biệt trong việc thực hiện cụ thể và cung cấp một số tính năng đặc sắc.
DLMM cung cấp khái niệm Bin, các pool sẽ bắt đầu từ giá cơ sở, mỗi khoảng Bin step sẽ tồn tại như một Bin. Nếu giao dịch xảy ra trong cùng một Bin, thì các nhà giao dịch sẽ được hưởng lợi từ việc không bị trượt giá. Điều này có thể tăng đáng kể khối lượng giao dịch và tỷ lệ thành công của giao dịch, về lý thuyết LP có thể thu được nhiều phí giao dịch hơn.
Tương tự như CLMM, các token trong pool cũng phân bố ở hai bên của giá hiện tại, một token chỉ cần cung cấp tính thanh khoản một bên. Nhưng theo khái niệm Bin, Bin hiện tại được kích hoạt (cho thấy giá trao đổi hiện tại) sẽ có hai loại token. Tức là:
Khi lượng token trong Bin đang kích hoạt thay đổi, nếu một bên token giảm xuống 0, DLMM sẽ thiết lập Bin đang kích hoạt hiện tại thành Bin tiếp theo bên trái hoặc bên phải của nó, tùy thuộc vào tình hình thực tế trong hồ bơi. Điều này nhằm thúc đẩy sự thay đổi giá trong hồ bơi.
Khi LP cung cấp tính thanh khoản, DLMM đưa ra 3 chiến lược, bao gồm Spot, Curve và Bid Ask.
Trong đó, Spot là phổ biến nhất, hầu hết các bể thanh khoản đều khá phù hợp, có thể coi là một trong những chiến lược thanh khoản đơn giản nhất.
Curve thì thích hợp hơn cho những pool có sự biến động giá rất nhỏ, chẳng hạn như cặp stablecoin. Sự biến động giá trong những pool này rất nhỏ, giống như hình dạng của nó cho thấy, việc phân bổ vốn LP tập trung trong khoảng này có thể tối đa hóa việc thu phí giao dịch.
Bid Ask thì phù hợp hơn cho những pool có sự biến động giá rất lớn. Mọi người luôn có xu hướng thực hiện nhiều giao dịch arbitrage hơn trong những pool như vậy, giá cả có thể rất khó để tập trung trong một khoảng nhỏ nào đó. Chiến lược này thường yêu cầu LP điều chỉnh vị thế của mình thường xuyên, để tránh giá thoát khỏi phạm vi quỹ mà họ đã thiết lập. Do liên quan đến khả năng phán đoán thị trường, điều này thường không dễ dàng.
Tóm tắt
AMM như một phần quan trọng trong lĩnh vực tài chính Web3, thông qua cơ chế độc đáo và đổi mới của nó, thúc đẩy sự phổ biến và phát triển của tài chính phi tập trung. Với sự tiến bộ không ngừng của công nghệ và sự hoàn thiện của hệ sinh thái, AMM có khả năng đóng vai trò lớn hơn trong tương lai, thay đổi hơn nữa cấu trúc tài chính truyền thống.