Chuyển đến nội dung chính

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 →
Trang này đi kèm với products/clmm/accounts (mô tả các tài khoản) và products/clmm/math (mô tả các phép toán). Đây là tài liệu tham chiếu chính xác về các đối số và thứ tự tài khoản; bố cục byte cụ thể lấy từ IDL.

Danh sách lệnh

NhómLệnhGhi chú
AdminCreateAmmConfigTạo một bậc phí mới.
AdminUpdateAmmConfigThay đổi tỷ lệ phí trên một bậc hiện có.
AdminUpdatePoolStatusTạm dừng/tiếp tục hoạt động của pool.
AdminCreateSupportMintAssociatedĐưa cấu hình extension của mint Token-2022 vào danh sách cho phép sử dụng trong các pool CLMM.
AdminCreateOperationAccountKhởi tạo tài khoản vận hành cấp chương trình (một lần duy nhất).
AdminUpdateOperationAccountChỉnh sửa danh sách trắng của tài khoản vận hành.
AdminCreateDynamicFeeConfigTạo một bộ tham số phí động có thể tái sử dụng theo chỉ số u16.
AdminUpdateDynamicFeeConfigChỉnh sửa một DynamicFeeConfig hiện có. Các pool đã snapshot cấu hình này không bị ảnh hưởng.
PoolCreatePoolKhởi tạo một pool CLMM gắn với một AmmConfig. Đường dẫn phí chuẩn FromInput. Tồn tại song song với CreateCustomizablePool.
PoolCreateCustomizablePoolKhuyến nghị dùng cho pool mới. Tương tự CreatePool nhưng có thêm collect_fee_on và cờ enable_dynamic_fee tùy chọn.
Vị thếOpenPosition / OpenPositionV2 / OpenPositionWithToken22NftMint một NFT vị thế. OpenPositionV2 thay thế V1 (bố cục tài khoản mới hơn với slot bitmap-extension); OpenPositionWithToken22Nft phát hành NFT vị thế theo chuẩn Token-2022 thay vì SPL Token. Code mới nên dùng V2 hoặc biến thể Token-2022.
Vị thếIncreaseLiquidity / IncreaseLiquidityV2Thêm thanh khoản vào vị thế hiện có.
Vị thếDecreaseLiquidity / DecreaseLiquidityV2Rút thanh khoản; thu phí còn nợ.
Vị thếClosePositionĐốt NFT và đóng PersonalPositionState.
Vị thếCloseProtocolPositionChỉ dành cho admin — thu hồi các PDA ProtocolPositionState cũ. Chương trình hiện tại không còn tạo hoặc đọc ProtocolPositionState — lệnh này chỉ tồn tại để thu hồi rent từ các tài khoản được tạo bởi phiên bản chương trình cũ hơn.
SwapSwap / SwapV2Swap thanh khoản không đổi. Cả hai biến thể đều áp dụng phí động, định tuyến phí một chiều và khớp lệnh giới hạn; điểm khác biệt duy nhất là SwapV2 chấp nhận mint Token-2022 (biến thể V1 yêu cầu cả hai vault đều là SPL Token cổ điển).
SwapSwapRouterBaseInNhiều hop, được router sử dụng.
Lệnh giới hạnOpenLimitOrderĐặt lệnh bán tại một tick. Token chưa khớp nằm trên tick; engine khớp lệnh sẽ điền chúng khi giá vượt qua.
Lệnh giới hạnIncreaseLimitOrderThêm vào một lệnh đang mở.
Lệnh giới hạnDecreaseLimitOrderGiảm hoặc hủy một lệnh đang mở; trả lại phần chưa khớp cùng bất kỳ đầu ra nào đã được thanh toán.
Lệnh giới hạnSettleLimitOrderĐẩy token đầu ra đã khớp về cho chủ sở hữu lệnh. Có thể gọi bởi chủ sở hữu hoặc keeper vận hành.
Lệnh giới hạnCloseLimitOrderĐóng tài khoản lệnh đã được thực hiện hoàn toàn. Rent luôn trả về owner của lệnh. Có thể gọi bởi owner hoặc keeper.
PhíCollectProtocolFeeAdmin thu phí giao thức.
PhíCollectFundFeeAdmin thu phí quỹ.
Phần thưởngInitializeRewardGắn một luồng phần thưởng mới vào pool.
Phần thưởngSetRewardParamsThay đổi tỷ lệ phát thải/thời gian kết thúc của phần thưởng hiện có.
Phần thưởngUpdateRewardInfosThanh toán tăng trưởng phần thưởng đến thời điểm hiện tại (được gọi bởi bất kỳ swap/thay đổi vị thế nào).
Phần thưởngTransferRewardOwnerChuyển quyền có thể thiết lập hoặc nạp thêm một luồng phần thưởng.
Phần thưởngCollectRemainingRewardsSau end_time của luồng phần thưởng, thu hồi các token chưa được phân bổ về cho người cấp vốn.
Tiện íchInitTickArrayKhởi tạo một tài khoản tick-array (thường được đóng gói cùng OpenPosition).
Hầu hết các lệnh chỉ dành cho admin (CreateAmmConfig, UpdateAmmConfig, UpdatePoolStatus, CreateSupportMintAssociated, CreateOperationAccount, UpdateOperationAccount, CloseProtocolPosition) được kiểm soát bởi khóa công khai admin được mã hóa cứng trong chương trình. Các lệnh admin của luồng phần thưởng (TransferRewardOwner, CollectRemainingRewards) được kiểm soát bởi người cấp vốn phần thưởng, không phải admin chương trình. Hậu tố V2 có nghĩa là “hỗ trợ Token-2022 trên vault/NFT, yêu cầu slot bitmap-extension”. SDK mặc định chọn V2 cho các pool mới.

