App ID
appId は、Drop ウォレットがエッジで dApp ごとの設定を参照するために使用する UUID です。次の 3 つを制御します。
- どの親オリジンがウォレットを埋め込めるか。 Drop ウォレットのエッジ 関数は、すべてのレスポンスに動的な
Content-Security-Policy: frame-ancestors <your-origins>ヘッダーを設定 します。登録されていないオリジンからウォレットを iframe で読み込もうとする dApp は、コードが実行される前にブラウザによってブロックされます。 - 機能フラグ。 個々の dApp は、他の統合に影響を与えることなく、機能 (追加のチェーン、追加のアセットなど)を有効または無効にできます。
- 分析スコープ。 ストレージ、分析、パートナーごとの状態は
appIdで キーが付けられるため、統合はきれいに分離されます。
INFO
appId はローカル開発では任意です。省略するか任意の UUID を渡せば、 ウォレットは localhost のみの CSP にフォールバックします。公開オリジンに デプロイすると必須になります。
App ID を登録する
現在セルフサービスのポータルはありません — 登録はパートナーデータベースに 対する PR で行います。
UUID v4 を生成します(例:
uuidgenやcrypto.randomUUID())。apps/web/shared/partners.tsに対して、あなたの dApp のエントリを追加するプルリクエストを開きます。tsconst PARTNERS: Record<string, AppConfig> = { // ... existing entries '<your-uuid>': { domains: ['your-app.com', '*.your-app.com'], assets: { additionalEnabled: [] }, }, }PR がマージされ、ウォレットが再デプロイされると、エントリが有効になります。
domains
文字列は、wildcard-match を 使ってブラウザから報告された frame-ancestors オリジンと照合されます。素の ホスト名(your-app.com)、ワイルドカード(*.your-app.com)、プロトコルを 含むフル URL(https://your-app.com)のいずれも列挙できます。ホスト名を 渡した場合は、http:// と https:// の両方が受け入れられます。
localhost と 127.0.0.1 は domains に関係なく常に許可されるため、 未登録または空の domains を持つ appId に対しても追加の設定なしで 開発できます。
assets.additionalEnabled
デフォルトセットを超えてウォレット UI に表示する追加のチェーン ID の リストです。デフォルトのみで十分な場合は [] のままにしてください。
App ID を使う
ウォレットを作成する際に UUID を appId として渡します。
const wallet = createWallet({
appId: '424306bd-e3ae-40c0-902b-dffb1f18c7cc',
providers: {
solana: true,
},
})SDK はこれを ?appId=<uuid> として iframe に転送します — 自分で行うべき ランタイムハンドシェイクはありません。
App ID が間違っているとどうなるか?
- 未知の UUID — エッジ関数は
NO_APP_CONFIGにフォールバックし、localhostと127.0.0.1のみを許可します。本番オリジンではウォレットの 読み込みに失敗し、ブラウザコンソールに CSP 違反が表示されます。 - 間違ったドメイン — 上記と同じです。どのウォレットコードが実行される よりも先に、ブラウザが iframe をブロックします。
- UUID の欠落 — 上記の「未知の UUID」と同じです。これは意図的な挙動で、
appIdを外すことで許可リストが意図せず広がらないようにするためです。