التسجيل والترخيص
لكسب حصة مكافأة العقدة الخفيفة البالغة 3%، يجب أن تكون العقدة الخفيفة مسجَّلة على السلسلة وأن تستمر في إثبات أنها نشطة. تشرح هذه الصفحة ما تتطلبه السلسلة، وكيفية الحصول على ترخيص، وكيف تسجّل العقدة نفسها، وكيف تُثبت استمرارية نشاطها.
التسجيل مفتوح على الشبكة الرئيسية (qorechain-vladi) وعلى شبكة الاختبار (qorechain-diana). لا يتطلب تشغيل العقدة ومزامنتها أي ترخيص. راجع حالة برنامج المكافآت لمعرفة كيفية التحقق من الحالة الراهنة.
التسجيل على السلسلة
يسجِّل التسجيل عقدتك الخفيفة على السلسلة بحيث يعرف البروتوكول بوجودها، ونوعها (sx أو ux)، وحساب المشغِّل الذي يتحكم بها. بمجرد التسجيل وكونها نشطة، تصبح العقدة مؤهلة لحصة مكافأة العقدة الخفيفة.
المتطلبات
تتحقق السلسلة من جميع ما يلي عند تنفيذ معاملة التسجيل الخاصة بك:
- ترخيص
lightnode_operatorنشط على عنوان المشغِّل. - ما لا يقل عن 1,000 QOR مفوَّضة من العنوان نفسه إلى مدقِّقين مربوطين (bonded) (إجماليك عبر أي مدقِّقين؛ ولا تُحتسب التفويضات إلى مدقِّقين مسجونين (jailed) أو غير مربوطين).
- رصيد في حساب المشغِّل لدفع رسم التسجيل البالغ 1 QOR ورسوم المعاملات. تدفع العقدة أيضًا من هذا الحساب رسمًا عن كل نبضة قلب: مع التوقيع الأصلي يبلغ الرسم 0.25 uqor لكل وحدة غاز، أي 75,000 uqor (0.075 QOR) عند القيمة الافتراضية لـ
[heartbeat] gasالبالغة 300,000، أي نحو 1.9 QOR شهريًا بمعدل 25 نبضة قلب يوميًا تقريبًا. - أقل من 10,000 عقدة خفيفة مسجَّلة على مستوى الشبكة بأكملها.
بعد التسجيل يجب أن ترسل العقدة نبضة قلب كل 1,000 كتلة (مع مهلة قدرها 100 كتلة) وأن تحافظ على 80% من وقت التشغيل على الأقل لتتلقى المكافآت. اقرأ القيم الحية عبر GET https://api.qore.host/qorechain/lightnode/v1/params (شبكة الاختبار: https://api-testnet.qore.host).
حساب المشغِّل
يُجرى التسجيل من عنوان المشغِّل الخاص بك: حساب qor1… عادي يحمل الترخيص والتفويض، ويدفع الرسوم، ويتلقى المكافآت. يجب أن تكون العقدة قادرة على التوقيع عنه، لذا يجب أن يكون حسابًا تحتفظ أنت بكلمات الاسترداد الخاصة به: كلمات دوّنتها بنفسك، أو حسابًا من Keplr، أو مفتاح qorechaind (مسار الاشتقاق m/44'/118'/0'/0/0). أفضل خيار هو حساب مخصَّص للعقدة فقط.
لا يمكن لمحفظة احتجازية (custodial) على لوحة التحكم (محفظة تحتفظ لوحة التحكم ببذرتها نيابةً عنك) أن تشغّل عقدة ما لم تُصدِّر بذرتها أولًا.
ليس لمفتاح Dilithium-5 الخاص بالعقدة عنوان خاص به: ففي QoreChain يُرفَق المفتاح ما بعد الكمّي بحساب، ولا يُنشئ حسابًا. تُرفِق العقدة مفتاحها بحساب المشغِّل بوصفه المفتاح ما بعد الكمّي لذلك الحساب، ما لم يكن للحساب مفتاح بالفعل (راجع الحسابات التي لديها مفتاح ما بعد كمّي بالفعل).
الحصول على ترخيص
الشبكة الرئيسية: الشراء من لوحة التحكم
تُشترى التراخيص من لوحة تحكم QoreChain في Tools → Light Node. يكلّف الترخيص $50، تُدفع بعملة USDT على ERC-20 أو BEP-20 أو TRC-20؛ ويُتحقق من الدفعة على سلسلتها. يجب أن تُدخل عنوان qor1… الذي يُمنح له الترخيص قبل الدفع؛ استخدم عنوان المشغِّل الموصوف أعلاه.
المنح خطوة منفصلة على السلسلة، تُوقَّع يدويًا وتُرسَل على دفعات. وإلى أن تؤكده السلسلة، تعرض علامة التبويب Paid, awaiting on-chain grant، وتواصل العقدة الإبلاغ بأن العنوان لا يملك ترخيصًا. يعرض lightnode-sx status سطر Licence: الذي يتحول إلى active عند وصول المنح. ويمكنك أيضًا التحقق منه مباشرة:
curl -s https://api.qore.host/qorechain/license/v1/check/<operator-address>/lightnode_operator
شبكة الاختبار: عند الطلب
لا يُباع شيء على شبكة الاختبار. تراخيص شبكة الاختبار مجانية، وتمنحها سلطة تراخيص شبكة الاختبار عند الطلب: راسل nodes@qorechain.io مع عنوان qor1… الخاص بك على شبكة الاختبار.
تسجيل العقدة
الخطوات أدناه هي مسار الإعداد الخاص بالعقدة نفسها. وهي متطابقة في الإصدارين: يملك lightnode-ux الأوامر نفسها التي يملكها lightnode-sx ويستخدم الدليل الرئيسي نفسه (~/.qorechain-lightnode). راجع إصدار SX لتفاصيل كل أمر.
# 1. Keys are stored encrypted. Keep this set for every command below and for start.
export QORE_LIGHTNODE_KEYRING_PASSPHRASE='choose-a-passphrase'
# 2. Self-test, RPC endpoint (mainnet: https://rpc.qore.host), node key
lightnode-sx onboard
# 3. The operator account: the one the licence is for. --recover reads its
# recovery words from standard input.
lightnode-sx keys add-operator --recover
# 4. Post-quantum key, missing stake (only if you name a validator), registration
lightnode-sx register --delegate-to qorvaloper1...
# 5. Run the node; it sends heartbeats on its own
lightnode-sx start
lightnode-sx status
تحمي عبارة المرور كلا المفتاحين في حلقة مفاتيح العقدة: المفتاح ما بعد الكمّي للعقدة ومفتاح حساب المشغِّل.
ما يفعله register
يقرأ register قيمة operator_address والمفاتيح من حلقة المفاتيح، ثم:
- يتحقق من الترخيص. يسأل السلسلة عمّا إذا كان
operator_addressيحمل ترخيصlightnode_operatorنشطًا. وبدونه يتوقف ويخبرك أين تحصل على ترخيص. ابتداءً من 3.1.10 تشير الرسالة إلى Tools → Light Node على الشبكة الرئيسية، وعلى شبكة الاختبار إلى ترخيص مجاني عند الطلب عبر nodes@qorechain.io (أما 3.1.9 فكانت لا تزال تذكر علامة التبويب القديمة في لوحة التحكم). ويُبلَّغ عن الترخيص المنتهي أو الموقوف على هذا النحو. كما يُبلَّغ عن العقدة المسجَّلة بالفعل على هذا النحو، ولا يُرسَل شيء. - يُرفِق المفتاح ما بعد الكمّي، ما لم يكن للحساب مفتاح بالفعل. لا يجوز لحساب ليس له مفتاح ما بعد كمّي أن يرسل سوى هذه الرسالة الواحدة، موقَّعة توقيعًا كلاسيكيًا (دون الامتداد الهجين)؛ فترسلها العقدة بهذه الطريقة وتُضمِّنها إثباتًا لحيازة المفتاح حيث تدعم السلسلة ذلك.
- يفوِّض التفويض الناقص، فقط إذا حدّدت مدقِّقًا عبر
--delegate-to qorvaloper1.... وبدون--delegate-to، إذا كان الحساب دون الحد الأدنى، يتوقف ويخبرك بمقدار النقص. ابتداءً من 3.1.10 لا يحتسب إلا التفويض المقدَّم إلى مدقِّقين مربوطين (bonded)، كما تفعل السلسلة؛ أما 3.1.9 فكانت تحتسب أيضًا المدقِّقين المسجونين (jailed) أو غير المربوطين، وقد يُرفَض التسجيل حينها على السلسلة، لذا فوِّض إلى مدقِّق نشط إذا كنت تشغِّل 3.1.9. - يسجِّل العقدة مع رسم 1 QOR.
تُوقِّع العقدة كل خطوة بنفسها، وتُؤكَّد في كتلة قبل إرسال الخطوة التالية. تحمل كل معاملة بعد تسجيل المفتاح التوقيع الهجين ML-DSA-87 + secp256k1 الذي تتطلبه السلسلة.
يأخذ الأمر الأعلام التالية:
--delegate-to— مدقِّقqorvaloper1…الذي يُفوَّض إليه التفويض الناقص.--type— نوع العقدة،sxأوux(الافتراضي هو إصدار الثنائي).--version— إصدار العقدة المراد تسجيله (الافتراضي هو إصدار الثنائي نفسه).--print— يطبع أوامرqorechaindالمكافئة بدلًا من التوقيع (انظر أدناه).
يجب أن يكون الحساب موجودًا بالفعل على السلسلة (أي أن يكون قد تلقى أموالًا) قبل أن يتمكن register من التوقيع عنه.
الحسابات التي لديها مفتاح ما بعد كمّي بالفعل
كثيرًا ما يكون للحساب المُعَدّ في محفظة مفتاح ما بعد كمّي بالفعل، مشتق من كلمات الاسترداد نفسها. وبموجب قواعد السلسلة في v3.2.3 لا تقبل السلسلة إلا المفتاح المسجَّل على الحساب، وترفض المفاتيح من نوع classical_only أو المفتاح الفارغ.
منذ 3.1.9، يتعامل keys add-operator --recover مع ذلك: عندما يكون للحساب مفتاح ما بعد كمّي بالفعل، يعيد بناء ذلك المفتاح من الكلمات، مستخدمًا الاشتقاق نفسه الذي يستخدمه wallet-adapter ولوحة التحكم (وهو نفسه الذي يستخدمه qorechaind tx pqc recover-key)، وتوقّع العقدة به. وعندما لا يكون للحساب مفتاح، تشتق العقدة مفتاحًا من الكلمات، فتستعيد الكلمات أيضًا مفتاح العقدة. وإذا كان للحساب مفتاح ما بعد كمّي لا تستطيع الكلمات إعادة إنتاجه (محفظة تولّد مفتاحها الخاص وتحتفظ به)، يرفض الأمر وينصح باستخدام حساب مشغِّل مخصَّص.
البديل الاحتياطي: مفتاح المشغِّل في حلقة مفاتيح qorechaind
إذا كنت تحتفظ بمفتاح حساب المشغِّل في حلقة مفاتيح qorechaind ولا تريد تخزينه في العقدة، فتخطَّ الخطوة 3 وشغِّل:
lightnode-sx register --print
يُجري الأمر فحوص الترخيص والتسجيل نفسها ويطبع، مع ملء قيمك، أوامر qorechaind لكل خطوة: تصدير مفتاح العقدة إلى دليل مفاتيح qorechaind (keys export <name> --out ~/.qorechaind/pqc/<name>.dilithium)، وtx pqc register-key-v2 … hybrid، وtx staking delegate عندما يكون التفويض ناقصًا، وtx lightnode register كزوج من التوليد ثم tx pqc cosign. وفي هذا المسار يستخدم العفريت أيضًا qorechaind لنبضات القلب؛ راجع إعدادات [heartbeat].
إثباتات استمرارية النشاط عبر نبضات القلب
التسجيل وحده لا يكفي للبقاء مؤهلًا. يجب على العقدة الخفيفة المسجَّلة أن تُثبت باستمرار أنها متصلة عبر إرسال إثباتات استمرارية النشاط بنبضات القلب. تُعد نبضات القلب هذه الوسيلة التي تميز بها السلسلة العقد النشطة — المؤهلة لحصة المكافأة — عن العقد المسجَّلة لكن غير المتصلة.
عمليًا يعني هذا أن العقدة المسجَّلة والتي تبقى قيد التشغيل (ومتزامنة) تحافظ على أهليتها، بينما العقدة التي تنقطع عن الاتصال تتوقف عن إثبات النشاط وتفقد أهليتها حتى تعود. لذا فإن إبقاء العفريت قيد التشغيل وبصحة جيدة جزء من كسب المكافآت — راجع المكافآت والمراقبة لمعرفة كيفية مراقبة صحة نبضات القلب والمزامنة.
خط أنابيب نبضات القلب الموقَّع تشاركيًا بـ PQC
QoreChain هي PQC مطلوبة افتراضيًا، لذا تحمل كل نبضة قلب توقيعًا هجينًا: ML-DSA-87 (Dilithium-5) بالمفتاح ما بعد الكمّي للحساب، وsecp256k1 بمفتاح حساب المشغِّل. تبني العقدة المعاملة وتوقّعها بنفسها على Linux وmacOS وWindows؛ ولا حاجة إلى qorechaind. وتقرأ من الشبكة إصدار sign-bytes الذي يجب استخدامه.
نبضات القلب على السلسلة مفعّلة افتراضيًا. يرسل العفريت نبضة عندما تمر 1,000 كتلة ([heartbeat] interval_blocks، المطابِق لـ heartbeat_interval في السلسلة) منذ last_heartbeat الخاص بالعقدة في السلسلة نفسها، ويفحص كل 60 ثانية، فلا تؤدي إعادة التشغيل إلى إرسال نبضة مكررة ولا إلى انتظار فترة كاملة. ولا يُبلَّغ عن كل نبضة إلا بعد أن تدخل في كتلة.
يختار العفريت موقِّعه عند بدء التشغيل:
- أصلي (Native) — تحتوي حلقة المفاتيح على مفتاح المشغِّل (من
keys add-operator) ويطابقoperator_address. هذه هي الحالة المعتادة. - البديل الاحتياطي
qorechaind— في غير ذلك، إذا كان ثنائيqorechaindموجودًا علىPATHأو في[heartbeat] qorechaind_path. يستخدم مفتاح المشغِّل في حلقة مفاتيحqorechaind([heartbeat] key_name، والدليل الرئيسيqorechaind_home، الافتراضي~/.qorechaind) ومفتاح العقدة المُصدَّر تحتpqc/<key_name>.dilithium. توضع عبارة مرور حلقة مفاتيحqorechaindفيQORE_LIGHTNODE_QORECHAIND_PASSPHRASE؛ وتُمرَّر إلىqorechaindعبر الإدخال القياسي stdin، ولا توضع أبدًا في سطر أوامر.
وإلى أن تُسجَّل العقدة، لا ترسل نبضات قلب؛ بل تسجّل السبب في السجل، مرة واحدة عند كل تغيّر في الحالة: لا يوجد ترخيص، أو الترخيص نشط لكن العقدة غير مسجَّلة (شغِّل register). يعرض lightnode-sx status الأسطر Signer: وLicence: وRegistration: بحيث يظهر السبب دون قراءة السجلات. وعندما لا يوجد موقِّع، تظل العقدة تعمل وتتزامن، لكنها لا تستطيع البقاء نشطة على السلسلة، ويوضّح status ذلك.
علامة التبويب Light Node في لوحة التحكم
تجمع علامة التبويب Tools → Light Node في لوحة تحكم QoreChain هذه الخطوات معًا:
- التنزيلات. تربط بثنائيات العقدة الخفيفة للشبكة المحددة (الملفات نفسها الموجودة في
https://download.qore.host/<net>/lightnode/latest.json، مع المجاميع الاختبارية sha256 الخاصة بها). - خطوات الإعداد. تعرض الخطوات الخمس أعلاه، مطابِقةً للإصدار الموجود في بيان الإصدار، وما إذا كان التسجيل مفتوحًا، مقروءًا من الحقل
registrationفي البيان. - شراء الترخيص (الشبكة الرئيسية فقط). تأخذ عنوان الترخيص قبل الدفع وتعرض Paid, awaiting on-chain grant إلى أن تؤكد السلسلة المنح. وتحذّرك إذا كان العنوان الذي تُدخله هو محفظتك الاحتجازية على لوحة التحكم، وتنبّهك، للعلم، إذا كان للعنوان مفتاح ما بعد كمّي بالفعل.
- الحالة. تعرض لوحة حالة وضع العقدة كما يُقرأ من السلسلة.
التسجيل نفسه هو دائمًا المعاملة التي يرسلها lightnode-sx register (أو lightnode-ux register). لا تسجّل لوحة التحكم العقد؛ وقد أُزيل نموذج التسجيل القديم فيها، الذي كان يكتفي بحفظ سجل.
إلى أين تذهب بعد ذلك
- المكافآت والمراقبة — كيف تُكسب حصة الـ 3% وتُراكَم وتُراقَب.
- إصدار SX — أمر
registerومرجع سطر الأوامر الكامل.