CreatePool

Đối số
sqrt_price_x64: u128           // giá khởi tạo
open_time:      u64            // các swap bị từ chối trước thời điểm này
Tài khoản (rút gọn)
#TênWSGhi chú
1pool_creatorWS
2amm_configBậc phí đã chọn.
3pool_stateWinit tại đây.
4token_mint_0Đã sắp xếp.
5token_mint_1
6token_vault_0Winit tại đây, thuộc sở hữu của PDA pool authority.
7token_vault_1W
8observation_stateWinit tại đây.
9tick_array_bitmap_extensionWinit tại đây (V2).
10token_program
11token_program_2022
12system_program, rent
Điều kiện tiên quyết
  • token_mint_0 < token_mint_1 theo thứ tự byte.
  • amm_config.disable_create_pool == false.
  • Các mint không bị từ chối bởi danh sách cho phép extension Token-2022.
Trạng thái sau khi thực thi
  • pool_state.sqrt_price_x64 = sqrt_price_x64, tick_current = floor(log_{1.0001}(price)).
  • pool_state.liquidity = 0 (chưa có vị thế nào).
  • pool_state.fee_on = FromInput (mặc định legacy).
  • pool_state.dynamic_fee_info bằng không (phí động bị vô hiệu hóa).

CreateCustomizablePool

Khuyến nghị cho các pool mới. Có tác dụng tương tự CreatePool cộng thêm chế độ thu phí theo từng pool và tùy chọn bật phí động. Đối số
pub struct CreateCustomizableParams {
    pub sqrt_price_x64:    u128,
    pub collect_fee_on:    CollectFeeOn,   // FromInput | Token0Only | Token1Only
    pub enable_dynamic_fee: bool,
}
Tài khoản (rút gọn) — tương tự CreatePool, cộng thêm khi enable_dynamic_fee = true:
#TênWSGhi chú
Ndynamic_fee_configConfig dùng chung để snapshot. Phải tồn tại trước.
Điều kiện tiên quyết — tương tự CreatePool. Nếu enable_dynamic_fee = false, dynamic_fee_config bị bỏ qua. Trạng thái sau khi thực thi
  • pool_state.fee_on được đặt theo biến thể CollectFeeOn đã chọn.
  • Nếu phí động được bật: pool_state.dynamic_fee_info được khởi tạo từ DynamicFeeConfig được cung cấp (năm tham số hiệu chỉnh được sao chép; các trường trạng thái được đặt về không).
  • Ngược lại: pool_state.dynamic_fee_info bằng không (= phí động không hoạt động vĩnh viễn đối với pool này).
