PlusMagi's Blog By Pitt Phunsanit Technology เจาะลึกการทำงานของ Merkle Tree ใน Proof of Reserves (PoR): โปร่งใส ปลอดภัย และไม่ละเมิดข้อมูลส่วนบุคคล

เจาะลึกการทำงานของ Merkle Tree ใน Proof of Reserves (PoR): โปร่งใส ปลอดภัย และไม่ละเมิดข้อมูลส่วนบุคคล

หลังวิกฤติความเชื่อมั่นในอุตสาหกรรมคริปโตเคอร์เรนซี คำว่า Proof of Reserves (PoR) หรือการพิสูจน์เงินสำรอง กลายเป็นมาตรฐานสำคัญที่กระดานเทรดต้องมี หัวใจสำคัญที่ทำให้กระบวนการนี้ทำงานได้โดยไม่ต้องเปิดเผยความลับของผู้ใช้ คือโครงสร้างข้อมูลทางคณิตศาสตร์ที่ชื่อว่า Merkle Tree


โจทย์หินของระบบ Proof of Reserves

การพิสูจน์ว่ากระดานเทรดมีเงินสำรองครบถ้วน มีโจทย์สำคัญ 2 ข้อที่ดูเหมือนจะขัดแย้งกันเองในตัว

  1. ความครบถ้วนของหนี้สิน (Completeness)
    กระดานเทรดต้องพิสูจน์ให้ได้ว่า ยอดเงินของลูกค้าทุกคนถูกนำมานับรวมเป็นหนี้สิน (Liabilities) จริง โดยไม่มีการตกหล่นหรือแอบลดยอด
  2. ความเป็นส่วนตัวของข้อมูล (Privacy)
    ลูกค้าแต่ละคนต้องสามารถตรวจสอบยอดของตนเองได้ โดยที่ไม่มีใครมองเห็นยอดเงินคงเหลือหรือข้อมูลระบุตัวตนของลูกค้ารายอื่น

หากใช้วิธีเผยแพร่ฐานข้อมูลบัญชีทั้งหมด ความเป็นส่วนตัวจะพังทลายทันที แต่หากเก็บไว้เป็นความลับ ก็ไม่มีใครตรวจสอบความโปร่งใสได้ Merkle Tree จึงเข้ามาทำหน้าที่เป็นสะพานเชื่อมโจทย์สองข้อนี้เข้าด้วยกัน


โครงสร้างของ Merkle Tree ในกระบวนการ PoR

Merkle Tree หรือ Binary Hash Tree คือโครงสร้างข้อมูลแบบต้นไม้ที่สรุปชุดข้อมูลขนาดใหญ่ผ่านฟังก์ชันแฮชทางเดียว (Cryptographic Hash Function เช่น SHA-256) โดยสร้างจากล่างขึ้นบน (Bottom-Up)

Plain Text

Plain Text

[ Merkle Root ]              <-- เผยแพร่สู่สาธารณะ
                       Hash(H_AB + H_CD)
                           /        \
                          /          \
                     [ H_AB ]      [ H_CD ]       <-- Intermediate Nodes
                    /       \      /       \
                 [H_A]     [H_B] [H_C]     [H_D]  <-- Leaf Nodes
                   |         |     |         |
                User A    User B User C    User D
  • Leaf Nodes (โหนดใบล่างสุด)
    ข้อมูลบัญชีของผู้ใช้แต่ละราย ประกอบด้วยรหัสระบุตัวตน (User ID/Salted Hash) และยอดเงินคงเหลือของแต่ละเหรียญ จะถูกนำมาแฮชเข้าด้วยกัน เช่น Leaf_A = Hash(User_A, Balance_A)
  • Intermediate Nodes (โหนดกิ่งสาขา)
    นำค่าแฮชของโหนดใบที่อยู่ติดกันมาต่อกัน (Concatenate) แล้วนำไปแฮชซ้ำ เกิดเป็นโหนดพ่อแม่ขึ้นมาหนึ่งระดับ เช่น H_AB = Hash(H_A + H_B)
  • Merkle Root (รากยอดสุด)
    กระบวนการนี้จะทำซ้ำเป็นคู่ ๆ ไล่ขึ้นไปเรื่อย ๆ จนกระทั่งเหลือค่าแฮชเพียงค่าเดียวบนยอดสุด เรียกว่า Merkle Root ซึ่งทำหน้าที่เป็น “ลายนิ้วมือดิจิทัล” (Digital Fingerprint) ที่สรุปหนี้สินทั้งหมดของกระดานเทรด ณ บล็อกเวลานั้น

