Skip to main content
このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
PlatformConfigGlobalConfig の上に乗るプラットフォームレベルのオーバーレイです。GlobalConfig がプロトコル全体のルール(「トレードフィーは 1%、供給量は最低 10M、このウォレットだけがグラデュエーション可能」)を定義するのに対し、PlatformConfig は各ローンチプラットフォーム(pump.fun、Raydium の UI、サードパーティのローンチパッド)が自分たちのフィーを追加し、グラデュエーション後の LP の取り分を確保し、ローンチパラメータの制限を設定し、ブランディング(名前、ウェブサイト、画像)をオンチェーンに表示するために使用します。

概要

PlatformConfig アカウントはプラットフォームの 5 つの横断的な関心事を管理します:
  1. ブランディング — 名前、ウェブサイト、画像リンク。すべてインラインで保存されるため、エクスプローラーやアグリゲーターがトークンをローンチしたプラットフォームを表示できます。
  2. プラットフォームフィー — プロトコルの trade_fee_rate に加えた追加のトレードフィー(fee_rate)。プラットフォームの platform_fee_wallet に蓄積します。作成時と更新時の両方で 500 bps(50000)に制限されます。2026-08-26 に 100 bps(10000)から引き上げられました。詳細は レート上限 を参照してください。
  3. LP マイグレーション分配 — 3 つの保存された整数(platform_scalecreator_scaleburn_scale)で合計が 1_000_000 になります。2026-08-17 アップグレード前は、クリエイター スケールが別のクリエイター Fee Key を生成していました。アップグレード後に実行されたマイグレーションは、最初の 2 つをプラットフォーム所有のロック LP シェアに統合し、残りはバーンされます。
  4. ローンチパラメータルール — オプトイン制限(restrict_curve_param)。ローンチが選択した GlobalConfigPlatformCurveRule アカウントを満たす必要があります。ルールは値の範囲、代替ティア、トークンタイプゲーティングをサポートします。これらは PlatformConfig ではなく独自のアカウントに存在します。
  5. グローバルコンフィグ許可リスト — オプトイン制限。選択した GlobalConfig に対してプラットフォーム作成の PlatformAllowConfig が必要です。
PDA 導出:
(正規のシードリストについては、ソースの create_platform_config を参照してください。)

レイアウト

アカウントは固定 944 バイトです。2026-08-31 リリースでローンチパラメータが PlatformCurveRule アカウントに移動されるまで、末尾に Vec<PlatformCurveParam> を保持していました。restrict_curve_paramcurve_rule_manager、およびベクトルの長さプレフィックスが占めていた 4 バイトはすべてパディングから取られるため、バイト数と以前のすべてのフィールドオフセットは変わりません。デコーダーが変更する必要があることについては、チェンジログエントリ を参照してください。 platform_scale + creator_scale + burn_scale1_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 ミントなし。厳密な「インサイダーなし」ローンチ。

ブランディングフィールド

namewebimg はインラインバイト配列で、サイズ定数までゼロでパディングされています。文字列として読み込むには、最初の \0 までスライスします:
定数は意図的に寛容です(name: 64web: 256img: 256)。プラットフォームはオフチェーンストレージに触れることなく、エクスプローラーやアグリゲーターに十分なメタデータを含めることができます。これらのサイズを超えるものは CreatePlatformConfigInvalidInput で戻ります。

