Trang này được dịch tự động bằng AI. Phiên bản tiếng Anh là bản chính thức.Xem bản tiếng Anh →
Bất biến
Pool duy trìcoin_reserve × pc_reserve = k, trong đó (sau khi loại bỏ OpenBook vào 2026-07):
- Reserve hiện tại chỉ từ vault. Thuật ngữ open-order lịch sử (token mà pool đã ký quỹ dưới dạng lệnh giới hạn OpenBook) đã bị loại bỏ — nó thực tế đã bằng không từ lâu trước khi loại bỏ. Bạn có thể tính
ktrực tiếp từ số dư vault trên chuỗi. - Tích lũy PnL (
need_take_pnl_*) được trừ đi để đường cong được bảo toàn khi admin quét phí. Nguyên tắc tương tự như loại trừprotocol_fees_*của CPMM.
calc_total_without_take_pnl_no_orderbook (biến thể nhận biết orderbook cũ đã bị loại bỏ).
Mỗi hoạt động Swap* đảm bảo k' ≥ k sau khi thêm phần phí LP trở lại reserve.
Quy ước phí
AMM v4 sử dụng phí tỷ lệ (cặp tử số/mẫu số) thay vì quy ước1/1_000_000 của CPMM / CLMM. Struct Fees trên chuỗi (xem Fees::initialize trong mã nguồn chương trình) mặc định là:
- Tổng phí swap:
swap_fee = amount_in × 25 / 10_000 = 0.25%của đầu vào tổng cộng. - Phần giao thức:
pnl_numerator / pnl_denominator = 12 / 100 = 12%của phí swap, tính ra0.25% × 12% = 0.03%của khối lượng. Phần này tích lũy vào các bộ đếm PnL và được quét bởiWithdrawPnl. - Phần LP:
88%còn lại của phí swap, tính ra0.25% × 88% = 0.22%của khối lượng. Ở lại trong pool và làm tăngk. - Không có phần quỹ. AMM v4 không có phân chia phí quỹ như CPMM/CLMM.
pnl_numerator / pnl_denominator là một phân số của phí, không phải của khối lượng giao dịch — một sự hiểu lầm phổ biến về các tên trường này.
trade_fee_numerator / trade_fee_denominator (cũng là 25 / 10_000) từng được sử dụng bởi tích hợp OpenBook khi tính giá bao gồm phí cho lưới lệnh giới hạn của AMM. Với mã OpenBook bị loại bỏ, trường này là dư thừa; phí swap hoạt động là swap_fee_*.
Những sai lệch từ các mặc định này hiếm gặp nhưng tồn tại trên một số pool cũ; luôn đọc phí từ AmmInfo.fees trước khi báo giá.
Toán học swap trực tiếp (đường AMM)
Trường hợp đơn giản nhất: người dùng swap với vault của pool mà không tương tác với OpenBook. Reserve nội bộ của pool (bao gồm phân bổ trên sách) là mẫu số. SwapBaseIn (đầu vào chính xác):MonitorStep / settle ngầm định từng làm mới phía OpenBook đã bị loại bỏ.
SwapBaseOut (đầu ra chính xác):
Tương tác sổ lệnh (lịch sử)
Đã loại bỏ. Xây dựng lưới được mô tả trong phần này phản ánh cách AMM v4 ban đầu phản chiếu đường cong lên thị trường OpenBook. Tích hợp OpenBook — bao gồm crank
MonitorStep và logic lưới build_orders — đã bị loại bỏ khỏi chương trình (nâng cấp 2026-07). Toán học dưới đây được bảo tồn thuần túy như bối cảnh lịch sử cho những gì các tài khoản target_orders / amm_open_orders trên chuỗi từng được định kích thước.AmmInfo:
depth— số mức giá trên mỗi bên.amount_wave— đơn vị cơ sở kích thước trên mỗi mức.min_size,coin_lot_size,pc_lot_size— ràng buộc thị trường OpenBook.state_data.swap_acc_coin_fee,swap_acc_pc_fee— bộ đếm phí tích lũy kể từTakePnlcuối cùng.
target_orders được tính trong build_orders và so sánh với amm_open_orders mỗi MonitorStep. Bất kỳ sự khác biệt nào dẫn đến hủy + đăng ký mới. Các lệnh mới được điền trên OpenBook giải quyết vào vault của pool trên hoạt động tiếp theo làm mới phía OpenBook.
Các nhà tích hợp hiếm khi cần tính lưới — người giữ Raydium duy trì nó — nhưng sẽ hữu ích khi biết rằng:
- Một pool có thanh khoản trên sách đáng kể có thanh khoản đó đóng góp vào
k, không nằm không hoạt động. - Một thị trường OpenBook cũ (hàng đợi sự kiện đầy, crank bị chặn) ngăn cập nhật lưới; AMM sau đó có thể báo giá các giá khác với sổ lệnh hiển thị cho đến crank tiếp theo.
Bước giải quyết (PnL)
Phần giao thức 0.03% tích lũy vàostate_data.need_take_pnl_coin và state_data.need_take_pnl_pc. TakePnl di chuyển các số tiền này ra khỏi vault đến đích được chỉ định bởi admin, sau đó xóa các bộ đếm.
Tính chất quan trọng: reserve trong bất biến luôn được tính trừ PnL tích lũy, vì vậy TakePnl không di chuyển đường cong. Điều này phù hợp với quy ước CPMM.
Ví dụ đã làm việc
Trạng thái pool:coin_reserve = 1_000_000_000_000(1.000.000 coin-side; 6 chữ số thập phân)pc_reserve = 2_000_000_000_000(2.000.000 pc-side; 6 chữ số thập phân)- Phí:
swap = 25/10_000mặc định,pnl = 3/10_000.
SwapBaseIn đầu vào chính xác 1_000_000_000 coin (1.000 coin).
2_200_000) không được tách riêng ở bất kỳ đâu — nó đơn giản là phần dư tăng k'.
Quy tắc độ chính xác
- Phép nhân reserve sử dụng
u128; phép chia cuối cùng làm tròn về phía không. swap_feelàm tròn lên (vì vậy pool không tính phí thấp).amount_inchoSwapBaseOutlàm tròn lên (vì vậy người dùng không trả ít).- Pool có tỷ lệ reserve cực đoan có thể gặp
ZeroTradingTokenstrên đầu vào rất nhỏ; quy ước tương tự như CPMM.
Hạn chế so với CPMM
- Reserve của AMM v4 hiện tại chỉ từ vault, vì vậy bạn có thể báo giá trực tiếp từ số dư vault (trừ
need_take_pnl_*) — yêu cầu trước đó để thêm các số tiềnopen_orders.free/open_orders.lockedkhông còn áp dụng. Báo giá SDK / API vẫn là tùy chọn đơn giản nhất. - AMM v4 không công khai TWAP có cấu trúc trên chuỗi. Các người tiêu dùng bên ngoài muốn giá được hỗ trợ bởi AMM-v4 phải tính toán nó từ nhật ký giao dịch.
- Token-2022 không được hỗ trợ.
Tiếp theo
products/amm-v4/instructions— nơiSwapBaseIn,Deposit, v.v. được kết nối.products/amm-v4/fees— cơ chế phí đầy đủ, chi tiếtTakePnl.algorithms/constant-product— phép tính dẫn xuất được chia sẻ.
- Mã nguồn chương trình Raydium AMM —
raydium-io/raydium-amm - Mô-đun
Liquiditycủa Raydium SDK v2

