# Launching a token

トークン作成者は `createLaunchpad()` を使用してボンディングカーブに裏付けられた新しいトークンをデプロイします。この単一のトランザクションは次を実行します：

* トークンをミントします
* オンチェーンのメタデータを作成します
* ボンディングカーブを初期化します
* 取引を即座に開始します

追加の設定は不要です。

***

## トークンローンチの仕組み

トークンがローンチされると、次の手順が原子的に行われます：

1. **トークンの作成**\
   指定された供給量で新しいSPLトークン（またはToken-2022トークン）がミントされます。
2. **メタデータの作成**\
   提供されたname、symbol、URIを使用してMetaplex経由でオンチェーンメタデータが作成されます。
3. **ボンディングカーブの初期化**\
   設定されたパラメータを使用してボンディングカーブプールが初期化されます。
4. **取引開始**\
   ユーザーはボンディングカーブ上でトークンを即座に買ったり売ったりできます。
5. **マイグレーション**\
   資金調達目標に達すると、流動性は自動的にRaydiumプールへマイグレートします。

***

## トークンローンチの作成

```ts
import {
  TxVersion,
  LAUNCHPAD_PROGRAM,
  getPdaLaunchpadConfigId,
  CpmmCreatorFeeOn,
} from '@raydium-io/raydium-sdk-v2'
import { initSdk } from './config'
import { Keypair, PublicKey } from '@solana/web3.js'
import { NATIVE_MINT } from '@solana/spl-token'
import BN from 'bn.js'

const createToken = async () => {
  const raydium = await initSdk()

  // 新しい mint keypair を生成
  const tokenKeypair = Keypair.generate()

  // グローバル設定を導出 (SOL見積もり、定数積)
  const configId = getPdaLaunchpadConfigId(
    LAUNCHPAD_PROGRAM,
    NATIVE_MINT,
    0,
    0
  ).publicKey

  const { execute, extInfo } = await raydium.launchpad.createLaunchpad({
    programId: LAUNCHPAD_PROGRAM,

    // トークン設定
    mintA: tokenKeypair.publicKey,
    decimals: 6,
    name: 'My token',
    symbol: 'MTK',
    uri: 'https://arweave.net/metadata.json',

    // プラットフォーム（任意）
    platformId: new PublicKey('your-platform-id'),

    // グローバル設定
    configId,

    // マイグレーション先
    migrateType: 'cpmm',

    // ボンディングカーブのパラメータ
    supply: new BN('1000000000000000'),
    totalSellA: new BN('793100000000000'),
    totalFundRaisingB: new BN('85000000000'),

    // ベスティング（任意）
    totalLockedAmount: new BN('0'),
    cliffPeriod: new BN('0'),
    unlockPeriod: new BN('0'),

    // 初期購入（任意）
    createOnly: true,
    buyAmount: new BN('0'),
    slippage: new BN(100),

    // マイグレーション後の作成者手数料
    creatorFeeOn: CpmmCreatorFeeOn.OnlyTokenB,

    // トランザクション設定
    txVersion: TxVersion.V0,
    extraSigners: [tokenKeypair],
  })

  const { txIds } = await execute({ sendAndConfirm: true, sequentially: true })
  console.log('Pool id:', extInfo.address.poolId.toBase58())
  console.log('Token mint:', tokenKeypair.publicKey.toBase58())
}
```

***

### パラメータ参照

### トークン設定

| パラメータ      | 型           | 必須  | 説明                                               |
| ---------- | ----------- | --- | ------------------------------------------------ |
| `mintA`    | `PublicKey` | はい  | 新しいトークンミントの公開鍵。新しい keypair を生成し、 `extraSigners`. |
| `decimals` | `number`    | いいえ | 小数点以下の桁数。デフォルト： `6`.                             |
| `name`     | `string`    | はい  | オンチェーンメタデータで使用されるトークン名。                          |
| `symbol`   | `string`    | はい  | トークンのティッカーシンボル。最大10文字。                           |
| `uri`      | `string`    | はい  | メタデータJSONのURL（Arweave、IPFS、または任意の公開URL）。         |

