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 →
Stable AMM chia sẻ phần lớn bộ lệnh với AMM v4. Các lệnh độc nhất là InitModelDataUpdateModelData, lệnh này điền dữ liệu vào bảng tra cứu và cập nhật bảng. Tất cả các hoạt động khác (swap, deposit, withdraw, crank) tuân theo cùng mô hình như AMM v4.

Danh sách lệnh

LệnhDanh mụcGhi chú
InitializeVòng đờiTạo pool (yêu cầu tài khoản model-data được phân bổ trước).
PreInitializeVòng đờiCông cụ hỗ trợ phân bổ trước phiên bản cũ.
InitModelDataThiết lập mô hìnhTạo và khởi tạo bảng tra cứu.
UpdateModelDataThiết lập mô hìnhĐiền lên tới 5 phần tử bảng trên mỗi lần gọi.
DepositThanh khoảnThêm thanh khoản, nhận LP.
WithdrawThanh khoảnĐốt LP, nhận cả hai bên.
SwapBaseInSwapSwap nhập liệu chính xác.
SwapBaseOutSwapSwap kết quả chính xác.
MonitorStepCrankThanh toán OpenBook, cập nhật đơn hàng.
SetParamsQuản trịThay đổi tham số pool.
WithdrawPnlQuản trịRút lệ phí giao thức tích lũy.
WithdrawSrmPhiên bản cũRút hoàn lại SRM (phiên bản cũ).
SimulateInfoChẩn đoánCông cụ trợ giúp báo giá chỉ đọc.

Initialize

Khởi động một pool Stable AMM mới được liên kết với một thị trường OpenBook hiện có và một tài khoản ModelDataInfo được tạo trước. Đối số
nonce: u8
open_time: u64
Tài khoản (ghi được W, ký S)
#TênWSGhi chú
1token_programSPL Token.
2system_program
3rent
4ammWTài khoản AmmInfo của pool.
5amm_authorityPDA toàn chương trình.
6amm_open_ordersWOpenOrders của OpenBook.
7lp_mintWMint token LP có thể thay đổi.
8coin_mint
9pc_mint
10pool_coin_token_accountWKho coin của pool.
11pool_pc_token_accountWKho pc của pool.
12amm_target_ordersWLưới cho các đơn hàng OpenBook.
13model_data_accountTài khoản bảng tra cứu.
14serum_programChương trình OpenBook.
15serum_marketThị trường OpenBook.
16user_dest_lp_tokenWATA LP của người tạo (nhận LP ban đầu).
17user_walletWSNgười tạo; thanh toán tiền thuê, tài trợ tiền gửi ban đầu.
(opt)srm_tokenWTài khoản token SRM để chiết khấu phí (phiên bản cũ).
Điều kiện tiên quyết
  • model_data_account phải được tạo và khởi tạo trước bởi InitModelData.
  • lp_mint phải trống (nguồn cung bằng không).
  • Kho phải tồn tại và thuộc sở hữu của amm_authority.
Điều kiện sau
  • AmmInfo được khởi tạo với tất cả các tham chiếu.
  • TargetOrders được đặt về 0 và sẵn sàng cho MonitorStep đầu tiên.
  • Các token LP ban đầu được tạo và gửi đến user_dest_lp_token.
  • Các đơn hàng OpenBook chưa được đăng bài; MonitorStep đầu tiên đăng bài chúng.

InitModelData

Tạo và khởi tạo tài khoản ModelDataInfo. Phải được gọi một lần trước Initialize. Đối số
multiplier: u64       // hệ số tỷ lệ (ví dụ: 10^6)
Tài khoản (ghi được W, ký S)
#TênWSGhi chú
1model_data_accountWTài khoản bảng 50k phần tử.
2amm_adminSQuản trị viên pool (phải ký để chứng minh quyền).
Điều kiện tiên quyết
  • model_data_account phải đủ lớn (~1,2 MB cho 50k × 24 byte).
  • model_data_account phải thuộc sở hữu của chương trình Stable.
