メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://docs.raydium.io/llms.txt

Use this file to discover all available pages before exploring further.

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

概要

GlobalConfig(curve_type, index) ごとの PDA で、すべてのローンチが従わなければならないプロトコルルールを固定します:
  • 許可されるボンディングカーブの種類(curve_type)。
  • カーブが買い・売りの都度課す取引手数料率。
  • 卒業時に課すマイグレーション手数料。
  • 供給量、ロック率、売却率、マイグレーション率の下限。
  • クォートミント(通常はラップド SOL または USDC)— ユーザーが購入する資産。
  • プロトコル側の 3 つのウォレット:プロトコル手数料オーナー、マイグレーション手数料オーナー、および AMM v4 / CPMM への卒業を認可する 2 つのマイグレーション制御ウォレット。
  • オプションのフラグ(requires_platform_auth):どのプラットフォームがこの設定を使用できるかを制御します。
GlobalConfig アカウントは LaunchLab プログラムの管理者によって作成・更新されます(Anchor ベースの Raydium プログラム全体で共有されるハードコードされた管理者公開鍵 — reference/program-addresses を参照)。

レイアウト

// states/config.rs
pub const GLOBAL_CONFIG_SEED: &str = "global_config";

#[account]
pub struct GlobalConfig {
    pub epoch:                   u64,         // recent_epoch tracker
    pub curve_type:              u8,          // 0 = ConstantProduct, 1 = FixedPrice, 2 = LinearPrice
    pub index:                   u16,         // discriminator within a curve_type
    pub migrate_fee:             u64,         // SOL paid on graduation
    pub trade_fee_rate:          u64,         // 1/1_000_000 of volume
    pub max_share_fee_rate:      u64,         // 100 bps cap on platform share fee
    pub min_base_supply:         u64,         // floor on Initialize supply (no decimals)
    pub max_lock_rate:           u64,         // ceiling on vesting locked / supply
    pub min_base_sell_rate:      u64,         // floor on base_supply_graduation / supply
    pub min_base_migrate_rate:   u64,         // floor on tokens that seed the post-graduation pool
    pub min_quote_fund_raising:  u64,         // floor on quote_reserve_target (with decimals)
    pub quote_mint:              Pubkey,
    pub protocol_fee_owner:      Pubkey,      // claims protocol fees via CollectFee
    pub migrate_fee_owner:       Pubkey,      // claims migration fees via CollectMigrateFee
    pub migrate_to_amm_wallet:   Pubkey,      // can sign MigrateToAmm
    pub migrate_to_cpswap_wallet:Pubkey,      // can sign MigrateToCpswap
    pub requires_platform_auth:  u8,          // 0/1 flag
    pub padding_alignment:       [u8; 7],
    pub padding:                 [u64; 15],
}
PDA の導出:
const [globalConfig] = PublicKey.findProgramAddressSync(
  [
    Buffer.from("global_config"),
    Buffer.from(quoteMint.toBytes()),
    Buffer.from([curveType]),
    u16ToBytes(index),
  ],
  LAUNCHLAB_PROGRAM_ID,
);
(署名前に、オンチェーンアカウントから厳密なシード順序を確認してください — プログラムの create_config インストラクションが信頼できる情報源です)。

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

curve_typeindex

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

フィー

  • trade_fee_rate — 取引量の 1/1_000_000 の単位で表示。カーブのすべての買い・売りに適用されます。protocol_fee_ownerCollectFee を通じてそのシェアを請求します。
  • migrate_fee — 卒業時に一度だけ課される固定手数料(ラムポートまたはクォート単位、設定による)。migrate_fee_ownerCollectMigrateFee を通じて請求します。
  • max_share_fee_rate10_000(100 bps)で初期化されます。バインドされた PlatformConfig からのプラットフォームのシェア手数料率を上限とします(platform-config を参照)。プログラムは trade_fee_rate + max_share_fee_rate < RATE_DENOMINATOR_VALUE を強制します。

供給量とレートの下限

これらの下限は、ローンチが Initialize で選択できるカーブシェイプパラメータを制限します。クリエイターの CurveParams がいずれかを違反した場合、InitializeInvalidInput で復帰します。
  • min_base_supply — カーブが宣言できる最小 supply(小数点なし)。デフォルトは 10_000_000
  • max_lock_rate1/1_000_000 単位で表示。デフォルト 300_000(30%)。ベスティングを total_locked_amount <= supply * max_lock_rate / 1_000_000 で制限します。
  • min_base_sell_rate1/1_000_000 単位で表示。デフォルト 200_000(20%)。base_supply_graduation / supply を下から制限します。
  • min_base_migrate_rate1/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) をターゲットにします。
  • protocol_fee_ownerCollectFee に署名し、この設定にバインドされたすべてのローンチで発生したプロトコル手数料を請求する公開鍵。オンチェーン保存で、管理者が UpdateConfig を通じてローテーションできます。
  • migrate_fee_ownerCollectMigrateFee に署名する公開鍵。

