> ## 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.

# LaunchLab GlobalConfig

> プロトコルレベルの設定アカウント。すべての LaunchLab ローンチに適用される — フィーレート、供給量の最小値、ロック率の上限、卒業ゲートウェイとなるマイグレーションウォレット、カーブごとのインデックススキーム。

<Info>
  **このページは AI による自動翻訳です。すべての内容は英語版を正とします。**

  [英語版を表示 →](/products/launchlab/global-config)
</Info>

<Info>
  `GlobalConfig` は**プロトコルレベル**の設定アカウントです。複数存在でき、キーは `(curve_type, index)` で管理されます。すべてのローンチは `Initialize` 時に厳密に 1 つを選択します。選択された `GlobalConfig` の値はそのローンチのパラメータの上限となります。プラットフォーム固有のカスタマイズ（プラットフォームごとのフィーレート、許可されるカーブシェイプ、卒業時の NFT 分割）については、[`products/launchlab/platform-config`](/ja/products/launchlab/platform-config) を参照してください。
</Info>

## 概要

`GlobalConfig` は `(curve_type, index)` ごとの PDA で、すべてのローンチが従わなければならないプロトコルルールを固定します：

* 許可されるボンディングカーブの種類（`curve_type`）。
* カーブが買い・売りの都度課す取引手数料率。
* 卒業時に課すマイグレーション手数料。
* 供給量、ロック率、売却率、マイグレーション率の下限。
* クォートミント（通常はラップド SOL または USDC）— ユーザーが購入する資産。
* プロトコル側の 3 つのウォレット：プロトコル手数料オーナー、マイグレーション手数料オーナー、および AMM v4 / CPMM への卒業を認可する 2 つのマイグレーション制御ウォレット。
* オプションのフラグ（`requires_platform_auth`）：どのプラットフォームがこの設定を使用できるかを制御します。

`GlobalConfig` アカウントは LaunchLab プログラムの管理者によって作成・更新されます（Anchor ベースの Raydium プログラム全体で共有されるハードコードされた管理者公開鍵 — [`reference/program-addresses`](/ja/reference/program-addresses) を参照）。

## レイアウト

```rust theme={null}
// 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 の導出：

```ts theme={null}
const [globalConfig] = PublicKey.findProgramAddressSync(
  [
    Buffer.from("global_config"),
    Buffer.from(quoteMint.toBytes()),
    Buffer.from([curveType]),
    u16ToBytes(index),
  ],
  LAUNCHLAB_PROGRAM_ID,
);
```

（署名前に、オンチェーンアカウントから厳密なシード順序を確認してください — プログラムの `create_config` インストラクションが信頼できる情報源です）。

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

### `curve_type` と `index`

これら 2 つが `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` — 卒業時に一度だけ課される固定手数料（ラムポートまたはクォート単位、設定による）。`migrate_fee_owner` が `CollectMigrateFee` を通じて請求します。
* `max_share_fee_rate` — `10_000`（100 bps）で初期化されます。バインドされた `PlatformConfig` からの**プラットフォームの**シェア手数料率を上限とします（[`platform-config`](/ja/products/launchlab/platform-config) を参照）。プログラムは `trade_fee_rate + max_share_fee_rate < RATE_DENOMINATOR_VALUE` を強制します。

### 供給量とレートの下限

これらの下限は、ローンチが `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)` をターゲットにします。
* `protocol_fee_owner` — `CollectFee` に署名し、この設定にバインドされたすべてのローンチで発生したプロトコル手数料を請求する公開鍵。オンチェーン保存で、管理者が `UpdateConfig` を通じてローテーションできます。
* `migrate_fee_owner` — `CollectMigrateFee` に署名する公開鍵。

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

2 つの卒業パスには異なる署名者が必要です：

* `migrate_to_amm_wallet` — `MigrateToAmm` に署名する必要があります。`migrate_type = 0`（AMM v4 + OpenBook に卒業）のローンチに使用されます。
* `migrate_to_cpswap_wallet` — `MigrateToCpswap` に署名する必要があります。`migrate_type = 1`（CPMM に卒業）に使用されます。Token-2022 ローンチは常にこのパスを取ります。

これらは通常、Raydium が運用する卒業クランクで保持されるため、クリエイターが呼び出すのを待つのではなく、カーブが閾値に達した直後に卒業が実行されます。

### `requires_platform_auth`

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

## 初期化時のデフォルト

`CreateConfig` が呼び出されると、プログラムは多くのフィールドをハードコードされたデフォルトでシードします：

```rust theme={null}
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_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`。
* `requires_platform_auth != 0` の場合、有効な `PlatformGlobalAccess` PDA が含まれている。

`Initialize` 後、ローンチの `PoolState` は `global_config` 公開鍵を直接保存するため、バインディングは永続的です。

## 更新パス

`UpdateConfig` は管理者のみで、`(param: u8, value: u64)` のペアを取ります。各 `param` 値はどのフィールドを変更するかを選択します：

| `param` | 変更されたフィールド               |
| ------- | ------------------------ |
| 0       | `migrate_fee`            |
| 1       | `trade_fee_rate`         |
| 2       | `max_share_fee_rate`     |
| 3       | `min_base_supply`        |
| 4       | `max_lock_rate`          |
| 5       | `min_base_sell_rate`     |
| 6       | `min_base_migrate_rate`  |
| 7       | `min_quote_fund_raising` |

ウォレットのローテーション（`protocol_fee_owner`、`migrate_fee_owner`、`migrate_to_amm_wallet`、`migrate_to_cpswap_wallet`）は別の `Pubkey` 引数シェイプを取ります。管理者トランザクションを構成する前に `update_config` ソースから厳密なディスパッチテーブルを確認してください。

`requires_platform_auth` は `set_requires_platform_auth(bool)` を通じてトグルされます。

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

```ts theme={null}
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 桁）です。

## 参照

* [`products/launchlab/platform-config`](/ja/products/launchlab/platform-config) — プラットフォームごとのオーバーレイでカーブシェイプをさらに制約します。
* [`products/launchlab/accounts`](/ja/products/launchlab/accounts) — ローンチの完全なアカウントグラフ。
* [`products/launchlab/instructions`](/ja/products/launchlab/instructions) — `Initialize` と更新インストラクション。
* [`reference/program-addresses`](/ja/reference/program-addresses) — 管理者公開鍵、プログラム ID、共有権限。

ソース：

* `raydium-launch/programs/launchpad/src/states/config.rs` — `GlobalConfig` 構造体と `initialize`。
* `raydium-launch/programs/launchpad/src/lib.rs` — `create_config`、`update_config`。