***

### プラットフォームとグローバル設定

| パラメータ        | 型           | 必須  | 説明                                          |
| ------------ | ----------- | --- | ------------------------------------------- |
| `platformId` | `PublicKey` | いいえ | ローンチ先のプラットフォーム設定。デフォルトはRaydium公式プラットフォームです。 |
| `configId`   | `PublicKey` | はい  | 見積もりトークンとカーブタイプを定義するグローバル設定。                |
| `configInfo` | `object`    | いいえ | 事前に取得された設定データ。省略した場合は自動的に取得されます。            |

***

### ボンディングカーブのパラメータ

| パラメータ               | 型        | 必須  | 説明                                      |
| ------------------- | -------- | --- | --------------------------------------- |
| `supply`            | `BN`     | いいえ | トークンの総供給量。最小値： `10,000,000` (小数点前の単位)。  |
| `totalSellA`        | `BN`     | いいえ | ボンディングカーブで販売されるトークン数。供給の≥20%である必要があります。 |
| `totalFundRaisingB` | `BN`     | いいえ | マイグレーション前に集める見積もりトークン量。                 |
| `migrateType`       | `string` | はい  | マイグレーション先： `cpmm` または `amm`.            |

### 供給分配の理解

```txt
supply = totalSellA + totalLockedAmount + migrateAmount
```

* `totalSellA`：ボンディングカーブ経由で販売されたトークン
* `totalLockedAmount`：ベスティングのために確保されたトークン
* `migrateAmount`：AMMプールにマイグレートされるトークン（供給の≥20%である必要があります）

### ベスティングのパラメータ（任意）

| パラメータ               | 型    | 必須  | 説明                            |
| ------------------- | ---- | --- | ----------------------------- |
| `totalLockedAmount` | `BN` | いいえ | ベスティングのために確保されたトークン。供給の最大30%。 |
| `cliffPeriod`       | `BN` | いいえ | ベスティング開始までの秒数（マイグレーション後）。     |
| `unlockPeriod`      | `BN` | いいえ | 線形ベスティングの期間（秒）。               |

> 注意：ベスティング開始時間はマイグレーションブロックのタイムスタンプに自動的に設定されます。ベスティングの受取人は別途 `createVesting()`.

***

### を使用して設定されます。

| パラメータ            | 型         | 必須  | 説明                                                                             |
| ---------------- | --------- | --- | ------------------------------------------------------------------------------ |
| `初期購入のパラメータ（任意）` | `boolean` | いいえ | `createOnly` true `はトークンのみを作成します。` false                                       |
| `buyAmount`      | `BN`      | いいえ | はトークンを作成し、初期購入を実行します。 `初期購入のパラメータ（任意）` 初期購入に使用する見積もりトークン量。もし `はトークンのみを作成します。`. |
| `slippage`       | `BN`      | いいえ | is`100 = 1%`).                                                                 |
| `minMintAAmount` | `BN`      | いいえ | 最大スリッページ（ベーシスポイントで、                                                            |

***

### 受け取る最小トークン数。省略した場合は自動計算されます。

| パラメータ          | 型              | 必須  | 説明               |
| -------------- | -------------- | --- | ---------------- |
| `creatorFeeOn` | `マイグレーション後の設定` | いいえ | CpmmCreatorFeeOn |

### `マイグレーション後の設定` マイグレーション後に作成者手数料がどのトークンで徴収されるか。

| options                         | 説明         |
| ------------------------------- | ---------- |
| `Value`                         | OnlyTokenB |
| `作成者手数料は見積もりトークンのみで徴収されます（推奨）。` | BothToken  |

***

### 作成者手数料はローンチされたトークンと見積もりトークンの両方で徴収されます。

| パラメータ              | 型           | 必須  | 説明                                                                       |
| ------------------ | ----------- | --- | ------------------------------------------------------------------------ |
| `shareFeeRate`     | `BN`        | いいえ | リファラルのパラメータ（任意） `maxShareFeeRate` 取引手数料に対するリファラーの取り分（bps × 100）。グローバル設定の |
| `shareFeeReceiver` | `PublicKey` | いいえ | を超えることはできません。                                                            |

