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.
このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
インストラクション概要
| ディスクリミネータ名 | 署名者 | 動作 |
|---|
Initialize | プール作成者 | 2つのミント と AmmConfig から新しい CPMM プールを作成します。パーミッションレス。新しいプールで enable_creator_fee = false がハードコードされます。pool_state アカウントは正規 PDA またはランダムキーペア(Initialize アカウント参照)です。 |
InitializeWithPermission | ペイヤー + Permission PDA の保有者 | Initialize の許可版。呼び出し者(ペイヤー)は自身の公開鍵から導出された Permission PDA を所有する必要があります。プール作成をゲートする必要があるプラットフォームで使用(例:LaunchLab 卒業)。呼び出し者が creator_fee_on を固定でき、新しいプールで enable_creator_fee = true に強制されます。pool_state の creator フィールドはペイヤーではなく別途渡される creator アカウントに設定されます。pool_state の正規 PDA またはランダムキーペアの柔軟性は Initialize と同じです。 |
Deposit | LP | 両トークンで流動性を追加。LP トークンを受け取ります。 |
Withdraw | LP | LP トークンをバーン。両方の基礎となるトークンを按分で受け取ります。 |
SwapBaseInput | スワップ実行者 | 確定入力スワップ(amount_in をイン、≥ minimum_amount_out をアウト)。 |
SwapBaseOutput | スワップ実行者 | 確定出力スワップ(≤ maximum_amount_in をイン、amount_out をアウト)。 |
CollectProtocolFee | protocol_owner (AmmConfig より) | ボルトから蓄積したプロトコルフィーを回収します。 |
CollectFundFee | fund_owner (AmmConfig より) | ボルトから蓄積したファンドフィーを回収します。 |
CollectCreatorFee | pool_creator | 蓄積したクリエイターフィーを回収(クリエイターフィーが有効な場合)。 |
UpdatePoolStatus | admin | ビットマスクを使用してプール上の特定の操作を一時停止・再開します。 |
UpdateAmmConfig | admin | AmmConfig のフィー率またはプロトコル/ファンド所有者を変更します。 |
CreateAmmConfig | admin | 新しいフィーティア(新しい AmmConfig アカウント)を作成します。 |
CreatePermissionPda | admin | 特定の権限が InitializeWithPermission を呼び出すことを許可する Permission PDA をミント。 |
ClosePermissionPda | admin | 以前発行された Permission PDA を取り消します。 |
ステータスビットマスク:各プールの status は u8 で、ビット 0 = デポジット無効、ビット 1 = 引出無効、ビット 2 = スワップ無効(プログラムの PoolStatusBitIndex { Deposit, Withdraw, Swap } など)。クリアビットは操作が許可されたことを意味し、セットビットは一時停止されたことを意味します。UpdatePoolStatus は生の u8 を受け取り、既存値を上書きします。
以降のセクションでは詳細に説明します。アカウント順序は CPMM IDL に従い、SDK および raydium-cp-swap/programs/cp-swap/src/instructions の Rust クライアントがこの順序に合わせます。
Initialize
新しい CPMM プールを作成します。
引数
init_amount_0: u64
init_amount_1: u64
open_time: u64 // Unix タイムスタンプ。これ以前のスワップは拒否されます
アカウント (W = 書き込み可能、S = 署名者)
| # | 名前 | W | S | 注記 |
|---|
| 1 | creator | W | S | レント払い。pool_state.pool_creator として記録されます。 |
| 2 | amm_config | | | 選択されたフィーティア。 |
| 3 | authority | | | CPMM グローバルオーソリティ PDA。 |
| 4 | pool_state | W | S* | ここで init。正規 PDA ["pool", amm_config, token_0_mint, token_1_mint] または ランダムキーペア — 正規 PDA でない場合、プログラムは pool_state に署名を要求(require_eq!(pool_account_info.is_signer, true))。ランダムキーペアパスは作成者が正規 PDA での前走行動作を回避できます。下流 PDA(lp_mint、ボルト、observation_state)は pool_state.key() から導出されます。 |
| 5 | token_0_mint | | | ソート:token_0_mint < token_1_mint。 |
| 6 | token_1_mint | | | |
| 7 | lp_mint | W | | ここで init。オーソリティを authority に設定。 |
| 8 | creator_token_0 | W | | init_amount_0 のソース ATA。 |
| 9 | creator_token_1 | W | | init_amount_1 のソース ATA。 |
| 10 | creator_lp_token | W | | LP の宛先(欠落時に作成)。 |
| 11 | token_0_vault | W | | ここで init。authority が所有。 |
| 12 | token_1_vault | W | | |
| 13 | create_pool_fee | W | | 作成者が支払う create_pool_fee の宛先 ATA。 |
| 14 | observation_state | W | | ここで init。 |
| 15 | token_program | | | SPL Token(LP ミント用)。 |
| 16 | token_0_program | | | SPL Token または Token-2022。 |
| 17 | token_1_program | | | SPL Token または Token-2022。 |
| 18 | associated_token_program | | | |
| 19 | system_program | | | |
| 20 | rent | | | |
* pool_state はランダムキーペアパスでのみ署名します。正規 PDA パスは pool_state なしで実行されます。
事前条件
- ミントがソート済み(バイト順で
token_0_mint < token_1_mint)。
- どちらのミントも CPMM許可リスト外の拡張を使用していない(
TransferFeeConfig、MetadataPointer、TokenMetadata、InterestBearingConfig、ScaledUiAmount) — /ja/products/cpmm/accounts 参照。プログラム内の小さいミント単位の許可リストは個別サポートのチェックをバイパス。
creator は各 ATA に init_amount_0 および init_amount_1 を持つ。
amm_config.disable_create_pool == false。
事後条件
pool_state が lp_supply = sqrt(init_amount_0 * init_amount_1) − LOCKED_LP で存在。
LOCKED_LP(LP トークン 100 ラムポート)の LP スターターが永続的にロック — pool_state.lp_supply は liquidity − 100 を記録しつつ、100 LP ユニットは流通外のまま、プールが完全にドレイン・ゼロ除算を防止。
observation_state 初期化;observation_index = 0 および pool_id = pool_state.key()。
create_pool_fee ラムポートは作成者から受信者に転送され、ネイティブ SOL(wSOL ATA)として同期。
- プールのステータスビットマスクは
0(デポジット・引出・スワップすべて有効)。
enable_creator_fee = false および creator_fee_on = BothToken。Initialize はクリエイターフィー有効化をサポートしません — そのパスは InitializeWithPermission。
open_time は呼び出し者が <= block_timestamp の値を渡した場合 block_timestamp + 1 に引き上げられます。スワップは open_time 前に拒否;デポジット・引出は即座に動作。
一般的エラー (完全リストは /ja/reference/error-codes で)
InvalidInput — ミント非ソート、または同一ミント。
NotSupportMint — ブロック Token-2022 拡張。
ExceededSlippage — 稀に;init_amount_0/1 が小数点不一致で 0 LP になった場合。
Deposit
プールに比例する両トークンで流動性を追加。
引数
lp_token_amount: u64 // LP にミントする LP トークン数
maximum_token_0: u64
maximum_token_1: u64
アカウント
| # | 名前 | W | S |
|---|
| 1 | owner | | S |
| 2 | authority | | |
| 3 | pool_state | W | |
| 4 | owner_lp_token | W | |
| 5 | token_0_account | W | |
| 6 | token_1_account | W | |
| 7 | token_0_vault | W | |
| 8 | token_1_vault | W | |
| 9 | token_program | | |
| 10 | token_program_2022 | | |
| 11 | vault_0_mint | | |
| 12 | vault_1_mint | | |
| 13 | lp_mint | W | |
数学
needed_token_0 = ceil(lp_token_amount * vault_0 / lp_supply)
needed_token_1 = ceil(lp_token_amount * vault_1 / lp_supply)
require(needed_token_0 <= maximum_token_0, "ExceededSlippage")
require(needed_token_1 <= maximum_token_1, "ExceededSlippage")
k の比例性に変化なし — ボルトと lp_supply は同一要素でスケール。
事後条件
lp_supply += lp_token_amount。
vault_0 += needed_token_0(入力時 Token-2022 転送フィー差引後)。
vault_1 += needed_token_1(入力時 Token-2022 転送フィー差引後)。
一般的エラー — ExceededSlippage、ZeroTradingTokens、デポジット一時停止時 InvalidStatus。
Withdraw
LP トークンをバーン、両基礎トークンを按分で受け取ります。
引数
lp_token_amount: u64
minimum_token_0: u64
minimum_token_1: u64
アカウント
| # | 名前 | W | S |
|---|
| 1 | owner | | S |
| 2 | authority | | |
| 3 | pool_state | W | |
| 4 | owner_lp_token | W | |
| 5 | token_0_account | W | |
| 6 | token_1_account | W | |
| 7 | token_0_vault | W | |
| 8 | token_1_vault | W | |
| 9 | token_program | | |
| 10 | token_program_2022 | | |
| 11 | vault_0_mint | | |
| 12 | vault_1_mint | | |
| 13 | lp_mint | W | |
(Deposit と同一;lp_mint は LP トークンがバーンされるため書き込み可能)
数学
out_token_0 = floor(lp_token_amount * vault_0 / lp_supply)
out_token_1 = floor(lp_token_amount * vault_1 / lp_supply)
require(out_token_0 >= minimum_token_0, "ExceededSlippage")
require(out_token_1 >= minimum_token_1, "ExceededSlippage")
事後条件
lp_supply -= lp_token_amount。
- ボルトが
out_token_0 / out_token_1 を送信(総額;ユーザーは Token-2022 転送フィー差引後を受取)。
確定入力スワップ。
引数
amount_in: u64
minimum_amount_out: u64
アカウント
| # | 名前 | W | S |
|---|
| 1 | payer | | S |
| 2 | authority | | |
| 3 | amm_config | | |
| 4 | pool_state | W | |
| 5 | input_token_account | W | |
| 6 | output_token_account | W | |
| 7 | input_vault | W | |
| 8 | output_vault | W | |
| 9 | input_token_program | | |
| 10 | output_token_program | | |
| 11 | input_token_mint | | |
| 12 | output_token_mint | | |
| 13 | observation_state | W | |
順序は 入力 → 出力 で、プールの正規 token_0 / token_1 ではなくユーザー方向。プログラムはミントを照合してボルトを判定。
数学 — /ja/products/cpmm/math 参照。
事前条件
open_time <= now。
pool_status がスワップを許可。
- このオーソリティに対してミント一時停止・フリーズなし。
amount_in > 0。
一般的エラー
ExceededSlippage — amount_out < minimum_amount_out。
ZeroTradingTokens — トレードが 0 に丸める。
NotApproved — UpdatePoolStatus でプールがスワップ一時停止。
InvalidInput — ミントがプールボルトのいずれとも一致しない。
SwapBaseOutput
確定出力スワップ。
引数
max_amount_in: u64
amount_out: u64
アカウント — SwapBaseInput と同じ。
数学 — 逆曲線(シーリング付き)、/ja/products/cpmm/math 参照。
一般的エラー — ExceededSlippage(gross_in > max_amount_in)、ZeroTradingTokens、InvalidInput、NotApproved。
CollectProtocolFee
ボルトから蓄積したプロトコルフィーを回収。
引数 — なし。
アカウント
| # | 名前 | W | S | |
|---|
| 1 | owner | | S | amm_config.protocol_owner に一致する必要。 |
| 2 | authority | | | |
| 3 | pool_state | W | | |
| 4 | amm_config | | | |
| 5 | token_0_vault | W | | |
| 6 | token_1_vault | W | | |
| 7 | vault_0_mint | | | |
| 8 | vault_1_mint | | | |
| 9 | recipient_token_0_account | W | | |
| 10 | recipient_token_1_account | W | | |
| 11 | token_program | | | |
| 12 | token_program_2022 | | | |
エフェクト
transfer pool_state.protocol_fees_token0 from vault_0 to recipient_0
transfer pool_state.protocol_fees_token1 from vault_1 to recipient_1
pool_state.protocol_fees_token0 = 0
pool_state.protocol_fees_token1 = 0
曲線の有効バランスに変化なし(蓄積フィーはすでに除外)。
一般的エラー — 署名者が protocol_owner でない場合 NotApproved。
CollectFundFee
CollectProtocolFee と同じ形だが、fund_owner が署名、fund_fees_* カウンタをゼロ化。
CollectCreatorFee
同じ形、pool_state.pool_creator が署名。プールが非ゼロクリエイターフィー率で初期化された場合のみ転送を発行。
UpdatePoolStatus
プール上の個別操作を一時停止・再開。status フィールドはビットマスク:
| ビット | フラグ | セット時の効果 |
|---|
| 0 | DEPOSIT_DISABLED | Deposit が NotApproved で拒否。 |
| 1 | WITHDRAW_DISABLED | Withdraw が拒否。 |
| 2 | SWAP_DISABLED | SwapBaseInput / SwapBaseOutput が拒否。 |
引数
アカウント
| # | 名前 | W | S | |
|---|
| 1 | authority | | S | CPMM プログラムのアドミン鍵に一致する必要。 |
| 2 | pool_state | W | | |
アドミン鍵は CPMM プログラムのアップグレード権限 — 実際には Raydium マルチシグ。/ja/security/admin-and-multisig 参照。
CreateAmmConfig
新しいフィーティアを作成。
引数
index: u16
trade_fee_rate: u64
protocol_fee_rate: u64
fund_fee_rate: u64
create_pool_fee: u64
アカウント
| # | 名前 | W | S | |
|---|
| 1 | owner | W | S | アドミン。 |
| 2 | amm_config | W | | ここで init。 |
| 3 | system_program | | | |
事前条件
- 同じ
index の既存 AmmConfig なし。
protocol_fee_rate + fund_fee_rate <= FEE_RATE_DENOMINATOR_VALUE。
UpdateAmmConfig
既存 AmmConfig でフィー率またはオーナーシップを変更。param: u8(更新フィールドディスクリミネータ)と value: u64 を受け取ります。パラメータあたりの値セマンティクスはソースに;一般的には:
param = 0 → trade_fee_rate
param = 1 → protocol_fee_rate
param = 2 → fund_fee_rate
param = 3 → new_protocol_owner(Pubkey バイトを再解釈として渡す)
param = 4 → new_fund_owner
param = 5 → create_pool_fee
param = 6 → disable_create_pool
変更はアドミンが署名、この AmmConfig にバインドされた すべてのプール に次のスワップで影響。マイグレーションなし;プールは単に新値を読み込み。
状態変更マトリックス
| インストラクション | lp_supply | ボルトバランス | 蓄積フィーフィールド | observation |
|---|
Initialize | + init LP | + init_amount_{0,1} | 0 | init |
InitializeWithPermission | + init LP | + init_amount_{0,1} | 0 | init |
Deposit | + | + both | — | — |
Withdraw | − | − both | — | — |
SwapBaseInput | — | + in, − out | + trade_fee をプロトコル/ファンドに分割;有効な場合 + creator_fee | + (インターバル経過時) |
SwapBaseOutput | — | + in, − out | + trade_fee をプロトコル/ファンドに分割;有効な場合 + creator_fee | + (インターバル経過時) |
CollectProtocolFee | — | −(プロトコルバケット分) | protocol_* → 0 | — |
CollectFundFee | — | −(ファンドバケット分) | fund_* → 0 | — |
CollectCreatorFee | — | −(クリエイターバケット分) | creator_* → 0 | — |
UpdatePoolStatus | — | — | — | — |
次へ進む
ソース: