إصدار UX — لوحة تحكم الويب
يشغِّل إصدار UX (تجربة المستخدم - User eXperience) نفس عفريت العقدة الخفيفة الذي يشغِّله إصدار SX، لكنه يضيف لوحة تحكم ويب مدمجة بحيث يمكنك مراقبة العقدة والشبكة في المتصفح. الثنائي هو lightnode-ux. مثل إصدار SX، تصف هذه الصفحة العقدة الخفيفة 3.1.10 (خط إصداراتها الخاص، منفصل عن إصدار السلسلة).
إصدار UX هو الخيار الصحيح للاستخدام على سطح المكتب وللمشغِّلين الذين يفضلون واجهة بصرية على سطر الأوامر.
التثبيت
تعمل الثنائيات المُجهَّزة مسبقًا محليًا على ست منصات دون أي اعتماديات أصلية (native) — Linux (amd64، arm64)، وmacOS (Intel، Apple Silicon)، وWindows (amd64، arm64) — بحجم يبلغ نحو 13 ميغابايت لكل منها. تحقَّق من مجموع التحقق (checksum) الخاص بالتنزيل مقابل البيان قبل تشغيله — راجع إصدار SX لمعرفة الطريقة.
البناء من المصدر
يتطلب إصدار UX Go 1.26.1. تشفيره لما بعد الكم هو تطبيق بلغة Go خالصة (pure-Go) (بدون CGO، بدون مكتبة أصلية):
go build -o build/lightnode-ux ./cmd/lightnode-ux/
ابنِ من وسم الإصدار (git checkout v3.1.10). ينتج هذا build/lightnode-ux.
Docker
تُبنى خدمة UX من Dockerfile.ux في مستودع المصدر (github.com/qorechain/qorechain-lightnode، الوسم v3.1.10). تحتاج الحاوية إلى config.toml في وحدة تخزين بياناتها قبل أن تبدأ. يتضمن ثنائي UX أوامر الإعداد، لذا يمكنك إنشاؤه داخل وحدة التخزين:
export QORE_LIGHTNODE_KEYRING_PASSPHRASE='...'
export QORECHAIN_RPC_ADDR=https://rpc.qore.host # testnet: https://rpc-testnet.qore.host
docker compose run --rm lightnode-ux onboard
docker compose run --rm lightnode-ux keys add-operator --recover # to register this node
docker compose run --rm lightnode-ux register --delegate-to qorvaloper1...
داخل الحاوية يجب أن تستمع لوحة التحكم على جميع واجهات الحاوية، لذا اضبط هذا في ذلك الملف (/root/.qorechain-lightnode/config.toml داخل وحدة التخزين) وانشر المنفذ على loopback الخاص بالمضيف فقط. ينشر ملف docker-compose.yml المرفق المنفذ 8420:8420، الذي يمكن الوصول إليه من أجهزة أخرى؛ غيِّره:
[dashboard]
bind_addr = "0.0.0.0:8420"
# docker-compose.yml, lightnode-ux service
ports:
- "127.0.0.1:8420:8420"
docker compose up -d lightnode-ux
تحفظ حاوية UX البيانات، بما فيها حلقة المفاتيح، في وحدة تخزين مسمّاة عند /root/.qorechain-lightnode وتقرأ عنوان RPC للسلسلة من متغير البيئة QORECHAIN_RPC_ADDR. توقّع العقدة معاملاتها بنفسها، لذا تستطيع حاوية UX التسجيل وإرسال نبضات الحياة (heartbeats) مثل إصدار SX. لا تتضمن صورة UX البرنامج qorechaind، لذا لا يتوفر فيها البديل الاحتياطي عبر qorechaind.
التشغيل
ابدأ عقدة UX:
build/lightnode-ux start
يطلق هذا العفريت وخادم لوحة التحكم المدمجة معًا. يفعِّل إصدار UX لوحة التحكم دائمًا. عند بدء التشغيل يطبع الثنائي رابط لوحة التحكم.
يتشارك إصدار UX إعداده مع إصدار SX: يقرأ نفس config.toml من ~/.qorechain-lightnode ويستخدم نفس حلقة المفاتيح، ويملك الأوامر نفسها (onboard وkeys وregister وstatus وselftest وغيرها). الإعداد لأول مرة هو الخطوات الخمس نفسها، مع lightnode-ux بدلًا من lightnode-sx:
export QORE_LIGHTNODE_KEYRING_PASSPHRASE='choose-a-passphrase'
lightnode-ux onboard
lightnode-ux keys add-operator --recover
lightnode-ux register --delegate-to qorvaloper1...
lightnode-ux start
راجع إصدار SX لمعرفة ما يفعله كل أمر، والتسجيل والترخيص للاطلاع على المتطلبات. يوقّع العفريت داخل إصدار UX نبضات الحياة ويرسلها بالطريقة نفسها التي يتبعها إصدار SX، على Linux وmacOS وWindows. عند تشغيل register من ثنائي UX، تُسجَّل العقدة بالنوع ux.
لوحة تحكم الويب على المنفذ 8420
تُعرَض لوحة التحكم على المنفذ 8420. هذا هو المنفذ الذي تعلنه صورة Docker الخاصة بـ lightnode-ux (EXPOSE 8420) والافتراضي الذي يرتبط به الثنائي، لذا عند التشغيل عبر Docker تُنشَر لوحة التحكم على 8420:
http://localhost:8420
تشير بعض النصوص في أماكن أخرى إلى المنفذ 8080 للوحة التحكم. القيمة المعتمدة هي 8420 — وهي ما تعرضه الصورة فعليًا وما يرتبط به العفريت افتراضيًا. إذا عدّلت ملف docker-compose.yml الخاص بك أو وكيلًا عكسيًا، عيِّن إلى 8420، وليس 8080.
لا تملك لوحة التحكم تسجيل دخول. ما لم تضبط [dashboard] token، يستطيع أي شخص يمكنه الوصول إلى المنفذ 8420 قراءة إعداداتك وتفويضاتك ومكافآتك؛ لا يُقدَّم أي مفتاح خاص أبدًا. عند ضبط رمز (token)، يتطلب كل مسار /api واتصال /ws الترويسة Authorization: Bearer <token> (وهو الرمز الذي ترسله QoreX عند اقترانها بالعقدة)؛ وعبر http العادي يعبر هذا الرمز الشبكة دون تشفير. أصبح الثنائي الآن يقتصر افتراضيًا على loopback فقط (127.0.0.1:8420) بدلًا من جميع الواجهات، ويطبع تحذيرًا عند بدء التشغيل إذا هيّأته للاستماع على نطاق أوسع — لكن التحذير ليس رفضًا. إذا وسّعت الربط عمدًا (على سبيل المثال للوصول إليه من جهاز آخر، أو لأنك تنشر المنفذ من Docker)، فاضبط رمزًا وضعه خلف https (وكيل عكسي أو نفق SSH) بدلًا من تعريضه مباشرة. يتحقق اتصال القياس عن بُعد عبر WebSocket أيضًا من Origin الخاص بالمتصفح، لأن الربط الشبكي الواسع وحده لا يمنع صفحة أخرى مفتوحة في نفس المتصفح من الاتصال.
ما تعرضه لوحة التحكم
تُنظَّم لوحة التحكم في العروض التالية:
- Overview — ارتفاع الكتل وحالة العقدة بلمحة سريعة.
- Validators — مجموعة المُدققين المربوطين.
- Delegation — التفويضات المنعكسة من حساب المشغِّل الخاص بك (
operator_address). - Network — القياس عن بُعد الحي للشبكة والترويسات المتزامنة حديثًا.
- Bridge — القياس عن بُعد للجسر عبر السلاسل.
- Tokenomics — القياس عن بُعد لاقتصاد الرمز.
- Settings — التهيئة الفعلية للعقدة.
يُحدَّث القياس عن بُعد في الوقت الفعلي، إذ يحدِّث العفريت بيانات المُدققين والشبكة والجسر واقتصاد الرمز على فترات مستقلة (قابلة للتهيئة تحت [telemetry] في config.toml).
شريط الوضع المحلي فقط
إذا لم يكن للعقدة نقطة نهاية RPC للسلسلة مهيَّأة، تعمل لوحة التحكم في الوضع المحلي فقط وتعرض شريطًا بارزًا يشرح الحالة: حزمة PQC مُتحقَّق منها، لكن العقدة لا تتزامن مع أي سلسلة، لذا يبقى ارتفاع الكتل عند 0. يحثك الشريط على تشغيل معالج التهيئة الأولية على المضيف (يذكر الشريط lightnode-sx؛ ويؤدي lightnode-ux onboard الشيء نفسه):
lightnode-sx onboard
يشغِّل المعالج الاختبار الذاتي لـ PQC، ويطلب نقطة نهاية سلسلتك، ويستورد أو يولِّد مفتاح العقدة الخاص بك. بمجرد تهيئة نقطة نهاية، أعد تشغيل العقدة وتبدأ لوحة التحكم بعرض بيانات السلسلة الحية.
إلى أين تذهب بعد ذلك
- التسجيل والترخيص — سجِّل العقدة على السلسلة.
- المكافآت والمراقبة — كيف تُقيَّد حصة العقدة الخفيفة البالغة 3% وكيف يُطالَب بها، وكيف تراقب صحة العقدة.