Meteora là một dự án DeFi trên chuỗi Solana, tập trung vào việc xây dựng một lớp thanh khoản hiệu quả, bền vững và linh hoạt cho hệ sinh thái Solana. Mục tiêu của nó là giải quyết vấn đề thiếu thanh khoản trên Solana, giúp các giao dịch trở nên mượt mà hơn, chi phí thấp hơn, đồng thời mang lại lợi nhuận tốt hơn cho những người cung cấp thanh khoản.
Các pool chính của Meteora là DLMM Pool và Dynamic Pools, trong đó DLMM Pool có thể thêm vào cả pool hai chiều và pool một chiều. Ở đây, dev có thể sử dụng pool một chiều để bán ra và hút vốn, ví dụ như cặp giao dịch trump/sol, khi giá tăng, dev có thể chỉ thêm pool một chiều $trump ở một khoảng giá cao hơn, khi giá tăng đến khoảng giá này thì sẽ tự động chuyển $trump sang $sol để bán ra, đồng thời cũng nhận được phí giao dịch; khi giá giảm, dev có thể chỉ thêm pool một chiều $sol ở một khoảng giá thấp hơn, khi giá giảm đến khoảng giá này thì sẽ tự động mua vào $trump, đạt được mục đích hút vốn.
Nếu chúng ta muốn biết dev ở mức giá nào sử dụng pool một chiều để bán ra và hút vốn, thì việc biết khoảng giá tương ứng là rất cần thiết.
I. Các khái niệm cơ bản
Website: https://app.meteora.ag/
1. Cặp giao dịch
Bất kỳ hai token nào cũng có thể tạo thành một cặp giao dịch, ví dụ $trump và $sol tạo thành cặp giao dịch trump-sol, $trump và $usdc tạo thành cặp giao dịch trump-usdc.
2. Pool (LP Pool)
Mỗi cặp giao dịch có thể có nhiều Pool, mỗi Pool được phân biệt bởi Bin Step và Phí (Phí giao dịch). Ví dụ, cặp giao dịch trump-usdc có 57 Pool, mỗi Pool tương ứng với một địa chỉ duy nhất, như hình.

3. Bin
Trong DLMM, mỗi bin đại diện cho một mức giá, mỗi bin chính là lệnh mua hoặc bán ở một mức giá nhất định.
4. Bin Step
Bin Step là khoảng cách giá giữa hai bin liền kề, được tính bằng điểm cơ bản (basis points, 1 điểm cơ bản = 0.01%). Nó quyết định mật độ của các bin và mức độ chi tiết của phân bổ thanh khoản, do người tạo pool thiết lập.
Ví dụ:
Giả sử hiện tại giá SOL/USDC là 20 USD, Bin Step được thiết lập là 25 điểm cơ bản (0,25%).
Bin tiếp theo sẽ có giá là 20 x 1,0025 = 20,05 USD, bin tiếp theo nữa là 20,05 x 1,0025 ≈ 20,10 USD, và cứ tiếp tục như vậy.
5. Vị thế (Position)
Vị thế được dùng để mô tả cách nhà cung cấp thanh khoản phân bổ vốn vào một khoảng giá cụ thể, mỗi vị thế tương ứng với một địa chỉ duy nhất. Vị thế được tạo ra trong một pool cụ thể, một pool có thể tạo nhiều vị thế khác nhau.
Một vị thế thường bao gồm các yếu tố chính sau:
(1) Khoảng giá
Mỗi vị thế đều có một khoảng giá rõ ràng, thể hiện khoảng giá mà nhà cung cấp thanh khoản muốn hỗ trợ, khoảng giá này由một loạt các bin liên tục tạo thành.
(2) Lượng tiền
Số lượng hai token (ví dụ SOL và USDC) được đầu tư. Meteora sẽ tính toán tỷ lệ cụ thể của mỗi token dựa trên giá hiện tại và phạm vi khoảng giá, để đảm bảo đáp ứng nhu cầu của pool.
(3) Chiến lược phân bổ
Meteora cung cấp một số cách phân bổ thanh khoản để người dùng quyết định cách phân bổ vốn vào các bin:
Spot (phân bổ đều): Vốn được phân bổ đều vào mỗi bin, phù hợp với các trường hợp dự kiến biến động giá nhỏ.
Curve (phân bổ chuông): Vốn tập trung xung quanh giá hiện tại, càng xa giá hiện tại càng ít, như một đường cong chuông, phù hợp với LP muốn tập trung vào giá hiện tại.
Bid-Ask (phân bổ hai đỉnh): Vốn tập trung ở hai bên của giá hiện tại, tạo thành hai đỉnh, phù hợp với thị trường biến động mạnh.
(4) Bin Step
Người dùng không thể thay đổi Bin Step khi tạo vị thế, đây là thiết lập khi tạo pool.
II. Kết nối ví để xem
Meteora hỗ trợ kết nối địa chỉ ví để xem các vị thế đang nắm giữ, và cũng hỗ trợ cách xem dưới dạng ví quan sát, chúng ta có thể dựa vào tính năng này để xem khoảng giá của các pool.
Lấy $trump (6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN) làm ví dụ.
Đầu tiên, chúng ta mở debot, nhập CA của $trump, sau đó tìm ra địa chỉ của dev là 5e2qRc1DNEXmyxP8qwPwJhRWjef7usLyi7v5xjqLr5G7, như hình.

