ฐานข้อมูลบัตร 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: รับรองผู้เล่น

  1. ขอ User ID จากผู้เล่น
  2. กรอกและคลิก Sign with Wallet
  3. คัดลอกลายเซ็นและส่งให้ผู้เล่น

สำคัญ: การเซ็นคือการรับรองผู้เล่น ที่อยู่ wallet ของคุณจะถูกบันทึกเป็น Ambassador ผู้รับรอง

ขั้นตอนการยืนยัน

  1. ผู้ยืนยันมี: IPv6, ที่อยู่ wallet, cert hash
  2. ส่งไปยัง Merkle Service /verify
  3. คำนวณ Leaf ค้นหาใน Merkle Tree
  4. สร้าง Merkle Proof
  5. ยืนยันกับรูทบนเชน
  6. ถ้าถูกต้อง → บัตร แท้

รายละเอียดทางเทคนิค

  • เบราว์เซอร์: 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 ปีจากวันออก

เซิร์ฟเวอร์