マイグレーションウォレット

2 つの卒業パスには異なる署名者が必要です:
  • migrate_to_amm_walletMigrateToAmm に署名する必要があります。migrate_type = 0(AMM v4 + OpenBook に卒業)のローンチに使用されます。
  • migrate_to_cpswap_walletMigrateToCpswap に署名する必要があります。migrate_type = 1(CPMM に卒業)に使用されます。Token-2022 ローンチは常にこのパスを取ります。
これらは通常、Raydium が運用する卒業クランクで保持されるため、クリエイターが呼び出すのを待つのではなく、カーブが閾値に達した直後に卒業が実行されます。

requires_platform_auth

u8 フラグ(0 = 誰でもこの設定を使用可能; 0 以外 = 有効な PlatformGlobalAccess PDA を持つプラットフォームのみがローンチ可能)。設定されている場合、この GlobalConfig に対するすべての Initialize は、CreatePlatformGlobalAccess(管理者のみ)を通じてプラットフォームが事前に認可されていることを証明する一致する PlatformGlobalAccess アカウントを含む必要があります。プラットフォーム側のメカニクスについては platform-config を参照してください。

初期化時のデフォルト

CreateConfig が呼び出されると、プログラムは多くのフィールドをハードコードされたデフォルトでシードします:
self.max_share_fee_rate     = 10_000;                  // 100 bps
self.min_base_supply        = 10_000_000;              // no decimals
self.max_lock_rate          = 300_000;                 // 30%
self.min_base_migrate_rate  = 200_000;                 // 20%
self.min_base_sell_rate     = 200_000;                 // 20%
self.min_quote_fund_raising = 30_000_000_000;
self.requires_platform_auth = 0;
管理者は curve_typeindexmigrate_feetrade_fee_ratequote_mint、および 4 つのウォレット公開鍵を作成時に明示的に設定します。以降の値は UpdateConfig を通じて調整できます。

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

Initialize でクリエイターは以下を渡します:
  • (curve_type, index) — どの GlobalConfig PDA をロードするかを選択。
  • CurveParams — カーブシェイプを説明(supplytotal_base_selltotal_quote_fund_raisingmigrate_type)。
  • VestingParams — ロックされた供給を説明。
  • MintParams — ベースミント用。
プログラムは以下を強制します:
  • curve_typeglobal_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
  • requires_platform_auth != 0 の場合、有効な PlatformGlobalAccess PDA が含まれている。
Initialize 後、ローンチの PoolStateglobal_config 公開鍵を直接保存するため、バインディングは永続的です。

更新パス

UpdateConfig は管理者のみで、(param: u8, value: u64) のペアを取ります。各 param 値はどのフィールドを変更するかを選択します:
param変更されたフィールド
0migrate_fee
1trade_fee_rate
2max_share_fee_rate
3min_base_supply
4max_lock_rate
5min_base_sell_rate
6min_base_migrate_rate
7min_quote_fund_raising
ウォレットのローテーション(protocol_fee_ownermigrate_fee_ownermigrate_to_amm_walletmigrate_to_cpswap_wallet)は別の Pubkey 引数シェイプを取ります。管理者トランザクションを構成する前に update_config ソースから厳密なディスパッチテーブルを確認してください。 requires_platform_authset_requires_platform_auth(bool) を通じてトグルされます。

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

import { Raydium } from "@raydium-io/raydium-sdk-v2";

// PDA 導出でフェッチ:
const [configPda] = PublicKey.findProgramAddressSync(
  [
    Buffer.from("global_config"),
    quoteMint.toBytes(),
    Buffer.from([curveType]),
    u16ToBytes(index),
  ],
  LAUNCHLAB_PROGRAM_ID,
);

const config = await raydium.launchpad.getGlobalConfig(configPda);
console.log(config.tradeFeeRate, config.minQuoteFundRaising);
利用可能なすべての設定をリストアップする UI の場合、SDK の getAllGlobalConfigs ヘルパーを歩行するか、それらをミラーする LaunchLab API エンドポイントをクエリしてください。オンチェーンアカウント数は少数(実際には 1 桁)です。

参照

ソース:
  • raydium-launch/programs/launchpad/src/states/config.rsGlobalConfig 構造体と initialize
  • raydium-launch/programs/launchpad/src/lib.rscreate_configupdate_config