***

### 初期購入に適用されるリファラル手数料を受け取るウォレット。

Token-2022 のローンチ

```ts
const { execute, extInfo } = await raydium.launchpad.createLaunchpad({
  LaunchLabはtransfer fee拡張を備えたToken-2022トークンをサポートします。転送手数料はすべてのトークン転送で自動的に徴収されます。

  // 標準パラメータ...
  // transfer fees を有効化して Token-2022 を使用
    transferFeeExtensionParams: {
    transferFeeBasePoints: 100,     // 1% の転送手数料 (100 bps)
  },

  maxinumFee: new BN('1000000'),  // トークン単位での1回あたりの最大手数料
  migrateType: 'cpmm',
})
```

### // Token-2022 のローンチは必ずCPMMへマイグレートする必要があります

* Token-2022 ローンチに関する重要な注意点 `cpmm` migration is always
* (AMMv4 は Token-2022 をサポートしていません) `マイグレーション後、transfer fee の権限はプラットフォームの` wallet
* transferFeeExtensionAuth

***

### に移譲されます

プラットフォームは手数料率を変更したり、蓄積された差し押さえられた手数料を請求できます

### 利用可能な設定の取得

```ts
グローバル設定はどの見積もりトークンとカーブタイプが利用可能かを決定します。APIから設定を取得するか、直接導出してください。

From API
const configs = await raydium.api.fetchLaunchConfigs()
```

### // 特定の設定を見つける

```ts
const solConfig = configs.find(c => c.key.mintB === NATIVE_MINT.toBase58())
import { NATIVE_MINT } from '@solana/spl-token'

const configId = getPdaLaunchpadConfigId(
  LAUNCHPAD_PROGRAM,
  Direct derivation
  import { getPdaLaunchpadConfigId, LAUNCHPAD_PROGRAM } from '@raydium-io/raydium-sdk-v2'
  NATIVE_MINT, // 見積もりトークン
).publicKey
```

### 0,           // カーブタイプ: 0 = constant product, 1 = fixed price, 2 = linear

| 0            // 設定インデックス | 一般的な構成  | 説明            |
| ------------------------ | ------- | ------------- |
| 見積もりトークン`カーブタイプ`)        | `SOL (` | NATIVE\_MINT  |
| 0 (constant product)     | `SOL (` | SOL 建ての標準ローンチ |
| USD1 (mainnet)           | `SOL (` | SOL 建ての標準ローンチ |

***

### ステーブルコイン建てのローンチ

sUSDC (devnet)

| プールのライフサイクル         | options | 説明                                  |
| ------------------- | ------- | ----------------------------------- |
| 作成後、プールは次の状態を経由します： | `0`     | Status                              |
| Trading             | `1`     | ボンディングカーブがアクティブです。ユーザーはトークンを売買できます。 |
| Migrate             | `2`     | 資金調達目標に到達しました。AMMへのマイグレーションが進行中です。  |

Migrated **マイグレーションが完了しました。トークンは現在Raydium AMMで取引されています。** からの移行 **trading** へ `totalFundRaisingB` migrate

***

### は次が達成されると自動的に発生します：

一定量の見積もりトークンが集められたとき。

```ts
プール id の導出
import { NATIVE_MINT } from '@solana/spl-token'

作成後、取引機能で使用するためのプール id を導出できます：
  LAUNCHPAD_PROGRAM,
  mintA,
  カーブタイプ
)

import { getPdaLaunchpadPoolId, LAUNCHPAD_PROGRAM } from '@raydium-io/raydium-sdk-v2'
```

***

## const { publicKey: poolId } = getPdaLaunchpadPoolId(

console.log('Pool id:', poolId.toBase58())

1. 次のステップ `buyToken()` および `sellToken()`
2. トークンがローンチされたら： `totalFundRaisingB`
3. プールを共有 — ユーザーは `claimCreatorFee()` を使用して取引できます
4. 進捗を監視 — 資金調達の進捗を追跡して、目標額に向けて確認します：����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� `harvestLockLiquidity()`
