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

أداة سطر أوامر QoreChain (@qorechain/qore-cli، الأمر qore)

تقرأ qore بيانات QoreChain من الطرفية. وهي موجّهة للمطورين والمشغّلين والسكربتات التي تريد البحث عن معاملة، أو التحقق من أن توقيعها ما بعد الكمّي يتحقق، أو قراءة حساب أو مجموعة المدققين، أو محاكاة معاملة، أو تجهيز تحويل غير موقّع، دون كتابة شيفرة. كل أمر يشغّل أداة واحدة من خادم MCP لـ QoreChain، وتطبع --json بالضبط ملف JSON الذي تعيده الأداة، فيرى السكربت ووكيل الذكاء الاصطناعي البيانات نفسها.

لا يُوقَّع شيء ولا يُبَثّ شيء أبدًا، ولا تحتفظ الأداة بمفاتيح. الإصدار 0.1.0، نُشر في 27 أكتوبر 2026، بترخيص Apache-2.0، ويحتاج إلى Node.js 20 أو أحدث.

الابتكارات​

  • JSON مطابق لمخرجات أداة MCP. تطبع qore <command> --json الكائن نفسه، بأسماء الحقول نفسها، الذي تعيده أداة MCP المقابلة. وبدون --json يُطبع الكائن نفسه كنص مقروء. فما كُتب مقابل أحدهما يعمل مقابل الآخر.
  • حالة التوقيع ما بعد الكمّي من الطرفية. تبلّغ qore pq status <txhash> عمّا إذا كانت المعاملة تحمل طبقة هجينة واحدة بالضبط وعمّا إذا كان توقيع ML-DSA-87 (FIPS 204) يتحقق مقابل المفتاح الذي سجّله الموقّع على السلسلة، لصيغتي sign-bytes v1 وv2. وتبلّغ qore pq status <address> عن المفتاح المسجّل ونوعه وإثبات الحيازة ونافذة تفويض EVM.
  • خط أنابيب لتحويل لا يحتاج إلى مفتاح. يكتب prepare-transfer --json تحويلًا غير موقّع ويقبل simulate ذلك الملف، فتستطيع بناء تحويل وفحصه وتسعيره من سكربت شِل. وتبقى خطوة التوقيع في محفظتك أو في QoreSign.
  • رموز خروج ثابتة. 0 نجاح، و1 خطأ أداة يحمل رمزًا ثابتًا مثل NOT_FOUND أو INVALID_INPUT، و2 خطأ استخدام، فيستطيع السكربت التفرّع بحسب النتيجة.

فيمَ تُستخدم​

  1. التحقق من أن معاملة حملت التوقيع الهجين. مباشرة بعد البثّ، تبلّغ qore pq status <hash> عن فئة التوقيع وعمّا إذا كانت طبقة ML-DSA-87 تتحقق مقابل المفتاح المسجّل للموقّع.
  2. الاطلاع على حالة السلسلة من الطرفية. تجيب qore block وqore account <address> وqore validators وqore search <query> عن سؤال سريع دون فتح مستكشف أو كتابة شيفرة.
  3. تسعير تحويل وفحصه قبل توقيعه. يكتب prepare-transfer تحويلًا غير موقّع، ويعرض simulate الغاز وتغيّرات الرصيد وأي رفض مفكوك الترميز، وتعطي estimate-fee الرسم المقترح. وتوقّع في محفظتك أو بواسطة QoreSign.
  4. قراءة العقود من سكربت أو مهمة CI. يفحص الأمر qore read-contract --to 0x... --function "balanceOf(address)" --arg 0x... --returns uint256 --json | jq رصيد رمز أو دالة عرض في عقد ويحلّل النتيجة.
  5. سكربتات الشِل والمراقبة. مخرجات --json مع رموز الخروج الثابتة (0 و1 و2) تتيح للسكربت التفرّع بحسب النتيجة. وJSON نفسه هو ما يعيده خادم MCP، فيرى عميل الذكاء الاصطناعي والسكربت البيانات نفسها.

كيف تعمل​