fee_on và bit bật phí động chỉ được đặt khi tạo pool. Không có cơ chế nâng cấp tại chỗ — các pool được tạo qua CreatePool cũ không thể có phí động hay phí một chiều sau này. Các triển khai mới nên mặc định dùng lệnh này.

OpenPositionV2 / OpenPositionWithToken22Nft

Tạo một vị thế mới trong một pool đã tồn tại. Đối số
tick_lower_index: i32
tick_upper_index: i32
tick_array_lower_start_index: i32
tick_array_upper_start_index: i32
liquidity:  u128              // L mong muốn (hoặc 0 để dùng các số lượng bên dưới)
amount_0_max: u64
amount_1_max: u64
with_metadata: bool           // ghi metadata NFT (Metaplex)
base_flag: Option<bool>       // true = khớp với amount0; false = khớp với amount1
Tài khoản (rút gọn)
#TênWS
1payerWS
2position_nft_owner
3position_nft_mintWS (keypair)
4position_nft_accountWATA của owner dành cho NFT.
5metadata_accountWMetaplex (tùy chọn, nếu with_metadata).
6pool_stateW
7protocol_position
8tick_array_lowerWĐược tạo nếu chưa khởi tạo.
9tick_array_upperWTương tự.
10personal_positionWĐược tạo tại đây.
11token_account_0, token_account_1WATA nguồn của người dùng.
12token_vault_0, token_vault_1W
13rent, system_program, token_program
14associated_token_program
15metadata_programTùy chọn.
16token_program_2022V2.
17vault_0_mint, vault_1_mintV2.
18tick_array_bitmap_extensionWV2 (nếu bị tác động).
Toán học — xem products/clmm/math. Dựa vào base_flag, chương trình giải ra L thực tế và số lượng token thực tế được sử dụng từ liquidity hoặc (amount_0_max, amount_1_max). Điều kiện tiên quyết
  • tick_lower < tick_upper, cả hai đều là bội số của pool.tick_spacing, trong phạm vi [MIN_TICK, MAX_TICK].
  • Các tick array cần thiết được truyền vào và đã khởi tạo (hoặc được tạo tại đây qua CPI InitTickArray trong transaction).
  • Người dùng có ít nhất amount_0_maxamount_1_max trong các ATA nguồn.
Trạng thái sau khi thực thi
  • personal_position tồn tại, liquidity được đặt, fee_growth_inside_last được snapshot.
  • Các mục tick-array tại tick_lowertick_upper được cập nhật (liquidity_gross += L, liquidity_net ± L, duy trì snapshot tăng trưởng phí).
  • pool_state.liquidity += L nếu vị thế trong phạm vi (tick_lower ≤ tick_current < tick_upper).
Lỗi thường gặpInvalidTickIndex, NotApproved, ZeroAmountSpecified, TransactionTooLarge (nếu có quá nhiều tick array).

IncreaseLiquidityV2

Thêm thanh khoản vào một vị thế đã mở. Đối số
liquidity: u128
amount_0_max: u64
amount_1_max: u64
base_flag: Option<bool>
Tài khoản — tương tự OpenPosition nhưng không có NFT mint (vị thế đã tồn tại; NFT được truyền vào như ATA của owner đang giữ 1 token). Hiệu lực
  • Chuyển amount_0_actual / amount_1_actual từ người dùng → vault.
  • Tăng personal_position.liquiditypool_state.liquidity (nếu trong phạm vi), cùng với liquidity_gross / liquidity_net của tick endpoint tương ứng.
  • Thu phí và phần thưởng còn nợ kể từ lần chạm cuối và ghi có vào tokens_fees_owed_{0,1} / reward_amount_owed. Các khoản này chỉ được thanh toán khi DecreaseLiquidity hoặc CollectReward, không phải khi tăng.

DecreaseLiquidityV2

