ความปลอดภัยของสินทรัพย์คริปโตที่อยู่ในกระดานเทรดหรือบรรดากองทุนที่ให้บริการดูแลสินทรัพย์ ได้รับความสนใจมากขึ้น ในฐานะผู้ใช้บล็อกเชน เราให้ความสำคัญกับความโปร่งใสความเป็นส่วนตัวอย่างมาก วันนี้ เราจะสาธิตวิธีตรวจสอบสินทรัพย์ที่ผู้ดูแลทรัพย์สินถืออยู่โดยไม่ทำลายความสมดุลอันละเอียดอ่อนนี้ได้อย่างไร โดยปกติแล้ว เราต้องเลือกระหว่างความโปร่งใส ความไว้วางใจ และการรักษาความลับของข้อมูล
ข่าวดีก็คือ เรามีทางออก เราสามารถใช้การผสมผสานของโปรโตคอล Zero-Knowledge Proof เช่น zk-SNARK และ Merkle tree เพื่อจัดการกับสถานการณ์นี้ได้อย่างมีประสิทธิภาพ
ทำความเข้าใจกับ Zero-Knowledge Proof
Zero-Knowledge Proof ช่วยให้ฝ่ายหนึ่ง (ผู้ตรวจสอบ : Verifier) ตรวจสอบความถูกต้องของข้อมูลที่ได้รับจากอีกฝ่าย (ผู้พิสูจน์ : Prover) โดยไม่ต้องมีความรู้ใดๆ เกี่ยวกับข้อมูลนั้น ฟังดูงงใช่ไหม มาลองดูตัวอย่างกัน
ลองนึกภาพว่า คุณมีตู้เซฟและคุณเป็นคนเดียวที่รู้วิธีปลดล็อคมัน ตู้เซฟของคุณไม่สามารถหยิบ บังคับเปิด หรือแก้ไขด้วยวิธีใดๆ ก็ตาม หากไม่มีชุดตัวเลขผสมที่ถูกต้อง ซึ่งเพื่อนของคุณก็รู้เรื่องนี้เช่นกัน
คุณบอกเพื่อนว่าคุณรู้จักชุดตัวเลขผสม แต่คุณไม่ต้องการให้เขารู้ว่าคุณเปิดตู้เซฟได้ยังไงหรือใช้ชุดตัวเลขอะไร แต่คุณมีรูเล็กๆ อยู่ด้านบนของตู้เซฟ ซึ่งเพื่อนของคุณสามารถหย่อนกระดาษที่เขียนอะไรไว้ก็ได้ นี้คือตัวอย่างของ Zero-Knowledge Proof
คุณก็เปิดเซฟ อ่านข้อความที่เพื่อนคุณเขียน แล้วก็ล็อคตู้เซฟไว้ เพื่อนของคุณก็จะรู้ได้ว่าคุณปลดล็อคเซฟได้จริงๆ โดยที่ไม่จำเป็นต้องบอกเพื่อนว่าคุณเปิดมันได้อย่างไร
ทำไมต้องใช้ Zero-Knowledge Proof
ความมหัศจรรย์ของ Zero-Knowledge Proof คือมันสมบูรณ์แบบมากสำหรับการตรวจสอบอะไรบางอย่างโดยที่ไม่จำเป็นต้องเปิดเผยข้อมูลที่ละเอียดอ่อน สมมุติว่าคุณไม่ต้องการแบ่งปันข้อมูลทางการเงินหรือข้อมูลส่วนบุคคลที่อาจถูกนำไปใช้ในทางที่ผิด
ในโลกคริปโต คุณสามารถเป็นเจ้าของ Private Key ได้โดยไม่ต้องเปิดเผยข้อมูลหรือ Sign Messages บรรดากระดานเทรดก็สามารถพิสูจน์สถานะของเงินทุนสำรองได้โดยไม่จำเป็นต้องเปิดเผยข้อมูลผู้ใช้ที่เป็นความลับ รวมไปถึงยอดคงเหลือในแต่ละบัญชี
Zero-Knowledge Proof จะใช้อัลกอริทึมตรวจสอบข้อมูลที่ป้อนเข้ามาว่ามันเป็น “จริง” หรือ “เท็จ”
Zero-Knowledge Proofs ในแง่มุมทางเทคนิค
Zero-Knowledge Proofs จะเป็นไปตามโครงสร้างเฉพาะด้วยเกณฑ์ที่กำหนดไว้ ซึ่งนอกจาก verifier และ Prover แล้ว ยังมีกฏเกณฑ์อีกสามข้อที่ Zero-Knowledge Proofs ต้องทำตามคือ
- Completeness : หากข้อมูลที่คุณอ้างเป็นความจริง เพื่อนของคุณจะต้องเชื่อในหลักฐานที่คุณให้ไว้ โดยไม่จำเป็นต้องให้ข้อมูลหรือการตรวจสอบเพิ่มเติม
- Soundness : หากข้อมูลที่คุณอ้างเป็นเท็จ เพื่อนของคุณจะไม่เชื่อในหลักฐานที่คุณให้ไว้
- Zero-Knowledge : หากข้อมูลที่คุณอ้างเป็นความจริง เพื่อนของคุณจะไม่รู้อะไรเกี่ยวกับมันเลยนอกจากรู้แค่วัน มันเป็นจริง
zk-SNARK
Zero-Knowledge Succinct Non-Interactive Argument of Knowledge (zk-SNARK) เป็นโปรโตคอลการพิสูจน์ที่เป็นไปตามหลักการของ Zero-Knowledge ที่เราพึ่งกล่าวถึงไป เมื่อใช้ zk-SNARK คุณสามารถพิสูนจ์ได้ว่าคุณรู้ข้อมูล โดยไม่ต้องเปิดเผย คุณยังสามารถยืนยันความถูกต้องของการทำธุรกรรมโดยไม่ต้องระบุรายละเอียดอื่นๆ เช่น จำนวนเงินหรือที่อยู่ของกระเป๋าเงินต้นทาง
zk-SNARK มักจะถูกหยิบยกขึ้นมาพูดคุยในโลกบล็อคเชน แต่ทำไมเราต้องใช้ zk-SNARK แทนวิธีการที่ตรงไปตรงมาอย่างการจับคู่ Public Key กับ Private Key ? ก็เพราะเราไม่สามารถใช้การพิสูจน์ทางคณิตศาสตร์เพื่อให้แน่ใจว่าว่าไม่มียอดเงินติดลบอยู่ในชุดข้อมูลที่เรียกว่า Merkle Tree
ในสถานการณ์ของเงินทุนสำรองของกระดานเทรด เราต้องการพิสูจน์ยอดเงินคงเหลือของลูกค้าที่กระดานเทรดเก็บรักษาไว้ โดยไม่ต้องเปิดเผยข้อมูลหรือยอดคงเหลือของแต่ละบัญชี ซึ่งเทคโนโลยี zk-SNAKR ทำให้การปลอมแปลงข้อมูล แทบจะเป็นไปไม่ได้เลย
Merkle Tree คืออะไร ?
อย่างการตรวจสอบข้อมูลของปริมาณเงินสำรองที่ Binance เก็บรักษาไว้ เราจำเป็นต้องจัดการกับชุดข้อมูลจำนวนมหาศาล หนึ่งในเครื่องมือที่เหมาะสมคือ Merkle Tree เครื่องมือนี้สามารถจัดเก็บข้อมูลจำนวนมหาศาลได้อย่างมีประสิทธิภาพ และด้วยธรรมชาติของ Cryptographic ทำให้เราตรวจสอบความสมบูรณ์ของข้อมูลได้ง่าย
เมื่อข้อมูลของธุรกรรมถูกจัดเก็บบนบล็อกเชน ธุรกรรมใหม่แต่ละรายการจะถูกประมวลผลผ่าน hash function ซึ่งสร้าง hash values ที่ไม่ซ้ำใคร ตัวอย่างเช่น เราอาจมีธุรกรรม 8 รายการตั้งแต่ A-H แล้วเราทำการ Hash ทีละรายการเพื่อให้ได้ Hash Values ที่ไม่ซ้ำกัน เราเรียกสิ่งนี้ว่า Merkle Leaf Nodes จากนั้น เราสามารถนำ Hashed Outputs มารวมกันเพื่อให้เป็น Hashed Output อันใหม่ได้
ภาพด้านบนแสดงคือ Merkle Tree และ “Hash hABCDEFGH” คือ Merkle Root ซึ่งเราใช้เป็น Block Headers เนื่องจากเราใช้มันในการสรุปข้อมูลธุรกรรมทั้งหมดที่เกิดขึ้นในบล็อกแบบรวบรัด เรายังสามารถตรวจสอบได้อย่างรวดเร็วว่ามีข้อมูลใดถูกแก้ไขภายในบล็อกหรือไม่
อย่างไรก็ตาม Merkle Tree นั้นมีข้อจำกัด และเพื่อทลายข้อจำกัดนั้น เราสามารถพิจารณาใช้ Auditor มาตรวจสอบได้ หรือจะให้ตื่นเต้นกว่านั้นคือ เชื่อถือข้อมูลในตัวข้อมูลโดยใช้ zk-SNARK
รวม zk-SNARK เข้ากับ Merkle Tree
ปัญหาที่เกิดกับ Merkle tree สร้าง use case ที่สมบูรณ์แบบสำหรับ zk-SNARK เราต้องการพิสูจน์ว่าเงินสำรองของกระดานเทรด ครอบคลุมสินทรัพย์ของผู้ใช้ทั้งหมดไหม และข้อมูลนั้นไม่ได้ใช่ไหม และเราก็ไม่ต้องการเปิดเผยข้อมูลที่ละเอียดอ่อนอย่างข้อมูลผู้ใช้ และยอดเงินคงเหลือของแต่ละบัญชี เนื่องจากคำนึงถึงความเป็นส่วนตัวและความปลอดภัย
การใช้ zk-SNARK ทำให้กระดานเทรดคริปโตสามารถพิสูจน์ได้ว่า Merkle Tree Leaf Node สแดงยอดเงินสำรองของกระดานเทรดครอบคุลมสินทรัพย์ทั้งหมดของผู้ใช้ และผู้ใช้แต่ละคนยังสามารถดู Leaf Node รวมไปถึงกระบวนการได้อย่างง่ายได้ zk-SNARK ทำให้มั่ใจได้ว่า Merkle Tree ที่สร้างขึ้นจะไม่มีผู้ใช้ที่มียอดเงินคงเหลือติดลบ
zk-SNARK คือเทคโนโลยีที่จำเป็นในการรับประกันความสมบูรณ์ของข้อมูลและความเป็นส่วนตัวไปพร้อมๆ กัน การใช้งานเพื่อพิสูจน์ปริมาณสินทรัพย์สำรองและเพิ่มความโปร่งในของกระดานเทรดคริปโต จะช่วยส่งเสริมความไว้วางใจในอุตสาหกรรมบล็อกเชน