يشغّل كل أمر qore أداة واحدة من النواة المشتركة لخادم MCP، داخل عمليتك، مقابل نقاط REST وRPC وEVM JSON-RPC العامة للشبكة التي تختارها. تُبنى الاستجابات حقلًا حقلًا من جواب السلسلة، ولا يُطبع نص أخطاء المنبع أبدًا، ويُحوَّل الإخفاق إلى واحد من سبعة رموز أخطاء ثابتة (NOT_FOUND وINVALID_INPUT وUPSTREAM_UNAVAILABLE وNOT_AVAILABLE_ON_CHAIN وRATE_LIMITED وUNAUTHORIZED وINTERNAL_ERROR). لكل طلب إلى المنبع مهلة 10 ثوانٍ (يغيّرها --timeout) وحد استجابة 4 MiB وبلا إعادة محاولة. وتعمل فحوصات التوقيع الهجين محليًا بواسطة QoreSign. لا يُوقَّع شيء ولا يُرسَل شيء. تفاصيل كل أداة في صفحة خادم MCP.

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

شغّلها دون تثبيت، أو ثبّتها مرة واحدة:

npx -y @qorechain/qore-cli chain
npm install -g @qorechain/qore-cli
qore --version

الأوامر للقراءة فقط وتستخدم الشبكة التجريبية افتراضيًا:

# the latest block, and the chain info
qore block
qore chain

# is this testnet transaction hybrid-signed, and does the ML-DSA-87 layer verify?
qore pq status F642F59F2A2FEDA2B3A61A3CF49F8B5F792D65985027997004FEBB22A6F42152

# an account on mainnet, as JSON
qore account qor1... --network mainnet --json

# the top bonded validators
qore validators --limit 3

# an unsigned transfer, then its simulation (nothing is signed or sent)
qore prepare-transfer --from qor1... --to qor1... --amount 1.5 --json > transfer.json
qore simulate transfer.json
qore estimate-fee --from qor1... --to qor1... --amount 1.5

المبالغ تُكتب 1.5 أو 1.5 QOR (QOR، حتى 6 منازل عشرية) أو 1500000uqor. ويمكن أن تكون العناوين qor1... أو 0x....

سكربت يفحص حسابًا ومعاملة​

في المستودع سكربت كامل (examples/cli/pq-check.sh) يفعل ذلك. وهذا لبّه:

net=testnet
qore() { npx -y @qorechain/qore-cli "$@" --network "$net" --json; }

qore account "$addr" | jq '{exists, balances: [.balances[] | {denom, amount, display}], pq_key_registered}'
qore pq status "$addr" | jq '.address_status | {registered, algorithm, key_type, possession_proven, evm_window: .evm_window.live}'
qore pq status "$tx" | jq '.transaction_status | {tier, has_exactly_one_pqc_layer, signer, verified: .verification.verified, reason: .verification.reason}'

# An unsigned transfer to yourself, then its fee (nothing is signed or sent).
qore prepare-transfer --from "$addr" --to "$addr" --amount 0.000001 > transfer.json
qore simulate transfer.json | jq '{ok, gas_used, suggested_gas_limit, refusal}'

مثال على مخرجات qore block --network mainnet --json (27 أكتوبر 2026):

{
"network": "mainnet",
"height": "3858155",
"hash": "1DA8CA5049ACF8844A3B775E2E138B2B118EDC1FC8C1F3602369B0C18D0B90C2",
"time": "2026-10-27T21:32:48.831948088Z",
"chain_id": "qorechain-vladi",
"proposer_address": "B1CDC8C45DA1FFF9BA5A01320F16FC7460E90B8F",
"tx_count": 0,
"tx_hashes": [],
"tx_hashes_truncated": false,
"explorer_url": "https://explore.qore.network/block/3858155"
}

الأوامر​

