Zero-Knowledge Proof คือ? (ฉบับสนุก)

Kendo
Flipay
Published in
3 min readFeb 1, 2020

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 นาทีครับ ติ๊ก ตอก ติ๊ก ตอก

คิดออกยังครับ ถ้ายังคิดไม่ออก มีคำใบ้ให้ครับ
คำใบ้ คือ คุณสามารถ พริ้นภาพนี้ออกมาได้ครับ

ให้เวลาอีกครึ่งนาทีครับ ติ๊ก ตอก ติ๊ก ตอก

เป็นยังไงบ้างครับ ขอเฉลยแล้วกันนะครับ วิธีการหนึ่งที่คุณสามารถพิสูจน์ได้ ดังนี้ครับ

  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) ให้ละเอียดยิ่งขึ้นครับ ตามคำแนะนำของผู้อ่าน :)

--

--

Kendo
Flipay
Editor for

Cryptocurrency Believer, Manga Lover, Education Supporter and Product Builder @flipayHQ