إضافة متصفح QoreX
إضافة المتصفح الخاصة بـ QoreX هي محفظة QoreChain لسطح المكتب. إنها محفظة قائمة بذاتها (أنشئ محفظة أو استوردها، واحتفظ بـ QOR وأرسله وارهنه، واتصل بتطبيقات dApp) وهي القطعة التي تتيح لأي موقع اكتشاف QoreX وتحويل كل طلب إلى موافقة صريحة ومفكوكة الترميز. وهي موجهة لكل من يستخدم QoreChain من متصفح سطح المكتب، وللمطورين الذين يريدون أن يعمل تطبيق الويب الخاص بهم مع محفظة QoreChain.
وهي متاحة ومنشورة للعموم في ثلاثة متاجر (Chrome وFirefox وSafari). يحمل Firefox حاليًا أحدث بناء؛ ويتأخر Chrome وSafari عنه بإصدار واحد. راجع أي إصدار متاح وأين.
الابتكارات
signAndBroadcast. يرسل تطبيق dApp الرسائل؛ وتعرض المحفظة كل رسالة مفكوكة الترميز والرسوم، ثم تضيف طبقة ML-DSA-87 التي لا تستطيع صنعها إلا المحفظة، وتبثّ المعاملة. ولا تحتفظ الصفحة أبدًا بمفتاح ML-DSA-87.signDirectيتحقق من الطبقة مقابل المفتاح المسجَّل. إذا أرفق تطبيق dApp طبقة ML-DSA-87 بنفسه، يتحقق QoreX منها مقابل المفتاح المسجَّل للحساب على السلسلة قبل أن تُفتح أي نافذة موافقة. وتُرفض المعاملة الكلاسيكية فقط. وهذا ليس المسار الموصى به (راجع الحدود).- إذن واحد للواجهة البرمجية. إذن الواجهة البرمجية الوحيد للإضافة هو
storage، ولا توجد أذونات مضيف، ولا توجد شيفرة تحليلات أو تقارير أعطال أو تتبّع. راجع ما هي الأذونات التي يطلبها QoreX. - خزنة مختومة. تُشفَّر الخزنة بـ AES-256-GCM تحت مفتاح مشتق من كلمة المرور (Argon2id). وحيثما يتيح المتصفح WebAuthn PRF (Chrome وEdge) يمكنك فتح القفل بمفتاح مرور (passkey) بدلًا من ذلك؛ وتبقى كلمة المرور دائمًا خيارًا احتياطيًا.
- اكتشاف دون استحواذ. يعلن QoreX عن نفسه عبر EIP-6963 (
rdnsnetwork.qore.qorex) وSolana Wallet Standard. ولا يستبدل أبدًاwindow.ethereumولاwindow.keplr. - موافقات لكل أصل، يحدده المتصفح. الموقع هو الأصل الذي يشهد به المتصفح نفسه، لا ما يدّعيه الطلب. والطلب الذي يكرر حقلًا بحيث يمكن قراءته بطريقتين يُرفض.
طريقة الاستخدام
- ثبّت الإضافة (راجع طريقة الوصول) وافتح النافذة المنبثقة.
- اختر إنشاء محفظة جديدة (كلمة مرور، ثم 24 كلمة تُعرض مرة واحدة) أو استيراد عبارة استرداد. راجع إنشاء محفظة أو استعادتها.
- استخدم إرسال واستلام ورهن والعملات والرموز في النافذة المنبثقة. راجع الرهن من الإضافة والإرسال على الشبكات الخارجية.
- افتح تطبيق dApp. يعرض الاتصال الأول موافقة مع أصل الموقع؛ والموافقة تكشف عنوانك العام فقط. ألغِ أي موقع ضمن المواقع المتصلة.
- إذا كنت مطورًا، فاكتشف QoreX عبر EIP-6963 وأرسل معاملة بـ
signAndBroadcast. راجع ربط تطبيق dApp بـ QoreX وإرسال معاملة QoreChain من تطبيق dApp.
طريقة الوصول
لا تحتاج إلا إلى متصفح سطح المكتب: بلا حساب، وبلا تسجيل اشتراك، وبلا تطبيق هاتف. تُطبَّق رسوم الشبكة عند الإرسال أو الرهن (الحد الأدنى في الشبكة هو 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 |
ثبّت دائمًا من إحدى هذه الصفحات.
أي إصدار متاح وأين
الإصدار الحالي في كل متجر، اعتبارًا من 27 أكتوبر 2026:
| المتجر | الإصدار الحالي |
|---|---|
| Chrome Web Store | 0.3.8 |
| Firefox Add-ons | 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 أضافت الإضافة: عدة محافظ بكلمة مرور واحدة، وحسابًا بنمط Ethereum تضيفه يدويًا، وClaim & restake، وقائمة إلغاء الرهن قيد التنفيذ، وإضافة رمز عبر عقده، والاستلام على أي شبكة، والمواقع المتصلة مع إمكانية الإلغاء، ونافذة وصول EVM، وsignAndBroadcast لتطبيقات dApp، وشاشات موافقة تعرض كل رسالة والرسوم وتاريخ الانتهاء.
سطح الأذونات لم يتغيّر منذ 0.1.3. راجع ما هي الأذونات التي يطلبها QoreX.
على Safari، تُفتح الموافقات في علامة تبويب في المتصفح بدلًا من نافذة منبثقة. وتُحزَّم الإضافة عبر غلاف إضافات الويب الخاص بـ Safari من Apple، انطلاقًا من قاعدة الشيفرة نفسها.
إنشاء محفظة أو استعادتها
افتح النافذة المنبثقة واختر:
- إنشاء محفظة جديدة - اختر كلمة مرور (8 أحرف على الأقل)؛ يولّد QoreX على جهازك عبارة استرداد جديدة من 24 كلمة (عشوائية بطول 256 بت)، ويشتق هوية QoreChain الخاصة بك، ويختمها في الخزنة تحت كلمة المرور تلك (واختياريًا مفتاح مرور - راجع الأمان). تُعرض الكلمات الـ24 مرة واحدة فقط - دوّنها، وضع علامة على لقد حفظت عبارة الاسترداد في مكان آمن، ثم تابع. يمكنك عرضها مجددًا لاحقًا عبر إظهار عبارة الاسترداد في النافذة المنبثقة (تتطلب كلمة المرور).
- استيراد عبارة استرداد - استعِد من عبارة موجودة. العبارة الأقصر من 24 كلمة تستعيد أموالك بشكل طبيعي، لكن QoreX يحذّرك من أن مفتاح ML-DSA-87 الخاص بك لن ينال حينها إلا قوة العبارة؛ وللحصول على القوة الكاملة، أنشئ محفظة جديدة من 24 كلمة وانقل أموالك إليها.
خزنة الإضافة موجودة في هذا المتصفح فقط. إزالة الإضافة أو مسح بياناتها أو إعادة ضبط المتصفح يحذف مفاتيحك، ولا يستطيع أحد - بمن فيهم QoreChain Association - استعادتها. من دون كلماتك الـ24 المدوَّنة، تضيع أموالك إلى الأبد. راجع انسخ احتياطيًا الآن.
تحتفظ الإضافة بمفاتيحها الخاصة؛ وهي لا تتطلب تطبيق الهاتف. المفاتيح لا تغادر الجهاز أبدًا.
عدة محافظ وحسابات
- المحافظ (من 0.3.3) - تسرد شاشة المحافظ في النافذة المنبثقة («المحافظ في هذا المتصفح») كل محفظة في هذا المتصفح. لكل منها عبارة استرداد خاصة بها؛ وكلمة مرور واحدة تفتحها جميعًا، والتبديل يغيّر المحفظة التي يعرضها QoreX ويوقّع بها (لا يتحرك شيء على السلسلة). أضف محفظة بإنشاء واحدة جديدة (تُعرض عبارتها مرة واحدة) أو باستعادة واحدة؛ وتُطلب كلمة مرورك مرة واحدة لإعادة ختم الخزنة. إضافة محفظة أو إزالتها توقف فتح القفل بمفتاح المرور - أعد تفعيله من الشاشة الرئيسية. لإزالة محفظة، اضغط إزالة من هذا المتصفح وأدخل كلمة مرورك؛ ولا يمكن إزالة آخر محفظة من هذه الشاشة. الإزالة تحذف ذلك المفتاح من المتصفح - وعبارة استرداده وحدها تعيده.
- الحسابات (من 0.2.2) - تُنشئ حساباتك عدة حسابات من العبارة نفسها وتتنقل بينها (حتى 20 لكل محفظة؛ وهي مرقّمة ولا يمكن إعادة تسميتها). استعادة العبارة التي دوّنتها تعيد الحساب 1؛ وأعد إضافة البقية عبر إضافة حساب. والتنقل بين الحسابات ينقل كل شيء معه: الإرسال، والرهن، والاستلام، و@handle الخاص بك، كلها تتبع أيًا كان الحساب النشط.
حساب بنمط Ethereum
من 0.3.2، تضيف إضافة حساب Ethereum (coin 60) (في شاشة حساباتك) الحساب الخاص بعبارة استُخدمت أولًا في MetaMask أو في لوحة Dashboard؛ راجع استعادة عبارة من MetaMask أو من Dashboard. وعنوانه 0x هو العنوان الذي تعرضه MetaMask للكلمات نفسها. ولا تُعرض المعرّفات (handles) عليه. ومن Firefox 0.3.9 يمكنك الرهن من هذا الحساب في الإضافة.
تبقى المحفظة الاستثمارية (Portfolio)، وماسح Q-Day، والاسترداد الاجتماعي، وبروتوكول Legacy، وطلبات الدفع، وتسجيل الدخول بالحساب، وربط الأجهزة حصرية لتطبيق الهاتف - راجع محفظة QoreX.
حسابك ورصيدك و@handle
تعرض شاشة الخمول في النافذة المنبثقة عنوانك qor1… (اضغط للنسخ) ورصيدك الحي من QOR، بحيث لا تحتاج إلى فتح مستكشف الكتل للتحقق من أي منهما.
الأرصدة المجدولة (المقفلة)
إذا كان حسابك يحمل QOR مجدولًا (vesting) (على سبيل المثال، تخصيص TGE لم يُطلَق بعد)، ينقسم الرصيد إلى متاح الآن ولا يزال مقفلاً، ويُرفض أي إرسال يتجاوز المبلغ المتاح قبل أن يصل إلى الشبكة بدلاً من أن يفشل على السلسلة بعد اقتطاع رسوم. يتعمّد QoreX عدم إظهار "تاريخ الفتح القادم" هنا: يمكن لجدول الجدولة الزمنية أن يُعدَّل عبر الحوكمة، لذا فإن أي تاريخ على بطاقة الرصيد سيُقرأ كوعدٍ لا يستطيع QoreX ضمانه. الانقسام بين المتاح والمقفل هو ما يبقى دقيقًا.
المطالبة بـ @handle
تتطلب المطالبة بـ @handle فريد (على سبيل المثال @liviu) حسابًا مسجَّل الدخول وتتم في تطبيق الهاتف؛ تحيلك الإضافة إلى هناك ولا تطالب بالمعرّفات بنفسها. وبعد المطالبة يرتبط المعرّف بذلك العنوان، فتحلّه الإضافة عندما تدفع إليه ويستطيع الآخرون الدفع لك بالاسم. راجع @handle لمعرفة كيفية ربط المعرّفات بالعناوين (وليس بمحفظة ككل).
الإرسال إلى @handle
منذ الإصدار 0.1.9 يمكنك الدفع إلى @handle مسجَّل مباشرة بدلاً من البحث عن عنوان (كانت عمليات البحث متوقفة بسبب خلل في الإصدارات حتى 0.3.6 وتعمل مجددًا اعتبارًا من 0.3.7):
- افتح النافذة المنبثقة واضغط إرسال.
- في حقل المستلم، اكتب
@متبوعًا بالمعرّف (على سبيل المثال@liviu) بدلاً من عنوانqor1…. - يحلّ QoreX المعرّف ويعرض لك العنوان المُحلَّل قبل أن توقّع أي شيء - تحقق دائمًا من مطابقته لما تتوقعه.
- أدخل المبلغ وأكِّد.
يُتحقق من عملية الحل بطريقتين قبل أن يستخدمها QoreX: إثبات سجل يُتحقق منه مقابل مفتاح ثقة مضمَّن في الإضافة، وتوقيع مالك المعرّف نفسه على المطالبة. أي استجابة تفشل في أحد التحققين تُرفض تمامًا - لا يلجأ QoreX إلى عرض عنوان غير مُتحقَّق منه. في المرة الأولى التي تدفع فيها لمعرّف معيّن، يتذكّر QoreX (يُثبِّت) العنوان الذي حلّه؛ فإذا حُلّ ذلك المعرّف لاحقًا إلى عنوان مختلف، يتوقف QoreX ويعرض لك العنوانين القديم والجديد كاملين لتقرر ما إذا كنت تريد المتابعة. وهذه الذاكرة موجودة لكل متصفح - فالدفع لنفس المعرّف للمرة الأولى من متصفح أو جهاز آخر يُظهره كجديد هناك أيضًا. وهذا أمر متوقع، وليس خطأً.
الاستلام
اضغط استلام في النافذة المنبثقة لعرض عنوانك qor1… كرمز QR (مع شعار QoreChain مضمَّنًا فيه) إلى جانب زر نسخ - امسحه ضوئيًا من هاتف أو الصق العنوان مباشرة.
منتقي الشبكة. يمكن لشاشة الاستلام أيضًا عرض العنوان الخاص بـ Ethereum وBNB Chain وPolygon وArbitrum وBase وOP Mainnet وAvalanche وSolana وCosmos Hub وOsmosis وCelestia، مع تحذير «هذه الشبكة فقط» لكل منها (وتبقى QoreChain الأولى).
الرهن من الإضافة
منذ الإصدار 0.2.2، أصبح للنافذة المنبثقة شاشة رهن (Stake) خاصة بها - فالمحفظة التي أُنشئت في الإضافة وحدها لم تعد بحاجة إلى تطبيق الهاتف لكسب مكافآت الرهن.
- افتح النافذة المنبثقة وانتقل إلى الرهن.
- تسرد الشاشة المدقّقين النشطين مع نسبة عمولتهم، وإجمالي ما رهنته حاليًا، وأي مكافآت بانتظار المطالبة. تُستبعَد من القائمة المدقّقات التي حُبِست (jailed) من قِبل الشبكة - فالتفويض لأحدها ليس أبدًا ما تريده.
- للتفويض، اختر مدقّقًا ومبلغًا، ثم أكِّد. يوقّع QoreX بالتوقيع الهجين الإلزامي (secp256k1 وML-DSA-87)، تمامًا كعملية إرسال. وأثناء الكتابة يحذّرك إذا كان المبلغ سيترك أقل من رسوم معاملة (فلن تستطيع إلغاء الرهن أو المطالبة إلى أن يحتفظ الحساب بـ QOR مجددًا). ومع عدة حسابات، اختر الحساب الذي سيرهن من منتقي الحساب في شاشة الرهن.
- المطالبة تجمع المكافآت؛ وClaim & restake يعيد رهنها مركّبةً إلى المدقّقين الذين حقّقوها في معاملة واحدة. يتحقق QoreX أولًا من أن QOR غير المقفل لديك يستطيع دفع الرسوم (إذ تُدفع قبل وصول المكافآت)، ويخبرك إن لم يكن كذلك.
- إلغاء الرهن يبدأ فترة إلغاء الربط ومدتها 21 يومًا، ويظهر المبلغ ضمن إلغاء الرهن قيد التنفيذ مع الوقت المتبقي - راجع الرهن والتفويض.
- نقل الرهن ينقل الرهن إلى مدقّق واحد أو عدة مدقّقين آخرين (إعادة التفويض) - دون انتظار إلغاء الربط ودون أي عقوبة، مع استمرار تدفق المكافآت. راجع نقل الرهن بين المدقّقين.
يحدث الرهن والتفويض والمكافآت حصريًا على مسار Native، ولا يمر أبدًا عبر أي precompile لـ EVM. ويضيف Firefox 0.3.9 أيضًا أقفال الرهن.
الموافقة على طلب رهن من Dashboard
تُنشئ لوحة Dashboard الخاصة بـ QoreChain طلبات الرهن لكنها لا تستطيع توقيعها - فمفتاحك لا يغادر خزنة الإضافة أبدًا. عندما تضغط المتابعة في QoreX على Dashboard، يُفتح الطلب في الإضافة لتراجعه (المدقّق والمبلغ) وتوافق عليه، تمامًا كعملية إرسال.
تُظهر Dashboard أحيانًا معاملة بحالة مخفَّضة بدلاً من نجاح نظيف. هذا يعني أن أموالك تحرّكت فعلًا، لكن طبقة توقيع ML-DSA-87 لم تُوجَد على السلسلة لتلك المعاملة - وهذا ليس شيئًا فعلته بشكل خاطئ وليس شيئًا يمكنك إصلاحه من جانبك. إنه خلل من جانبنا؛ يرجى إبلاغ الدعم به لنتمكن من التحقيق. تبقى الرسالة على الشاشة عمدًا بدلًا من الاختفاء، حتى يتوفر لك وقت لقراءتها والإبلاغ عنها.
الإرسال على الشبكات الخارجية
إلى جانب QOR على مسار Native، يمكن للنافذة المنبثقة إرسال أصول على شبكات خارجية، وجميعها مشتقة من عبارة الاسترداد نفسها (وعلى شبكات EVM تعرض الحد الأقصى لرسوم الشبكة - «رسوم الشبكة: بحد أقصى …» - قبل أن تؤكد):
| النوع | الشبكات | الرموز المضمّنة |
|---|---|---|
| EVM | Ethereum، BNB Chain، Polygon، Arbitrum، Base، OP Mainnet، Avalanche C-Chain | مدخلات ERC-20 (USDC وUSDT عبر سلاسل EVM، وDAI على Ethereum) |
| SVM | Solana | مدخلات SPL (USDC، USDT) |
| Cosmos | Cosmos Hub، Osmosis، Celestia | Noble USDC عبر IBC؛ حقل مذكرة اختياري |
قبل خروج أي تحويل خارجي عليك تأكيد إقرار صريح: "External networks accept only classical signatures — unlike your QOR, this transfer is NOT quantum-safe." هذا هو النص الحرفي الذي تعرضه البنيات الحية. لا تستطيع السلاسل الخارجية حمل توقيع ML-DSA-87، وQoreX لا يخفي ذلك أبدًا.
معايير المحافظ المدعومة
يعرض QoreX ثلاث واجهات، جميعها مُحقَنة في الصفحة باسم window.qorex ({ evm, native, svm }) ويجري اكتشافها عبر EIP-6963 وSolana Wallet Standard. وفي تطبيق الويب، يغلّف محوّل المحفظة هذا الاكتشاف.
| المعيار | ما هو | ماذا يعني لك كمطوّر |
|---|---|---|
| EIP-1193 | واجهة JavaScript لمزوّد Ethereum (request(...)، الأحداث). | يجيب مزوّد EVM في QoreX عن استعلامات الحساب والشبكة - eth_requestAccounts وeth_accounts وeth_chainId وwallet_switchEthereumChain (وأي سلسلة أخرى تُرجع الرمز القياسي 4902). وهو لا يوقّع معاملات أو رسائل EVM ولا يرسلها بعد: فالطرق الأخرى تُرجع "EVM method … not yet supported". استخدم MetaMask أو محفظة EVM أخرى لمعاملات مسار EVM (التي تتطلب الآن أيضًا نافذة وصول EVM مفتوحة). |
| EIP-6963 | اكتشاف مزوّدين متعدد المحافظ (أحداث الإعلان / الطلب). | يعلن 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) | اكتشاف أصيل للمحافظ لتطبيقات dApp على Solana (wallet-standard:register-wallet / app-ready). | تكتشف تطبيقات dApp على Solana 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 سطرًا واحدًا لكل تعليمة (instruction)، مفكوكة الترميز حيثما استطاع QoreX: تحويلات SOL (المستلم وقيمة lamports)، وتحويلات رموز SPL، و**«السماح بإنفاق رموزك»** (approve)، و**«تسليم التحكم في الحساب»** (set authority)، وإغلاق حساب رمز - وتقول «تعليمة لا يستطيع QoreX قراءتها» لأي شيء آخر، مع ذكر البرنامج. والطلب الذي يتضمن تعليمة approve أو set-authority يُعنوَن «يريد سلطة على رموز Solana الخاصة بك - اقرأ كل سطر أدناه». وتُرفض المعاملات التي لا تُدرج محفظتك كموقِّع، ولن يوقّع signMessage بايتات هي في الحقيقة معاملة، ويوضع على التوقيع وسم كلاسيكي. راجع التوقيع الهجين.
العملات والرموز
تتيح لك شاشة العملات والرموز في النافذة المنبثقة إضافة رمز ERC-20 عبر عقده: اختر الشبكة، والصق عنوان العقد، ثم تحقق من العقد. يقرأ QoreX اسم الرمز وخاناته العشرية من العقد نفسه - ويقرأهما مجددًا في الخلفية عند إضافته بدلًا من الوثوق بالنافذة المنبثقة - ثم يعرضهما مع تذكير بأن بإمكان أي شخص إنشاء رمز بأي اسم. ثم يظهر الرمز في الإرسال على الشبكات الخارجية. ويرفض الرموز المضمّنة، والمكرّرات، والشبكات غير EVM، والعناوين الخاطئة، والعقود التي لا يمكن قراءتها، والعقود التي تستعير اسم رمز مضمَّن.
المواقع المتصلة
تسرد المواقع المتصلة في النافذة المنبثقة كل موقع وافقت عليه هذه المحفظة - يستطيع الموقع رؤية عنوان هذه المحفظة وطلب توقيعك. اضغط إلغاء لإزالة أحدها. تُحفظ الموافقات لكل محفظة: فالموقع الموافَق عليه لمحفظة لا يستطيع قراءة عنوان محفظة أخرى بعد أن تبدّل.
نافذة وصول EVM
تفتح شاشة نافذة وصول EVM في النافذة المنبثقة النافذةَ التي تتيح لحساب بنمط Ethereum (coin 60) الإرسال على مسار EVM في QoreChain (الإصدار v3.2.0 وما بعده) وتغلقها - وهي الشاشة نفسها الموجودة في التطبيق، بالحدود نفسها (حتى 17,280 كتلة و1,000 معاملة، وسقف من QOR يحتسب كل مبلغ مع أقصى رسومه). راجع نافذة وصول EVM.
اللغة
تتحدث الإضافة اللغات العشر نفسها التي يتحدثها تطبيق الهاتف ولوحة Dashboard والموقع: الإنجليزية، والرومانية، والألمانية، والإسبانية، والفرنسية، والإيطالية، والتركية، والعربية، واليابانية، والكورية. وهي تتبع لغة متصفحك افتراضيًا (وتعود إلى الإنجليزية لأي شيء آخر) - لاحظ أن هذا مصدر مختلف عن تطبيق الهاتف، الذي يتبع لغة الهاتف، لذا يمكن أن يعرض كل منهما لغة مختلفة إذا كانت إعدادات هاتفك ومتصفحك مختلفة. يتيح لك منتقٍ في شاشة الخمول بالنافذة المنبثقة تجاوز اللغة المكتشَفة في أي وقت؛ والتبديل إلى العربية يقلب النافذة المنبثقة إلى اتجاه اليمين-إلى-اليسار فورًا، وليس النص فقط.
الأمان والأذونات
QoreX مبني ليكون قابلًا للتحقق، لا ليكون محل ثقة فحسب:
-
الخزنة - تُختم مفاتيحك بـ AES-256-GCM. ويشتق مسار كلمة المرور مفتاحه بـ Argon2id (RFC 9106، صعب الذاكرة: 64 ميبي بايت، t=3، p=1)، بحيث تكون كتلة الخزنة المنسوخة بطيئة الكسر بالقوة الغاشمة على عتاد GPU أو ASIC. (تظل كتل PBKDF2 القديمة قابلة للفتح ويُعاد ختمها بـ Argon2id عند الفتح التالي.)
-
فتح القفل بمفتاح المرور (اختياري، بدءًا من 0.1.5) - حيثما يدعم مُصادِقك امتداد WebAuthn PRF، يمكن لـ QoreX فتح الخزنة انطلاقًا من مخرَج PRF بطول 32 بايت الخاص بمفتاح المرور بدلًا من كلمة مرور مكتوبة. وتبقى كلمة مرورك دائمًا خيارًا احتياطيًا.
أين يظهر فتح القفل بمفتاح المروريكتشف QoreX توفّر WebAuthn تلقائيًا ولا يُظهر تفعيل فتح القفل بمفتاح المرور إلا حيث يتيحه المتصفح لصفحات الإضافات - أي في Chrome وEdge. وعلى Firefox يكون الخيار مخفيًا، لأن Firefox لا يتيح WebAuthn لصفحات الإضافات. هذا سلوك متوقع، وليس خللًا.
-
Manifest V3 مع CSP صارم -
script-src 'self'; object-src 'self'; base-uri 'self'. لا تحميل لشيفرة عن بُعد بعد التثبيت، ولا وجود لـwasm-unsafe-eval. -
بلا تحليلات، ولا تقارير أعطال، ولا حزمة تتبّع، ولا تسجيل اشتراك - لا تحتاج الإضافة إلى حساب لحفظ 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"]- إذن الواجهة البرمجية الوحيد. يخزّن الخزنة المشفّرة وموافقات الاتصال لكل أصل محليًا، في تخزين الإضافة.host_permissions: []- لا يعلن QoreX أي أذونات مضيف. وهو لا يطلب القدرة على إجراء طلبات شبكة عابرة للأصول إلى مواقع عشوائية نيابةً عنك.web_accessible_resources- تتيح للصفحات تحميلinpage.jsالخاص بـ QoreX نفسه، وهو السكربت الصغير الذي يكشف المزوّد. ويمنحهuse_dynamic_urlعنوانًا لكل جلسة حتى لا تستطيع المواقع أخذ بصمة للإضافة عبر التحقق من وجودها.- مطابقة
content_scriptsلـ<all_urls>- هذا هو السبب الصادق وراء قول Firefox "الوصول إلى بياناتك في جميع مواقع الويب." يحقن QoreX سكربت مزوّد صغيرًا (content.js←inpage.js) في كل صفحة. وسكربت المحتوى الذي يعمل على جميع المواقع يستطيع تقنيًا قراءة الصفحة، والمتصفحات تصف هذه القدرة بهذه الصياغة بالذات - سواء أتت منhost_permissionsأو من مطابقة سكربت محتوى.
لماذا يعمل سكربت المحتوى في كل مكان. حتى يتمكن أي تطبيق dApp من اكتشاف المحفظة عبر EIP-6963 دون أن تمنح أولًا وصولًا لكل موقع على حدة. هكذا تعمل MetaMask وKeplr وPhantom وكل محفظة محقونة أخرى: يجب أن يكون المزوّد المحقون حاضرًا قبل تشغيل سكربتات الصفحة (document_start)، على أي موقع تزوره.
ماذا يفعل ذلك السكربت - وماذا لا يفعل. إنه يقتصر على تمرير رسائل المحفظة (الإعلان عن المزوّد، وتمرير طلبات الاتصال/التوقيع إلى عامل الخدمة، وإرجاع النتيجة). وهو لا يقرأ محتوى الصفحة خارج طلبات المحفظة تلك، ولا يرسل أي شيء إلى خادم، ولا يحمّل شيفرة عن بُعد - كما لا يستطيع جلب بيانات عابرة للأصول بشكل عشوائي لعدم وجود أذونات مضيف. وكل هذا قابل للتحقق: فالإضافة مقفلة بـ CSP، ولا تشحن أي تحليلات، ومانيفستها (أعلاه) قابل للقراءة في الحزمة المثبَّتة.
ربط تطبيق dApp بـ QoreX
يكتشف تطبيق dApp مسار QoreX عبر EIP-6963. أعلِن واطلُب، ثم استخدم مزوّد 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]);
}
أما لمسار Native في QoreChain، فاستخدم المزوّد على window.qorex.native (enable، getKey، signAndBroadcast، signDirect؛ واقرأ capabilities لمعرفة ما تدعمه هذه البنية). وفي تطبيق الويب، يغلّف محوّل المحفظة اكتشاف EIP-6963 هذا نيابةً عنك، ويغطي طقم مطوّري QoreX التكامل من جانب التطبيق. (حزمة @qorechain/connect مهجورة؛ لا تبدأ عملًا جديدًا عليها.)
الموافقات لكل أصل: يفتح أول اتصال بموقع نافذة موافقة تعرض الأصل، والموافقة تكشف عنوانك العام فقط، وموافقة موقع واحد لا تمنح شيئًا لموقع آخر. وتُحفظ الموافقات لكل محفظة، وتبقى إلى أن تلغيها ضمن المواقع المتصلة، ويمكن أن يكون لدى الموقع الواحد طلب واحد منتظر (ثلاثة في المجموع)؛ والتبديل بين المحافظ أو القفل يجيب عن الطلبات المنتظرة بـ«لا». راجع ما الذي تعرضه نافذة الموافقة.
جسر Dashboard (v0.1.5، موسَّع في v0.2.2)
يضيف الإصدار 0.1.5 جسرًا مقصورًا على dashboard.qorechain.io وحده: تُوقّع window.qorex.native.connectProof(sessionId) إثبات الاقتران الخاص بـ الاتصال عبر QoreX (وتعيد الواجهة الخلفية التحقق من التوقيع)، بينما تُوافق executeTransfer({ to, amountUqor, memo }) على تحويل QOR مقترح من Dashboard وتبثه، مُعيدةً txHash. وتُرفض هاتان الطريقتان على أي أصل آخر.
يضيف 0.2.2 الطريقة native:executeRequest، التي تقبل طلبًا كاملًا مقترحًا من Dashboard - بما في ذلك الرهن - يُتحقق منه مقابل المُحلِّل المشترك نفسه الذي يستخدمه QoreX في كل مكان آخر: يُرفض عند عدم تطابق الشبكة، أو أصل أجنبي، أو عنوان ليس عنوانك، أو نوع طلب غير معروف، أو طلب رهن يحمل toAddress (طلبات الرهن لا تحمل واحدًا). وأنواع الطلبات هي: إرسال، وتفويض، وإلغاء تفويض، وإعادة تفويض، ومطالبة؛ ويتيح لك طلب Connect اختيار أي من حساباتك تربطه، وتُرجع listAccounts() حساباتك (للقراءة فقط).
نظرًا لأن عنوان qor1… صالح بالتساوي على الشبكة الرئيسية وشبكة الاختبار، يذكر الطلب المقترح من Dashboard الشبكة التي يستهدفها، ويرفض QoreX التصرف بناءً عليه إذا لم يطابق ذلك الشبكة التي تتصل بها الإضافة حاليًا - ولن يبدّل الشبكات أبدًا نيابةً عن أي طلب.
إرسال معاملة QoreChain من تطبيق dApp: signAndBroadcast
تحتاج كل معاملة QoreChain على المسار الأصلي (native lane) من حساب لديه مفتاح ML-DSA-87 مسجَّل إلى توقيع هجين - 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 تبديل الشبكة؛ المستخدم وحده يستطيع. - من رسالة واحدة إلى 32 رسالة في كل استدعاء؛ وتُوقَّع بايتات الرسالة تمامًا كما أُرسلت.
- تُعرض الرسوم (
gasLimit× سعر الغاز في الشبكة) قبل الموافقة. والرفض يُطلق الخطأQoreX: signature rejected. - إدارة مفتاح ML-DSA-87 (التسجيل والترحيل والتدوير - بما في ذلك داخل authz
MsgExec) تُرفض: فالمحفظة تدير مفتاح الحساب بنفسها.
التوقيع الهجين
كل تحويل QOR على المسار الأصلي (Native) يبدأه QoreX بنفسه يُوقَّع مرتين: بمفتاح secp256k1 كلاسيكي وبـ ML-DSA-87 (FIPS 204)، باستخدام خط الأنابيب الهجين في @qorechain/sdk. لا يوجد مفتاح تبديل: فـ QoreChain يشترط ذلك، وQoreX لا يرسل أبدًا تحويل QOR على مسار Native من دونه.
- التوقيع على مسار Native بمبادرة من dApp - استخدم
signAndBroadcast: يفك QoreX ترميز كل رسالة، ويعرض الرسوم، ويضيف طبقة ML-DSA-87 بنفسه. أماsignDirectفيوقّع معاملة بنتها الصفحة؛ وهو ليس المسار الموصى به، لأن الطبقة التي أرفقتها الصفحة تُفحص مقابل مفتاح الحساب المسجَّل قبل أي نافذة موافقة، وتُرفض المعاملة الكلاسيكية فقط (كما يُرفض للحسابات بنمط Ethereum، التي تستخدمsignAndBroadcast). QoreX لا يوقّع أعمى أبدًا: فالطلب الذي لا يستطيع فك ترميزه يُرفض، ولا يوقّع أبدًا معاملة QoreChain كلاسيكية فقط. - التوقيعات الكلاسيكية تُوسَم دائمًا - التحويلات على الشبكات الخارجية (ETH وBNB وSolana وغيرها) لا تستطيع حمل توقيع ML-DSA-87؛ ويطلب منك QoreX تأكيد إقرار صريح ويضع عليها وسم كلاسيكي بدلًا من الخفض الصامت لمستوى الحماية.
ماذا يعني هذا لحجم المعاملة. إن ML-DSA-87 توقيع كبير الحجم: فالتوقيع 4,627 بايت والمفتاح العام 2,592 بايت (محدَّدان بموجب FIPS-204). ولذلك تكون معاملة QoreChain الهجينة أكبر بعدة كيلوبايتات من معاملة كلاسيكية بحتة. وإذا كنت تبني المعاملات وتبثها بنفسك، فاضبط أحجام المخازن المؤقتة وتقديرات الرسوم لتستوعب البايتات الإضافية؛ فمحاسبة الغاز في QoreChain تتوقعها أصلًا. راجع التوقيع لما بعد الكم (دليل المطوّر) للاطلاع على البدائيات وشرط التوقيع الحتمي.
أين هي منشورة
| المتجر | الصفحة | الإصدار الحالي | الرابط |
|---|---|---|---|
| Chrome Web Store | QoreX | 0.3.8 | chromewebstore.google.com |
| Firefox Add-ons | qorex | 0.3.9 | addons.mozilla.org |
| Mac App Store (Safari) | QoreX Wallet، التطبيق 1.7.8 | الإضافة 0.3.8 | apps.apple.com |
شيفرة QoreX المصدرية ليست عامة. الإصدارات اعتبارًا من 27 أكتوبر 2026؛ وتعرض صفحات المتاجر دائمًا الإصدار الحالي.
الحدود والمشكلات المعروفة
- مزوّد EVM يجيب عن استعلامات الحساب والشبكة فقط. وهو لا يوقّع معاملات أو رسائل EVM ولا يرسلها بعد. استخدم MetaMask أو محفظة EVM أخرى لمعاملات مسار EVM، التي تتطلب أيضًا نافذة وصول EVM مفتوحة؛ وتحمل معاملة EVM توقيع secp256k1 فقط.
window.qorex.nativeبنمط Keplr، وليس بديلًا كاملًا لـ Keplr. لا يوجد اسم بديلwindow.keplr. وsignAminoوsendTxغير موجودتين. ويعملgetOfflineSignerفقط عندما تُرفق الصفحة نفسها طبقة ML-DSA-87؛ أما إضافة المحفظة للطبقة عبرgetOfflineSignerفغير مدعومة. وsignArbitrary(توقيع الرسائل) غير مدعوم. والمسار الأصلي المدعوم هوwindow.qorex.native.signAndBroadcast.- حصرية لتطبيق الهاتف: المحفظة الاستثمارية (Portfolio)، وماسح Q-Day، والاسترداد الاجتماعي، وLegacy، وطلبات الدفع، وتسجيل الدخول، وربط الأجهزة، والمطالبة بـ @handle.
- لا توجد شاشة Swap في الإضافة.
- فتح القفل بمفتاح المرور متاح فقط حيث يتيح المتصفح WebAuthn لصفحات الإضافات (Chrome وEdge)؛ وهو مخفي على Firefox.
- Safari يفتح الموافقات في علامة تبويب في المتصفح بدلًا من نافذة منبثقة.
- الشبكات الخارجية تقبل التوقيعات الكلاسيكية فقط؛ ويطلب منك QoreX الإقرار بذلك قبل كل تحويل.
- يتأخر Chrome وSafari عن Firefox بإصدار واحد وقت كتابة هذا النص (راجع الإصدارات).
- خزنة الإضافة موجودة في هذا المتصفح فقط. إزالة الإضافة أو مسح بياناتها أو إعادة ضبط المتصفح يحذف مفاتيحك؛ ولا يستعيدها إلا كلماتك الـ24 المدوَّنة.