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 に蓄積されます。GlobalConfig.max_share_fee_rate により 100 bps に制限されます。
  3. LP 移行分配 — 3 つの保存された整数(platform_scalecreator_scaleburn_scale)で合計 1_000_000 になります。2026-08-17 アップグレード前は、creator scale が別の creator Fee Key を生成していました。アップグレード後に実行された移行では、最初の 2 つをプラットフォーム所有のロック LP シェアに統合し、残りはバーンされます。
  4. カーブパラメータホワイトリスト(supply, total_base_sell, total_quote_fund_raising, migrate_type, migrate_cpmm_fee_on, vesting_params...) の組み合わせのうち、このプラットフォームで許可されるものを正確にリストアップする Vec<PlatformCurveParam>。ベクトルが空またはすべてのエントリが無効な場合、任意の組み合わせが許可されます。そうでない場合、ローンチはエントリの 1 つと正確に一致する必要があります。
  5. グローバルコンフィグ許可リスト — 選択した GlobalConfig に対してプラットフォームが作成した PlatformAllowConfig を要求するオプトイン制限。
PDA 導出:
(正規のシードリストについては、ソースの create_platform_config を参照してください。)

レイアウト

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 はクリエイターの pubkey + quote mint でキーされたクリエイターごとのボールトに蓄積されます(ClaimCreatorFee で請求)。
creator_fee_rateMAX_CREATOR_FEE_RATE = 5000(50 bps)で制限されます。fee_rate(プラットフォームフィー)は GlobalConfig.max_share_fee_rate により 10000(100 bps)で制限されます。

NFT 移行分配(CPMM のみ)

ローンチが CPMM に卒業すると、移行命令は CPMM::InitializeWithPermission によってミントされた LP トークンを 2 つの方法に分割します:
lp_to_platform がゼロでない場合、LP-Lock プログラムはそれを platform_nft_wallet が所有する 1 つの Fee Key NFT にラップします。これはアップグレード前の動作(別のプラットフォームと creator Fee Key を作成)に置き換わります。アップグレード前に完了した移行によって作成された Fee Key は変わりません。この LP フィー権は platform_cp_creator で制御される CPMM creator フィーとは別です。 バーン スライスは直接バーンされるため、どのアカウントもそれを引き出したり、そのシェアで表される LP フィーを請求したりすることはできません。 保存された migrate_type = 0 を持つ既存のローンチは、レガシー AMM v4 パスを使用できます。新しい初期化はそのマイグレーションタイプを拒否します。

カーブパラメータホワイトリスト

curve_params: Vec<PlatformCurveParam> は、プラットフォームがそのローンチが選択できるカーブ形状を制限するメカニズムです。ベクトルが空でなく、少なくとも 1 つのエントリが有効な場合、プログラムは Initialize でローンチのパラメータが少なくとも 1 つのエントリと正確に一致することを強制します。
各フィールドにはワイルドカードを意味するセンチネル値があります(任意の値が一致):u64 フィールドの場合 u64::MAXu8 フィールドの場合 u8::MAX、supply / sell / fund-raising フィールドの場合 0。すべてのセンチネルを持つ BondingCurveParam は「すべてを許可」です。空のホワイトリスト動作と同等です。 Initialize でのマッチングアルゴリズム:
  1. curve_params をフィルタリングして、global_config がローンチの選択した GlobalConfig と一致するエントリを取得します。
  2. フィルタリングされたリストが空の場合、任意のパラメータを許可します(プラットフォームはこの GlobalConfig に対して何もホワイトリストに登録していません)。
  3. フィルタリングされたリストのすべてのエントリが all_is_invalid()(すべてのフィールドがワイルドカード)の場合、任意のパラメータを許可します。
  4. それ以外の場合、エントリを反復処理します。各エントリについて、ローンチのパラメータをすべての非ワイルドカードフィールドと照合します。すべての非ワイルドカードフィールドが一致する場合、受け入れて戻ります。
  5. エントリが一致しない場合、InvalidInput で戻ります。
これにより、プラットフォームは「標準的な 1B 供給量 / 800M 売却 / 30k USDC 調達 / ベスティングなしの形状のみを許可する」と言うことができます。これは、これら 4 つのフィールドに具体的な値を書き、他の場所にワイルドカードを書いた単一のエントリを作成することで実現します。または、より厳密なプラットフォームは、サポートされているローンチティアごとに 3 つまたは 4 つの離散形状を列挙するかもしれません。 MAX_CURVE_PARAMS = 10 はホワイトリストサイズを制限します。

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 ディスパッチテーブルを読んでください。

よくある落とし穴

  • ホワイトリストセンチネルの設定ミス。 total_locked_amount = 0 を持つ BondingCurveParam はワイルドカードではなく、明示的にベスティングをオプトアウトしたローンチと一致します。そのフィールドのワイルドカードは u64::MAX です。同じ罠は cliff_periodunlock_period に存在します。clear()(プログラムが公開している)を使用してセンチネルを正しく設定します。
  • NFT 分配の丸め。 3 つのスケールは正確に 1_000_000 に合計する必要があります。CreatePlatformConfig での 1 ずれのエラーは戻ります。実行時での 1 ずれは 1 つの余分な LP ユニットをミントまたはバーンします。これが厳密な等価性チェックが存在する理由です。
  • プラットフォームベスティングの二重配分。 platform_vesting_scale > 0 の場合、プラットフォームはローンチの資金調達終了後に 1 回 CreatePlatformVestingAccount を呼び出す必要があります。忘れた場合、そのシェアは未配分のまま永遠に休止状態になります(ローンチの total_locked_amount 予算は消費されますが、プラットフォームは請求しません)。
  • platform_cp_creator の曖昧性。 Pubkey::default() に設定されている場合、ローンチ作成者は卒業後の CPMM プールの pool_creator として記録されます。実際のキーに設定されている場合、そのキーが代わりに記録されます。これは卒業後の CPMM creator フィーの受益者と、元の CPMM::CollectCreatorFee パスに署名できるユーザーを決定します。パーミッションレス収集パスは依然としてこの記録されたキーの正規 ATA に支払います。プラットフォーム設定作成時にどのモデルを使用するかを決定します。
  • 許可アカウントなしの制限。 必要な PlatformAllowConfig を作成する前に restrict_global_config を有効にすると、そのコンフィグを選択する新しいローンチがブロックされます。

ポインタ

ソース:
  • raydium-launch/programs/launchpad/src/states/platform_config.rsPlatformConfigPlatformParamsMigrateNftInfoPlatformCurveParamBondingCurveParamis_valid_curve_param
  • raydium-launch/programs/launchpad/src/states/platform_allow_config.rsPlatformAllowConfig
  • raydium-launch/programs/launchpad/src/lib.rs — プラットフォームコンフィグと許可コンフィグエントリポイント。