このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
バージョン情報
- SDK:
@raydium-io/raydium-sdk-v2@0.2.64-alpha - クラスタ: Solana
mainnet-beta - プログラム ID:
reference/program-addressesを参照 - 最終確認: 2026-09-09 SDK
0.2.64-alphaソース、raydium-sdk-V2-demo/src/launchpad、およびraydium-launchプログラム ソースに対して
package.json で SDK バージョンをピン留めしてください。ボンディング カーブ インターフェースはマイナー リリース間で進化しています。セットアップ
ここのデモはraydium-sdk-V2-demo/src/launchpad のファイルを反映しています。ブートストラップはデモ リポジトリの config.ts.template に従います:
ローンチを作成する
ソース:src/launchpad/createMint.ts(および Bonk バリアント用の createBonkMintApi.ts)
ローンチの経済学のほとんどは引数ではなく、configId を通じてバインドする GlobalConfig から取得され、SDK は残りを API のデフォルト パラメータから入力します。ミントの ID、バインドするコンフィグ、および(オプション)最初の購入を渡します:
curveType、graduationFractionBps、initialK、quoteMint、openTime、fees、またはpostGraduationLpPolicy引数はありません。カーブ形状とクォート ミントはバインドするGlobalConfigのプロパティです;フィー レートはGlobalConfigとPlatformConfigに存在します;卒業時の LP 処分はPlatformConfig設定です。InitializeV2が受け入れるものについては、products/launchlab/instructionsを参照してください。- 10 文字を超える
symbolと空のuriは、RPC の前にクライアント側で拒否されます。 transferFeeExtensionParamsを渡すと、ビルダーがInitializeWithToken2022に切り替わり、migrateTypeが"cpmm"に強制されます。- ビルダーは
transactions配列を返します;createOnly: falseは最初の購入トランザクションを追加します。常にexecute({ sequentially: true })を実行してください — ミントは購入が実行される前に存在する必要があります。
ローンチ状態を取得する
ソース:src/launchpad/poolInfo.ts
getLaunchById はありません。プール ID は (programId, mintA, mintB) の PDA であり、getRpcPoolInfo はバインドされた configInfo が付加された デコード済みの PoolState を返します:
getRpcPoolsInfo({ poolIdList }) はバッチ形式で、プール ID でキーされた poolInfoMap を返します — ループの代わりにポートフォリオ ビューに使用してください。生のアカウントを自分でデコードしたい場合、LaunchpadPool.decode と LaunchpadConfig.decode がエクスポートされています。
購入 — 正確なクォート入力
ソース:src/launchpad/buy.ts
オフチェーン クォート ヘルパーは Curve.buyExactIn です。これはエクスポートされた Curve クラスの静的メソッドであり、raydium.launchpad のメソッドではありません。トランザクション ビルダーは buyToken です。どちらもプラットフォームのフィー レートが必要です。これは別の PlatformConfig アカウントに存在します:
minMintAAmount を明示的に渡すか、slippage の代わりに渡すことができます;両方を省略すると、SDK はライブ RPC データから境界を計算します。shareFeeRate は poolInfo.configInfo.maxShareFeeRate を超えてはいけません。また、shareFeeReceiver も渡す場合にのみ適用されます。
購入 — 正確なベース出力
ビルダーはbuyTokenExactOut で、金額引数は outAmount(希望するベース)と maxBuyAmount(最大で使用するクォート)です。Curve.buyExactOut({ poolInfo, amountA, ... }) は対応するオフチェーン プレビューです。
outAmount をクライアント側で拒否し、カーブが十分に移動してクォート要件が maxBuyAmount を超える場合、プログラムは戻ります。
売却
ソース:src/launchpad/sell.ts
ビルダーは sellToken(正確なクォート出力バリアント用の sellTokenExactOut)で、sellAmount とオプションの minAmountB があります。Curve.sellExactIn({ poolInfo, amountA, ... }) はそれをプレビューします。
real_a を sellAmount だけ減らすと、real_a − sellAmount と real_a の間のカーブの下の統合領域に等しい quote_out が返されます。売却フィーを差し引きます。sellAmount はゼロより大きい必要があります — ビルダーはゼロを RPC の前に拒否します。
卒業
これらのウォレットは Raydium の卒業クランクによって操作されるため、実際には移行は最終購入がしきい値を超えた後、誰がそれを行ったかに関わらず数秒以内に実行されます。統合者の側からできることは唯一、ステータス遷移を高速イベントとして扱うことです:getRpcPoolInfo をポーリング(または以下の gRPC でサブスクライブ)し、status が変わったときに UI をカーブから結果の CPMM プールに切り替えます。
アカウント リスト、移行フィー、および卒業時の LP 分割については、products/launchlab/instructions を参照してください。
クリエイター フィーを回収する
ソース:src/launchpad/claimCreatorFee.ts(単一ミント)および collectAllCreatorFees.ts(バッチ)
メソッドは claimCreatorFee(バッチ形式用の claimMultipleCreatorFee)です。これはローンチではなく クォート ミント でキーされます — 1 回の呼び出しで、署名者が蓄積したクリエイター フィーをそのミント全体でスイープします:
claimPlatformFee / claimAllPlatformFee / claimVaultPlatformFee ビルダーを持っています。
ローンチをそのライフサイクルを通じて追跡する
まとめると、監視スクリプトは次のようになります:getRpcPoolInfo をポーリングすることは単一のローンチに対して問題ありません。インデクサーの場合、代わりに以下の gRPC サブスクリプションを使用してください — getRpcPoolsInfo({ poolIdList }) はバッチ処理されますが、数百のプールをポーリングすることは利益なしで RPC クレジットを消費します。
gRPC 経由でコンフィグとプールを監視する
ソース:src/grpc/launchpadPoolInfo.ts
Yellowstone gRPC 経由で LaunchLab プログラムにサブスクライブし、各ミントのトークン プログラムを使用して、すべての GlobalConfig と PoolState 更新をログします。1 つの accounts サブスクリプション上の 2 つの datasize フィルターが 2 つのアカウント タイプを分離するため、単一のストリームが両方をカバーします。
デモは、Token-2022 クォート ミント リリースが必要にする、ローンチのミントを分類するための最短の正しいリファレンスです:
- プール は
PoolState.token_program_flagから直接分類され、ミント フェッチなしで bit0 をベース ミント用に、bit1 をクォート ミント用にデコードします。バイト全体を0に対してテストすることは、クォート ミントが Token-2022 である場合、レガシー ベース ミントを Token-2022 として誤読します。 - コンフィグ はそのようにして分類することはできません:
GlobalConfigはそのクォート ミントのアドレスを格納し、プログラム フラグはないため、デモはミント アカウントの所有者を一度読み込み、ミントごとにキャッシュします。
create 対 update はデモ独自のキャッシュから推測されます。スタートアップ時に getProgramAccounts から シードされます;そのシードが無効化されている場合、「作成」を「このストリームで最初に見られた」と読んでください。
gRPC アクセスはパブリック RPC サーフェスの一部ではありません — デモ リポジトリの src/grpc/README.md を参照してください。
Rust CPI
独自の Anchor プログラムから LaunchLab を呼び出すことはまれです(ほとんどのローンチ統合は TS 側のみです)。実行する場合:- クレートは
raydium-launchpad(lib 名raydium_launchpad)、バージョン0.2.0で、cpiフィーチャーを公開しています。raydium_launchlabはありません。 - crates.io に公開されていません — 他の Raydium プログラム クレートと同じ方法で git リビジョンで依存してください。
- CPI エントリ ポイントは SDK の TypeScript メソッドではなく、オンチェーン命令にちなんで名付けられています:
buy_exact_in、buy_exact_out、sell_exact_in、sell_exact_out、claim_creator_fee、create_vesting_account、claim_vested_token。migrate_to_amm/migrate_to_cpswapは署名者ゲートされてGlobalConfig移行ウォレットに対して行われ、統合者プログラムから呼び出し可能ではありません。
sdk-api/rust-cpi を参照してください — 特に Anchor バージョン分割。これは 1 つのクレートが LaunchLab と CLMM の両方に CPI できるかどうかを決定します。
落とし穴
- オンチェーン命令名と SDK メソッド名を混同する。 プログラムは
buy_exact_in/sell_exact_inを持っています;SDK はbuyToken/sellTokenを持っています。buyExactInとsellExactInはCurve上の静的メソッド としてのみ存在し、クォートを計算します — トランザクションをビルドしません。 extraSignersを忘れる。createLaunchpadは生成するキーペアからベース ミントを作成するため、そのキーペアが署名する必要があります。extraSigners: [pair]を省略するとトランザクションは署名検証に失敗します。- クォート ミントを選択しない。 1 つを渡しません。クォート ミントは
configIdを通じてバインドするGlobalConfigのプロパティです —getPdaLaunchpadConfigId(programId, quoteMint, curveType, index)。異なるクォート ミントに対してローンチするには、異なるコンフィグをバインドしてください;raydium.api.fetchLaunchConfigs()はデフォルト パラメータを使用して利用可能なものをリストします。 - メタデータ サイズ。 長い
uri文字列は Metaplex CPI を予算を超えてプッシュします。uriを約 200 文字未満に保ってください — ほとんどの CDN ホスト JSON メタデータは簡単に適合します。symbolは 10 文字にハード キャップされています。 - 卒業をあなたが入ることができるレースとして扱う。 そうではありません — 上記の警告を参照してください。UI はまだ
status遷移を高速イベントとして扱うべきです。Raydium のクランクはしきい値が超えられた後数秒以内に移行を実行するためです。
次に進む場所
products/launchlab/bonding-curve— カーブ数学。products/cpmm/code-demos— 結果のプールで何をするか。user-flows/launch-token-launchlab— オフチェーン ステップを含む、エンドツーエンドのトークン ローンチ ガイド。
- Raydium SDK v2
- Raydium LaunchLab プログラム ソース

