クイックアクセス
サンプルを確認:GitHub
SPL Token の Anchor 実装
ライブサンプルアプリ
プライベート決済を試す
概要
プライベート決済は、ER 上の SPL token を基盤とするプライバシー用途です。同じ入金 / 送金 / 出金プリミティブをプライベート可視性 で実行するため、支払額、送信先、タイミングは公開されず保護されます。このプリミティブを初めて使う場合は、先に Ephemeral SPL Token の
概要をお読みください。このガイドでは
eATA / Global Vault / 委任モデルを理解している前提で説明します。
API リファレンス
入金、送金、出金、残高、stealth pool、認証用の endpoint。
リファレンスプログラム
オンチェーンの Ephemeral SPL Token プログラム。
プライバシーモデル
プライベート決済は次の仕組みに依存します:- プライベート可視性 —
visibility: "private"で Ephemeral Rollup 内の送金を実行するため、 公開されません。 - Stealth handle — raw public key の代わりに
alice@magicblock.idのような読みやすい名前へ 送金します。handle は stealth pool を介して 1 つ以上の送信先 key に解決され、オンチェーンの 送信者 → 受信者という直接のつながりを断ちます。 - キュー型決済 — プライベート送金は、直接かつ即座に関連付けられる移動ではなく、 プログラムの transfer queue を通じて決済できます。
認証
プライベートデータの読み取りと stealth-pool 操作には bearer token が必要です。保護された endpoint を呼び出す前に challenge/login フローで取得します:1
challenge をリクエスト
GET /v1/spl/challenge はユーザーが署名するメッセージを返します。2
ログイン
POST /v1/spl/login は署名済み challenge を bearer token と交換します。3
保護された endpoint を呼び出す
GET /v1/spl/private-balance と POST /v1/spl/stealth-pool では
Authorization: Bearer <token> を送信します。入金
token を mint の Global Vault に移動し、入金者の ephemeral ATA 残高を加算します。POST /v1/spl/deposit— 入金トランザクションを構築します。入金残高をプライベートに 保つにはprivate: trueを設定します。
sendTo フィールド(base または ephemeral)です。
署名後、POST /v1/transaction/send
または独自 RPC で送信します。
プライベート送金
POST /v1/spl/transferwithvisibility: "private".
stealth handle を使用するには、最初に初期化します:
POST /v1/spl/stealth-pool— handle(255 UTF-8 byte 以下。正規化されないためAlice@…≠alice@…)を 1〜10 個の送信先 owner key にマッピングし、必要に応じて 支払いを分割します。GET /v1/spl/stealth-pool?handle=…— handle の pool が存在するか確認します。
handle は正確な UTF-8 byte のまま保存されます。
GET が返すのは pool の存在有無だけで、
送信先 key は返しません。出金
残高を Global Vault から標準の base-layer SPL token account に戻します。POST /v1/spl/withdraw— 出金トランザクションを構築します。
GET /v1/spl/balance— 公開残高。GET /v1/spl/private-balance— プライベート残高(bearer token が必要)。
開発者向け注意事項
- プライバシーは段階的です。 Ephemeral SPL token は関連付け可能性を下げますが、金額や タイミングを隠したり、ネットワークレベルの分析を防いだりはしません。
- handle は正規化されません。 大文字/小文字と空白が区別されるため、一貫して表示・保存してください。
- フローを一致させます。 Stealth-handle 送金には
visibility: "private"、fromBalance: "base"、toBalance: "base"が必要です(フィールド省略時のデフォルトでもあります)。 - 署名してから送信します。 Builder endpoint は未署名トランザクションを返します。
POST /v1/transaction/sendで送信し、返されたsendToに従ってください。
次のステップ
Ephemeral SPL Token — 概要
プライベート決済を支えるプリミティブ。
SDK クイックスタート
オンチェーン / SDK の統合パス。

