ฐานข้อมูลบัตร ECO ID — การยืนยันด้วย Merkle Tree บน KC Chain
ตั้งแต่วันที่ 14 สิงหาคม 2026 ระบบบัตร ECO ID ได้รับการอัปเกรดด้วย ฐานข้อมูล Merkle Tree และการเชื่อมต่อกับ KC Chain
มีอะไรเปลี่ยนแปลง?
ระบบเดิมลงทะเบียนแฮชใบรับรองแต่ละใบแยกกันบน CC Chain ซึ่งไม่สามารถขยายได้ ระบบใหม่ใช้ Merkle Tree เพื่อบีบอัดข้อมูลบัตรทั้งหมดเป็นแฮชรูทเดียวบนเชน
การอัปเกรดหลัก: เก็บเพียง Merkle Root 32 ไบต์ที่สรุปบัตรทั้งหมด ยืนยันบัตรได้ด้วย Merkle Proof โดยไม่ต้องค้นหาบนเชน
Merkle Tree ทำงานอย่างไร
Root (32 bytes, บน KC Chain) ├── Hash(L1 + L2) │ ├── Hash(Leaf1) → บัตร 1 │ └── Hash(Leaf2) → บัตร 2 └── Hash(L3 + L4) ├── Hash(Leaf3) → บัตร 3 └── Hash(Leaf4) → บัตร 4
Leaf = SHA-256(ipv6 | wallet_address | cert_hash)
Leaf ของแต่ละบัตรคือแฮช SHA-256 จากสามฟิลด์หลัก รูทถูกเก็บบนเชน ยืนยันบัตรได้ด้วย Merkle Proof
เก็บอะไรที่ไหน?
| ที่เก็บ | ข้อมูล | ขนาด |
|---|---|---|
| PostgreSQL (TH-ubu-1) | ข้อมูลบัตรทั้งหมด | ~2-3 TB |
| KC Chain (บนเชน) | Merkle Root 32 ไบต์ + ประวัติ | ~32 KB |
| เบราว์เซอร์ | คีย์ส่วนตัว ECDSA P-256 | ~64 ไบต์ |
วิธีสมัครบัตร ECO ID
1 เปิดพาเนล ECO ID
คลิกปุ่ม ECO ID ในแถบด้านขวาในเกม
2 สร้างคีย์และ CSR
คลิก Generate Key & CSR เบราว์เซอร์สร้างคีย์ ECDSA P-256 คีย์ส่วนตัวไม่ออกจากอุปกรณ์
3 รับการรับรองจาก Golden Ambassador
แชร์ User ID กับ Golden Ambassador เฉพาะ Golden Ambassador (แต่งตั้ง) เท่านั้นที่รับรองได้ — Elected Ambassador ทำไม่ได้
4 ส่งคำขอ
กรอกที่อยู่ wallet และลายเซ็น คลิก Submit & Sign ECO CA เซ็นใบรับรอง
5 บัตรลงทะเบียน
ข้อมูลบัตรเก็บใน PostgreSQL Merkle Tree คำนวณใหม่ รูทใหม่ส่งไป KC Chain
สำหรับ Golden Ambassador: รับรองผู้เล่น
- ขอ User ID จากผู้เล่น
- กรอกและคลิก Sign with Wallet
- คัดลอกลายเซ็นและส่งให้ผู้เล่น
สำคัญ: การเซ็นคือการรับรองผู้เล่น ที่อยู่ wallet ของคุณจะถูกบันทึกเป็น Ambassador ผู้รับรอง
ขั้นตอนการยืนยัน
- ผู้ยืนยันมี: IPv6, ที่อยู่ wallet, cert hash
- ส่งไปยัง Merkle Service
/verify - คำนวณ Leaf ค้นหาใน Merkle Tree
- สร้าง Merkle Proof
- ยืนยันกับรูทบนเชน
- ถ้าถูกต้อง → บัตร แท้
รายละเอียดทางเทคนิค
- เบราว์เซอร์: Web Crypto API, ECDSA P-256 คีย์ส่วนตัวใน IndexedDB
- ECO CA: HSM (Nitrokey HSM2) เซ็นใบรับรอง ส่งคืน PEM + SHA-256 hash
- Merkle Service: Node.js บน TH-ubu-1 (:9200) PostgreSQL, Merkle Tree, อัปเดตรูทบนเชน
- บนเชน:
ECOIDRegistry.updateEcoIdMerkleRoot()บน KC Chain (Chain ID 90603) - สัญญา:
0x23Fc8E33F7762268800739aE1ccB3EAF8A1435bA - บนเชน: Merkle Root 32 ไบต์, ตัวนับอัปเดต, ประวัติรูท (สูงสุด 1000)
- ไม่บนเชน: ข้อมูลส่วนบุคคล, คีย์ส่วนตัว, ใบรับรอง
คำถามที่พบบ่อย
สมัคร ECO ID ได้สองใบไหม? ไม่ได้ หนึ่ง ECO ID ต่อผู้ใช้
ถ้าทำคีย์ส่วนตัวหาย? ใบรับรองยัง valid แต่ยืนยันความเป็นเจ้าของไม่ได้ กระบวนการเพิกถอนจะมีในอัปเดตถัดไป
Ambassador ต้องอยู่ประเทศเดียวกันไหม? ไม่ — Golden Ambassador (แต่งตั้ง) รับรองผู้เล่นได้จากทุกประเทศ Elected Ambassador รับรองไม่ได้
ข้อมูลส่วนบุคคลอยู่บนบล็อกเชนไหม? ไม่ มีเพียง Merkle Root 32 ไบต์บนเชน
ใบรับรอง valid นานแค่ไหน? 10 ปีจากวันออก
เซิร์ฟเวอร์
- World: https://world.getplasma.org
- India: https://in.getplasma.org
- United States: https://us.getplasma.org
- Singapore: https://sg.getplasma.org