الأمرأداة MCPماذا يفعل
chain, featuresget_chain_infoمعرّفات السلسلة وآخر كتلة والحد الأدنى لسعر الغاز وإصدار sign-bytes ومفاتيح ميزات البروتوكول وprecompiles الـ EVM النشطة
block [height]get_blockكتلة واحدة، الأخيرة افتراضيًا
tx get <hash>get_transactionمعاملة بتجزئتها الأصلية أو بتجزئة EVM: الحالة والرسم والرسائل والموقّعون وفئة التوقيع
account <address>get_address_infoالأرصدة وحالة الحساب والمبلغ المودَع في staking وصيغتا العنوان
pq status <address|txhash>get_pq_statusحالة مفتاح ML-DSA-87 لعنوان، أو فحص الطبقة الهجينة لمعاملة
validators [--status S] [--limit N]get_validatorsالمدققون بحسب الحصة؛ الحالة هي bonded (الافتراضي) أو unbonding أو unbonded أو all؛ والحد حتى 200
staking-tiers [--holder A]get_staking_tiersمعاملات طبقات التخزين ومجمّعها، وأقفال حامل واحد (سلسلة v3.2.4 وما بعدها)
search <query>searchيكشف ارتفاع كتلة أو تجزئة أو عنوانًا أو مدققًا ويقرأه
read-contract --to 0x.. (--data 0x.. | --function "f(address)" --arg V) [--returns T]read_contractاستدعاء EVM eth_call فقط، مع ترميز وفك ترميز اختياريين
simulate <txfile.json|base64> [--no-pqc-placeholder]simulate_txالغاز وتغيّرات الرصيد ورفض مفكوك الترميز لمعاملة مرمَّزة
estimate-fee (<txfile.json|base64> | --from A --to B --amount X)estimate_feeحد الغاز المقترح والرسم، شاملًا طبقة ML-DSA-87
prepare-transfer --from A --to B --amount X [--memo M] [--gas-limit N]prepare_transferتحويل غير موقّع لتوقّعه محفظتك

الخيارات العامة: --network testnet|mainnet (الافتراضي testnet)، و--json، و--timeout <ms> (مهلة المنبع، الافتراضي 10000)، و--help و--version. مخططات الأدوات في مرجع أدوات MCP.

ما الذي شُغِّل​

في 27 أكتوبر 2026 ثُبّت @qorechain/qore-cli 0.1.0 و@qorechain/mcp 0.1.0 من npm في مشروع فارغ، وشُغّلت هذه الأوامر للقراءة فقط مقابل النقاط العامة:

  • طبعت qore --version القيمة 0.1.0، وسردت qore --help الأوامر أعلاه.
  • طبعت qore chain (الشبكة التجريبية) السلسلة qorechain-diana ومعرّف سلسلة EVM 9800 والحد الأدنى لسعر الغاز 0.1 وsign-bytes v2؛ وطبعت qore chain --network mainnet السلسلة qorechain-vladi ومعرّف سلسلة EVM 9801 وsign-bytes v2.
  • أعادت qore block وqore validators --limit 3 --json وqore staking-tiers --json وqore search 8981000 وqore account qor178nscfyp0cq2ac5x7un4u98xrj4ayp6pt0kw08 وqore read-contract --to 0x...0a02 --function "x()" بياناتها.
  • طبعت qore pq status F642F59F...2152 الفئة pqc وhas_exactly_one_pqc_layer: true وverified: true مع sign-bytes v2.
  • كتبت qore prepare-transfer --from A --to A --amount 1.5 --json تحويلًا غير موقّع (حد الغاز 171698، الرسم 17170 uqor)، وأعادت qore simulate على ذلك الملف ok: true، وأعادت qore estimate-fee رسمًا مطابقًا. كان المرسل والمستلم العنوان نفسه، فأضافت الأداة تحذيرًا، ولم يُوقَّع شيء ولم يُرسَل شيء.
  • طبعت qore tx get zzz القيمة error [INVALID_INPUT] وخرجت بالرمز 1؛ وخرجت qore bogus بالرمز 2.

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

  • الشبكات. الشبكة التجريبية qorechain-diana (الافتراضية) والشبكة الرئيسية qorechain-vladi بالخيار --network mainnet.
  • النقاط. تقرأ الأداة نقاط REST وRPC وEVM JSON-RPC العامة: https://api-testnet.qore.host وhttps://rpc-testnet.qore.host وhttps://evm-testnet.qore.host على الشبكة التجريبية، وhttps://api.qore.host وhttps://rpc.qore.host وhttps://evm.qore.host على الشبكة الرئيسية.
  • الحساب والمفاتيح. لا شيء. لا تسجيل دخول ولا مفتاح API ولا ملف إعداد؛ ومفتاح نقطة MCP المستضافة لا ينطبق على الأداة.
  • المتطلبات. Node.js 20 أو أحدث وHTTPS صادر.
  • التكلفة. مجانية. ولإرسال التحويل الذي جهّزته تدفع رسم الشبكة (الحد الأدنى 0.1 uqor لكل وحدة غاز) من محفظتك أنت؛ والأداة لا تنفّذ تلك الخطوة.