Rút thanh khoản khỏi một vị thế. Đối số
liquidity: u128
amount_0_min: u64
amount_1_min: u64
Tài khoản — cùng cấu trúc với IncreaseLiquidity. Hiệu lực
  • Tính (amount_0, amount_1) cho L được rút dựa trên sqrt_price_x64 hiện tại.
  • Thanh toán phí/phần thưởng tích lũy kể từ lần chạm cuối, tương tự IncreaseLiquidity.
  • Chuyển amount_0 + fees_owed_0amount_1 + fees_owed_1 từ vault về cho người dùng.
  • Giảm các bộ đếm thanh khoản; nếu personal_position.liquidity == 0 mới, vị thế đủ điều kiện để ClosePosition.
Slippageamount_0_minamount_1_min là mức tối thiểu người dùng chấp nhận sau khi trừ phí chuyển Token-2022 ở phía đầu ra.

ClosePosition

Đốt NFT vị thế và đóng PersonalPositionState. Điều kiện tiên quyết
  • personal_position.liquidity == 0.
  • tokens_fees_owed_{0,1} == 0.
  • Tất cả bộ đếm phần thưởng reward_amount_owed == 0.
(Tức là phải thu toàn bộ và giảm về không trước.) Hiệu lực
  • Đốt NFT.
  • Đóng tài khoản NFT mint và tài khoản personal_position, hoàn lại rent cho payer.

SwapV2

Duyệt đường cong thanh khoản; chính xác đầu vào hoặc chính xác đầu ra tùy theo is_base_input. Đối số
amount: u64                  // đầu vào nếu is_base_input=true, đầu ra nếu ngược lại
other_amount_threshold: u64  // tối thiểu nhận ra hoặc tối đa bỏ vào
sqrt_price_limit_x64: u128   // giới hạn cứng; 0 ⇒ không giới hạn
is_base_input: bool
Tài khoản (rút gọn)
#TênWSGhi chú
1payerS
2amm_config
3pool_stateW
4input_token_accountW
5output_token_accountW
6input_vaultW
7output_vaultW
8observation_stateW
9token_program
10token_program_2022V2.
11memo_programV2 (bắt buộc cho một số đường dẫn Token-2022).
12input_vault_mint, output_vault_mintV2.
13tick_array_bitmap_extension (tùy chọn)WNếu swap đi vào phần extension.
14+tick_array (còn lại)WĐủ số array để bao phủ phạm vi dự kiến của quá trình duyệt.
Người gọi truyền một danh sách tick array được xếp hạng bao phủ hành trình swap dự kiến; chương trình sử dụng bao nhiêu tùy theo nhu cầu. SDK tính danh sách này qua PoolUtils.computeAmountOutFormat hoặc endpoint báo giá của API. Điều kiện tiên quyết
  • pool_state.status cho phép swap.
  • now >= open_time.
  • sqrt_price_limit_x64 nằm đúng phía so với sqrt_price_x64 theo chiều giao dịch.
Lỗi thường gặpExceededSlippage, SqrtPriceLimitOverflow, TickArrayNotFound, LiquidityInsufficient. Những gì SwapV2 thực hiện bên trong mà người gọi nên biết (phiên bản sau năm 2025):
  1. Phụ thu phí động — nếu pool.dynamic_fee_info khác không, chương trình cập nhật bộ tích lũy biến động bằng khoảng cách tick đã duyệt kể từ swap cuối (theo các quy tắc lọc/suy giảm từ products/clmm/fees) và cộng thêm dynamic_fee_component vào AmmConfig.trade_fee_rate. Tổng phí được giới hạn ở mức 10% (MAX_FEE_RATE_NUMERATOR / 1_000_000).
  2. Khớp lệnh giới hạn — khi hành trình giá vượt qua một tick có lệnh giới hạn đang mở, chương trình trước tiên điền thanh khoản lệnh giới hạn khả dụng tại tick đó (FIFO theo order_phase), sau đó tiếp tục theo đường cong thanh khoản LP. Các lượng đã khớp cập nhật tick.unfilled_ratio_x64tick.part_filled_orders_remaining để thanh toán sau; bản thân các lệnh vẫn chưa được chi tiêu cho đến khi chủ sở hữu gọi SettleLimitOrder.
  3. Định tuyến phí một chiều — khi pool.fee_on = Token0Only hoặc Token1Only, bước swap vẫn tính toán cùng một giao dịch đầu vào-đầu ra; phí sau đó được định tuyến về phía đã cấu hình. Đối với các chiều mà phía phí cấu hình là đầu ra, phí được trừ từ đầu ra swap (người dùng nhận out − fee); đối với các chiều mà nó là đầu vào, hành vi khớp với FromInput. Xem is_fee_on_input(zero_for_one)is_fee_on_token0(zero_for_one) trên PoolState.
