QoreX ブラウザ拡張機能
QoreX の ブラウザ拡張機能 は、デスクトップ向けの QoreChain ウォレットです。単体で完結するウォレットであり — ウォレットの作成/インポート、QOR の保有と送金、dApp との接続ができます — また、あらゆるウェブサイトが QoreX を検出し、すべてのリクエストを明示的にデコードされた承認へと変える役割も担っています。
3つのストアで 公開・提供中 です。
インストール
| ブラウザ | インストール |
|---|---|
| Chrome および Chromium 系ブラウザ(Brave、Edge、Arc、Opera) | https://chromewebstore.google.com/detail/qorex/cflpnggbnnifibblifgbeobogdpfjpcg |
| Firefox | https://addons.mozilla.org/firefox/addon/qorex/ |
| Safari(macOS 10.14 以降) | https://apps.apple.com/us/app/qorex-wallet/id6794132220 |
どのバージョンがどこで提供されているか
ストアの審査完了時期はそれぞれ異なるため、公開されているバージョンはブラウザごとに現在異なります。
| ブラウザ | 公開バージョン |
|---|---|
| Firefox | 0.2.6 |
| Safari(macOS) | QoreX Wallet macOS アプリ内に同梱されており、独自の 1.x 番号体系を使用 — Mac App Store では現在 1.6(拡張機能 0.2.6 を内蔵)が提供されています |
| Chrome / Chromium | 8月下旬時点で長期間ストア審査待ちの状態が続いていました — 現在のバージョンは、ここに記載の数字を鵜呑みにせず、Chrome Web Store の掲載ページで直接ご確認ください |
新しい機能がお使いのブラウザにまだ反映されていない場合があります — ここで説明されている機能が利用可能だと決めつける前に、上記の表を確認してください。Dashboard から拡張機能の更新が必要だと表示された場合、それはその操作に必要な特定の最小バージョン(例えばステーキング用の 0.2.2)を意味しており、お使いのビルドが全般的に古いという意味ではありません。
0.1.5 では、Solana Wallet Standard によるディスカバリー、パスキーによるアンロック、完全実装された SVM dApp レーン、そして Dashboard 接続ブリッジが追加されました。(バージョン 0.1.4 は公開されておらず、その変更内容は 0.1.5 でユーザーに届いています。)
0.1.6〜0.1.9 では、順に、ベスティングを考慮した送金(実情を隠さない残高不足メッセージ付き)、ポップアップのホーム画面に直接表示されるアカウントアドレスとリアルタイム残高が追加されました。そして 0.1.9 では、Send から直接 @handle 宛に支払う機能、アドレスの QR コードを表示する Receive 画面、言語選択(モバイルアプリと同じ10言語に対応)、そしてベスティング残高から紛らわしい「次回ロック解除日」表示が削除されました。
0.2.2 では、拡張機能自体からのステーキングが追加されました — 専用の Stake 画面(コミッション付きのバリデーター一覧、ステーキング総額、受け取り待ちの報酬、デリゲート/デリゲート解除/報酬受け取り)。また、モバイルアプリと同様の1つのリカバリーフレーズから複数アカウントを作成する機能、Dashboard のステーキングボタンが実際に拡張機能へ届くようにする修正(拡張機能のみで作成されたウォレットは、以前は Dashboard 経由でのステーキングが一切できませんでした — Dashboard ブリッジを参照)、ブラウザからの @handle 取得の動作、そしてポップアップ下部に表示されるビルド番号も追加されました。
権限に関する要求内容は 0.1.3 以降変更されていません — QoreX が要求する権限とその理由を参照してください。
Safari では、承認はポップアップウィンドウではなくブラウザタブで開きます — 拡張機能は同じコードベースから、Apple の Safari web-extension ラッパーでパッケージ化されています。
ウォレットの作成または復元
ポップアップを開き、以下から選択してください。
- ウォレットを作成 — お使いの端末上で新しい24語のリカバリーフレーズ(256ビットのエントロピー)を生成し、あなたの QoreChain アイデンティティを導出して、パスワード(および任意でパスキー — セキュリティを参照)でボルトに封印します。
- ウォレットをインポート — 既存の24語のフレーズから復元します。
拡張機能は独自の鍵を保持しており、モバイルアプリを必要としません。ポップアップからニーモニックをエクスポートすることもできます。鍵が端末の外に出ることはありません。
拡張機能は、モバイルアプリと同様に、同じリカバリーフレーズから複数のアカウントを作成・切り替えできるようになりました — すでに書き留めたフレーズがすべてのアカウントを復元します。切り替えを行うと、送金、ステーキング、受け取り、@handle のすべてが、アクティブなアカウントに連動して切り替わります。ポートフォリオ、Q-Day Scanner、ソーシャルリカバリー、Legacy Protocol、支払いリクエスト、端末リンクは引き続きモバイル専用です — 詳しい比較は QoreX Wallet を参照してください。
アカウント、残高、@handle
ポップアップの待機画面には、あなたの qor1… アドレス(タップでコピー)とリアルタイムの QOR 残高が表示されるため、どちらを確認するにもブロックエクスプローラーを開く必要はありません。
ベスティング(ロック中)残高
アカウントにベスティング QOR(例えば未リリースの TGE 割り当てなど)がある場合、残高は 現在利用可能 と まだロック中 に分かれ、利用可能額を超える送金はネットワークに到達する前に拒否されます(オンチェーンで失敗して手数料だけ取られることはありません)。QoreX はここに意図的に「次回ロック解除日」を表示しません — ベスティングスケジュールはガバナンスによって変更され得るため、残高カードに日付を表示すると、QoreX が保証できない約束のように読めてしまうからです。正確であり続けるのは、利用可能/ロック中の内訳です。
@handle を取得する
ポップアップから、このアカウントのアドレスに対して一意の @handle(例: @liviu)を、モバイルアプリと同様に取得できます。取得申請はアカウント自身の鍵で署名され、そのアドレスに紐づけられるため、モバイルアプリと Dashboard は、誰かがあなた宛に送金する際にそれを解決できます。ハンドルが(ウォレット全体ではなく)アドレスにどのように紐づけられるかについては、@handle を参照してください。
@handle 宛に送金する
0.1.9 以降、アドレスを調べる代わりに、登録済みの @handle に直接支払うことができます。
- ポップアップを開き、Send をタップします。
- 受取人欄に、
qor1…アドレスの代わりに@に続けてハンドル(例:@liviu)を入力します。 - QoreX はハンドルを解決し、署名する前に 解決されたアドレス を表示します — 常に想定と一致しているか確認してください。
- 金額を入力して確定します。
解決結果は、QoreX が利用する前に2つの方法で検証されます。拡張機能に組み込まれた信頼キーに対して照合されるレジストリの証明、そしてハンドル所有者自身による申請への署名です。いずれかの検証に失敗したレスポンスは無条件で拒否されます — QoreX は未検証のアドレスを表示するフォールバックを行いません。あるハンドルに初めて支払う際、QoreX はその解決先アドレスを記憶(ピン留め)します。そのハンドルが後で異なるアドレスに解決された場合、QoreX は処理を止め、続行するかどうかを判断できるように新旧両方のアドレスを全文表示します。この記憶はブラウザごとに保持されるため、別のブラウザやコンピューターから同じハンドルに初めて支払う際は、そちらでも新規として表示されます。これは想定どおりの動作であり、エラーではありません。
受け取り
ポップアップの Receive をタップすると、あなたの qor1… アドレスが(QoreChain アイコン埋め込みの)QR コードとコピーボタンとともに表示されます — スマートフォンでスキャンするか、アドレスを直接ペーストしてください。
拡張機能からステーキングする
0.2.2 以降、ポップアップには専用の Stake 画面があります — 拡張機能のみで作成されたウォレットでも、ステーキング報酬を得るためにモバイルアプリを必要としなくなりました。
- ポップアップを開き、Stake に移動します。
- 画面には、コミッション付きのアクティブなバリデーター一覧、現在のステーキング総額、受け取り待ちの報酬が表示されます。ネットワークによって jailed(収監)されたバリデーターは一覧から除外されます — そのようなバリデーターにデリゲートすることは決して望ましくないためです。
- デリゲートするには、バリデーターと金額を選んで確定します。QoreX は Send と同様に、必須のハイブリッド耐量子署名で署名します。
- Unstake(デリゲート解除) と claim(報酬受け取り) も同じ画面から行えます。デリゲート解除を行うと21日間のアンボンディング期間が開始します — その意味については ステーキングとデリゲーション を参照してください。
- 0.2.6 以降では、ステーキング先を別のバリデーターに移動する(リデリゲート)こともできます — アンボンディングの待機時間もペナルティもなく、その間も報酬は途切れずに発生し続けます。仕組みについては バリデーター間でステークを移動する を参照してください(アプリと拡張機能でメカニズムは同一です)。
ステーキング、デリゲーション、報酬はすべて Native レーン上でのみ行われ、EVM プリコンパイルを経由することは決してありません。
Dashboard のステーキングリクエストを承認する
QoreChain Dashboard はステーキングリクエストを組み立てますが、署名はできません — あなたの鍵は拡張機能のボルトから外に出ることがないためです。Dashboard で Continue in QoreX をクリックすると、リクエストが拡張機能内で開き、Send と同様に、バリデーターと金額を確認して承認できます。この連携は 0.2.1 で壊れていました(拡張機能が実際には公開済みビルドの中で最新であっても「古すぎる」と報告してしまう問題で、原因はバージョンの古さではなく内部の中継処理が欠けていたことでした)。0.2.2 で修正済みです。より古いビルドをお使いの場合は、どのバージョンがどこで提供されているかを参照してください。
Dashboard は、まれにトランザクションを明確な成功ではなく downgraded と表示することがあります。これは資産の移動自体は行われたものの、そのトランザクションについてチェーン上で耐量子署名レイヤーが見つからなかったことを意味します — これはあなたの操作ミスではなく、あなたの側で修正できるものでもありません。私たちの側の不具合ですので、調査できるようサポートまでご報告ください。このメッセージは、確認して報告する時間を確保できるよう、意図的に消えずに画面に表示され続けます。
外部ネットワークで送金する
Native レーン上の QOR に加えて、ポップアップは外部ネットワーク上の資産も送金できます。すべて同じリカバリーフレーズから導出されます。
| 種類 | ネットワーク | 同梱されているトークン |
|---|---|---|
| EVM | Ethereum、BNB Chain、Polygon、Arbitrum、Base、OP Mainnet、Avalanche C-Chain | ERC-20 エントリ(各 EVM チェーンの USDC・USDT、Ethereum の DAI) |
| SVM | Solana | SPL エントリ(USDC、USDT) |
| Cosmos | Cosmos Hub、Osmosis、Celestia | IBC 経由の Noble USDC。任意のメモ欄あり |
外部送金を行う前に、次の明示的な確認事項にチェックを入れる必要があります。「外部ネットワークは従来型の署名のみを受け付けます — あなたの QOR とは異なり、この送金は量子耐性が「ありません」。」 外部チェーンは耐量子署名を扱えず、QoreX がそれを隠すことは決してありません。
対応ウォレット標準
QoreX は3つのインターフェースを公開しており、いずれもページ上に window.qorex({ evm, native, svm })として注入され、@qorechain/connect の検出コントラクトを通じて検出されます。
| 標準 | 概要 | 開発者にとっての意味 |
|---|---|---|
| EIP-1193 | Ethereum プロバイダーの JavaScript API(request(...)、イベント)。 | 既存の ethers.js/viem/web3.js のコードが、変更なしで QoreX の EVM レーンとやり取りできます。数値のエラーコード(例: 4902)はそのまま転送されます。 |
| EIP-6963 | 複数ウォレットのプロバイダー検出(announce/request イベント)。 | QoreX は他のあらゆるウォレットと並んで自身をアナウンスします — window.ethereum を上書きすることは決してありません — そのため、ユーザーはサイトごとに競合なく QoreX を選択できます。 |
Keplr パターンの signDirect | window.qorex.native 上に公開される、Cosmos の OfflineDirectSigner 形式のプロバイダー。 | Cosmos 系の dApp は、Keplr と同じ方法で QoreChain の Native レーントランザクションに署名できます。耐量子レイヤーはあらかじめ適用済みです(耐量子署名を参照)。 |
| Solana Wallet Standard(0.1.5 以降) | Solana dApp 向けのネイティブなウォレット検出(wallet-standard:register-wallet / app-ready)。 | Solana dApp は QoreX を自動検出します — 独自の統合作業は不要です。対応機能: standard:connect、standard:disconnect、standard:events、solana:signMessage、solana:signTransaction、solana:signAndSendTransaction。チェーンは solana:mainnet。legacy と v0 両方のトランザクションに対応。 |
同じインターフェースは window.qorex.svm(connect / signAndSendTransaction / signMessage)でも利用できます。Wallet-Standard による自動検出と、完全実装された SVM レーンは 0.1.5 で提供され、Chrome と Firefox の両方で利用可能です(どのバージョンがどこで提供されているかを参照)。
Solana の承認画面ではデコードされたペイロード(System 転送の場合は受取人と lamports、それ以外はプログラム一覧)が表示され、あなたのウォレットが署名者として含まれていないトランザクションは拒否され、署名は classical(従来型) として表示されます — 耐量子署名を参照してください。
言語
拡張機能は、モバイルアプリ・Dashboard・サイトと同じ10言語に対応しています: 英語、ルーマニア語、ドイツ語、スペイン語、フランス語、イタリア語、トルコ語、アラビア語、日本語、韓国語。デフォルトでは ブラウザ の言語に従います(それ以外の言語の場合は英語にフォールバック)— これはモバイルアプリが スマートフォン の言語に従うのとは異なる基準であるため、スマートフォンとブラウザの設定が異なると、両者で表示言語が異なる場合があります。ポップアップの待機画面にある言語選択から、検出された言語をいつでも上書きできます。アラビア語に切り替えると、テキストだけでなくポップアップ全体が即座に右から左のレイアウトに切り替わります。
セキュリティと権限
QoreX は、単に信頼されるだけでなく検証可能であるように作られています。
-
ボルト — あなたの鍵は AES-256-GCM で封印されます。パスワード方式では、鍵の導出に Argon2id(RFC 9106、メモリハード: 64 MiB、t=3、p=1)を使用しているため、流出したボルトのデータは GPU/ASIC による解読に耐性があります。(レガシーの PBKDF2 形式のデータも引き続き開くことができ、次回のアンロック時に Argon2id へ再封印されます。)
-
パスキーによるアンロック(任意、0.1.5 以降) — お使いの認証器が WebAuthn PRF 拡張に対応している場合、QoreX は入力したパスワードの代わりに、パスキーの32バイトの PRF 出力からボルトをアンロックできます。パスワードは常にフォールバックとして残ります。
パスキーによるアンロックが表示される場所QoreX は WebAuthn を機能検出し、ブラウザが拡張機能ページに対してそれを公開している場合にのみ パスキーによるアンロックを有効にする を表示します — 該当するのは Chrome と Edge です。Firefox ではこのオプションは表示されません。これは、Firefox が拡張機能ページに WebAuthn を公開していないためです。これは想定どおりの動作であり、不具合ではありません。
-
Manifest V3 + 厳格な CSP —
script-src 'self'; object-src 'self'; base-uri 'self'。インストール後のリモートコードの読み込みは一切なく、wasm-unsafe-evalもありません。 -
アカウント不要、テレメトリなし — 解析、トラッキング、リモートログ、サインアップ、メールアドレスの提供は一切不要です。Firefox の掲載ページでは、データ収集を
noneと明記しています。
QoreX が要求する権限とその理由
このセクションが存在する理由は、Firefox の掲載ページに「すべてのウェブサイトのデータへのアクセス」という権限が表示され、これがホスト権限を要求しないと謳うウォレットと矛盾しているように見え得るためです。以下は、マニフェストに記載された、編集を加えていないそのままの内容です。
拡張機能の manifest.json には次のように記載されています。
"permissions": ["storage"],
"host_permissions": [],
"content_scripts": [
{ "matches": ["<all_urls>"], "js": ["dist/content.js"], "run_at": "document_start" }
]
permissions: ["storage"]— 唯一の API 権限です。暗号化されたボルトと、オリジンごとの接続承認情報を拡張機能のストレージにローカルに保存するために使用されます。host_permissions: []— QoreX はいかなるホスト権限も要求していません。あなたに代わって任意のサイトへクロスオリジンのネットワークリクエストを行う能力は要求していません。content_scriptsの matches が<all_urls>— これが、Firefox が「すべてのウェブサイトのデータへのアクセス」と表示する正直な理由です。QoreX は小さなプロバイダースクリプト(content.js→inpage.js)をすべてのページに注入します。すべてのサイトで動作するコンテンツスクリプトは、技術的にはページを読み取ることが可能であり、ブラウザは、その能力の由来がhost_permissionsであってもコンテンツスクリプトのマッチであっても、まさにその文言で説明します。
なぜコンテンツスクリプトがすべてのサイトで動作するのか。 それは、あらゆる dApp が、サイトごとに事前のアクセス許可を求められることなく EIP-6963 経由でウォレットを検出できるようにするためです。これは MetaMask、Keplr、Phantom をはじめとする、注入型ウォレットすべての動作方式と同じです — 注入されたプロバイダーは、訪問先のサイトが何であれ、そのページのスクリプトが実行される前(document_start)に存在している必要があります。
このスクリプトが行うこと、行わないこと。 このスクリプトは、ウォレットのメッセージを橋渡しするだけです(プロバイダーのアナウンス、接続/署名リクエストのサービスワーカーへの転送、結果の返送)。それらのウォレットリクエスト以外でページの内容を読み取ることはなく、何かをサーバーに送信することも、リモートコードを読み込むこともありません — また、ホスト権限がないため、任意のクロスオリジンのデータを取得することもできません。これらはすべて検証可能です。拡張機能は CSP によってロックされ、解析ツールは一切搭載されておらず、Firefox 版パッケージには再現可能なソースコードの zip が同梱されています。
dApp を QoreX に接続する
dApp は EIP-6963 を通じて QoreX の EVM レーンを検出します。アナウンスとリクエストを行い、返された EIP-1193 プロバイダーを使用してください。
import type { EIP6963ProviderDetail } from "./types";
const wallets = new Map<string, EIP6963ProviderDetail>();
// 1. Collect every wallet that announces itself.
window.addEventListener("eip6963:announceProvider", (event) => {
const detail = (event as CustomEvent<EIP6963ProviderDetail>).detail;
wallets.set(detail.info.rdns, detail);
});
// 2. Ask installed wallets to announce.
window.dispatchEvent(new Event("eip6963:requestProvider"));
// 3. Pick QoreX by its rdns and use the standard EIP-1193 provider.
const qorex = wallets.get("network.qore.qorex");
if (qorex) {
const accounts = await qorex.provider.request({ method: "eth_requestAccounts" });
console.log("QoreX EVM account:", accounts[0]);
}
QoreChain の Native レーンについては、window.qorex.native にある Keplr パターンのプロバイダー(enable、getKey、signDirect)を使用してください。より高レベルな @qorechain/connect パッケージが、この検出処理をラップして提供します。
承認はオリジンごとに行われます。あるサイトへの最初の接続で、そのオリジンを示す承認ポップアップが開き、承認しても公開されるのはあなたの公開アドレスのみで、あるサイトへの承認が他のサイトに何かを許可することはありません。
Dashboard ブリッジ(v0.1.5、v0.2.2 で拡張)
バージョン 0.1.5 では、dashboard.qorechain.io のみを対象とするブリッジが追加されました。window.qorex.native.connectProof(sessionId) は Connect with QoreX のペアリング証明に署名し(バックエンドが署名を再検証します)、executeTransfer({ to, amountUqor, memo }) は Dashboard が提案した QOR 送金を承認・ブロードキャストし、txHash を返します。これらのメソッドは、それ以外のオリジンからは拒否されます。
0.2.2 では native:executeRequest が追加され、これは ステーキング を含む Dashboard 提案リクエスト全体を受け付け、QoreX が他のあらゆる箇所で使用しているのと同じ共有パーサーで検証されます。ネットワークの不一致、見覚えのないオリジン、あなたのものではないアドレス、不明なリクエスト種別、または toAddress を含むステーキングリクエスト(ステーキングリクエストには本来 toAddress はありません)の場合は拒否されます。
qor1… アドレスはメインネットとテストネットの両方で同様に有効であるため、Dashboard が提案するリクエストには対象ネットワークが明記されており、それが拡張機能が現在接続しているネットワークと一致しない場合、QoreX はそのリクエストの実行を拒否します — リクエストに応じてネットワークを勝手に切り替えることは決してありません。
耐量子署名
QoreX 自身が開始するすべての QOR 送金は、@qorechain/sdk の完全なハイブリッドパイプラインを用いて、ハイブリッド耐量子署名 — ML-DSA-87(Dilithium-5、NIST FIPS-204)と従来型の secp256k1 署名の組み合わせ — で署名されます。切り替えオプションはありません。QoreChain がこれを必須としており、QoreX が耐量子署名なしで Native レーンの QOR 送金を送信することは決してありません。
- dApp が開始する Native 署名 — qorechain-connect フローで構築された dApp は、
signDirectを呼び出す前に、トランザクション本体に PQC 拡張(/qorechain.pqc.v1.PQCHybridSignature)をあらかじめ組み込みます。QoreX は従来型署名の半分を提供し、ブラインド署名は拒否します。ペイロードをデコードし、PQC レイヤーの有無を明示します。 - 従来型のリクエストには常にラベルが付きます — リクエストに PQC レイヤーが含まれない場合、または(PQC を扱えない)ETH/BNB などの外部チェーンを対象とする場合、QoreX は黙って降格させるのではなく、明示的な警告を表示します。
これがトランザクションサイズに与える影響。 ML-DSA-87 は大きな署名です。署名は 4,627 バイト、公開鍵は 2,592 バイト(FIPS-204 により固定)です。そのため、ハイブリッドの QoreChain トランザクションは、純粋な従来型トランザクションよりも数キロバイト大きくなります。自前でトランザクションを構築・ブロードキャストする場合は、この追加バイト分を見込んでバッファとガス見積もりのサイズを調整してください。QoreChain のガス計算はすでにこれを見込んでいます。プリミティブと決定論的署名の要件については、耐量子署名 を参照してください。