ملاحظات أمنية​

  • لا يوجد مسار شيفرة للتوقيع. لا تحتفظ الأداة بمفاتيح، ولا توقّع شيئًا، ولا تبثّ شيئًا؛ ويعيد prepare-transfer مستندًا غير موقّع.
  • تُرفض الأسرار. الإدخال الذي يشبه عبارة استرداد (12 كلمة BIP-39 متتالية أو أكثر) أو مفتاحًا خاصًا مجرّدًا من 32 بايت يُرفض بالرمز INVALID_INPUT قبل إجراء أي طلب. ومع ذلك لا تضع واحدًا في سطر أوامر: سجل الشِل يحتفظ به، وتطلب رسالة الخطأ منك معاملة ذلك السر على أنه مكشوف.
  • البيانات العامة فقط هي التي تغادر جهازك: العناوين والتجزئات والمعاملات المرمَّزة التي تمرّرها، وتُرسل إلى نقاط QoreChain العامة.
  • الشبكة الرئيسية صريحة. تذهب الاستدعاءات إلى الشبكة التجريبية ما لم تمرّر --network mainnet، والتحويل المجهّز للشبكة الرئيسية يحمل تحذيرًا.
  • المذكرات عامة ودائمة. لا تضع سرًا في --memo أبدًا.
  • أبلغ عن الثغرات بشكل خاص إلى security@qore.network، وليس أبدًا في بلاغ عام.

أين نُشرت​

السجلالحزمةالإصدارالتثبيتملاحظات
npm@qorechain/qore-cli0.1.0npm install -g @qorechain/qore-cliالملف التنفيذي qore. Node.js 20 أو أحدث

المصدر: github.com/qorechain/qorechain-mcp، المجلد packages/cli (عام، Apache-2.0، فُحص في 27 أكتوبر 2026). لا توجد نسخة Python أو Rust من الأداة؛ والخادم نفسه موجود أيضًا على PyPI باسم qorechain-mcp.

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

  • للقراءة فقط. لا يوقّع أي أمر ولا يبثّ. يبني prepare-transfer رسالة MsgSend من uqor على المسار الأصلي فقط؛ ولا يجهّز معاملات EVM أو SVM أو staking أو الحوكمة أو العقود. أما simulate وestimate-fee فتقبلان أي معاملة مرمَّزة على المسار الأصلي.
  • لا صنبور ولا سرد لحاملي الرموز. هاتان الأداتان في MCP ليس لهما أمر في سطر الأوامر. تأتي QOR للشبكة التجريبية من الصنبور.
  • تاريخ الشبكة التجريبية مقتطع. كتلة أو معاملة قديمة من الشبكة التجريبية تعيد NOT_FOUND مع أدنى ارتفاع متاح؛ وكانت الشبكة الرئيسية تخدم من الارتفاع 1 وقت الفحص.
  • أرقام الغاز تتبع إصدار السلسلة. طبّقت الشبكتان v3.2.5، لذا تشمل المحاكاة تكلفة التحقق من ML-DSA-87؛ أما مقابل عقدة أقدم فيحمل حد الغاز المقترح هامشًا.
  • حدود المخرجات. 100 تجزئة معاملة كحد أقصى لكل كتلة، و50 رسالة لكل معاملة، و100 رصيد لكل حساب، و200 مدقق لكل استدعاء. لكل طلب مهلة افتراضية 10 ثوانٍ وحد استجابة 4 MiB دون إعادة محاولة.
  • تُرفض الأسرار. الإدخال الذي يشبه عبارة استرداد أو مفتاحًا خاصًا مجرّدًا يُرفض بالرمز INVALID_INPUT. لا تضع واحدًا في سطر أوامر: سجل الشِل يحتفظ به.
  • precompiles ما بعد الكمّي في EVM 0x...0A01 و0x...0A02 نشطان على الشبكة التجريبية فقط.
  • الإصدار الأول. 0.1.0: قد تتغير أسماء الأوامر وخياراتها في إصدارات لاحقة. استخدم --json ورموز الخروج في السكربتات، وثبّت الإصدار.