# العرض المحلي

**مثال تعليمي قابل للتنفيذ · v0.1.0 · Node.js 22+ · أدلة اصطناعية فقط.** ليس SDK إنتاجياً لـP21 ولا أداة تحقق مباشرة من البلوكتشين.

## التنزيل والتشغيل

افتح [/demo/](https://proof21.xyz/demo/) على الموقع المبني ونزّل `proof21-demo.mjs` وافحصه. من المجلد الذي يحتوي الملف:

```bash
node proof21-demo.mjs
```

لا حاجة إلى npm install أو مفتاح API أو محفظة أو طلب شبكة أو كتابة ملفات. استخدم `--json` لإخراج منظم. يعمل `npm run demo` من جذر نسخة المستودع المتضمنة لهذا المثال دون تثبيت تبعيات.

## فكرة العرض

يتحقق المستقبِل من توقيع JWS مضغوط باستخدام مفتاح Ed25519 عام تجريبي مثبت مسبقاً، ثم يقارن الملاحظة الاصطناعية الموقعة بتعليمات محلية منفصلة. لا يقبل مفتاحاً أو سياسة يختارهما السجل نفسه.

| المدخل | التوقيع | المقارنة | قرار المستقبِل |
| --- | --- | --- | --- |
| مثال متطابق | VALID | PASS | REVIEW |
| مستلم خاطئ، مع توقيع صحيح للبيانات | VALID | FAIL | REJECT |
| غياب أدلة الدفع | VALID | INDETERMINATE | REVIEW |
| تعديل الحمولة بعد التوقيع | INVALID | INDETERMINATE | REJECT |

الصف الثاني هو الدرس الأساسي: صحة التوقيع لا تجعل الإجراء صحيحاً. وحتى الصف الأول يحتاج REVIEW لأن الأدلة الاصطناعية لا تثبت دفعة حقيقية.

## النطاق الدقيق

يستخدم الكود تحقق Ed25519 المدمج في Node وقواعد مدخل التوقيع لصيغة JWS compact. يدعم المحلل المحدود عمداً الرأس والمخطط ونوع المصدر وترميز JSON المضغوط الثابت لهذا المثال فقط. يرفض الصيغ الأخرى بدلاً من تقريب معناها. ليس مكتبة JOSE عامة، ولا تطبيقاً لـcanonical JSON، ولا صيغة التقرير النهائية لـP21.

الأدلة وأصل الدفع خياليان، وتُقارن الحداثة بـ**ساعة عرض ثابتة**. لا يتصل المثال بعقدة Bitcoin أو EVM. لا يشمل منع إعادة الاستخدام المستمر أو اكتشاف المفاتيح وإلغاءها أو نهائية المعاملات أو اشتقاق DMT/TAP أو العشوائية أو تسوية x402/B402 أو بيئة تشغيل MCP. إعادة تشغيل الأمثلة مسموحة عمداً.

## الاستخدام الآمن

افحص المصدر المنزّل قبل تنفيذه. لا تثبّت حزمة npm غير موثقة ذات اسم مشابه. تكشف قيمة تحقق بجوار الملف التغييرات العرضية، لكنها لا توثّق بصورة مستقلة ناشراً مخترقاً. يحتاج المثبّت الإنتاجي إلى مراجعة وآلية تحقق من الإصدارات تخصّه.

لا يتضمن المثال مفتاح توقيع خاصاً. وُقّعت بيانات الاختبار مرة واحدة أثناء التطوير؛ ولا تتضمن حزمة المستقبِل إلا المفتاح العام والبيانات الموقعة. يطبع النتائج في الطرفية دون اتخاذ إجراء على محفظة.

## الاختبارات

شغّل `npm run test:demo` في المستودع. تغطي الاختبارات الأمثلة الأربعة واختلاف الحقول والمدخلات غير المدعومة والتواقيع غير الصحيحة واستبدال المفاتيح والترميزات المعطوبة وفشل الساعة الثابتة وعملية CLI مستقلة. النجاح في هذه الاختبارات ليس تدقيقاً تشفيرياً أو دليلاً على الجاهزية الإنتاجية.

## المراجع

- [Node crypto](https://nodejs.org/api/crypto.html)
- [JSON Web Signature، RFC 7515](https://www.rfc-editor.org/rfc/rfc7515)
- [EdDSA في JOSE، RFC 8037](https://www.rfc-editor.org/rfc/rfc8037)
