# เดโมออฟไลน์

**ตัวอย่างเพื่อการเรียนรู้ที่รันได้ · v0.1.0 · Node.js 22+ · ใช้หลักฐานสมมติเท่านั้น** ไม่ใช่ SDK ของ P21 สำหรับระบบจริงหรือตัวตรวจบล็อกเชนแบบสด

## ดาวน์โหลดและรัน

บนเว็บไซต์ที่สร้างแล้ว เปิด [/demo/](https://proof21.xyz/demo/) ดาวน์โหลด `proof21-demo.mjs` และตรวจดูไฟล์ จากโฟลเดอร์ที่เก็บไฟล์นั้น:

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

ไม่ต้อง npm install, API key, กระเป๋า การเรียกเครือข่าย หรือการเขียนไฟล์ ใช้ `--json` เพื่อรับผลแบบมีโครงสร้าง สำเนารีโพซิทอรีที่มีตัวอย่างนี้รัน `npm run demo` ที่โฟลเดอร์หลักได้โดยไม่ติดตั้งส่วนพึ่งพา

## สิ่งที่เดโมต้องการแสดง

ผู้รับตรวจลายเซ็น compact JWS ด้วยกุญแจสาธารณะตัวอย่าง Ed25519 ที่ตรึงไว้ แล้วเปรียบเทียบข้อสังเกตสมมติที่ลงนามกับคำสั่งแยกในเครื่อง ไม่ยอมรับกุญแจหรือนโยบายที่ตัวใบรับรองเลือกให้เอง

| ข้อมูลเข้า | ลายเซ็น | การเปรียบเทียบ | การตัดสินใจของผู้รับ |
| --- | --- | --- | --- |
| ตัวอย่างตรงกัน | VALID | PASS | REVIEW |
| ผู้รับผิดคน แต่ลงนามข้อมูลนั้นจริง | VALID | FAIL | REJECT |
| หลักฐานการชำระเงินขาดหาย | VALID | INDETERMINATE | REVIEW |
| แก้เพย์โหลดหลังลงนาม | INVALID | INDETERMINATE | REJECT |

แถวที่สองคือบทเรียนสำคัญ: ลายเซ็นที่ถูกต้องไม่ได้ทำให้การกระทำถูกต้อง แถวแรกยังต้อง REVIEW เพราะหลักฐานสมมติยืนยันการชำระเงินจริงไม่ได้

## ขอบเขตที่แน่นอน

โค้ดใช้การตรวจ Ed25519 ในตัวของ Node และกฎอินพุตลงนามแบบ JWS compact ตัวแยกวิเคราะห์ที่จงใจจำกัดรองรับเฉพาะส่วนหัว สคีมา ชนิดแหล่งข้อมูล และการเข้ารหัส JSON compact ที่กำหนดของตัวอย่างนี้ รูปแบบอื่นจะถูกปฏิเสธ ไม่ใช่แปลงโดยประมาณ นี่ไม่ใช่ไลบรารี JOSE ทั่วไป ไม่ใช่การทำ canonical JSON และไม่ใช่รูปแบบรายงาน P21 ฉบับสุดท้าย

หลักฐานและสินทรัพย์ชำระเงินเป็นเรื่องสมมติ ความสดใหม่เปรียบเทียบกับ**นาฬิกาสาธิตที่กำหนดคงที่** ไม่มีการติดต่อโหนด Bitcoin หรือ EVM เดโมไม่มีการป้องกันรีเพลย์แบบถาวร การค้นหา/เพิกถอนกุญแจ ความยืนยันธุรกรรม การคำนวณ DMT/TAP เอนโทรปี การชำระผ่าน x402/B402 หรือรันไทม์ MCP อนุญาตให้รันตัวอย่างซ้ำได้โดยตั้งใจ

## การใช้อย่างปลอดภัย

ตรวจซอร์สที่ดาวน์โหลดก่อนรัน อย่าติดตั้งแพ็กเกจ npm ชื่อคล้ายกันที่ยังไม่ยืนยัน ค่าแฮชข้างไฟล์ช่วยตรวจการเปลี่ยนแปลงโดยบังเอิญ แต่ไม่ได้ยืนยันผู้เผยแพร่อย่างอิสระเมื่อเว็บไซต์ผู้เผยแพร่ถูกโจมตี ตัวติดตั้งสำหรับระบบจริงต้องผ่านการทบทวนและกระบวนการยืนยันรุ่นแยกต่างหาก

ตัวอย่างไม่มี private key สำหรับลงนาม ข้อมูลสมมติถูกลงนามครั้งเดียวระหว่างพัฒนา ผู้รับที่แจกมีเพียง public key และข้อมูลที่ลงนามแล้ว ให้ผลทางคอนโซลโดยไม่ทำอะไรกับกระเป๋า

## การทดสอบ

รัน `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 in JOSE, RFC 8037](https://www.rfc-editor.org/rfc/rfc8037)
