Skip to main content
このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
GlobalConfig はプロトコルレベルの設定アカウントです。複数存在でき、(curve_type, index) でキーイングされます。すべてのローンチは Initialize 時に正確に 1 つを選択します。選択された GlobalConfig の値は、そのローンチのパラメータの上限となります。プラットフォームレベルのカスタマイズ(プラットフォームごとのフィーレート、許可される曲線形状、卒業時の NFT 分割)については、products/launchlab/platform-config を参照してください。

概要

GlobalConfig は (curve_type, index) ごとのシングルトン PDA で、すべてのローンチが従うべきプロトコル側のルールを固定します: GlobalConfig アカウントは、LaunchLab プログラム管理者または委任された create-config 権限のいずれかが作成 および更新 できます。それ以外の署名者は InvalidOwner(6001)になります。正規の権限については reference/program-addressesを参照してください。 GlobalConfig アカウントは LaunchLab プログラム管理者または委任された設定作成権限によって作成できます。既存の設定を更新できるのは管理者のみです。正規の権限については reference/program-addresses を参照してください。

レイアウト

PDA 導出:
(署名前に、オンチェーンアカウントから正確なシード順序を確認してください — プログラムの create_config 命令が信頼できる情報源です。)

フィールドセマンティクス

curve_type と index

これらは GlobalConfig を一意にキーイングします。(curve_type, index) ペアごとに 1 つの GlobalConfig が存在します:
  • curve_type = 0 — 定数積仮想リザーブ曲線。デフォルトで最も使用されます。
  • curve_type = 1 — 固定価格曲線。
  • curve_type = 2 — 線形価格曲線。
index は u16 で、管理者が曲線タイプごとに複数の設定を公開できます(例:より厳しいフィーを持つもの、より高い最小クォート調達を持つもの)。Initialize でローンチは (curve_type, index) ペアを指定し、プログラムは一致する GlobalConfig をロードします。

フィー

  • trade_fee_rate — トレード量の 1/1_000_000 で表示されます。曲線上のすべての買いと売りに適用されます。protocol_fee_owner は CollectFee 経由でその分を請求します。
  • migrate_fee — 卒業時に 1 回請求される固定フィー(ラムポート単位またはクォート単位、設定による)。migrate_fee_owner が CollectMigrateFee 経由で請求します。
  • max_share_fee_rate — 10_000(100 bps)に初期化されます。BuyExactIn、BuyExactOut、SellExactIn、SellExactOut が受け入れる share_fee_rate 引数を上限とします — トレード中に共有受信者に直接支払われるリファーラルフィーです。これは PlatformConfig.fee_rate を制限しません。そのレートには独自の上限があり、platform-config で説明されています。CreateConfig は init 時に trade_fee_rate + max_share_fee_rate < RATE_DENOMINATOR_VALUE を強制します。更新パスでは param = 6(max_share_fee_rate)のみが合計を再チェックします。param = 0(trade_fee_rate)は trade_fee_rate < RATE_DENOMINATOR_VALUE のみをアサートするため、トレードフィーだけを引き上げると、この 2 つの合計が結合上限を超える可能性があります。不変条件を保つ順序で設定してください。

供給量とレートの下限

これらの下限は、ローンチが Initialize で選択できる曲線形状パラメータを制限します。クリエイターの CurveParams がいずれかに違反する場合、Initialize は InvalidInput で戻ります。
  • min_base_supply — 曲線が宣言できる最小 supply(小数なし)。デフォルトは 10_000_000。
  • max_lock_rate — 1/1_000_000 で表示;デフォルト 300_000(30%)。total_locked_amount <= supply * max_lock_rate / 1_000_000 経由でベスティングを制限します。
  • min_base_sell_rate — 1/1_000_000 で表示;デフォルト 200_000(20%)。base_supply_graduation / supply を下から制限します。
  • min_base_migrate_rate — 1/1_000_000 で表示;デフォルト 200_000(20%)。卒業後プールをシードするために残されたトークン数を制限します。
  • min_quote_fund_raising — ローンチが宣言できる最小 quote_reserve_target(小数付き)。デフォルトはクォートミントの 30_000_000_000 ユニット。

クォートミントとプロトコルウォレット

  • quote_mint — ユーザーが購入する資産。ほとんどのローンチはラップド SOL(So111…112)または USDC(EPjF…Dt1v)を使用します。1 つの GlobalConfig は 1 つのクォートミントにバインドされます。異なるクォートが必要なローンチは異なる (curve_type, index) をターゲットにします。ミントは SPL Token プログラムまたは Token-2022 のいずれかで所有できます — 以下を参照してください。
  • protocol_fee_owner — CollectFee に署名し、この設定にバインドされたすべてのローンチで発生したプロトコルフィーを請求する公開鍵。オンチェーンに保存;管理者は UpdateConfig 経由でローテーションできます。
  • migrate_fee_owner — CollectMigrateFee に署名する公開鍵。

Token-2022 クォートミント