Swap (V1) triển khai cùng phí động, định tuyến phí một chiều và khớp lệnh giới hạn như SwapV2; tính năng duy nhất nó thiếu là hỗ trợ Token-2022 — cả hai vault đều phải là SPL Token cổ điển. Các pool có bất kỳ mint Token-2022 nào phải được swap qua SwapV2. Aggregator và SDK đã ưu tiên V2 cho mọi leg CLMM nên người gọi không cần phân nhánh theo loại mint.

OpenLimitOrder

Đặt lệnh bán tại một tick cụ thể. Lệnh nằm trong một nhóm FIFO theo từng tick và được điền khi giá vượt qua. Đối số
nonce_index:    u8       // chỉ số tài khoản nonce do người dùng chọn (0..255 mỗi ví)
zero_for_one:   bool     // true: bán token0 lấy token1; false: bán token1 lấy token0
tick_index:     i32      // phải là bội số của pool.tick_spacing
amount:         u64      // lượng token đầu vào
Tài khoản (rút gọn)
#TênWSGhi chú
1payerWSChủ sở hữu lệnh; trả rent.
2pool_stateW
3tick_arrayWTick array chứa tick_index.
4limit_order_nonceWPDA. init_if_needed — được tạo khi người dùng đặt lệnh đầu tiên với nonce_index này.
5limit_orderWPDA. init tại đây.
6input_token_accountWATA đầu vào của người dùng.
7input_vaultWVault đầu vào của pool.
8input_vault_mintXử lý phí Token-2022.
9input_token_programSPL hoặc Token-2022.
10system_program, rent
Điều kiện tiên quyết
  • tick_index % pool.tick_spacing == 0 và trong phạm vi [MIN_TICK, MAX_TICK].
  • tick_index nằm đúng phía so với pool.tick_current cho chiều đã chọn (bán token0 → tick phải cao hơn hiện tại, và ngược lại). Bán tại một tick đã được vượt qua sẽ bị khớp ngay lập tức và bị từ chối.
  • pool_state.status cho phép thao tác lệnh giới hạn (bit 5).
Trạng thái sau khi thực thi
  • limit_order tồn tại, snapshot tick.order_phasetick.unfilled_ratio_x64 tại thời điểm mở.
  • tick.orders_amount += amount (trong cohort hiện tại).
  • limit_order_nonce.order_nonce += 1.
  • Phát ra sự kiện OpenLimitOrderEvent.
Lỗi thường gặpInvalidLimitOrderAmount (bằng không hoặc dưới mức tối thiểu của pool), InvalidTickIndex (ngoài [MIN_TICK, MAX_TICK], hoặc sai phía so với tick_current cho chiều đã chọn), TickAndSpacingNotMatch (tick_index % pool.tick_spacing != 0), OrderPhaseSaturated.

IncreaseLimitOrder

Thêm vào một lệnh đang mở. Chỉ có thể gọi bởi owner của lệnh. Đối số
amount: u64    // lượng token đầu vào bổ sung
Tài khoản — tương tự OpenLimitOrder nhưng không có tài khoản nonce; PDA limit_order được truyền trực tiếp. Điều kiện tiên quyết
  • limit_order.owner == signer.
  • Lệnh vẫn còn trong cùng cohort (tick.order_phase == limit_order.order_phase). Nếu cohort đã bắt đầu điền, lệnh đã được thanh toán một phần — người gọi nên gọi DecreaseLimitOrder hoặc SettleLimitOrder trước để cuộn tiến.
Hiệu lực
  • Chuyển amount từ ATA của owner đến input_vault.
  • limit_order.total_amount += amount; tick.orders_amount += amount.