Sau đó, mở ví Phantom, chọn [Thêm/Kết nối ví] - [Theo dõi địa chỉ], nhập "Tên" và "Địa chỉ", ở đây điền địa chỉ của dev 5e2qRc1DNEXmyxP8qwPwJhRWjef7usLyi7v5xjqLr5G7.

Cuối cùng, mở Meteora, kết nối ví Phantom, nhấn vào [Portfolio] ở đầu trang, sẽ thấy tất cả các pool đã thêm, nhấn vào bất kỳ pool DLMM nào, sẽ hiển thị chi tiết của pool và tất cả các vị thế, như hình.

Ở bên trái của hình, Bin Step và Base Fee là thông tin của pool hiện tại, phần giữa là các vị thế ở các khoảng giá khác nhau. Mở bất kỳ vị thế nào cũng có thể xem số dư hiện tại, phí chưa nhận, chiến lược phân bổ, v.v.
Cách xem khoảng giá theo cách này có ưu điểm là trực quan và dễ dàng, có thể liệt kê tất cả các vị thế hiện có; nhược điểm là khi thanh khoản được rút ra thì không thể xem được nữa.
III. Tính toán dữ liệu trên chuỗi
Chúng ta có thể sử dụng dữ liệu trên chuỗi để tính toán khoảng giá của mỗi vị thế, bất kể vị thế có còn tồn tại hay không.
Tài liệu của Meteora cung cấp công thức tính toán như sau:
Giá trị tối thiểu của khoảng giá: min_price = (1 + bin_step/10000)^lower_bin_id
Giá trị tối đa của khoảng giá: max_price = (1 + bin_step/10000)^upper_bin_id
Nếu cặp giao dịch được biểu diễn là A/B, trong đó token A có độ chính xác decimals_A, token B có độ chính xác decimals_B, thì công thức cuối cùng sẽ là:
Giá trị tối thiểu của khoảng giá: min_price = (1 + bin_step/10000)^lower_bin_id/10^(decimals_B-decimals_A)
Giá trị tối đa của khoảng giá: max_price = (1 + bin_step/10000)^upper_bin_id/10^(decimals_B-decimals_A)
Cần lưu ý rằng, giá tính ở đây là giá của token A so với token B, nếu muốn xem giá của token A so với USD, thì cần tìm giá của token B so với USD, sau đó tiến hành chuyển đổi.
Từ các công thức trên, để tính toán dữ liệu, chúng ta cần biết bin_step của một pool, lower_bin_id và upper_bin_id của vị thế, đồng thời cũng cần biết độ chính xác của hai token trong cặp giao dịch.
Tiếp tục lấy $trump (6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN) làm ví dụ, tính khoảng giá của một pool một chiều của dev này.
Chúng ta mở solscan, nhập địa chỉ dev của $trump (https://solscan.io/account/5e2qRc1DNEXmyxP8qwPwJhRWjef7usLyi7v5xjqLr5G7?activity_type=ACTIVITY_TOKEN_ADD_LIQ&page=5#defiactivities), mở tab [Defi Activities], lọc [Action] chọn "ADD LIQUIDITY", trong cột Amount có thể thấy tất cả các giao dịch thêm thanh khoản đều là pool một chiều, hoặc chỉ thêm $trump, hoặc chỉ thêm $usdc. Ví dụ này sử dụng giao dịch cuối cùng trong hình, như hình.

Mở chi tiết giao dịch cuối cùng (https://solscan.io/tx/284UXTrgWNFFXTovbCAQsJA8U5mW4rntwa8KyRvSmhNYf7cus1rtskiVqwNkErdosDMUsJfxXm8KgkCf1DzTPmPr), có thể thấy giao dịch này chỉ thêm $trump, như hình.

Chúng ta lần lượt mở liên kết của $trump và $usdc, có thể thấy cả hai đều có độ chính xác là 6, như hình.

Xem chi tiết giao dịch, trong【#4.1 - Meteora DLMM Program: initializePosition】 có thể biết rằng lowerBinId là 1062, chiều rộng của bin, tức là số lượng, là 46, địa chỉ của pool là 9d9mb8kooFfaD3SctgZtkxQypkshx6ezhbKio89ixyy2, như hình. Từ thông tin trên, có thể tính upperBinId=lowerBinId + width - 1 =1062+46-1=1107

Mở địa chỉ pool 9d9mb8kooFfaD3SctgZtkxQypkshx6ezhbKio89ixyy2 trên solscan ( https://solscan.io/account/9 d 9 mb 8 kooFfa D3SctgZtkxQypkshx6ezhbKio89ixyy2 ), nhấn vào tab【data】, chuyển "LbPair" sang "Table", có thể tìm thấy giá trị binStep là 50, như hình

Từ thông tin trên, có thể thu thập được tất cả dữ liệu cần thiết cho công thức tính toán:
bin_step= 50
lower_bin_id= 1062
upper_bin_id= 1107
decimals_A= 6
decimals_B= 6
Từ đó có thể tính được
Giá trị tối thiểu của khoảng giá: min_price = ( 1 + bin_step/10000) ^ lower_bin_id/10 ^(decimals_B-decimals_A)=( 1+ 50/10000)^ 1062/10 ^( 6-6)= 199.6905832
Giá trị tối đa của khoảng giá: max_price = ( 1 + bin_step/10000) ^ upper_bin_id/10 ^(decimals_B-decimals_A)=( 1+ 50/10000)^ 1107/10 ^( 6-6)= 249.9368917
Khoảng giá tính toán được hoàn toàn trùng khớp với khoảng giá trong hình ảnh phần 2.
Tóm lại
Kết hợp với các công cụ giám sát, khi phát hiện dev hoặc những người khác lớn đang thêm vào pool một chiều, chúng ta có thể sử dụng phương pháp trên để tính toán khoảng giá họ dự định bán ra hoặc thu gom, sau đó kết hợp với biểu đồ K và các dữ liệu khác để đưa ra quyết định. Tổng thống Argentina Milei cũng đã sử dụng phương pháp thêm pool một chiều để bán ra $libra, có thể sử dụng phương pháp trên để phân tích lại giá khoảng thời gian đó.
Tôi thường sử dụng các công cụ như debot, gmgn và okx, nhưng ba công cụ này vẫn chưa rất tiện lợi khi xem xét thanh khoản, một số tính năng lý tưởng như:
1. Liệt kê tất cả các hoạt động của dev, bao gồm chuyển vào, chuyển ra, thêm pool, rút pool, và có thể nhận diện và đánh dấu các giao dịch liên quan đến khóa vị thế và thêm/rút pool.
debot có thể nhận diện tất cả các giao dịch chuyển vào và chuyển ra, nhưng không có chức năng nhận diện thêm pool và rút pool;
gmgn có thể nhận diện thêm pool và rút pool, nhưng không thể nhận diện được các giao dịch chuyển vào và chuyển ra của dev, và cũng không nhận diện được các giao dịch thêm pool và rút pool của dev trong coin trump;
okx có chức năng hiển thị thay đổi của pool, tức là liệt kê riêng các giao dịch thêm pool và rút pool, nhưng cũng không nhận diện được các giao dịch thêm pool và rút pool của dev trong coin trump.
2. Đối với mỗi giao dịch thêm pool và rút pool, có thể cung cấp khoảng giá cụ thể, như vậy sẽ không cần phải tính toán thủ công.
3. Khi tính toán lợi nhuận của dev, bao gồm cả phí thu được và thay đổi vốn khi rút pool, như vậy sẽ không cần phải thống kê lợi nhuận thủ công.
Các tính năng này có thể được debot và gmgn thực hiện, vì họ đã có dữ liệu lợi nhuận của từng địa chỉ.
Hy vọng các công cụ này sẽ ngày càng hoàn thiện và tiện dụng hơn!