CreateConfig は Token-2022 quote_mint を受け入れ、そのような設定にバインドされたプールはそれを最後まで実行します:クォートボルト、両方のフィーボルト、共有フィー受信者のトークンアカウントはすべて Token-2022 で作成され、スワップ命令はクォート側の TransferFeeConfig を考慮します。PoolState.token_program_flag bit1 はローンチごとの選択を記録します。 1 つに依存する前に知る価値のある 2 つの制約があります:
  • 非推奨の Initialize はそれに対してローンチできません。 InitializeV2 と InitializeWithToken2022 のみが Token-2022 クォートプログラムを受け入れます。instructions を参照してください。
  • 拡張機能の許可リストは適用されません。 CPMM と CLMM とは異なり、LaunchLab はクォートミントの拡張機能をスクリーニングしません — CreateConfig はミントをそのまま受け取るため、唯一のゲートは設定にバインドされるミントに対する管理者の裁量です。プログラムの NoSupportExtension チェックは LaunchLab 自体が作成する Token-2022 ベースミントのみをカバーします。1 つをバインドすることを高信頼アクションとして扱ってください;reference/token-2022-support を参照してください。

移行ウォレット

2 つの保存された卒業ウォレットは異なる署名者を必要とします:
  • migrate_to_amm_wallet — 保存された migrate_type = 0 を持つ既存のレガシーローンチの MigrateToAmm に署名します。
  • migrate_to_cpswap_wallet — MigrateToCpswap に署名します。新しく初期化されたすべてのローンチはこのパスを使用します。
これらは通常 Raydium が運営する卒業クランクによって保持されるため、曲線が閾値に達した直後に卒業が行われ、クリエイターがそれを呼び出すのを待つ必要がありません。

プラットフォーム側の許可リスト

GlobalConfig はもう requires_platform_auth を持ちません。その前のバイトはパディングなので、アカウントサイズは変わりません。アクセスは PlatformConfig.restrict_global_config と、そのプラットフォームの管理者によって作成された PlatformAllowConfig アカウントによって制御されます。platform-config を参照してください。

初期化時のデフォルト

CreateConfig が呼び出されると、プログラムは多くのフィールドをハードコードされたデフォルトでシードします:
管理者は curve_type、index、migrate_fee、trade_fee_rate、quote_mint、および 4 つのウォレット公開鍵を作成時に明示的に設定します。その後の値は UpdateConfig 経由で調整できます。

ローンチが GlobalConfig を選択する方法

Initialize で、クリエイターは以下を渡します:
  • (curve_type, index) — ロードする GlobalConfig PDA を選択します。
  • CurveParams — 曲線形状を説明します(supply、total_base_sell、total_quote_fund_raising、migrate_type)。
  • VestingParams — ロック供給を説明します。
  • MintParams — ベースミント用。
プログラムは以下を強制します:
  • curve_type が global_config.curve_type と一致します。
  • supply >= global_config.min_base_supply。
  • total_locked_amount <= supply * max_lock_rate / 1_000_000。
  • total_base_sell >= supply * min_base_sell_rate / 1_000_000。
  • (supply − total_base_sell − total_locked_amount) >= supply * min_base_migrate_rate / 1_000_000 — つまり、卒業後プールをシードするのに十分なトークンが残っています。
  • total_quote_fund_raising >= min_quote_fund_raising。
  • migrate_type == 1(CPSWAP)。
  • 選択されたプラットフォームが restrict_global_config == 1 を持つ場合、一致する PlatformAllowConfig が含まれます。
Initialize 後、ローンチの PoolState は global_config 公開鍵を直接保存するため、バインディングは永続的です。

更新パス

UpdateConfig は (param: u8, value: u64) ペアを取り、LaunchLab プログラム管理者 または 委任された create-config 権限のいずれかを署名者として受け入れます — それ以外の署名者は InvalidOwner(6001)になります。各 param 値は変更するフィールドを選択します:
4 つのウォレットローテーションは同じディスパッチ内の通常の param 値です — 別の引数形状では ありません。これらは value を完全に無視し、新しいキーを 最初の remaining_account から 読み取ります。そのアカウントを省略すると unwrap() でパニックします。11 を超える param は InvalidInput(6002)を返します。
プラットフォーム認可の前の UpdateConfig セレクタ 12 は削除されました。プラットフォーム管理者は独自の許可リストを管理するようになりました。

クライアントから GlobalConfig を読む

レイアウトのフィールド名はオンチェーンの Rust 名と異なることに注意してください:資金調達の下限は minFundRaisingB、供給量の下限は minSupplyA、売却/移行レートの下限は minSellRateA / minMigrateRateA としてデコードされます。 利用可能なすべての設定をリストアップする UI の場合、それらをミラーリングする LaunchLab API エンドポイント(raydium.api.fetchLaunchConfigs())をクエリしてください。オンチェーンアカウント数は少ないです(実際には 1 桁)。

ポインタ

ソース:
  • raydium-launch/programs/launchpad/src/states/config.rs — GlobalConfig 構造体と initialize。
  • raydium-launch/programs/launchpad/src/lib.rs — create_config、update_config。