このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
PlatformConfig は GlobalConfig の上に乗るプラットフォームレベルのオーバーレイです。GlobalConfig がプロトコル全体のルール(「トレードフィーは 1%、供給量は最低 10M、このウォレットだけがグラデュエーション可能」)を定義するのに対し、PlatformConfig は各ローンチプラットフォーム(pump.fun、Raydium の UI、サードパーティのローンチパッド)が自分たちのフィーを追加し、グラデュエーション後の LP の取り分を確保し、ローンチパラメータの制限を設定し、ブランディング(名前、ウェブサイト、画像)をオンチェーンに表示するために使用します。概要
PlatformConfig アカウントはプラットフォームの 5 つの横断的な関心事を管理します:
- ブランディング — 名前、ウェブサイト、画像リンク。すべてインラインで保存されるため、エクスプローラーやアグリゲーターがトークンをローンチしたプラットフォームを表示できます。
- プラットフォームフィー — プロトコルの
trade_fee_rateに加えた追加のトレードフィー(fee_rate)。プラットフォームのplatform_fee_walletに蓄積します。作成時と更新時の両方で 500 bps(50000)に制限されます。2026-08-26 に 100 bps(10000)から引き上げられました。詳細は レート上限 を参照してください。 - LP マイグレーション分配 — 3 つの保存された整数(
platform_scale、creator_scale、burn_scale)で合計が1_000_000になります。2026-08-17 アップグレード前は、クリエイター スケールが別のクリエイター Fee Key を生成していました。アップグレード後に実行されたマイグレーションは、最初の 2 つをプラットフォーム所有のロック LP シェアに統合し、残りはバーンされます。 - ローンチパラメータルール — オプトイン制限(
restrict_curve_param)。ローンチが選択したGlobalConfigのPlatformCurveRuleアカウントを満たす必要があります。ルールは値の範囲、代替ティア、トークンタイプゲーティングをサポートします。これらはPlatformConfigではなく独自のアカウントに存在します。 - グローバルコンフィグ許可リスト — オプトイン制限。選択した
GlobalConfigに対してプラットフォーム作成のPlatformAllowConfigが必要です。
create_platform_config を参照してください。)
レイアウト
PlatformCurveRule アカウントに移動されるまで、末尾に Vec<PlatformCurveParam> を保持していました。restrict_curve_param、curve_rule_manager、およびベクトルの長さプレフィックスが占めていた 4 バイトはすべてパディングから取られるため、バイト数と以前のすべてのフィールドオフセットは変わりません。デコーダーが変更する必要があることについては、チェンジログエントリ を参照してください。
platform_scale + creator_scale + burn_scale は 1_000_000 に等しくなければなりません。2026-08-17 アップグレード前は、creator_scale は別にロックされ、その Fee Key はトークンクリエイターに渡されました。アップグレード後に実行されたマイグレーションでは、platform_scale に追加され、ロック LP 権はプラットフォームに移ります。更新されたロジックの下での例:
(0, 100_000, 900_000)— 90% LP バーン、10% プラットフォームにロック。(50_000, 100_000, 850_000)— 85% バーン、15% プラットフォームにロック。(0, 0, 1_000_000)— 完全バーン、NFT ミントなし。厳密な「インサイダーなし」ローンチ。
ブランディングフィールド
name、web、img はインラインバイト配列で、サイズ定数までゼロでパディングされています。文字列として読み込むには、最初の \0 までスライスします:
name: 64、web: 256、img: 256)。プラットフォームはオフチェーンストレージに触れることなく、エクスプローラーやアグリゲーターに十分なメタデータを含めることができます。これらのサイズを超えるものは CreatePlatformConfig で InvalidInput で戻ります。
フィー メカニクス
PlatformConfig にバインドされたカーブ上のスワップは、3 層のフィーを請求します:
trade_feeはプロトコルのprotocol_fee_ownerに蓄積します(CollectFeeで請求)。platform_feeはプラットフォームごとのボールトに蓄積します(ClaimPlatformFeeまたはClaimPlatformFeeFromVaultで請求。instructionsを参照)。creator_feeはクリエイターの公開鍵 + クォートミントでキーされたクリエイターごとのボールトに蓄積します(ClaimCreatorFeeで請求)。
レート上限
両方のレートは1/1_000_000 で表示されるため、5000 は 50 bps、50000 は 500 bps です。
fee_rate の 2 つの適用ポイントは異なるファイル内の別の require! 呼び出しなので、異なるエラーコードを持ちますが、同じ上限を適用します。許可されたレートで作成されたプラットフォームは後で編集できます。これには、すべてのフィールドを一度に書き直す AllInfo バルク バリアントも含まれます。
両方の fee_rate 上限は元々 100 bps(10000)でした。更新上限は 2026-01-27 に 25000(250 bps)に移動し、2026-08-26 に両方とも 50000(500 bps)に移動しました。詳細は チェンジログエントリ を参照してください。
GlobalConfig.max_share_fee_rate はどちらのレートも制限しません。4 つのスワップ命令が取るトランザクションごとの share_fee_rate 引数(リファーラルフィー)を制限するだけです。global-config を参照してください。
Token-2022 トランスファーフィー権限
transfer_fee_extension_auth は、トランスファーフィーが付加された InitializeWithToken2022 を通じてローンチが作成されるときに、ベースミントの TransferFeeConfig 権限を保持することになるプラットフォームキーを指定します。拡張機能は 2 つの権限を持ち、ローンチライフサイクルの異なるポイントで引き渡されます:
2026-08-27 前は、ミントは両方の権限で
authority PDA を使用して作成され、両方ともグラデュエーション時にプラットフォームに移動しました。プログラムは引き出し保留またはハーベスト命令を公開していないため、ボンディングカーブフェーズ中に保留されたフィーは、ローンチがグラデュエーションされるまでアクセスできませんでした。ミント作成時に引き出し側を書き込むと、最初のトレードから請求可能になります。詳細は チェンジログエントリ を参照してください。
計画する価値のある 2 つの結果:
- ローンチ後ではなく、前にフィールドを設定してください。
transfer_fee_extension_authがPubkey::default()の間に作成されたローンチは、authorityPDA を引き出し側に配置します。後でフィールドを設定することはまだ機能します — グラデュエーションは PDA を所定の位置に見つけて権限を引き渡します — しかし、その間、保留されたバランスを引き出すことはできません。 - ローンチ中にフィールドを回転させると、2 つの権限が分割されます。 ローンチの作成とグラデュエーション間で
transfer_fee_extension_authを変更すると、ミントの引き出し保留権限は作成時に設定されたキーのままになります(PDA はそれを保持しなくなるため、マイグレーションはその引き渡しをスキップします)。一方、フィー設定権限は新しいキーに移ります。ローンチ間で回転させるか、Token-2022 を直接使用して 2 つのキーを自分で調整する計画を立ててください。
Pubkey::default() のままにしてローンチの全生涯を過ごすプラットフォームは、両方の権限を authority PDA に永続的に保持します。フィーレートは変更できず、保留されたバランスは引き出せません。トランスファーフィーをローンチに付加するのは、プラットフォームがこれらのキーを保持する意図がある場合のみです。
NFT マイグレーション分配(CPMM のみ)
ローンチが CPMM にグラデュエーションされるとき、マイグレーション命令はCPMM::InitializeWithPermission によってミントされた LP トークンを 2 つの方法に分割します:
lp_to_platform がゼロ以外の場合、LP-Lock プログラムはそれを 1 つの Fee Key NFT にラップし、platform_nft_wallet が所有します。これはアップグレード前の動作を置き換えます。アップグレード前に完了したマイグレーションによって作成された Fee Key は変わりません。この LP フィー権は platform_cp_creator によって制御される CPMM クリエイターフィーとは別です。
バーン スライスは直接バーンされるため、どのアカウントもそれを引き出したり、そのシェアで表されるLP フィーを請求したりすることはできません。
保存された migrate_type = 0 を持つ既存のローンチは、レガシー AMM v4 パスを使用できます。新しい初期化はそのマイグレーションタイプを拒否します。
ローンチパラメータルール
restrict_curve_param はスイッチです。0 の場合、プログラムはルールをまったく読みません。1 の場合、このプラットフォーム経由でルーティングされるすべてのローンチは、選択した GlobalConfig の PlatformCurveRule アカウントを満たす必要があり、ローンチビルダーはそのアカウントを remaining_accounts に追加する必要があります。
(field, op, value) トリプルで Eq、Gte、Lte、Neq をサポートします。これは値の範囲、代替ティア、グラデュエーション評価上限、マイグレーション下限、トークンタイプゲーティング、時間制限グループをカバーします。完全なモデル、フィールドテーブル、9 つの実装例は products/launchlab/curve-rules にあります。
ここに属する 2 つのこと:
curve_rule_managerは委譲であり、転送ではありません。UpdatePlatformConfig::CurveRuleManagerを通じて設定すると、そのウォレットはこのプラットフォームのルールアカウントを作成、更新、削除、クローズできます。プラットフォーム管理者は並行して同じ権限を保持するため、フィールドを回転またはクリアすると制御が回復します。Pubkey::default()は管理者のみがルールを管理できることを意味します。restrict_curve_paramをフリップすることはできません。これは管理者のみの呼び出しのままです。- ルールは
GlobalConfigの代わりではなく、その上に適用されます。 ルールチェックは設定の独自の制限の前に実行され、それらを狭めることしかできません。
PlatformConfig アカウント自体を拡大した、以前の curve_params: Vec<PlatformCurveParam> ホワイトリストを置き換えます。それを使用していたプラットフォームはプロトコルによってワンオフパスで移行されました。レガシーフィールド、その 2 つの命令、MAX_CURVE_PARAMS は削除されました。
PlatformAllowConfig — プラットフォームの制限
各プラットフォームは、ローンチが使用できる GlobalConfig アカウントを制限するかどうかを決定します。UpdatePlatformConfig::RestrictGlobalConfig(0 | 1) で restrict_global_config を設定します。
[b"platform_allow_config", platform_config, global_config]。
プラットフォーム管理者は CreatePlatformAllowConfig と ClosePlatformAllowConfig を通じて許可されたペアごとに 1 つのアカウントを作成または閉じます。制限が 1 の場合、初期化は remaining_accounts で予想される PDA を検索し、不足しているアカウントで NotEnoughRemainingAccounts を拒否します。制限が 0 の場合、許可アカウントは不要です。
以前のプロトコル管理者が管理する PlatformGlobalAccess アカウントとその作成/クローズ命令は廃止されました。既存の PlatformConfig と GlobalConfig のサイズは変わりませんが、デコーダーは古いグローバルフラグを新しいプラットフォームフラグに置き換える必要があります。古いアクセス PDA は新しいチェックでは使用されません。
読み取りパス
PoolState.platform_config は元の PlatformConfig を直接指します。1 回取得してブランディングをキャッシュします。
更新パス
ウォレット回転(
platform_fee_wallet、platform_nft_wallet、platform_vesting_wallet、platform_cp_creator、transfer_fee_extension_auth、cpswap_config)はすべて UpdatePlatformConfig を通じて行われます。正確な param コードについては、ソースの update_platform_config ディスパッチテーブルを読んでください。
よくある落とし穴
- ビルダーが更新される前に
restrict_curve_paramが有効になります。1の間、ルール PDA はすべてのローンチでremaining_accountsに含まれる必要があります。ルールアカウントがない設定でも — 不足しているアカウントはNotEnoughRemainingAccountsであり、パスではありません。ビルダーの変更を最初に出荷してから、フラグをフリップします。 restrict_curve_paramが空のルールで有効になります。 ゼログループを保持するルール、またはゼロ制約を保持するグループは、すべてを許可します。フラグを有効にすることは、それ自体では制限ではありません。最初にグループを書き込み、SDK チェック で検証し、devnet で全シーケンスをリハーサルします。- NFT 分配の丸め。 3 つのスケールは正確に
1_000_000に合計される必要があります。CreatePlatformConfigでのオフバイワンエラーは戻ります。実行時のオフバイワンは 1 つの余分な LP ユニットをミントまたはバーンします。これが厳密な等価性チェックが存在する理由です。 - プラットフォームベスティング二重配分。
platform_vesting_scale > 0の場合、プラットフォームはローンチの資金調達終了後に 1 回CreatePlatformVestingAccountを呼び出す必要があります。忘れた場合、そのシェアは未割り当てで永遠に休止したままになります(ローンチのtotal_locked_amount予算は消費されますが、プラットフォームは請求しません)。 platform_cp_creatorの曖昧性。Pubkey::default()に設定されている場合、ローンチクリエイターはグラデュエーション後の CPMM プールのpool_creatorとして記録されます。実際のキーに設定されている場合、そのキーが代わりに記録されます。これはグラデュエーション後の CPMM クリエイターフィーの受益者と、元のCPMM::CollectCreatorFeeパスに署名できるユーザーを決定します。パーミッションレス収集パスは、この記録されたキーの正規 ATA に支払います。プラットフォーム設定作成時にどのモデルを望むかを決定します。transfer_fee_extension_authが遅く設定されるか回転されます。 フィールドは Token-2022 ローンチごとに 2 回読み取られます — ミント作成時にwithdraw_withheld_authorityの場合、グラデュエーション時にtransfer_fee_config_authorityの場合 — したがって、その 2 つの瞬間の間に変わる値は、2 つの権限を異なるキーに残します。Token-2022 トランスファーフィー権限 を参照してください。- 許可アカウントなしの制限。
restrict_global_configを有効にしてから、必要なPlatformAllowConfigを作成する前に、そのコンフィグを選択する新しいローンチをブロックします。
ポインタ
products/launchlab/global-config— ローンチが満たす必要があるプロトコル側のルール。products/launchlab/vesting—platform_vesting_scaleメカニクス。products/launchlab/creator-fees— クリエイターフィーとプラットフォーム Fee Key 権。products/launchlab/platforms— プラットフォーム統合者向けハウツー。
raydium-launch/programs/launchpad/src/states/platform_config.rs—PlatformConfig、PlatformParams、MigrateNftInfo、is_curve_rule_manager、is_platform_admin。raydium-launch/programs/launchpad/src/states/platform_curve_rule.rs—PlatformCurveRule、CurveRuleGroup、ParamConstraint。raydium-launch/programs/launchpad/src/states/platform_allow_config.rs—PlatformAllowConfig。raydium-launch/programs/launchpad/src/instructions/platform/update_platform_config.rs—PlatformConfigParamディスパッチと更新時レート上限を適用するフィールドごとのセッター。raydium-launch/programs/launchpad/src/lib.rs— プラットフォーム設定と許可設定エントリポイント。raydium-launch/programs/launchpad/src/instructions/initialize_with_token_2022.rs—transfer_fee_extension_authが新しいミントのTransferFeeConfigに書き込まれる場所。raydium-launch/programs/launchpad/src/instructions/admin/migrate_to_cpswap.rs— グラデュエーション時の権限引き渡しとそのget_withdraw_withheld_authorityガード。

