Documentation Index
Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
Use this file to discover all available pages before exploring further.
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 →
Hai khoản phí độc lập, bốn địa chỉ đích
CPMM tính hai khoản phí riêng biệt có tỷ lệ khác nhau trên mọi swap:- Phí giao dịch — được tính theo
AmmConfig.trade_fee_ratevà chia thành ba địa chỉ đích:- Phần LP — nằm trong vault và tăng
k. Được yêu cầu ngầm bằng cách đốt token LP. - Phần giao thức — được tích lũy vào
PoolState.protocol_fees_token*; được rút bởiprotocol_ownerthông quaCollectProtocolFee. - Phần quỹ — được tích lũy vào
PoolState.fund_fees_token*; được rút bởifund_ownerthông quaCollectFundFee.
- Phần LP — nằm trong vault và tăng
- Phí nhà tạo (tùy chọn, cho mỗi pool) — được tính theo
AmmConfig.creator_fee_rateđộc lập với phí giao dịch, tích lũy vàoPoolState.creator_fees_token*, được rút bởipool_state.pool_creatorthông quaCollectCreatorFee. Chỉ hoạt động khi pool được tạo vớienable_creator_fee = true.
trade_fee mà thôi, không bao giờ từ creator_fee. Một pool với creator_fee_rate = 1000 (0.10%) và trade_fee_rate = 2500 (0.25%) sẽ tính một khoản phí kết hợp 0.35% của đầu vào trong swap có creator-fee-on-input, trong đó nhà tạo giữ 0.10% và hạng mục trade-fee nhận 0.25%.
Các tỷ lệ phí giao dịch (trade_fee_rate, protocol_fee_rate, fund_fee_rate) và creator_fee_rate đều nằm trên AmmConfig. Cờ enable_creator_fee cho mỗi pool và chế độ creator_fee_on (phía nào của giao dịch được tính phí nhà tạo) nằm trên PoolState. Xem products/cpmm/accounts.
Tỷ lệ và đơn vị
Tất cả tỷ lệ làu64s được biểu diễn bằng đơn vị 1 / FEE_RATE_DENOMINATOR trong đó FEE_RATE_DENOMINATOR = 1_000_000.
trade_fee_ratelà một phân số của khối lượng swap.2500⇒ 0.25% của phía liên quan (đầu vào hoặc đầu ra, tùy thuộc vàocreator_fee_on— xem “Phía nào của giao dịch được tính phí” dưới đây).creator_fee_ratelà một phân số của khối lượng swap, được tính riêng biệt từ phí giao dịch.1000⇒ 0.10% của phía liên quan.protocol_fee_ratevàfund_fee_ratelà các phân số của phí giao dịch, không phải của khối lượng.120_000⇒ 12% của phí giao dịch.
AmmConfig[index=0] (pool 0.25% “tiêu chuẩn”) trên mainnet, để tham khảo:
| Trường | Giá trị | Tỷ lệ phần trăm hiệu dụng |
|---|---|---|
trade_fee_rate | 2500 | 0.25% của khối lượng (hạng mục phí giao dịch) |
protocol_fee_rate | 120000 | 12% của phí giao dịch ≈ 0.030% của khối lượng |
fund_fee_rate | 40000 | 4% của phí giao dịch ≈ 0.010% của khối lượng |
creator_fee_rate | 0 (mặc định) | 0% (hạng mục riêng biệt) |
| → Phần LP hiệu dụng | 0.210% của khối lượng |
AmmConfig[0] có enable_creator_fee = false: $2.50 tổng phí giao dịch, trong đó $2.10 ở lại với LP, $0.30 đi đến giao thức, $0.10 đến quỹ. Hạng mục nhà tạo là 0 vì phí nhà tạo bị vô hiệu hóa.
Nếu cùng pool đó có enable_creator_fee = true và creator_fee_rate = 1000 (0.10%), người dùng thanh toán thêm $1.00 cho hạng mục nhà tạo — được tính trên phía giống như được cấu hình bởi creator_fee_on — để có $3.50 phí tổng cộng. Hạng mục phí giao dịch và các phần chia của nó cho giao thức/quỹ vẫn không thay đổi.
Xác nhận các giá trị mainnet hiện tại với GET https://api-v3.raydium.io/main/cpmm-config — các tỷ lệ có thể thay đổi được bởi admin và nên được đọc tươi mới hơn là hardcoded.
Cách chia, dưới dạng code
- Tổng phí trên đầu vào làm tròn lên để pool không bao giờ tính phí thấp hơn.
- Các phân chia phụ của
trade_fee(giao thức, quỹ) làm tròn xuống để tổng của chúng không bao giờ vượt quátrade_fee; phần còn lại là phần LP. lp_share = trade_fee − protocol_fee − fund_fee(creator_fee không bị trừ ở đây vì nó là hạng mục riêng).- Phí nhà tạo được tính từ đầu vào hoặc đầu ra tùy thuộc vào
PoolState.creator_fee_on(xem phần tiếp theo). Tỷ lệ không thay đổi dù là trường hợp nào.
Phía nào của giao dịch được tính phí
CPMM có cài đặtcreator_fee_on cho mỗi pool (BothToken / OnlyToken0 / OnlyToken1) xác định liệu phí nhà tạo được tính từ phía đầu vào hay đầu ra của một swap nhất định. Hàm trợ giúp runtime is_creator_fee_on_input(direction) rút gọn điều đó thành một boolean cho mỗi swap:
creator_fee_on | Swap 0 → 1 | Swap 1 → 0 |
|---|---|---|
BothToken (0) | phía đầu vào | phía đầu vào |
OnlyToken0 (1) | phía đầu vào | phía đầu ra |
OnlyToken1 (2) | phía đầu ra | phía đầu vào |
amount_in trước khi đường cong chạy. Toán học trích dẫn: lấy trade_rate + creator_rate kết hợp từ đầu vào.
Khi phí nhà tạo ở phía đầu ra, chỉ có phí giao dịch được trừ từ amount_in; đường cong tạo ra một đầu ra chưa tính phí, sau đó phí nhà tạo được trừ từ đầu ra đó. Toán học trích dẫn: lấy trade_rate từ đầu vào; lấy creator_rate từ đầu ra.
Phí giao dịch tự nó luôn được tính từ phía đầu vào (mô hình tiêu chuẩn Uniswap-V2). Chỉ phí nhà tạo mới có thể ở phía đầu ra.
Cách các phí “tích lũy” tương tác với đường cong
Một chi tiết quan trọng: phí giao thức, quỹ và nhà tạo vẫn nằm vật lý trong vault cho đến khi lệnhCollect* tương ứng được gọi. Nhưng chúng bị loại khỏi khung nhìn của đường cong đối với số dư vault.
Một hình ảnh cụ thể sau một swap:
curve_x (và curve_y tương tự) khi thực thi k' ≥ k. Đây là cách các phí không phải LP đạt đến các địa chỉ đích mà không làm tăng phần LP của pool.
Hậu quả bạn nên thiết kế xung quanh:
- Trích dẫn từ số dư thô là sai. Nếu bạn xây dựng một quoter từ
getTokenAccountBalance, bạn sẽ liên tục nêu quá cao giá mà pool sẽ chấp nhận. Luôn trừ các phí tích lũy, hoặc mô phỏng quaSwapBaseInput/ API. CollectProtocolFeekhông di chuyển giá. Nó di chuyển token ra khỏi vault và làm không các bộ đếmprotocol_fees_token*, nêncurve_xvàcurve_ykhông thay đổi.- Phí LP không tích lũy vào một bộ đếm. Chúng ngầm trong số dư vault. Quyền của LP đối với phí LP tích lũy được thực hiện bằng cách đốt token LP (tức là qua
Withdraw) — không cóCollectLpFee.
Tương tác với phí chuyển Token-2022
Phí chuyển Token-2022 được áp dụng bởi mint, không phải bởi CPMM. Chúng tác dụng trên mọi chuyển token — swap, gửi, rút và các lần rútCollect*. Toán học phí giao dịch của CPMM được tính dựa trên số tiền thực sự hạ cánh trong vault, tức là ròng theo phí chuyển của mint đầu vào (nếu có).
Vì vậy trong trường hợp tồi tệ nhất, người dùng trả ba khoản thuế riêng biệt trên swap input-exact:
- Phí chuyển của mint đầu vào trên
amount_in(cho nhà cung cấp phí của mint). trade_feecủa pool trên phần còn lại (chia như trên).- Phí chuyển của mint đầu ra trên
amount_out(cho nhà cung cấp phí của mint).
minimum_amount_out được biểu diễn bằng những gì người dùng thực sự nhận được. Nếu bạn đang viết quoter của riêng bạn, hãy phản chiếu hành vi đó, nếu không các kiểm tra slippage của bạn sẽ thường xuyên quá hào phóng.
Xem algorithms/token-2022-transfer-fees để biết tính đạo hàm chi tiết.
Phí nhà tạo
Phí nhà tạo là tùy chọn và cho mỗi pool. Tỷ lệ nằm trênAmmConfig.creator_fee_rate; cờ bật và phía (creator_fee_on) nằm trên PoolState:
- Bật tại tạo pool.
Initializeđặtenable_creator_fee = falsetheo mặc định; các pool được tạo quaInitializeWithPermission(được sử dụng bởi các tốt nghiệp LaunchLab và các đường dẫn được cấu hình khác) có thể chuyểnenable_creator_fee = truevà chọncreator_fee_on. - Tỷ lệ được chia sẻ với tiers phí. Tỷ lệ tự nó là
AmmConfig.creator_fee_rate, giá trị giống nhau trên mọi pool gắn với config đó. Mỗi pool sau đó quyết định có tính nó (enable_creator_fee) và phía nào của swap để tính nó (creator_fee_on). Khienable_creator_fee = false, tỷ lệ phí nhà tạo hiệu dụng của pool là không có gì bất kể giá trị config (xemPoolState::adjust_creator_fee_ratetrong source). - Độc lập với phí giao dịch. Phí nhà tạo không bao giờ giảm các phần LP / giao thức / quỹ — nó là tỷ lệ riêng, được áp dụng riêng, tích lũy trong các bộ đếm riêng.
- Được rút qua
CollectCreatorFee, ký bởiPoolState.pool_creator. - Không thể được bật lại hoặc định tuyến lại sau tạo. Một pool được khởi tạo với
enable_creator_fee = falsesẽ không bao giờ tính phí nhà tạo; một pool được khởi tạo vớicreator_fee_oncụ thể không thể chuyển đổi phía.
CollectCreatorFee vô thời hạn.
Luồng hoạt động bộ sưu tập
| Người ký | Lệnh | Các bộ đếm nguồn được làm không | Tần suất điển hình |
|---|---|---|---|
amm_config.protocol_owner | CollectProtocolFee | protocol_fees_token{0,1} | Hàng tuần hoặc lập trình |
amm_config.fund_owner | CollectFundFee | fund_fees_token{0,1} | Hàng tuần hoặc lập trình |
pool_state.pool_creator | CollectCreatorFee | creator_fees_token{0,1} | Bất cứ lúc nào |
security/admin-and-multisig. Người ký nhà tạo là tài khoản đã chạy Initialize.
Thay đổi một tiers phí
Các tỷ lệ phí có thể được thay đổi bởi admin thông quaUpdateAmmConfig (xem products/cpmm/instructions). Các thay đổi có hiệu lực trên swap tiếp theo cho mọi pool gắn với AmmConfig đó — không có di chuyển, vì các pool tải config trên mỗi swap.
Những gì admin không thể làm:
- Di chuyển một pool từ
AmmConfignày sangAmmConfigkhác. - Tính giá lại các phí đã tích lũy.
- Sưu tập phí mà không có
protocol_owner/fund_ownersigner.
Đọc phí từ một pool đang chạy
So sánh với CLMM và AMM v4
Xemreference/fee-comparison để xem ma trận so sánh cạnh-nhau. Tóm tắt:
- AMM v4 sử dụng phí giao dịch cố định 0.25% với một phân chia LP/giao thức khác và không có phí quỹ.
- CLMM phí là cho mỗi tiers khoảng cách tick, tích lũy cho mỗi vị trí (không phải cho mỗi pool), và được yêu cầu qua
DecreaseLiquidityhoặcCollectFees.
Đi đến đâu tiếp theo
products/cpmm/math— nơi khấu trừ phí giao dịch kết nối với đường cong.products/cpmm/instructions— danh sách tài khoản hướng dẫnCollect*.algorithms/token-2022-transfer-fees— cách kết hợp chính xác phí giao dịch pool với phí chuyển mint.