DecreaseLimitOrder

Giảm hoặc hủy hoàn toàn một lệnh đang mở. Trả phần chưa khớp về cho owner, cộng thêm bất kỳ đầu ra nào đã được thanh toán bởi các lần điền một phần trước đó. Đối số
amount:     u64    // lượng token đầu vào cần rút (tối đa = phần chưa khớp còn lại)
amount_min: u64    // mức sàn slippage cho việc rút phía đầu vào
Tài khoản — cả hai phía token đầu vào và đầu ra:
#TênWS
1ownerS
2pool_stateW
3tick_arrayW
4limit_orderW
5input_token_accountW
6output_token_accountW
7input_vaultW
8output_vaultW
9input_vault_mint, output_vault_mint
10token_program, token_program_2022
Hiệu lực
  • Tính lại lượng đã khớp của lệnh từ unfilled_ratio_x64 của cohort kể từ lúc mở.
  • Gửi đầu ra đã khớp đến output_token_account.
  • Gửi amount đầu vào chưa khớp về input_token_account.
  • Cập nhật limit_order tương ứng. Nếu phần chưa khớp còn lại mới bằng không, chương trình đóng tài khoản và hoàn lại rent cho owner.

SettleLimitOrder

Đẩy token đầu ra đã khớp về cho owner mà không thay đổi phần chưa khớp còn lại của lệnh. Hữu ích khi các keeper auto_withdraw muốn thanh toán dần các lần điền một phần kéo dài. Người gọiowner của lệnh hoặc limit_order_admin của chương trình (một ví nóng vận hành ngoài chuỗi chạy vòng lặp keeper tự động). Keeper không có quyền hạn khác — nó không thể di chuyển quỹ người dùng ngoài việc đẩy đầu ra đã khớp về ATA owner của lệnh. Tài khoản
#TênWS
1signerSowner hoặc limit_order_admin
2pool_state
3tick_array
4limit_orderW
5output_token_accountWATA đầu ra của owner.
6output_vaultWVault đầu ra của pool.
7output_vault_mint
8output_token_program
Hiệu lực
  • Tính đầu ra tích lũy còn nợ bằng cách dùng (limit_order.unfilled_ratio_x64, tick.unfilled_ratio_x64).
  • Chuyển phần chênh lệch đến output_token_account.
  • Cập nhật limit_order.settled_output.
  • Không đóng lệnh; lệnh vẫn còn mở đối với bất kỳ đầu vào nào còn lại.

CloseLimitOrder

Đóng tài khoản lệnh đã được thực hiện hoàn toàn. Rent luôn được trả về limit_order.owner bất kể ai ký. Người gọiowner hoặc limit_order_admin. Điều kiện tiên quyết
  • Lệnh có phần chưa khớp còn lại bằng không (hoặc amount == total_amount đã được khớp và thanh toán, hoặc owner đã giảm lệnh về không trước đó và quên đóng).
Hiệu lực
  • Đóng limit_order; rent được gửi đến limit_order.owner.

CreateDynamicFeeConfig (admin)

Tạo một bộ tham số có thể tái sử dụng theo chỉ số u16. Đối số
index:                       u16
filter_period:               u16   // giây; ví dụ 30
decay_period:                u16   // giây; ví dụ 600. Phải > filter_period
reduction_factor:            u16   // 1..10_000; ví dụ 5_000 = giữ lại 50% mỗi cửa sổ suy giảm
dynamic_fee_control:         u32   // 1..100_000; hệ số khuếch đại trên đường cong biến động-thành-phí
max_volatility_accumulator:  u32   // giới hạn trên
Tài khoản
#TênWSGhi chú
1ownerWSKhóa công khai admin được mã hóa cứng.
2dynamic_fee_configWPDA, init tại đây.
3system_program
Lỗi thường gặpInvalidDynamicFeeConfigParams nếu decay_period <= filter_period hoặc bất kỳ trường nào có giá trị 0 nằm ngoài giới hạn.

UpdateDynamicFeeConfig (admin)

