> ## Documentation Index
> Fetch the complete documentation index at: https://docs.magicblock.gg/llms.txt
> Use this file to discover all available pages before exploring further.

# はじめに

> Ephemeral SPL Token API ドキュメント

<CardGroup cols={2}>
  <Card title="Ephemeral SPL Token Program" icon="github" href="https://github.com/magicblock-labs/ephemeral-spl-token" iconType="duotone">
    オンチェーンの Ephemeral SPL Token プログラム
  </Card>

  <Card title="プライベート決済サンプル" icon="shield-check" href="https://one.magicblock.app/" iconType="duotone">
    プライベート決済アプリと API フローのサンプルを見る
  </Card>
</CardGroup>

## 概要

Ephemeral SPL Token API は、Solana と MagicBlock ephemeral rollups をまたいで、入金、送金、出金、swap、mint 初期化用の未署名 SPL token トランザクションを構築します。残高と mint 初期化状態の照会、stealth pool、プライベートデータを読み取るための bearer token を発行するウォレットの challenge/login フローも提供します。正式な公開リファレンスは [payments.magicblock.app/reference](https://payments.magicblock.app/reference) です。

### メタ

* [**ヘルス**](/jp/pages/ephemeral-spl-token/api-reference/health) - API の健全性と可用性を確認する
* [**トランザクションを送信**](/jp/pages/ephemeral-spl-token/api-reference/transaction-send) - 署名済みトランザクションを base layer または ephemeral RPC に送信する

### 認証

* [**チャレンジ**](/jp/pages/ephemeral-spl-token/api-reference/challenge) - ウォレットが署名する challenge 文字列を生成する
* [**ログイン**](/jp/pages/ephemeral-spl-token/api-reference/login) - 署名済み challenge を bearer token と交換する

### SPL

* [**SPL Token を入金**](/jp/pages/ephemeral-spl-token/api-reference/deposit) - Solana から ephemeral rollup への未署名入金トランザクションを構築する
* [**SPL Token を送金**](/jp/pages/ephemeral-spl-token/api-reference/transfer) - 未署名の公開またはプライベート SPL 送金を構築する
* [**SPL Token を出金**](/jp/pages/ephemeral-spl-token/api-reference/withdraw) - Solana へ戻す未署名出金トランザクションを構築する
* [**Ephemeral ATA の委任を解除**](/jp/pages/ephemeral-spl-token/api-reference/undelegate-ephemeral-ata) - mint に対するウォレットの eATA を委任解除する未署名トランザクションを構築する
* [**Mint を初期化**](/jp/pages/ephemeral-spl-token/api-reference/initialize-mint) - mint 用の validator-scoped transfer queue を初期化する未署名トランザクションを構築する
* [**Transfer Queue Crank を実行**](/jp/pages/ephemeral-spl-token/api-reference/transfer-queue-ensure-crank) - mint の transfer queue を検証し、crank を 1 回強制的に試行する
* [**残高**](/jp/pages/ephemeral-spl-token/api-reference/balance) - アドレスの base-chain SPL token 残高を取得する
* [**プライベート残高**](/jp/pages/ephemeral-spl-token/api-reference/private-balance) - アドレスの ephemeral-rollup SPL token 残高を取得する（認証が必要）
* [**Mint の初期化状態**](/jp/pages/ephemeral-spl-token/api-reference/is-mint-initialized) - mint に validator-scoped transfer queue が ephemeral RPC 上で存在するか確認する

### Stealth Pool

* [**Stealth Pool を作成**](/jp/pages/ephemeral-spl-token/api-reference/stealth-pool) - プライベート送金用の送信先 key に handle をマッピングする（認証が必要）
* [**Stealth Pool の状態を取得**](/jp/pages/ephemeral-spl-token/api-reference/stealth-pool-status) - handle の stealth pool が存在するか確認する

### Swap

* [**Swap クォート**](/jp/pages/ephemeral-spl-token/api-reference/quote) - 2 つの SPL mint 間の swap クォートを取得する
* [**Swap**](/jp/pages/ephemeral-spl-token/api-reference/swap) - 未署名の swap トランザクションを構築する（公開パススルー、またはスケジュール済み送金付きのプライベート）

### MCP

* [**MCP**](/jp/pages/ephemeral-spl-token/api-reference/mcp) - stateless Streamable HTTP MCP endpoint にアクセスする

```
┌────────────────────────────────────────────┐
│ 1. Deposit                                │
├────────────────────────────────────────────┤
│ • Build an unsigned deposit transaction   │
│ • Solana base balance → ephemeral rollup  │
└────────────────────────────────────────────┘
                     ↓
┌────────────────────────────────────────────┐
│ 2. Transfer / Swap                        │
├────────────────────────────────────────────┤
│ • Build SPL transfer or swap              │
│ • base/ephemeral → base/ephemeral         │
│ • public or private (delayed + split)     │
└────────────────────────────────────────────┘
                     ↓
┌────────────────────────────────────────────┐
│ 3. Withdraw                               │
├────────────────────────────────────────────┤
│ • Build an unsigned withdrawal            │
│ • ephemeral rollup → Solana base balance  │
└────────────────────────────────────────────┘
```

## 認証フロー

Private Ephemeral Rollup 内のプライベートデータを読み取るエンドポイントには bearer トークンが必要です:

1. `GET /v1/spl/challenge?pubkey=<wallet>` が `challenge` 文字列を返す
2. ウォレットが challenge に署名する
3. `POST /v1/spl/login` に `{ pubkey, challenge, signature }` を送ると `token` が返る
4. `/v1/spl/private-balance` (必須) と Private Ephemeral Rollup への接続が必要な `/v1/spl/transfer` リクエスト (オプション) で `Authorization: Bearer <token>` を渡す

## レスポンス形式

トランザクション構築エンドポイントが成功すると、未署名トランザクションのペイロードが返されます:

```json theme={null}
{
  "kind": "deposit",
  "version": "legacy",
  "transactionBase64": "base64-encoded-transaction",
  "sendTo": "base",
  "recentBlockhash": "blockhash",
  "lastValidBlockHeight": 284512337,
  "instructionCount": 3,
  "requiredSigners": ["3rXKwQ1kpjBd5tdcco32qsvqUh1BnZjcYnS5kYrP7AYE"]
}
```

クライアントの流れ:

1. API を呼び出す
2. `transactionBase64` をデコードする
3. 必要に応じてクライアント側でトランザクションを調整する
4. 必要なウォレットで署名する
5. `sendTo` で指定された RPC (`"base"` または `"ephemeral"`) に送信する