フィー メカニクス

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_authPubkey::default() の間に作成されたローンチは、authority PDA を引き出し側に配置します。後でフィールドを設定することはまだ機能します — グラデュエーションは 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 の場合、このプラットフォーム経由でルーティングされるすべてのローンチは、選択した GlobalConfigPlatformCurveRule アカウントを満たす必要があり、ローンチビルダーはそのアカウントを remaining_accounts に追加する必要があります。
ルールは許可されたローンチ形状のメニューです。1 つのチェックグループ内の制約は AND、グループは OR、各制約は (field, op, value) トリプルで EqGteLteNeq をサポートします。これは値の範囲、代替ティア、グラデュエーション評価上限、マイグレーション下限、トークンタイプゲーティング、時間制限グループをカバーします。完全なモデル、フィールドテーブル、9 つの実装例は products/launchlab/curve-rules にあります。 ここに属する 2 つのこと:
  • curve_rule_manager は委譲であり、転送ではありません。 UpdatePlatformConfig::CurveRuleManager を通じて設定すると、そのウォレットはこのプラットフォームのルールアカウントを作成、更新、削除、クローズできます。プラットフォーム管理者は並行して同じ権限を保持するため、フィールドを回転またはクリアすると制御が回復します。Pubkey::default() は管理者のみがルールを管理できることを意味します。restrict_curve_param をフリップすることはできません。これは管理者のみの呼び出しのままです。
  • ルールは GlobalConfig の代わりではなく、その上に適用されます。 ルールチェックは設定の独自の制限の前に実行され、それらを狭めることしかできません。
これは、正確な等価性のみをテストでき、すべての設定で最大 10 エントリを保持でき、PlatformConfig アカウント自体を拡大した、以前の curve_params: Vec<PlatformCurveParam> ホワイトリストを置き換えます。それを使用していたプラットフォームはプロトコルによってワンオフパスで移行されました。レガシーフィールド、その 2 つの命令、MAX_CURVE_PARAMS は削除されました。

PlatformAllowConfig — プラットフォームの制限

各プラットフォームは、ローンチが使用できる GlobalConfig アカウントを制限するかどうかを決定します。UpdatePlatformConfig::RestrictGlobalConfig(0 | 1)restrict_global_config を設定します。
PDA シード:[b"platform_allow_config", platform_config, global_config] プラットフォーム管理者は CreatePlatformAllowConfigClosePlatformAllowConfig を通じて許可されたペアごとに 1 つのアカウントを作成または閉じます。制限が 1 の場合、初期化は remaining_accounts で予想される PDA を検索し、不足しているアカウントで NotEnoughRemainingAccounts を拒否します。制限が 0 の場合、許可アカウントは不要です。 以前のプロトコル管理者が管理する PlatformGlobalAccess アカウントとその作成/クローズ命令は廃止されました。既存の PlatformConfigGlobalConfig のサイズは変わりませんが、デコーダーは古いグローバルフラグを新しいプラットフォームフラグに置き換える必要があります。古いアクセス PDA は新しいチェックでは使用されません。

読み取りパス

「このトークンはどこからローンチされたのか」を表示する UI の場合、PoolState.platform_config は元の PlatformConfig を直接指します。1 回取得してブランディングをキャッシュします。

更新パス

ウォレット回転(platform_fee_walletplatform_nft_walletplatform_vesting_walletplatform_cp_creatortransfer_fee_extension_authcpswap_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 を作成する前に、そのコンフィグを選択する新しいローンチをブロックします。

ポインタ

ソース:
  • raydium-launch/programs/launchpad/src/states/platform_config.rsPlatformConfigPlatformParamsMigrateNftInfois_curve_rule_manageris_platform_admin
  • raydium-launch/programs/launchpad/src/states/platform_curve_rule.rsPlatformCurveRuleCurveRuleGroupParamConstraint
  • raydium-launch/programs/launchpad/src/states/platform_allow_config.rsPlatformAllowConfig
  • raydium-launch/programs/launchpad/src/instructions/platform/update_platform_config.rsPlatformConfigParam ディスパッチと更新時レート上限を適用するフィールドごとのセッター。
  • raydium-launch/programs/launchpad/src/lib.rs — プラットフォーム設定と許可設定エントリポイント。
  • raydium-launch/programs/launchpad/src/instructions/initialize_with_token_2022.rstransfer_fee_extension_auth が新しいミントの TransferFeeConfig に書き込まれる場所。
  • raydium-launch/programs/launchpad/src/instructions/admin/migrate_to_cpswap.rs — グラデュエーション時の権限引き渡しとその get_withdraw_withheld_authority ガード。