QoreX ブラウザ拡張機能
QoreX の ブラウザ拡張機能 は、デスクトップ向けの QoreChain ウォレットです。単体で完結するウォレットであり(ウォレットの作成/インポート、QOR の保有・送金・ステーキング、dApp との接続ができます)、あらゆるウェブサイトが QoreX を検出し、すべてのリクエストを明示的にデコードされた承認へと変える役割も担っています。デスクトップブラウザから QoreChain を使うすべての人と、自分のウェブアプリを QoreChain ウォレットに対応させたい開発者を対象としています。
3つのストア(Chrome、Firefox、Safari)で 公開・提供中 です。現在、最新のビルドを提供しているのは Firefox で、Chrome と Safari は1リリース遅れています。どのバージョンがどこで提供されているかを参照してください。
革新的な点
signAndBroadcast。 dApp はメッセージを送ります。ウォレットはデコードしたすべてのメッセージと手数料を表示したうえで、ウォレットだけが作成できる ML-DSA-87 レイヤーを追加し、ブロードキャストします。ページが ML-DSA-87 鍵を保持することはありません。signDirectはレイヤーを登録済みの鍵に対して確認します。 dApp が自ら ML-DSA-87 レイヤーを付けた場合、QoreX は承認ウィンドウが開く前に、そのレイヤーをアカウントのオンチェーンに登録された鍵に対して確認します。従来型署名のみのトランザクションは拒否されます。これは推奨される経路ではありません(制限事項を参照)。- API 権限は1つだけ。 拡張機能の API 権限は
storageだけで、ホスト権限はなく、解析、クラッシュレポート、トラッキングのコードもありません。QoreX が要求する権限を参照してください。 - 封印されたボルト。 ボルトはパスワードから導出した鍵(Argon2id)のもとで AES-256-GCM により暗号化されます。ブラウザが WebAuthn PRF を公開している場合(Chrome と Edge)は、パスキーでアンロックすることもできます。パスワードは常にフォールバックとして残ります。
- 乗っ取らない検出。 QoreX は EIP-6963(
rdnsはnetwork.qore.qorex)と Solana Wallet Standard で自身をアナウンスします。window.ethereumやwindow.keplrを上書きすることは決してありません。 - ブラウザが識別する、オリジンごとの承認。 サイトとは、リクエストが主張する内容ではなく、ブラウザ自身が証明するオリジンのことです。同じフィールドを繰り返して2通りに読めるようにしたリクエストは拒否されます。
使い方
- 拡張機能をインストールし(アクセス方法を参照)、ポップアップを開きます。
- 新しいウォレットを作成(パスワードを設定すると、24語が一度だけ表示されます)または リカバリーフレーズをインポート を選びます。ウォレットの作成または復元を参照してください。
- ポップアップの Send、Receive、Stake、コインとトークン を使います。拡張機能からステーキングすると外部ネットワークで送金するを参照してください。
- dApp を開きます。最初の接続ではサイトのオリジンを示す承認が表示され、承認しても公開されるのはあなたの公開アドレスだけです。サイトは接続済みサイトでいつでも取り消せます。
- 開発者は、EIP-6963 で QoreX を検出し、
signAndBroadcastでトランザクションを送ります。dApp を QoreX に接続すると dApp から QoreChain トランザクションを送信するを参照してください。
アクセス方法
必要なのはデスクトップブラウザだけです。アカウントも、サインアップも、モバイルアプリも不要です。送金やステーキングの際にはネットワーク手数料がかかります(ネットワークの下限はガス1あたり 0.1 uqor)。拡張機能は設定されているネットワークに従い、メインネット qorechain-vladi がデフォルトです。
インストール
| ブラウザ | インストール |
|---|---|
| Chrome および Chromium 系ブラウザ(Brave、Edge、Arc、Opera) | https://chromewebstore.google.com/detail/qorex/cflpnggbnnifibblifgbeobogdpfjpcg |
| Firefox(Firefox 140 以降) | https://addons.mozilla.org/firefox/addon/qorex/ |
| Safari(macOS 12 以降) | https://apps.apple.com/us/app/qorex-wallet/id6794132220 |
インストールは、必ずこれらの掲載ページから行ってください。
どのバージョンがどこで提供されているか
2026年10月27日時点での各ストアの現在のバージョン:
| ストア | 現在のバージョン |
|---|---|
| Chrome ウェブストア | 0.3.8 |
| Firefox アドオン | 0.3.9 |
| Safari(Mac App Store、QoreX Wallet macOS アプリ) | 1.7.8、拡張機能 0.3.8 を内蔵(Mac App Store は独自の 1.x 番号体系を使用) |
ストアの審査完了時期はそれぞれ異なるため、ストアによっては他のストアより古いビルドが提供されることがあります。ストアの掲載ページには常に現在のバージョンが表示されます。どのバージョンがどこで提供されているかも参照してください。
Firefox 0.3.9 では、ステーキングロック、承認画面での IBC 送金メモの平易な表示、そして MetaMask からインポートしたアカウントからのステーキングが追加されました。Chrome と Safari は、各ストアが 0.3.9 のビルドを提供するようになった時点で、これらを搭載します。
0.2.6 以降、拡張機能には次の機能が追加されました: 1つのパスワードで複数のウォレット、手動で追加するイーサリアム形式のアカウント、Claim & restake、Unstaking 進行中の一覧、コントラクトによるトークンの追加、任意のネットワークでの受け取り、Revoke 付きの接続済みサイト、EVM アクセスウィンドウ、dApp 向けの signAndBroadcast、そしてすべてのメッセージ・手数料・有効期限を表示する承認画面。
権限に関する要求内容は 0.1.3 以降変更されていません。 QoreX が要求する権限とその理由を参照してください。
Safari では、承認はポップアップウィンドウではなくブラウザタブで開きます。拡張機能は同じコードベースから、Apple の Safari web-extension ラッパーでパッケージ化されています。
ウォレットの作成または復元
ポップアップを開き、以下から選択してください。
- 新しいウォレットを作成 - パスワード(8文字以上)を設定すると、QoreX はお使いの端末上で新しい24語のリカバリーフレーズ(256ビットのエントロピー)を生成し、あなたの QoreChain アイデンティティを導出して、そのパスワード(および任意でパスキー - セキュリティを参照)でボルトに封印します。24語は一度だけ表示されます。書き留めて、リカバリーフレーズを安全な場所に保管しました にチェックを入れてから先へ進んでください。後からポップアップの リカバリーフレーズを表示 で再表示できます(パスワードが必要です)。
- リカバリーフレーズをインポート - 既存のフレーズから復元します。24語未満のフレーズでも資産は通常どおり復元されますが、その場合、あなたの ML-DSA-87 鍵の強度はフレーズ自体の強度にとどまることを QoreX が警告します。フル強度を得るには、新しい24語のウォレットを作成して資産を移してください。
拡張機能のボルトは、このブラウザ内にのみ存在します。拡張機能を削除する、そのデータを消去する、またはブラウザをリセットすると、鍵は削除されます。QoreChain Association を含め、誰もそれらを復元できません。書き留めた24語がなければ、資産は永久に失われます。今すぐバックアップを参照してください。
拡張機能は独自の鍵を保持しており、モバイルアプリを必要としません。鍵が端末の外に出ることはありません。
複数のウォレットとアカウント
- ウォレット(0.3.3 以降)- ポップアップの ウォレット 画面(「このブラウザ内のウォレット」)に、このブラウザ内のすべてのウォレットが一覧表示されます。それぞれが独自のリカバリーフレーズを持ち、1つのパスワードですべてのロックが解除されます。切り替えると、QoreX が表示・署名に使用するウォレットが変わります(チェーン上では何も動きません)。ウォレットは、新規作成(フレーズは一度だけ表示)または復元によって追加できます。ボルトを再封印するため、パスワードは一度だけ求められます。ウォレットを追加または削除するとパスキーによるアンロックがオフになります。ホーム画面から再度オンにしてください。削除するには、このブラウザから削除 をタップしてパスワードを入力します。最後の1つのウォレットは、この画面からは削除できません。削除するとその鍵はブラウザから消えます。元に戻せるのはそのリカバリーフレーズだけです。
- アカウント(0.2.2 以降)- あなたのアカウント では、同じフレーズから複数のアカウントを作成・切り替えできます(ウォレットごとに最大20個。番号が振られ、名前は変更できません)。書き留めたフレーズを復元すると アカウント 1 が戻ります。他のアカウントは アカウントを追加 で再度追加してください。切り替えを行うと、送金、ステーキング、受け取り、@handle が、アクティブなアカウントに連動して切り替わります。
イーサリアム形式のアカウント
0.3.2 以降、(あなたのアカウント 画面にある)イーサリアムアカウント(coin 60)を追加 により、MetaMask または Dashboard で最初に使われたフレーズのアカウントを追加できます。MetaMask または Dashboard のフレーズを復元するを参照してください。その 0x アドレスは、同じ単語に対して MetaMask が表示するアドレスです。このアカウントではハンドルは提供されません。Firefox 0.3.9 以降では、このアカウントから拡張機能内でステーキングできます。
ポートフォリオ、Q-Day Scanner、ソーシャルリカバリー、Legacy Protocol、支払いリクエスト、アカウントのサインイン、端末リンクは引き続きモバイル専用です。QoreX Wallet を参照してください。
アカウント、残高、@handle
ポップアップの待機画面には、あなたの qor1… アドレス(タップでコピー)とリアルタイムの QOR 残高が表示されるため、どちらを確認するにもブロックエクスプローラーを開く必要はありません。
ベスティング(ロック中)残高
アカウントにベスティング QOR(例えば未リリースの TGE 割り当てなど)がある場合、残高は 現在利用可能 と まだロック中 に分かれ、利用可能額を超える送金はネットワークに到達する前に拒否されます(オンチェーンで失敗して手数料だけ取られることはありません)。QoreX はここに意図的に「次回ロック解除日」を表示しません。ベスティングスケジュールはガバナンスによって変更され得るため、残高カードに日付を表示すると、QoreX が保証できない約束のように読めてしまうからです。正確であり続けるのは、利用可能/ロック中の内訳です。
@handle を取得する
一意の @handle(例: @liviu)の取得にはサインイン済みのアカウントが必要で、モバイルアプリ内で行います。拡張機能はそちらへ案内するだけで、自身ではハンドルを取得しません。取得されたハンドルはそのアドレスに紐づけられるため、拡張機能はあなたがそれに支払う際にこれを解決し、他の人もあなたに名前で支払えるようになります。ハンドルが(ウォレット全体ではなく)アドレスにどのように紐づけられるかについては、@handle を参照してください。
@handle 宛に送金する
0.1.9 以降、アドレスを調べる代わりに、登録済みの @handle に直接支払うことができます(ハンドルの検索は、0.3.6 までのバージョンでは不具合により中断されていましたが、0.3.7 以降は再び動作します)。
- ポップアップを開き、Send をタップします。
- 受取人欄に、
qor1…アドレスの代わりに@に続けてハンドル(例:@liviu)を入力します。 - QoreX はハンドルを解決し、署名する前に 解決されたアドレス を表示します。常に想定と一致しているか確認してください。
- 金額を入力して確定します。
解決結果は、QoreX が利用する前に2つの方法で検証されます。拡張機能に組み込まれた信頼キーに対して照合されるレジストリの証明、そしてハンドル所有者自身による申請への署名です。いずれかの検証に失敗したレスポンスは無条件で拒否されます。QoreX は未検証のアドレスを表示するフォールバックを行いません。あるハンドルに初めて支払う際、QoreX はその解決先アドレスを記憶(ピン留め)します。そのハンドルが後で異なるアドレスに解決された場合、QoreX は処理を止め、続行するかどうかを判断できるように新旧両方のアドレスを全文表示します。この記憶はブラウザごとに保持されるため、別のブラウザやコンピューターから同じハンドルに初めて支払う際は、そちらでも新規として表示されます。これは想定どおりの動作であり、エラーではありません。
受け取り
ポップアップの Receive をタップすると、あなたの qor1… アドレスが(QoreChain アイコン埋め込みの)QR コードとコピーボタンとともに表示されます。スマートフォンでスキャンするか、アドレスを直接ペーストしてください。
ネットワーク選択。 Receive では、Ethereum、BNB Chain、Polygon、Arbitrum、Base、OP Mainnet、Avalanche、Solana、Cosmos Hub、Osmosis、Celestia のアドレスも表示でき、それぞれに「このネットワーク専用」の警告が付きます(QoreChain は常に先頭です)。
拡張機能からステーキングする
0.2.2 以降、ポップアップには専用の Stake 画面があります。拡張機能のみで作成されたウォレットでも、ステーキング報酬を得るためにモバイルアプリを必要としなくなりました。
- ポップアップを開き、Stake に移動します。
- 画面には、コミッション付きのアクティブなバリデーター一覧、現在のステーキング総額、受け取り待ちの報酬が表示されます。ネットワークによって jailed(収監)されたバリデーターは一覧から除外されます。そのようなバリデーターにデリゲートすることは決して望ましくないためです。
- デリゲートするには、バリデーターと金額を選んで確定します。QoreX は Send と同様に、必須のハイブリッド署名(secp256k1 と ML-DSA-87)で署名します。入力中は、その金額だとトランザクション手数料分を下回る残高しか残らない場合に警告します(アカウントが再び QOR を保有するまで、デリゲート解除や報酬受け取りができなくなります)。複数のアカウントがある場合は、Stake 画面のアカウントセレクターでステーキングに使うアカウントを選択します。
- Claim(報酬受け取り) は報酬を回収します。Claim & restake は、報酬を生み出したバリデーターに対して、1回のトランザクションで再びステークします。QoreX はまず、ロック解除済みの QOR で手数料を支払えるか確認し(手数料は報酬が届く前に支払われます)、不足している場合はお知らせします。
- Unstake(デリゲート解除) で21日間のアンボンディング期間が開始し、金額は残り時間とともに Unstaking 進行中 に表示されます。ステーキングとデリゲーションを参照してください。
- ステークを移動 は、ステーキング先を1つまたは複数の別のバリデーターに移動します(リデリゲート)。アンボンディングの待機時間もペナルティもなく、報酬も途切れず発生し続けます。バリデーター間でステークを移動するを参照してください。
ステーキング、デリゲーション、報酬はすべて Native レーン上でのみ行われ、EVM プリコンパイルを経由することは決してありません。Firefox 0.3.9 ではステーキングロックも追加されています。
Dashboard のステーキングリクエストを承認する
QoreChain Dashboard はステーキングリクエストを組み立てますが、署名はできません。あなたの鍵は拡張機能のボルトから外に出ることがないためです。Dashboard で Continue in QoreX をクリックすると、リクエストが拡張機能内で開き、Send と同様に、バリデーターと金額を確認して承認できます。
Dashboard は、まれにトランザクションを明確な成功ではなく downgraded と表示することがあります。これは資産の移動自体は行われたものの、そのトランザクションについてチェーン上で ML-DSA-87 署名レイヤーが見つからなかったことを意味します。これはあなたの操作ミスではなく、あなたの側で修正できるものでもありません。私たちの側の不具合ですので、調査できるようサポートまでご報告ください。このメッセージは、確認して報告する時間を確保できるよう、意図的に消えずに画面に表示され続けます。
外部ネットワークで送金する
Native レーン上の QOR に加えて、ポップアップは外部ネットワーク上の資産も送金できます。すべて同じリカバリーフレーズから導出されます(EVM ネットワークでは、確定前に最大ネットワーク手数料(「Network fee: at most …」)が表示されます)。
| 種類 | ネットワーク | 同梱されているトークン |
|---|---|---|
| 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。任意のメモ欄あり |
外部送金を行う前に、次の明示的な確認事項にチェックを入れる必要があります。"External networks accept only classical signatures — unlike your QOR, this transfer is NOT quantum-safe." これは現行ビルドが表示するそのままの文言です。外部チェーンは ML-DSA-87 署名を扱えず、QoreX がそれを隠すことは決してありません。
対応ウォレット標準
QoreX は3つのインターフェースを公開しており、いずれもページ上に window.qorex({ evm, native, svm })として注入され、EIP-6963 と Solana Wallet Standard を通じて検出されます。ウェブアプリでは、ウォレットアダプターがこの検出をラップします。
| 標準 | 概要 | 開発者にとっての意味 |
|---|---|---|
| EIP-1193 | Ethereum プロバイダーの JavaScript API(request(...)、イベント)。 | QoreX の EVM プロバイダーは、アカウントとネットワークに関する問い合わせに応答します - eth_requestAccounts、eth_accounts、eth_chainId、wallet_switchEthereumChain(それ以外のチェーンは標準の 4902 を返します)。EVM のトランザクションやメッセージへの署名・送信は、まだ行いません。その他のメソッドは「EVM method … not yet supported」を返します。EVM レーンのトランザクションには MetaMask など別の EVM ウォレットを使用してください(こちらも、開いた EVM アクセスウィンドウが必要になりました)。 |
| EIP-6963 | 複数ウォレットのプロバイダー検出(announce/request イベント)。 | QoreX は他のあらゆるウォレットと並んで自身をアナウンスします。window.ethereum を上書きすることは決してないため、ユーザーはサイトごとに競合なく QoreX を選択できます。 |
| Native プロバイダー(Keplr 形式) | window.qorex.native: enable、getKey、signAndBroadcast、signDirect、および capabilities の一覧。Keplr の完全な代替ではありません。QoreX は window.keplr のエイリアスを作らず、signAmino と sendTx もありません。 | QoreChain のトランザクションを送るには signAndBroadcast を呼び出します(QoreChain トランザクションの送信を参照)。QoreX はデコードしたメッセージと手数料を表示し、ウォレットだけが作成できる ML-DSA-87 レイヤーを追加して、ブロードキャストします。signDirect は利用できますが、推奨される経路ではありません。ページが付けたレイヤーを、承認ウィンドウが開く前にアカウントの登録済みの鍵に対して確認し、従来型署名のみのトランザクションは拒否します。 |
| 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 の承認画面では命令ごとに1行が表示され、QoreX がデコードできるものはデコードされます。SOL 転送(受取人と lamports)、SPL トークン転送、"ALLOW SPENDING of your tokens"(approve)、"HAND OVER control of the account"(set authority)、トークンアカウントのクローズ。それ以外は、プログラムとともに「instruction QoreX cannot read」と表示されます。approve または set authority 命令を含むリクエストには、「wants authority over your Solana tokens - read every line below」という見出しが付きます。あなたのウォレットが署名者として含まれていないトランザクションは拒否され、signMessage は実際にはトランザクションであるバイト列には署名せず、署名は classical(従来型) として表示されます。ハイブリッド署名を参照してください。
コインとトークン
ポップアップの コインとトークン 画面では、ERC-20 トークンをコントラクトで追加できます。ネットワークを選び、コントラクトアドレスを貼り付けて、コントラクトを確認 を押します。QoreX はトークンの名前と小数桁数をコントラクト自体から読み取り(ポップアップを信用せず、追加時にもバックグラウンドで再度読み取ります)、その後、誰でも任意の名前のトークンを作成できるというリマインダーとともに表示します。その後、トークンは 外部ネットワークで送金する に表示されます。同梱済みのトークン、重複、EVM 以外のネットワーク、不正なアドレス、読み取れないコントラクト、そして同梱トークンの名前を借用しているコントラクトは拒否されます。
接続済みサイト
ポップアップの 接続済みサイト には、このウォレットが承認したすべてのサイトが一覧表示されます。サイトはこのウォレットのアドレスを確認でき、署名を求めることができます。Revoke をタップすると削除できます。承認はウォレットごとに保持されます。あるウォレットに対して承認されたサイトは、切り替え後に別のウォレットのアドレスを読み取ることはできません。
EVM アクセスウィンドウ
ポップアップの EVM アクセスウィンドウ 画面では、イーサリアム形式(coin 60)のアカウントが QoreChain の EVM レーン(v3.2.0 以降)で送金できるようにするウィンドウを開閉します。アプリと同じ画面で、同じ制限があります(最大 17,280 ブロックと 1,000 トランザクション、および各金額とその最大手数料を合算してカウントする QOR 上限)。EVM アクセスウィンドウを参照してください。
言語
拡張機能は、モバイルアプリ・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もありません。 -
解析なし、クラッシュレポートなし、トラッキング SDK なし、サインアップなし - QOR の保有、送金、ステーキングにアカウントは不要です。あなたの鍵、リカバリーフレーズ、ボルト、承認情報がブラウザの外に出ることはありません。ただし、ネットワークリクエストは行います。残高、履歴、ブロードキャストのための QoreChain のパブリックエンドポイント(これらにはあなたの公開
qor1…アドレスが含まれます)、価格の取得(アドレスなし)、保有または閲覧している外部ネットワークのパブリックサービス(そのネットワーク上のあなたの公開アドレス)、そして @handle レジストリ(ハンドル、または公開アドレス)です。Dashboard ペアリングを使用する場合に限り、あなたがそのアドレスを所有していることの署名付き証明を送信します。QoreX がネットワーク経由で送信する内容を参照してください。
QoreX が要求する権限とその理由
このセクションが存在する理由は、Firefox の掲載ページに「すべてのウェブサイトのデータへのアクセス」という権限が表示され、これがホスト権限を宣言しないウォレットと矛盾しているように見え得るためです。以下は、マニフェストに記載された、編集を加えていないそのままの内容です。
拡張機能の manifest.json には次のように記載されています。
"permissions": ["storage"],
"host_permissions": [],
"content_scripts": [
{ "matches": ["<all_urls>"], "js": ["dist/content.js"], "run_at": "document_start" }
],
"web_accessible_resources": [
{ "resources": ["dist/inpage.js"], "matches": ["<all_urls>"], "use_dynamic_url": true }
]
permissions: ["storage"]- 唯一の API 権限です。暗号化されたボルトと、オリジンごとの接続承認情報を拡張機能のストレージにローカルに保存するために使用されます。host_permissions: []- QoreX はいかなるホスト権限も宣言していません。あなたに代わって任意のサイトへクロスオリジンのネットワークリクエストを行う能力は要求していません。web_accessible_resources- ページが QoreX 自身のinpage.js(プロバイダーを公開する小さなスクリプト)を読み込めるようにします。use_dynamic_urlにより、セッションごとのアドレスが割り当てられるため、サイトが存在を探ることで拡張機能をフィンガープリントすることはできません。content_scriptsの matches が<all_urls>- これが、Firefox が「すべてのウェブサイトのデータへのアクセス」と表示する正直な理由です。QoreX は小さなプロバイダースクリプト(content.js→inpage.js)をすべてのページに注入します。すべてのサイトで動作するコンテンツスクリプトは、技術的にはページを読み取ることが可能であり、ブラウザは、その能力の由来がhost_permissionsであってもコンテンツスクリプトのマッチであっても、まさにその文言で説明します。
なぜコンテンツスクリプトがすべてのサイトで動作するのか。 それは、あらゆる dApp が、サイトごとに事前のアクセス許可を求められることなく EIP-6963 経由でウォレットを検出できるようにするためです。これは MetaMask、Keplr、Phantom をはじめとする、注入型ウォレットすべての動作方式と同じです。注入されたプロバイダーは、訪問先のサイトが何であれ、そのページのスクリプトが実行される前(document_start)に存在している必要があります。
このスクリプトが行うこと、行わないこと。 このスクリプトは、ウォレットのメッセージを橋渡しするだけです(プロバイダーのアナウンス、接続/署名リクエストのサービスワーカーへの転送、結果の返送)。それらのウォレットリクエスト以外でページの内容を読み取ることはなく、何かをサーバーに送信することも、リモートコードを読み込むこともありません。また、ホスト権限がないため、任意のクロスオリジンのデータを取得することもできません。これらはすべて検証可能です。拡張機能は CSP によってロックされ、解析ツールは一切搭載されておらず、そのマニフェスト(上記)はインストールされたパッケージ内で読むことができます。
dApp を QoreX に接続する
dApp は EIP-6963 を通じて QoreX を検出します。アナウンスとリクエストを行い、返された 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 にあるプロバイダー(enable、getKey、signAndBroadcast、signDirect。このビルドが対応する機能は capabilities を読んで確認してください)を使用してください。ウェブアプリでは、ウォレットアダプターがこの EIP-6963 の検出をラップして提供し、QoreX デベロッパーキットがアプリ側の統合を扱います。(@qorechain/connect は非推奨です。これを使った新しい作業は始めないでください。)
承認はオリジンごとに行われます。あるサイトへの最初の接続で、そのオリジンを示す承認ポップアップが開き、承認しても公開されるのはあなたの公開アドレスのみで、あるサイトへの承認が他のサイトに何かを許可することはありません。承認はウォレットごとに保持され、接続済みサイトで取り消すまで保持されます。1つのサイトが待機させられるリクエストは1件です(合計で3件まで)。ウォレットの切り替えやロックを行うと、待機中のリクエストには「拒否」が返されます。承認ウィンドウに表示される内容を参照してください。
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 はありません)の場合は拒否されます。リクエスト種別は、send、delegate、undelegate、redelegate、claim です。Connect リクエストでは、リンクするアカウントを選択でき、listAccounts() はあなたのアカウントを返します(読み取り専用)。
qor1… アドレスはメインネットとテストネットの両方で同様に有効であるため、Dashboard が提案するリクエストには対象ネットワークが明記されており、それが拡張機能が現在接続しているネットワークと一致しない場合、QoreX はそのリクエストの実行を拒否します。リクエストに応じてネットワークを勝手に切り替えることは決してありません。
dApp から QoreChain トランザクションを送信する: signAndBroadcast
ML-DSA-87 鍵が登録されたアカウントからの QoreChain のネイティブレーンのトランザクションはすべて、ハイブリッド署名(secp256k1 と ML-DSA-87)を必要とします。ML-DSA 鍵を保持しているのはウォレットだけなので、ページ側でそれを構築することはできません。メッセージを送るだけで、あとは QoreX が行います。デコードしたメッセージと手数料を表示し、ユーザーが選択したアカウントのトランザクションを構築し、ハイブリッド署名を追加し(これがそのアカウントの最初のトランザクションであれば、先にアカウントの ML-DSA-87 鍵を登録します)、ブロードキャストして、結果とともに解決します。拡張機能 0.3.5 およびアプリ 1.1.5 以降で利用できます(現在のすべてのストアビルド)。
const provider = window.qorex.native;
if (!provider.capabilities?.includes("signAndBroadcast")) {
throw new Error("Please update QoreX");
}
await provider.enable("qorechain-vladi"); // connect, once per site
const res = await provider.signAndBroadcast({
chainId: "qorechain-vladi", // must be the wallet's active network
messages: [{ typeUrl: "/cosmos.bank.v1beta1.MsgSend", value: msgSendBytes }], // protobuf bytes: Uint8Array, number[] or base64
memo: "", // optional, up to 256 bytes
gasLimit: 300000, // optional
});
// → { txHash, code, height? }
chainIdはウォレットのアクティブなネットワーク(メインネットではqorechain-vladi)と一致する必要があります。dApp がネットワークを切り替えることはできず、切り替えられるのはユーザーだけです。- 1回の呼び出しにつき 1-32 件のメッセージ。メッセージのバイト列は、送信されたとおりに署名されます。
- 手数料(
gasLimit× ネットワークのガス価格)は承認前に表示されます。拒否された場合はQoreX: signature rejectedが throw されます。 - ML-DSA-87 鍵の管理(登録、移行、ローテーション。authz の
MsgExec内のものも含む)は拒否されます。アカウントの鍵はウォレット自身が管理します。
ハイブリッド署名
QoreX 自身が開始するすべてのネイティブ QOR 送金は、@qorechain/sdk のハイブリッドパイプラインを用いて、従来型の secp256k1 鍵と ML-DSA-87(FIPS 204)の2つで署名されます。切り替えオプションはありません。QoreChain がこれを必須としており、QoreX がこれなしで Native レーンの QOR 送金を送信することは決してありません。
- dApp が開始する Native 署名 -
signAndBroadcastを使用してください。QoreX はすべてのメッセージをデコードし、手数料を表示し、ML-DSA-87 レイヤーを自ら追加します。signDirectはページが構築したトランザクションに署名しますが、推奨される経路ではありません。ページが付けたレイヤーは承認ウィンドウが開く前にアカウントの登録済みの鍵に対して確認され、従来型署名のみのトランザクションは拒否されるためです(signAndBroadcastを使用するイーサリアム形式のアカウントに対しても拒否されます)。QoreX はブラインド署名を一切行いません。デコードできないリクエストは拒否され、従来型署名のみの QoreChain トランザクションには決して署名しません。 - 従来型の署名には常にラベルが付きます - 外部ネットワーク(ETH、BNB、Solana など)への送金は ML-DSA-87 署名を扱えません。QoreX は明示的な確認事項へのチェックを求め、黙って降格させるのではなく、従来型としてマークします。
これがトランザクションサイズに与える影響。 ML-DSA-87 は大きな署名です。署名は 4,627 バイト、公開鍵は 2,592 バイト(FIPS-204 により固定)です。そのため、ハイブリッドの QoreChain トランザクションは、純粋な従来型トランザクションよりも数キロバイト大きくなります。自前でトランザクションを構築・ブロードキャストする場合は、この追加バイト分を見込んでバッファとガス見積もりのサイズを調整してください。QoreChain のガス計算はすでにこれを見込んでいます。プリミティブと決定論的署名の要件については、開発者ガイドのポスト量子署名を参照してください。
公開されている場所
| ストア | 掲載名 | 現在のバージョン | リンク |
|---|---|---|---|
| Chrome ウェブストア | QoreX | 0.3.8 | chromewebstore.google.com |
| Firefox アドオン | qorex | 0.3.9 | addons.mozilla.org |
| Mac App Store(Safari) | QoreX Wallet、アプリ 1.7.8 | 拡張機能 0.3.8 | apps.apple.com |
QoreX のソースコードは公開されていません。バージョンは2026年10月27日時点のもので、ストアの掲載ページには常に現在のバージョンが表示されます。
制限事項と既知の問題
- EVM プロバイダーが応答するのは、アカウントとネットワークに関する問い合わせだけです。 EVM のトランザクションやメッセージへの署名・送信は、まだ行いません。EVM レーンのトランザクションには MetaMask など別の EVM ウォレットを使用してください。これも、開いた EVM アクセスウィンドウが必要です。EVM トランザクションが持つのは secp256k1 署名のみです。
window.qorex.nativeは Keplr 形式であり、Keplr の完全な代替ではありません。window.keplrのエイリアスはありません。signAminoとsendTxはありません。getOfflineSignerが動作するのは、ページ自身が ML-DSA-87 レイヤーを付ける場合に限られ、getOfflineSigner経由でウォレットがレイヤーを追加することには対応していません。signArbitrary(メッセージ署名)には対応していません。サポートされるネイティブの経路はwindow.qorex.native.signAndBroadcastです。- モバイル専用: ポートフォリオ、Q-Day Scanner、ソーシャルリカバリー、Legacy、支払いリクエスト、サインイン、端末リンク、@handle の取得。
- 拡張機能には Swap 画面がありません。
- パスキーによるアンロックが提供されるのは、ブラウザが拡張機能ページに WebAuthn を公開している場合(Chrome と Edge)のみで、Firefox では表示されません。
- Safari では、承認はポップアップではなくブラウザタブで開きます。
- 外部ネットワークが受け付けるのは従来型署名のみです。QoreX は送金のたびにこれを確認するよう求めます。
- 執筆時点では、Chrome と Safari は Firefox より1リリース遅れています(バージョンを参照)。
- 拡張機能のボルトは、このブラウザ内にのみ存在します。拡張機能を削除する、そのデータを消去する、またはブラウザをリセットすると鍵は削除されます。復元できるのは、書き留めた24語だけです。