概要
wallet メンバーを追加します。これが、どのウォレットでも読めるオープンなフォーマット Wallet App Manifest です。すると Casa Tookan は、あなたのサイトを独自の名前とアイコンで表示し、読み込み中はスプラッシュ画面を、ブラウザ › アプリにはバナー付きのカードを表示し、Casa Tookan が提供していないものが必要なときはお知らせを表示します。


| あなたが宣言するもの | Casa Tookan が表示するもの |
|---|---|
name, icons | アドレスバーと、ユーザーが署名を承認するシートに表示される名前とアイコン |
wallet.splashImageUrl, background_color | window.wallet.ready() を呼ぶまで、アプリの読み込み中に表示されるスプラッシュ画面 |
wallet.heroImageUrl, wallet.subtitle, start_url | ユーザーがアプリを保存すると ブラウザ › アプリ に表示されるカード。start_url で開きます |
wallet.chains, wallet.capabilities | Casa Tookan にないものを必須にしたときに表示される、閉じられるお知らせ。アプリはそのまま開きます |
casatookan と省略せずに書いてください。Casa(casa.io)は無関係の Bitcoin ウォレットです。Casa Tookan の中では、Casa はユーザーのプロフィールのひとつで、切り替えて使う Bitcoin と EVM のアドレスのセットです。アプリからはアクティブな Casa が見えます。マニフェスト
Casa Tookan は、どのウォレットでも読めるオープンなフォーマット Wallet App Manifest を読み込みます。中身は、あなたのサイトがおそらくすでに持っている W3C Web App Manifest に、標準にメンバーがないものだけを入れる wallet メンバーをひとつ加えたものです。
{
"name": "Orb Quest",
"short_name": "Orbs",
"description": "A card game played with your Counterparty assets.",
"start_url": "/play",
"scope": "/",
"background_color": "#101820",
"categories": ["games", "trading-cards", "counterparty"],
"icons": [{ "src": "/icon-1024.png", "sizes": "1024x1024", "type": "image/png" }],
"screenshots": [{ "src": "/shots/duel.png", "sizes": "1284x2778", "form_factor": "narrow" }],
"wallet": {
"version": "1",
"subtitle": "Duel with your orbs",
"heroImageUrl": "/hero-1200x630.png",
"splashImageUrl": "/splash-200.png",
"chains": { "required": ["bip122:000000000019d6689c085ae165831e93"], "optional": ["eip155:8453"] },
"capabilities": {
"required": ["provider.counterparty", "wallet.ready"],
"optional": ["casatookan:identity.ceid"]
},
"extensions": {
"casatookan": { "identity": { "level": 1, "reason": "One player per device" } }
}
}}
W3C 標準 青色、変更なし · 追加 ハイライト部分:拡張のすべて。
wallet が必要ですwallet メンバーがないマニフェスト、または wallet.version が 1 / 1.x でないマニフェストでは、サイトはアプリになりません。スプラッシュも、アプリのカードもありません。それでも Casa Tookan は、マニフェストの name と最大のアイコンでサイトを表示します。ほとんどのサイトにはマニフェストがありますが、アプリとして表示されるのは希望したサイトだけです。Casa Tookan が探す場所
https://<your-domain>/.well-known/wallet-app.json:同じ JSON を単体で配信したもの。- なければ、ホームページ(
https://<your-domain>/)の<head>にある<link rel="manifest">。スクリプトで追加せず、配信される HTML に含めてください。
wallet メンバーを持つ最初のものがまるごと使われ、両者はマージされません。相対 URL は、マニフェストを取得した URL を基準に解決されます。
W3C 標準 そのまま再利用するメンバー
| メンバー | Casa Tookan での用途 | 備考 |
|---|---|---|
name | アプリの名前 | 最大 32 文字。超える場合は short_name(最大 32 文字)が表示されます。 |
icons | アプリのアイコン | purpose が any の最大のラスターアイコン。maskable は最後の手段としてのみ使われ、monochrome や SVG は使われません。画像を参照してください。 |
start_url | アプリとそのお気に入りが開く場所 | あなたのドメイン上である必要があり、そうでなければ無視されます。 |
scope | どのページがアプリか | W3C のルールに従います:宣言されたスコープがあなたのドメイン上にあり start_url を含んでいればそのスコープ、そうでなければ start_url のディレクトリ。範囲外のページは通常の Web サイトとして表示されます。 |
background_color | スプラッシュ画面の背景 | 16 進カラーのみ。 |
description | アプリのページ | 最大 170 文字、プレーンテキスト、絵文字なし。 |
categories | カテゴリとタグ | 最大 5 個、各 20 文字まで、小文字、スペースなし。最初に対応づけられたものがカテゴリになります:Casa Tookan のカテゴリはそのまま、または utilities → utility, shopping → marketplace, photo → art-creativity。 |
screenshots | アプリのページ | スマートフォン用は form_factor: "narrow"。Casa Tookan ではまだ表示されません。 |
追加 wallet メンバー
| フィールド | 型 | 備考 |
|---|---|---|
version | 文字列 | 必須:"1"。1.x はすべて 1 として読まれ、それ以外のメジャーバージョンは無視されます。 |
subtitle | 文字列 | 最大 30 文字、絵文字なし。名前の下に 1 行で表示されます。 |
heroImageUrl | URL | ブラウザ › アプリのバナー。画像を参照してください。 |
splashImageUrl | URL | スプラッシュ画像。省略時はアイコンが使われます。 |
chains | オブジェクト | required / optional:CAIP-2 ID。チェーンを参照してください。 |
capabilities | オブジェクト | required / optional。ケイパビリティを参照してください。 |
association | オブジェクト | ドメインがあなたのものである証明。下記を参照してください。 |
extensions | オブジェクト | ウォレットごとにオブジェクトをひとつ。Casa Tookan は extensions.casatookan を読み、他は無視します。 |
すべてのフィールドは寛容に読み込まれます。チェックに通らないフィールドは無視され、残りはそのまま適用されます。
Casa Tookan のみ extensions.casatookan
identity:アプリがプレイヤーの Casa Estates ID に求めてよいもの:level(0–3)、reason(理由)、そして addresses(CAIP-2 チェーンごとに、アプリが求めることのあるアドレスの最大数。[{ "chain": "…", "max": 1–5, "reason": "…" }])。CEID を参照してください。
association
任意のブロックチェーンアカウントで署名した、ドメインがあなたのものである証明:
"association": {
"account": "eip155:1:0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
"payload": "eyJkb21haW4iOiJvcmJxdWVzdC5nYW1lIn0",
"type": "eip191",
"signature": "0x…"
}
account:CAIP-10 アカウント。payload:base64url でエンコードした JSON{ "domain": "your-domain", "issuedAt": "…" }。type:署名の種類(EVM はeip191、Bitcoin はbip322-simple)。signature:仕様で定義されたメッセージの署名。
Casa Tookan は保存しますが、まだ検証はしていません。今後、あなたのドメインに紐づく機能にはこれが必要になります。
画像
| 画像 | メンバー | サイズ | 形式 |
|---|---|---|---|
| アイコン | icons、purpose any | 1024 × 1024(最低 512) | PNG、不透明 |
| バナー | wallet.heroImageUrl | 1200 × 630(1.91:1)、トリミングなしで表示 | PNG または JPEG |
| スプラッシュ | wallet.splashImageUrl | 200 × 200 | PNG、透過可 |
| スクリーンショット | screenshots、form_factor: "narrow" | 1284 × 2778 縦向き、最大 3 枚表示 | PNG または JPEG |
Farcaster ミニアプリと同じサイズなので、1 セットのファイルで両方に対応できます。アイコンは明るい背景にも暗い背景にも、丸いマスクの中にも置かれます。透過ではなく独自の背景を付け、絵柄は中央の 80 % 内に収めてください。SVG は使えません:多くのネイティブの画像ビューでは描画できないためです。バナーがない場合、ブラウザは Farcaster マニフェストの画像(3:2 のものは 1.91:1 にトリミング)を使い、それもなければ、ぼかした自身のコピーの上にアイコンを重ねて表示します。
チェーン
CAIP-2 ID。それ以外は無視されます。
| チェーン | ID |
|---|---|
| Bitcoin メインネット | bip122:000000000019d6689c085ae165831e93 |
| Ethereum | eip155:1 |
| Base | eip155:8453 |
| Kaia | eip155:8217 |
| Optimism · Arbitrum · Polygon · BNB Chain · Avalanche · Gnosis | eip155:10 · 42161 · 137 · 56 · 43114 · 100 |
provider.counterparty ケイパビリティを必須にしてください。ケイパビリティ
| ケイパビリティ | ページで使えるもの |
|---|---|
provider.ethereum | Casa の EVM アカウントでの window.ethereum(EIP-1193、EIP-6963 で通知)。 |
provider.bitcoin | Casa の Bitcoin アカウント(segwit、taproot、legacy)での sats-connect、Wallet Standard、window.unisat。 |
provider.counterparty | legacy アドレスでの window.webXCP / window.web3xcp。Counterparty の PSBT はデコードされ、署名前にユーザーに表示されます。 |
wallet.ready | window.wallet.ready():スプラッシュ画面を参照してください。 |
casatookan:identity.ceid Casa Tookan のみ | window.casaTookan.ceid:プレイヤーの Casa Estates ID でサインインさせます。CEID を参照してください。 |
casatookan:tookans.spend Casa Tookan のみ | window.casaTookan.tookans.spend({ offer }):プレイヤーの Tookan でアイテムを販売します。シートにアイテム、価格、残高が表示され、ページには署名付きのレシートが届きます。 |
casatookan:identity.estate Casa Tookan のみ | 予約済み、まだ利用できません。 |
provider.* ケイパビリティと wallet.ready は、仕様のオープンレジストリに由来します。アプリをホストするどのウォレットでもそのまま提供できる名前です。Casa Tookan だけが提供するものには casatookan: プレフィックスが付き、他のウォレットはそれを無視します。旧名も引き続き有効です:casatookan.ready(現在は wallet.ready)、identity.ceid と identity.estate(現在はプレフィックス付き)。
Casa Tookan にない必須のチェーンやケイパビリティがあると、ユーザーに閉じられるお知らせが表示されます。アプリはそのまま開きます。任意のものは参考情報です。
ページ内
あなたのスクリプトより先に注入されます。署名は上記の標準プロバイダーを通して行います:Casa Tookan 専用の署名 API はありません。
window.wallet = {
ready(), // hide the splash screen (the neutral name)
};
window.casaTookan = { // Casa Tookan’s own
isCasaTookan: true,
version: '1',
ready(), // the same, by its former name
ceid, // Casa Estates ID sign-in
};
if (window.casaTookan?.isCasaTookan) {
// running inside Casa Tookan: ceid is there
}
window.wallet?.ready() を呼べば、それを提供するどのウォレットでもアプリが動きます。Casa Tookan かどうかを判定するのは、Casa Tookan 独自の機能を使うときだけにしてください。あなた自身のスクリプトが定義した window.wallet には手を加えません。
スプラッシュ画面
- 最初から、
background_colorの上にwallet.splashImageUrl(またはアイコン)で表示されます。 wallet.readyを宣言すると、window.wallet.ready()を呼ぶまで表示され続けます(最大 10 秒)。- 宣言しない場合、読み込み後にページが 2.5 秒アイドル状態になると消えます。
ready()は最初の画面を描画し終えてから呼んでください。それより前には呼ばないでください。
Casa
- ユーザーはあなたのページを開いたまま Casa を切り替えられます:プロバイダーの通常の
accountsChangedが届きます(window.ethereumとwindow.unisat)。 - Casa ごとに独自のストレージがあります:
localStorage、sessionStorage、IndexedDB は Casa ごとに分けて保持されるので、セッションはそれを開いた Casa に残ります。
window.addEventListener('load', () => {
renderFirstScreen();
window.wallet?.ready();
});
Casa Tookan による読み込み
| 状況 | 起こること |
|---|---|
| 取得のタイミング | あなたのサイトから直接、ドメインごと・アプリの起動ごとに 1 回:変更は次回の起動で反映されます。 |
| 形式 | application/json で配信してください。ステータス 200 の HTML ページ(SPA のフォールバック)は「マニフェストなし」とみなされます。 |
404 / 410 | マニフェストなし。 |
| CORS | /.well-known/ 以下のすべてのレスポンスに、404 も含めて Access-Control-Allow-Origin: * を付けてください。スマートフォンのアプリには不要ですが、Casa Tookan の Web 版(devapp.casatookan.com)と下のバリデーターには必要です。これがないとブラウザはファイルを読めず、ファイルがないのかネットワークエラーなのかも区別できません。 |
ネットワークエラー、タイムアウト、403、5xx | 「判断できない」:Casa Tookan は既知の情報を保持し、障害を理由にアプリを格下げすることはありません。ファイルをボット対策のチャレンジの後ろに置かないでください。 |
| 場所 | /.well-known/wallet-app.json とホームページの <link rel="manifest"> を並行して取得します。Casa Tookan が読めないホームページ(ボット対策のチャレンジ、403)は「リンクされたマニフェストなし」とみなされます。 |
| 画像 | こちらもボット対策のチャレンジやログインの後ろに置かず、クロスオリジンで読めるようにしてください(Access-Control-Allow-Origin: *)。新しい画像は新しい URL で公開してください:ウォレットがキャッシュすることがあります。 |
| どのページがアプリか | scope 内のページです。ドメイン内のそれ以外の場所では、Casa Tookan は通常の Web サイトを、マニフェストの名前とアイコンで表示します。 |
| 保存されたアプリ | ドメインごとにお気に入りがひとつ、start_url に置かれ、訪問のたびに更新されます:新しい名前、バナー、start_url には追従し、削除したフィールドは削除され、マニフェストが完全になくなると通常のブックマークに戻ります。 |
Farcaster ミニアプリ
Casa Tookan は /.well-known/farcaster.json も読み込み、アクティブな Casa が Farcaster アカウントを持っている場合、@farcaster/miniapp-sdk で作られたミニアプリをホストします:コンテキスト、Sign In With Farcaster、ウォレット、触覚フィードバック。両方のマニフェストを配信すると、フィールドごとに、Wallet App Manifest を優先してマージされます。Wallet App Manifest が必要なのは、Casa Tookan で異なる部分を上書きしたいときか、Bitcoin と Counterparty を宣言したいときだけです。farcaster.json だけで宣言されたドメインは、その homeUrl 以下だけがアプリになります。
未対応:ミニアプリの追加とその通知(通知サーバーなし)、キャストの投稿(farcaster.xyz に引き渡し)。
プレイグラウンド
マニフェストを編集すると、Casa Tookan がそれをどう扱うかが入力に合わせて表示されます:アプリが行うチェック、あらゆるサイズのアイコン、ユーザーが目にする画面。最初は本物のマニフェスト、ctserver.everdreamsoft.com/.well-known/wallet-app.json で公開中の Dev Playground のものが入っています。名前、バナー、色を変えたり、自分のドメインから読み込んだり、マニフェストを貼り付けたりしてみてください。仕様の完全なチェックには、仕様のバリデーターを使ってください。
Dev Playground は icon-1024.png(1024 × 1024)、hero-1200x630.jpg、splash-200.png(200 × 200)を配信しています:アドレスバー、ブラウザ、アプリのページ、スプラッシュに 1 セットのファイルで対応しています。ctserver.everdreamsoft.com/playground から Casa Tookan で開いてみてください。

