Skip to content

App ID

appId は、Drop ウォレットがエッジで dApp ごとの設定を参照するために使用する UUID です。次の 3 つを制御します。

  1. どの親オリジンがウォレットを埋め込めるか。 Drop ウォレットのエッジ 関数は、すべてのレスポンスに動的な Content-Security-Policy: frame-ancestors <your-origins> ヘッダーを設定 します。登録されていないオリジンからウォレットを iframe で読み込もうとする dApp は、コードが実行される前にブラウザによってブロックされます。
  2. 機能フラグ。 個々の dApp は、他の統合に影響を与えることなく、機能 (追加のチェーン、追加のアセットなど)を有効または無効にできます。
  3. 分析スコープ。 ストレージ、分析、パートナーごとの状態は appId で キーが付けられるため、統合はきれいに分離されます。

INFO

appIdローカル開発では任意です。省略するか任意の UUID を渡せば、 ウォレットは localhost のみの CSP にフォールバックします。公開オリジンに デプロイすると必須になります。

App ID を登録する

現在セルフサービスのポータルはありません — 登録はパートナーデータベースに 対する PR で行います。

  1. UUID v4 を生成します(例: uuidgencrypto.randomUUID())。

  2. apps/web/shared/partners.ts に対して、あなたの dApp のエントリを追加するプルリクエストを開きます。

    ts
    const PARTNERS: Record<string, AppConfig> = {
      // ... existing entries
      '<your-uuid>': {
        domains: ['your-app.com', '*.your-app.com'],
        assets: { additionalEnabled: [] },
      },
    }
  3. PR がマージされ、ウォレットが再デプロイされると、エントリが有効になります。

domains

文字列は、wildcard-match を 使ってブラウザから報告された frame-ancestors オリジンと照合されます。素の ホスト名(your-app.com)、ワイルドカード(*.your-app.com)、プロトコルを 含むフル URL(https://your-app.com)のいずれも列挙できます。ホスト名を 渡した場合は、http://https:// の両方が受け入れられます。

localhost127.0.0.1domains に関係なく常に許可されるため、 未登録または空の domains を持つ appId に対しても追加の設定なしで 開発できます。

assets.additionalEnabled

デフォルトセットを超えてウォレット UI に表示する追加のチェーン ID の リストです。デフォルトのみで十分な場合は [] のままにしてください。

App ID を使う

ウォレットを作成する際に UUID を appId として渡します。

tsx
const wallet = createWallet({
  appId: '424306bd-e3ae-40c0-902b-dffb1f18c7cc',
  providers: {
    solana: true,
  },
})

SDK はこれを ?appId=<uuid> として iframe に転送します — 自分で行うべき ランタイムハンドシェイクはありません。

App ID が間違っているとどうなるか?

  • 未知の UUID — エッジ関数は NO_APP_CONFIG にフォールバックし、 localhost127.0.0.1 のみを許可します。本番オリジンではウォレットの 読み込みに失敗し、ブラウザコンソールに CSP 違反が表示されます。
  • 間違ったドメイン — 上記と同じです。どのウォレットコードが実行される よりも先に、ブラウザが iframe をブロックします。
  • UUID の欠落 — 上記の「未知の UUID」と同じです。これは意図的な挙動で、 appId を外すことで許可リストが意図せず広がらないようにするためです。