Điều kiện sau
  • status = Initialized.
  • multiplier được đặt.
  • valid_data_count = 0 (không có phần tử nào được điền; gọi UpdateModelData để thêm chúng).
  • Mảng elements được đặt về 0.

UpdateModelData

Điền lên tới 5 phần tử bảng trong một lần gọi. Phải được gọi sau InitModelData nhưng trước khi các swap bắt đầu sử dụng bảng. Đối số
array_data: [UpdateModelData; 5]

pub struct UpdateModelData {
  pub index: u64,
  pub data: DataElement,
}
Tài khoản (ghi được W, ký S)
#TênWSGhi chú
1amm_adminSNgười ký (phải là quản trị viên pool).
2model_data_accountWTài khoản bảng.
Điều kiện tiên quyết
  • amm_admin phải khớp với AmmInfo.amm_admin.
  • Mỗi chỉ mục trong array_data phải hợp lệ (trong phạm vi 50.000).
  • Các mục phải được sắp xếp (không được xác thực trên chuỗi để tăng tốc độ): x tăng, y giảm, giá tăng.
Điều kiện sau
  • Các phần tử được ghi vào model_data_account.elements[index] cho mỗi đầu vào.
  • valid_data_count được cập nhật thành chỉ mục tối đa được ghi + 1.
Ghi chú quản trị: Không có việc thực thi thứ tự sắp xếp hoặc tính nhất quán giá trên chuỗi. Một quản trị viên độc hại hoặc không cẩn thận có thể làm hỏng bảng và gây ra các báo giá không chính xác. Trong thực tế, multisig Raydium kiểm soát địa chỉ này.

Deposit

Thêm thanh khoản, nhận các token LP. Đối số
max_coin_amount: u64
max_pc_amount: u64
base_side: u64          // 0 = cơ sở trên coin, 1 = cơ sở trên pc
Tài khoản — giống AMM v4, ~13 tài khoản. Phải bao gồm model_data_account ở chế độ chỉ đọc. Toán học — pro-rata tiêu chuẩn sử dụng bảng tra cứu để tính tỷ lệ. SDK tính cặp coin/pc cho số lượng LP mong muốn và kiểm tra đối với các giới hạn tối đa.

Withdraw

Đốt LP, nhận cả hai bên pro-rata. Đối số
amount: u64            // token LP cần đốt
Tài khoản — giống AMM v4, với model_data_account ở chế độ chỉ đọc. Điều kiện tiên quyết
  • user_lp_token_account nắm giữ ít nhất amount.
Điều kiện sau
  • amount token LP bị đốt.
  • Người dùng nhận các khoản coin và pc theo pro-rata hiện tại, điều chỉnh cho phí tích lũy.

SwapBaseIn

Swap nhập liệu chính xác sử dụng bảng tra cứu để định giá. Đối số
amount_in: u64
minimum_amount_out: u64
Tài khoản (~17 tổng cộng)
#TênWSGhi chú
1token_program
2ammW
3amm_authority
4amm_open_ordersW
5amm_target_ordersW
6pool_coin_token_accountW
7pool_pc_token_accountW
8model_data_accountBảng tra cứu chỉ đọc.
9serum_program
10serum_marketW
11serum_bidsW
12serum_asksW
13serum_event_queueW
14serum_coin_vaultW
15serum_pc_vaultW
16serum_vault_signer
17user_source_tokenWTài khoản token đầu vào của người dùng.
18user_dest_tokenWTài khoản token đầu ra của người dùng.
19user_ownerSNgười dùng (người ký giao dịch).
Điều kiện tiên quyết
  • amm.status cho phép swap.
  • user_source_token nắm giữ ≥ amount_in.
Điều kiện sau
  • Người dùng mất amount_in, nhận được amount_out ≥ minimum_amount_out.
  • Phí pool tăng các bộ đếm need_take_pnl_*.
  • Các đơn hàng OpenBook có thể được thanh toán nếu được điền.
Toán học — Nội suy bảng tra cứu như được mô tả trong products/stable/math.