Chỉnh sửa một DynamicFeeConfig hiện có. Các pool đã snapshot cấu hình tại thời điểm tạo không bị cập nhật hồi tố; chỉ các pool mới tạo tham chiếu đến config này mới nhận các giá trị mới. Đối số — năm trường hiệu chỉnh giống như CreateDynamicFeeConfig (filter_period, decay_period, reduction_factor, dynamic_fee_control, max_volatility_accumulator); index được cố định khi tạo và không cần truyền lại ở đây.

CollectProtocolFee / CollectFundFee

Có cùng cấu trúc với CollectProtocolFee / CollectFundFee của CPMM. Người ký phải khớp với AmmConfig.owner / AmmConfig.fund_owner. Thu phí giao thức/quỹ đã tích lũy từ vault của pool về cho người nhận, đặt các trường PoolState.protocol_fees_* / fund_fees_* tương ứng về không.

InitializeReward

Thêm một luồng phần thưởng mới vào pool. Tối đa 3 luồng có thể hoạt động cùng lúc. Đối số
open_time:     u64
end_time:      u64
emissions_per_second_x64: u128   // Q64.64
Tài khoản
#TênWS
1reward_funderWS
2funder_token_accountW
3amm_config
4pool_stateW
5operation_statePDA trạng thái vận hành CLMM kiểm soát việc tạo phần thưởng.
6reward_token_mint
7reward_token_vaultWinit tại đây.
8reward_token_program
9system_program, rent
Điều kiện tiên quyết
  • Ít hơn 3 luồng hiện đang hoạt động trên pool.
  • Người cấp vốn nạp total_emission = emissions_per_second × (end_time − open_time) token phần thưởng vào vault như một phần của lệnh này.
  • Mint phần thưởng được đưa vào danh sách trắng theo operation_state.

SetRewardParams

Gia hạn, nạp thêm hoặc thay đổi tỷ lệ phát thải của một luồng phần thưởng hiện có. Thường được gọi bởi người tạo pool hoặc multisig Raydium. Các ràng buộc nằm trên chuỗi: thông thường bạn có thể gia hạn end_time hoặc tăng phát thải, không thể giảm hồi tố. Kiểm tra danh sách owner của operation_state.

UpdateRewardInfos

Thuần túy kế toán — thanh toán reward_growth_global_x64 đến thời điểm hiện tại bằng cách nhân emissions_per_second × Δt / liquidity. Được gọi nội bộ bởi mọi lệnh chạm đến thanh khoản. Được cung cấp như một lệnh độc lập vì các tác nhân bên ngoài (UI, crank) đôi khi muốn kích hoạt nó.

CollectReward

Chủ sở hữu vị thế nhận token phần thưởng còn nợ. Tài khoản
#TênWS
1nft_ownerS
2nft_accountATA của owner đang giữ NFT vị thế.
3personal_positionW
4pool_stateW
5protocol_position
6reward_token_vaultW
7recipient_token_accountW
8token_program
9token_program_2022
Hiệu lực
  • Thanh toán tăng trưởng phần thưởng (cùng mẫu với phí).
  • Chuyển lượng còn nợ đến ATA người nhận, đặt reward_amount_owed[i] về không.

Ma trận thay đổi trạng thái

Lệnhpool.liquiditypool.fee_growth_globalpool.reward_growth_globalpersonal_position.liquidityTick array
CreatePool00
OpenPosition+ nếu trong phạm vimớithêm liquidity_gross/net
IncreaseLiquidity+ nếu trong phạm vithanh toán nợthanh toán nợ+điều chỉnh
DecreaseLiquidity− nếu trong phạm vithanh toán nợthanh toán nợđiều chỉnh
ClosePositionbị hủy
SwapV2± khi vượt tick+vượt & lật outside; khớp các cohort lệnh giới hạn
OpenLimitOrderorders_amount += amount trên tick mục tiêu
IncreaseLimitOrderorders_amount += amount
DecreaseLimitOrderorders_amount -=, có thể đóng cohort
SettleLimitOrder— (chỉ đọc trên tick)
CloseLimitOrder
CreateCustomizablePool00
UpdateRewardInfos+
CollectRewardthanh toán nợ

Bước tiếp theo

Nguồn tham khảo: