إنتقل إلى المحتوى الرئيسي

استكشاف الأخطاء وإصلاحها والأسئلة الشائعة

أسئلة وحلول لتشغيل QORel، بالترتيب الذي يصادفه الناس عادةً. وهي موجّهة إلى المشغّلين الذين لديهم مُرحِّل لا يبدأ، أو يرفض الإرسال، أو يترك حزمًا معلّقة. QORel لشبكة الاختبار فقط اليوم، لذا تفترض كل إجابة qorechain-diana.

الابتكارات​

تُكتشف معظم المشكلات على سلسلة هجينة قبل إنفاق أي رسم:

  • فحص ما قبل الإرسال يسمّي المشكلة. إذا كان المفتاح ما بعد الكمومي غير محمّل، أو غير مسجّل، أو ليس المفتاح المحلي، أو إصدار sign-bytes غير معروف، فلا يرسل QORel شيئًا ويقول أيّها السبب.
  • keys pqc-status هو أول أمر تشغّله. فهو يعرض التسجيل، ومطابقة المفتاح، وإثبات الحيازة، وإصدار sign-bytes الذي تتحقق منه السلسلة، وready_to_relay.
  • health-check يشرح أخطاء الإعداد، ومنها مضاعِف غاز أقل من 1.1 على مدخل QoreChain.

كيفية الاستخدام​

شغّل هذه أولًا وقارن:

qorel --version
qorel health-check
qorel keys pqc-status --chain qorechain-diana
qorel query packet pending --chain qorechain-diana --port transfer --channel channel-0

المفاتيح والتسجيل​

قيمة ready_to_relay هي false. ماذا أفعل؟ اقرأ الحقول الأخرى في keys pqc-status:

  • registered: false: ليس للحساب مفتاح ما بعد كمومي مسجّل. موّل الحساب، ثم شغّل qorel keys register-pqc --chain qorechain-diana.
  • registered: true لكن matches_local_key: false: مفتاح الحساب المسجّل مختلف عن المفتاح الذي يحتفظ به QORel. تحقق من أنك استخدمت العبارة السرية الخاصة بالحساب و--key-name الصحيح. وإذا أعدت إضافة المفتاح، فإن keys add --overwrite يعيد بناء المفتاح المحلي وبذرته <key name>.pqc من العبارة السرية.
  • يفشل الأمر في تحميل المفتاح: الملف <key name>.pqc بجانب المفتاح مفقود أو غير مقروء. شغّل keys add مرة أخرى لتلك السلسلة.

يقول keys register-pqc إن للحساب مفتاحًا مختلفًا بالفعل. لم يرسل شيئًا، عن قصد. المفتاح الموجود في السلسلة سُجّل من عبارة سرية أخرى أو بأداة أخرى. استخدم العبارة السرية الأصلية، أو بدّل المفتاح في السلسلة انطلاقًا من القديم (التوقيع ما بعد الكمومي)؛ ولا يمكن تسجيل مفتاح استخدمه الحساب سابقًا مرة أخرى.

يفشل keys register-pqc بخطأ في الرسم أو الرصيد. يحتاج الحساب إلى QOR على شبكة الاختبار قبل أن يرسل أول معاملة له. استخدم صنبور لوحة التحكم. يحتاج التسجيل إلى بضع مئات الآلاف من وحدات الغاز؛ وعند الحد الأدنى 0.1 uqor يعادل ذلك بضعة عشرات الآلاف من uqor.

هل أحتاج إلى --no-proof؟ فقط لشبكة أقدم من v3.2.3. تقبل شبكتا QoreChain إثبات حيازة، ويضيف QORel واحدًا افتراضيًا.

أين يُخزَّن مفتاحي ما بعد الكمومي؟ بجانب مفتاح secp256k1، باسم <key name>.pqc (بذرة من 32 بايت)، يقرؤه المالك وحده. ويمكن إعادة اشتقاقه من العبارة السرية. احتفظ بنسخة احتياطية من العبارة السرية لا من الملفات.

ملفات مفاتيحي مقروءة من الآخرين. يكتب QORel ملفات المفاتيح الجديدة بصلاحيات 0600. والمفاتيح المضافة بإصدار أقدم من Hermes تحتفظ بصلاحياتها القديمة؛ شغّل chmod 600 عليها.

الإعدادات​

يُرفض ملف الإعدادات برسالة عن extension_options. لا يمكن الجمع بين extension_options الثابتة وsigning = 'qorechain-hybrid': يجب أن يكون التوقيع ما بعد الكمومي خيار الامتداد الحرج الوحيد. أزلها من مدخل تلك السلسلة.

يقول إن السلسلة لا تستخدم signing = "qorechain-hybrid". لا تعمل أوامر المفاتيح ما بعد الكمومية إلا على السلاسل التي فيها ذلك الإعداد. أضفه إلى مدخل QoreChain.

هل أحتاج إلى ضبط إصدار sign-bytes؟ لا. فـ pqc.sign_bytes = 'auto' يقرؤه من السلسلة، ويعيد قراءته كل دقيقة وبعد أي رفض. والقيمة الثابتة v1 أو v2 التي لا تطابق السلسلة تجعلها ترفض كل معاملة.

يعرض pqc-status القيمة sign_bytes على أنها غير معروفة. لم يستطع QORel قراءة سجلات الترقيات في السلسلة. تحقق من أن rpc_addr لمدخل QoreChain يردّ ويشير إلى الشبكة الصحيحة (qorechain-diana على شبكة الاختبار). لن يوقّع QORel دون إصدار معروف.

أي مضاعِف غاز أستخدم؟ 1.1 هو الافتراضي في المثال ويُبقي health-check هادئًا. وعلى السلسلة v3.2.5 أو الأحدث (كلتا الشبكتين الآن؛ والقياس على شبكة الاختبار بالإصدار v3.2.6) تعمل قيمة أقل مثل 1.05. تُقدّر الإصدارات الأقدم الغاز المحاكى بأقل من الفعلي، فاستخدم 1.15 على عقدة تشغّل أحدها. راجع الغاز.

يحذّر health-check بشأن مضاعِف الغاز. إنه أقل من 1.1 على مدخل QoreChain. هذا تحذير فقط؛ والترحيل يعمل. ارفعه إذا رأيت إخفاقات نفاد الغاز.

الإرسال والترحيل​

ترفض السلسلة معاملة بالرمز codespace pqc والرمز 21. لم يتحقق التوقيع الهجين. يعيد QORel قراءة إصدار sign-bytes والتسجيل قبل المعاملة التالية ويعيد المحاولة. وإذا تكرر ذلك: تأكد من أن id في مدخل السلسلة هو معرّف السلسلة تمامًا (qorechain-diana)، وأن المفتاح هو المسجّل (keys pqc-status)، وأن العقدة التي تستخدمها تشغّل الإصدار الذي تتوقعه. وتسرد التوقيع ما بعد الكمومي الأسباب.

لا يُرسل شيء ولا يُنفق رسم، لكن المُرحِّل يسجّل خطأ. هذا هو فحص ما قبل الإرسال يؤدي عمله. يسمّي سطر السجل الجزء الناقص: مفتاح غير محمّل، أو غير مسجّل، أو عدم تطابق المفتاح، أو إصدار sign-bytes غير معروف. أصلحه كما سبق.

أخطاء account sequence mismatch. عمليتان توقّعان بمفتاح المُرحِّل نفسه. شغّل مُرحِّلًا واحدًا لكل مفتاح؛ ويشمل ذلك خدمة systemd مع حاوية، وpod ثانيًا في Kubernetes.

أرى 429 Too Many Requests في السجلات. نقطة النهاية تحدّ من المعدل، وعادةً ما تكون عامة بعد إعادة التشغيل. يعدّ QORel ذلك قابلًا لإعادة المحاولة ويُبقي عمّال الحزم قيد التشغيل، ويعيد المحاولة عند كل فترة مسح. للترحيل المستمر استخدم عقدك الخاصة أو نقطة نهاية مدفوعة. وليس لدى QoreChain نقطة gRPC عامة، فجانب QoreChain يحتاج عقدتك الخاصة على أي حال.

رسوم أو أخطاء نفاد الغاز على QoreChain. الرسم هو حد الغاز مضروبًا في السعر، دون استرداد، والحد الأدنى 0.1 uqor لكل وحدة غاز. تحقق من gas_price، ومن ضبط dynamic_gas_price.backend = 'cosmos-evm-feemarket'، ومن رصيد الحساب (qorel keys balance --chain qorechain-diana).

الحزم والقنوات​

تحويلي معلّق ولا يصل شيء. تحقق بالترتيب: أن مُرحِّلًا يعمل للقناة (العملية قائمة؛ والقياس عن بُعد يردّ)؛ وأن القناة في packet_filter لديك على السلسلتين؛ وأن للمُرحِّل رصيدًا على سلسلة الوجهة؛ وأن المفتاح ما بعد الكمومي جاهز؛ وأن نقاط النهاية يمكن الوصول إليها. ثم شغّل qorel query packet pending للقناة. وإن لم يكن هناك مُرحِّل يعمل، تنتظر الحزمة حتى يبدأ واحد أو تنتهي مهلة التحويل.

ماذا يحدث إذا انتهت صلاحية تحويل؟ عندما يكون المُرحِّل قيد التشغيل، يرحّل المهلة المنتهية وتُسترد الرموز إلى المُرسِل على سلسلة المصدر. اختُبر ذلك على قناة شبكة الاختبار.

هل يمكنني استخدام قناة الاختبار القائمة، أم أحتاج إلى قناتي؟ قناة channel-0 في شبكة الاختبار إلى channel-600 في شبكة اختبار Hub مفتوحة (قناة الاختبار)؛ شغّل QORel بذلك packet_filter لترحيلها. أنشئ قناتك بالأمر qorel create channel ... --new-client-connection فقط إذا احتجت إلى ذلك.

يفشل create channel في منتصف الطريق. المصافحة عدة معاملات على السلسلتين. شغّل qorel health-check، وأصلح السبب، ثم أعد تشغيل الأمر مع ضبط --a-connection على الاتصال الذي أنشأه بالفعل، أو ابدأ من جديد بـ --new-client-connection.

هل يعمل Hermes الأصلي مع QoreChain؟ لا. ترفض QoreChain معاملة بلا توقيع ML-DSA-87، ولا يضيفه Hermes الأصلي. QORel هو Hermes مع ذلك التوقيع.

عام​

هل يمكن لـ QORel ترحيل سلاسل غير QoreChain؟ نعم. السلسلة التي ليس فيها signing تستخدم صيغة معاملات Hermes القياسية بايتًا ببايت.

هل يدعم الشبكة الرئيسية؟ ليس بعد. لا توجد قناة IBC مفتوحة على الشبكة الرئيسية. وعندما يُفتح IBC على الشبكة الرئيسية سيذكر هذا الدليل ذلك.

هل يدعم IBC v2؟ ليس بعد. ترحيل IBC v2 غير منفَّذ في QORel؛ وهو المرحلة التالية. ولم يبدأ ترحيل Ethereum (Eureka).

هل يعمل على Windows؟ لا. استخدم الحاوية تحت WSL2.

أين أبلّغ عن مشكلة؟ افتح issue على github.com/qorechain/QORel. أرفق إصدار QORel، ومدخل السلسلة بعد حجب المعلومات الحساسة، ومخرجات qorel keys pqc-status؛ ولا تنشر أبدًا عبارة سرية أو ملف مفتاح أو بذرة .pqc.

كيفية الوصول​

  • يُشغَّل كل أمر أعلاه على مضيف المُرحِّل بملف الإعدادات نفسه الذي يستخدمه المُرحِّل.
  • الحالة العامة للمقارنة: REST شبكة اختبار QoreChain على https://api-testnet.qore.host (الاتصال بشبكة الاختبار) ومستكشف الكتل (بدّل إلى شبكة الاختبار).

أين يُنشر​

QORel في المستودع qorechain/QORel؛ وتذهب المشكلات إلى هناك. ودليل Hermes الأصلي، hermes.informal.systems، يغطي الإعدادات والأوامر التي يشاركها QORel معه.

الحدود والمشكلات المعروفة​

  • شبكة الاختبار فقط، وإصدار 0.x.
  • لا يوجد ترحيل IBC v2 بعد (المرحلة التالية)، ولا ترحيل Ethereum (Eureka).
  • نقاط نهاية الأطراف الثالثة تحدّ من المعدل. نقاط النهاية في جانب Hub في ملف الإعدادات النموذجي عامة ولا تديرها QoreChain.
  • لا تستطيع هذه الصفحة تغطية كل أخطاء Hermes. بالنسبة إلى الأخطاء التي لا تذكر المفتاح ما بعد الكمومي أو الـ sign bytes أو QoreChain، ينطبق دليل Hermes ومتتبع مشكلاته.

انظر أيضًا: الإعدادات، المراقبة، التوقيع من أي لغة.