Avalanche Effect
หากยอดเงินของผู้ใช้แม้แต่คนเดียวถูกแก้ไข หรือมีบัญชีถูกตัดออกแม้แต่รายการเดียว ค่าแฮชจะเปลี่ยนไปเป็นทอด ๆ ส่งผลให้ค่า Merkle Root บนยอดสุดเปลี่ยนไปโดยสิ้นเชิงทันที


ผู้ใช้ตรวจสอบยอดเงินของตนเองได้อย่างไร? (Merkle Proof Path)

จุดเด่นเชิงวิศวกรรมของ Merkle Tree คือความเร็วและประสิทธิภาพ โดยผู้ใช้แต่ละคนไม่จำเป็นต้องดาวน์โหลดฐานข้อมูลขนาดกิกะไบต์ลงมาตรวจ เพียงแค่ขอข้อมูลเส้นทาง Merkle Path (Audit Trail) ที่เกี่ยวข้องกับบัญชีของตนเองเท่านั้น

ตัวอย่างกรณี User A ต้องการตรวจสอบยอด

  1. User A คำนวณแฮชของตัวเอง
    รันฟังก์ชันแฮชข้อมูล UID + ยอดเงิน เพื่อให้ได้ค่า H_A
  2. ระบบส่งค่ากิ่งข้างเคียง (Sibling)
    กระดานเทรดส่งเฉพาะค่า H_B มาให้ (โดย User A จะไม่รู้ว่าข้างใน H_B มียอดเงินเท่าใด)
  3. คำนวณไต่ระดับ
    User A คำนวณ Hash(H_A + H_B) = H_AB
  4. รับกิ่งใหญ่ถัดไป
    ระบบส่งค่า H_CD มาให้ เพื่อให้ User A คำนวณ Hash(H_AB + H_CD)
  5. เทียบกับค่าสาธารณะ
    หากผลลัพธ์ที่ได้ตรงกับ Merkle Root ที่กระดานเทรดประกาศ ย่อมพิสูจน์ได้ 100% ว่ายอดเงินของ User A ถูกรวมอยู่ในยอดหนี้สินของระบบจริง

กระบวนการนี้มีความซับซ้อนของการคำนวณและการรับส่งข้อมูลเพียง O(log N) เท่านั้น กล่าวคือ แม้กระดานเทรดจะมีผู้ใช้ถึง 1,000,000 คน ระบบจะส่งค่าแฮชให้ผู้ใช้ตรวจสอบเพียงประมาณ 20 ค่าเท่านั้น


วิวัฒนาการ: จาก Merkle Tree ธรรมดา สู่ Merkle Sum Tree และ zk-SNARKs

แม้ Merkle Tree แบบดั้งเดิมจะทรงพลัง แต่ในยุคแรกยังมีช่องโหว่ที่กระดานเทรดอาจใช้ตุกติกได้ อุตสาหกรรมจึงพัฒนากลไกป้องกันเพิ่มเติม:

ช่องโหว่เดิมวิธีแก้ไขเชิงเทคนิค
การใส่ยอดติดลบ (Negative Balance)
กระดานเทรดอาจแอบใส่บัญชีปลอมที่มียอดหนี้ติดลบลงไป เพื่อทำให้ผลรวมหนี้สินสุทธิต่ำกว่าความเป็นจริง
Merkle Sum Tree
ทุกโหนดจะต้องจัดเก็บและแสดงผลรวมยอดเงิน (Sum) ควบคู่กับแฮช และมีเงื่อนไขตรวจสอบว่าไม่มีโหนดย่อยใดติดลบ (Non-negative check)
ข้อมูลพอร์ตบางส่วนอาจรั่วไหล
การส่งค่า Sibling Node บ่อยครั้ง อาจทำให้เทรดเดอร์สถาบันคาดเดาขนาดพอร์ตของคู่แข่งได้
zk-SNARKs (Zero-Knowledge)
นำวิทยาการพิสูจน์แบบไร้ความรู้มาผสาน ทำให้พิสูจน์ได้ว่าหนี้สินทั้งหมดถูกต้องและเป็นบวก โดยไม่ต้องเปิดเผยโครงสร้างกิ่งหรือข้อมูลแฮชใด ๆ เลย

บทสรุป

Merkle Tree ในระบบ Proof of Reserves ไม่ใช่แค่เครื่องมือสร้างความเชื่อมั่นทางการตลาด แต่เป็นสถาปัตยกรรมทางคณิตศาสตร์ที่พิสูจน์ให้เห็นว่า “ความโปร่งใสตรวจสอบได้” และ “การปกป้องข้อมูลส่วนบุคคล” สามารถดำรงอยู่ร่วมกันได้อย่างสมบูรณ์แบบในโลกการเงินยุคใหม่


Exit mobile version