SwapBaseOut

Swap kết quả chính xác (ngược của SwapBaseIn). Các tài khoản giống nhau, hướng toán học khác. Đối số
max_amount_in: u64
amount_out: u64

MonitorStep

Crank không cần phép: thanh toán các lần điền OpenBook, cập nhật lưới đơn hàng giới hạn. Đối số
plan_order_limit: u16
place_order_limit: u16
cancel_order_limit: u16
Tài khoản (~18 tổng cộng) — giống MonitorStep của AMM v4 cộng với model_data_account ở chế độ chỉ đọc. Điều kiện tiên quyết
  • Tham chiếu tài khoản OpenBook phải khớp với thị trường được ràng buộc của pool.
Điều kiện sau
  • Các lần điền OpenBook đang chờ xử lý được thanh toán vào kho pool.
  • Các đơn hàng giới hạn mới được đăng lên OpenBook dựa trên đường cong bảng tra cứu.
  • TargetOrders được cập nhật.

SetParams

Chỉ quản trị viên. Thay đổi tham số pool (trạng thái, trạng thái, phí, chủ sở hữu, khóa model-data, v.v.). Đối số
param: u8              // tham số nào để thay đổi (Status, State, Fees, v.v.)
value: Option<u64>    // giá trị mới (nếu param là số)
new_pubkey: Option<Pubkey>  // địa chỉ mới (nếu param là khóa tài khoản)
fees: Option<Fees>    // phí mới (nếu param là Fees)
Tài khoản — thay đổi theo param. Luôn yêu cầu amm_admin là người ký. Các param phổ biến:
  • param = 0 (Status) — thay đổi mặt nạ hoạt động.
  • param = 9 (Fees) — thay đổi trade_fee, phân chia pnl, v.v.
  • param = 11 (ModelDataKey) — liên kết lại bảng tra cứu (hiếm, yêu cầu hành động quản trị viên).

WithdrawPnl

Chỉ quản trị viên. Rút lệ phí giao thức tích lũy từ need_take_pnl_* vào các tài khoản PnL được chỉ định. Đối số — không có (điều khiển bởi trạng thái). Tài khoản (~14 tổng cộng)
#TênWSGhi chú
1token_program
2ammW
3amm_authority
4amm_open_ordersW
5pool_coin_token_accountW
6pool_pc_token_accountW
7coin_pnl_destWTài khoản coin của quản trị viên (nhận phí).
8pc_pnl_destWTài khoản pc của quản trị viên (nhận phí).
9pnl_adminSNgười ký (phải khớp với quyền sở hữu pool).
10+Tài khoản OpenBook (~4)Thanh toán các lần điền đang chờ xử lý trước.
Điều kiện tiên quyết
  • pnl_admin phải được ủy quyền.
Điều kiện sau
  • need_take_pnl_coinneed_take_pnl_pc được chuyển đến các tài khoản của quản trị viên.
  • Các bộ đếm được đặt về 0.

WithdrawSrm

Phiên bản cũ (không sử dụng trên các pool mới). Rút hoàn lại token chiết khấu phí SRM từ các pool thời kỳ Serum sớm. Đối số
amount: u64

SimulateInfo

Công cụ trợ giúp báo giá chỉ đọc cho khách hàng và SDK. Đối số
param: u8              // PoolInfo, SwapBaseInInfo, SwapBaseOutInfo, RunCrankInfo
swap_base_in_value: Option<SwapInstructionBaseIn>
swap_base_out_value: Option<SwapInstructionBaseOut>
Cách sử dụng — được gọi thông qua simulateTransaction để nhận báo giá mà không thực hiện swap.

Tiếp theo

  • Tài khoản — cho bố cục và kích thước trường tài khoản.
  • Toán học — cho logic nội suy bảng tra cứu.
  • Bản demo mã — để xem cách gọi các lệnh này từ SDK.
Nguồn:
  • raydium-stable/program/src/instruction.rs (enum và pack/unpack)
  • raydium-stable/program/src/processor.rs (logic thực thi)