zero-knowledge proof เป็นเทคโนโลยีที่ถูกให้ความสนใจเป็นอย่างมากในช่วงไม่กี่ปีที่ผ่านมา เนื่องจากมีการถูกนำมาใช้งานอย่างแพร่หลายมากขึ้น โดยเฉพาะอย่างยิ่งในวงการคริปโตเคอร์เรนซี่
เรามารู้จักกันก่อนดีกว่าว่า มันคืออะไรกันแน่
หลายๆคนเห็นคำว่า proof หรือการพิสูจน์แล้ว ก็จะหยีกันไปตามๆกัน ภาพความทรงจำสมัยมัธยมในคาบเรียนวิชาคณิตศาสตร์กลับมาหลอกหลอนทันที แต่ ไม่ต้องกลัวครับ บทความนี้เราจะอธิบาย zero-knowledge proof โดยคุณไม่ต้องรู้จักการบวกเลขเลยด้วยซ้ำ รวมถึงยกตัวอย่างการใช้งานในโลกจริง และความเป็นไปได้ที่อาจจะเกิดขึ้นในอนาคตจากตัวเทคโนโลยี
zero-knowledge proof คือการ การพิสูจน์อะไรบางอย่าง โดยที่ไม่ต้องเปิดเผยข้อมูลจริงเบื้องหลัง
งงอยู่ดีใช่ไหมครับ ฮ่าๆๆ ไม่เป็นไร มาเรียนรู้ผ่านโจทย์กันครับ แล้วคุณจะรู้ว่าคุณเองก็สามารถสร้าง zero-knowledge proof เองได้
โจทย์ข้อที่ 1
คุณต้องการพิสูจน์ว่า ไพ่หนึ่งใบที่คุณจั่วขึ้นมาจากกอง เป็นสีอะไร โดยไม่เปิดเผยว่าเป็นไพ่อะไร (ดอกอะไร และเลขอะไร)
จากรูป สมมุติ คุณสุ่มหยิบไพ่จากกอง เป็นไพ่ A โพดำ คุณอยากจะบอกเพื่อน ว่าไพ่ในมือคุณเป็นสีดำ แต่คุณไม่อยากบอกว่าเป็นไพ่ A โพดำ
ให้เวลา 20 วินาที ลองคิดดูครับ ติ๊ก ตอก ติ๊ก ตอก
หมดเวลา!!!
หลายๆคนที่เล่นเคยเล่นไพ่อาจจะคิดออกนะครับ ไพ่ในแต่ละกองจะมีอยู่ 52 ใบครับ ครึ่งหนึ่งเป็นสีแดง ครึ่งหนึ่งเป็นสีดำ
สิ่งที่ต้องทำก็คือ โชว์ไพ่สีแดงทั้งหมดในกองให้เพื่อนของคุณดู พอเค้าเห็นว่าไพ่สีแดงมีครบ 26 ใบ (ครึ่งหนึ่งของ 52) ก็จะรู้ได้ทันทีว่าไพ่ที่ถูกหยิบออกไปคือสีดำ โดยที่เค้าก็จะยังไม่รู้ว่าเลขหรือดอกอะไรที่ถูกหยิบออกไปครับ
แค่นี้เองครับ คุณได้คิด zero-knowledge proof ด้วยตัวของคุณเองแล้ว
จะเห็นว่ามันไม่ได้เป็นอะไรที่พิสดาร และน่ากลัวอย่างที่คิดครับ มาต่อกันที่โจทย์ข้อต่อไปกันดีกว่าครับ
โจทย์ข้อที่ 2
เคยเล่นเกมส์ Waldo ไหมครับ ไม่เคยไม่เป็นไรครับ Waldo คือตัวละครตัวนี้ครับในรูปข้างซ้าย เกมส์คือ คุณต้องหาตัว Waldo ให้เจอจาก ภาพใหญ่ ด้านล่างครับ
หาเจอไหมครับ ?
ไม่เจอไม่เป็นไรครับ เพราะเกมส์ Waldo ไม่ได้เกี่ยวกับ zero-knowledge แต่อย่างใดครับ
โจทย์จริงๆ คือ ทำอย่างไรที่คุณจะสามารถพิสูจน์ให้เพื่อนของคุณได้ว่า คุณรู้ว่า Waldo อยู่ที่จุดใดบนภาพ โดยที่คุณไม่เปิดเผย ตำแหน่งของ Waldo ในภาพให้คนๆนั้นรู้ครับ หรือพูดอีกอย่างหนึ่งก็คือให้พิสูจน์ว่าคุณรู้คำตอบ แต่ไม่เฉลยครับ
what!!
ข้อนี้ยากหน่อยให้ 1 นาทีครับ ติ๊ก ตอก ติ๊ก ตอก
คิดออกยังครับ ถ้ายังคิดไม่ออก มีคำใบ้ให้ครับ
คำใบ้ คือ คุณสามารถ พริ้นภาพนี้ออกมาได้ครับ
ให้เวลาอีกครึ่งนาทีครับ ติ๊ก ตอก ติ๊ก ตอก
เป็นยังไงบ้างครับ ขอเฉลยแล้วกันนะครับ วิธีการหนึ่งที่คุณสามารถพิสูจน์ได้ ดังนี้ครับ
- ก่อนอื่นให้เพื่อนของคุณสร้างห้อง ที่มีทางเข้าออกทางเดียวครับ โดยในห้อง ไม่มีอะไรเลย
2. คุณต้องเดินเข้าไปในห้อง พร้อมกรรไกรตัดกระดาษ และภาพนั้นเท่านั้นครับ โดยผ่านการตรวจสอบอย่างถี่ถ้วนจากเพื่อนของคุณว่าไม่ได้นำสิ่งของอย่างอื่นแบบซ่อนเข้าไปด้วย
3. เมื่ออยู่ในห้องคนเดียว คุณจึงใช้กรรไกรตัดกระดาษ ตัดตัว Waldo ออกมา พร้อมกับขยำกระดาษที่เหลือทิ้งครับ
4. คุณออกจากห้องและโชว์ตัว Waldo ให้เพื่อนของคุณเห็น
เพียงเท่านี้เพื่อนของคุณก็ไม่เห็นตำแหน่งของ Waldo จากภาพใหญ่แล้วครับ
นี่เป็นเพียงวิธีหนึ่งในการพิสูจน์ครับ เพื่อนๆใช้วิธีใดกันบ้างครับ แชร์กันในคอมเมนต์ได้เลยนะครับ
เห็นมั้ยครับ zero-knowlegde proof ไม่ได้พิสดารอย่างที่คิดครับ โอเคครับ เราได้ความรู้เบื้องต้น เกี่ยวกับตัวเทคโนโลยีไปบ้างแล้ว ต่อไปมาดูการนำไปใช้งานจริงในโลก cryptocurrency กันบ้างครับ
ตัวอย่างการใช้งานในโลกคริปโต
1. Zcash
เริ่มจากตัวนี้ก่อนเลยครับ Zcash
Zcash เป็น cryptocurrency ที่เป็นที่รู้จักในเรื่องของความเป็นส่วนตัว(privacy) ของการใช้งานครับ กล่าวคือ ระบบสามารถซ่อนได้ว่าใครโอนหาใครเป็นจำนวนเท่าไหร่ครับ
ซึ่งความสามารถนี้เกิดขึ้นได้เพราะ zero-knowledge proof ครับ คือ ระบบสามารถ พิสูจน์ได้ว่า การโอนต่างๆที่เกิดขึ้นเกิดขึ้นอย่างถูกต้อง และไม่มี zcash เกิดขึ้นมาจากอากาศได้เองครับ แต่คุณจะไม่รู้ว่ามีใครโอนหาใครเป็นจำนวนเท่าไหร่
โดยระบบดังกล่าวใช้ zero-knowledge proof ขั้นสูง ที่มีชื่อว่า zk-snark ซึ่งไม่ได้อยู่ใน scope ของบทความนี้ครับ คณิตศาสตร์หนักมากครับ
2. Nightfall
หลายๆคนน่าจะรู้จัก EY หนึ่งใน Big 4 กันเป็นอย่างดี Nightfall เป็น open source จาก EY ที่ใช้ zero-knowledge proof ในการทำให้ transaction บน Ethereum เป็น private
เหมือนบิทคอยน์ ข้อมูลคำสั่งทุกอย่าง Ethereum เป็นสาธารณะ ทุกคนสามารถเข้าไปอ่านได้ ซึ่งไม่เหมาะสำหรับคำสั่งที่เกิดระหว่างบริษัท เพราะบริษัททุกบริษัทต้องการปกติความลับทางการค้าเหล่านั้น
ตามทฤษฎีแล้วนั้นเราสามารถทำ zero-knowledge บท Ethereum โดยไม่ใช้ Nightfall ก็ได้ แต่ในทางปฏิบัติแทบเป็นไปไม่ได้เลยเพราะการใช้ zero-knowledge proof ต้องการการคำนวณทางคณิตศาสตร์ที่ซับซ้อน จึงส่งผลให้ค่าทำเนียมที่ต้องจ่ายสูงตามกันไป
Nightfall จึงถูกสร้างขึ้น เพื่อเป็นมาตรฐานใหม่ในการส่งคำสั่งที่ต้องการความเป็นส่วนตัวบน Ethereum ครับ
3. ZK-Rollup
คนมักจะเข้าใจผิดว่า zero-knowlegde proof นั้นถูกนำไปใช้เพื่อการซ่อน หรือเพิ่ม privacy เพียงอย่างเดียว
ZK Rollup เป็นเทคโนโลยีที่ใช้ความสามารถของ zero-knowledge proof เพื่อการเพิ่มความสามารถในการรองรับการใช้งาน (scalability) ให้กับ Ethereum network ครับ
คล้ายๆ Lightning Network บนบิทคอยน์ครับ เพราะเป็น 2nd-layer protocol เหมือนกัน แต่สิ่งที่ต่างและน่าสนใจกว่าคือ คนที่ run node ของ ZK Rollup ไม่ต้อง monitor ระบบตลอดเหมือนกับคน run Lightning node ครับ ถือเป็นการเพิ่มความ สะดวกสะบายให้กับคนที่ run node ครับ
ผมเชื่อ privacy จะเป็นเทรนใหม่ของโลกใบนี้ ในอดีตคนส่วนใหญ่ใช้งานอินเตอร์เน็ตโดยไม่ได้คิดถึงความเป็นส่วนตัวของข้อมูลที่เราแชร์บนโลกออนไลน์ ปัจจุบันคนเริ่มให้ความตระหนักมากยิ่งขึ้น เพราะมีหลายๆเหตุการณ์ที่แสดงให้เห็นว่า มีคนนำข้อมูลที่คนทั่วไปแชร์บนโลกออนไลน์ไปใช้ในทางที่ผิด ซึ่งส่งผลให้มีการขับเคลื่อนของภาครัฐด้วยเช่นกัน มีการออกกฎหมายเพื่อปกป้องความเป็นส่วนตัวของผู้ใช้ ในแต่ละประเทศ
เทคโนโลยีนี้อาจจะเป็นเทคโนโลยีที่เป็นแก่นสำคัญ ของอนาคตของอินเตอร์เน็ต ที่ทำให้คนมีสิทธิในการใช้อินเตอร์เน็ตอย่างมีความเป็นส่วนตัวมากยิ่งขึ้น อย่างไรก็ตาม ยังเรียกได้ว่า เป็นแค่ช่วงเริ่มต้นเท่านั้น เพราะคนเพิ่งเริ่มหันมาสนใจในตัวเทคโนโลยีตัวนี้ อนาคตยังอีกไกล
สุดท้ายขอฝากบริษัท Flipay ของพวกเราด้วยนะครับ
หากสนใจ Blockchain และ Smart Contract development สามารถติดต่อหาพวกเราได้ที่ Flipay เลยครับ :)
3 Feb 2020 -แก้ไขการอธิบาย ตัวอย่างที่ 2 (Waldo) ให้ละเอียดยิ่งขึ้นครับ ตามคำแนะนำของผู้อ่าน :)