ที่มา: HashKey Capital
ชื่อระดับแรก
1. ประวัติของการพิสูจน์ความรู้เป็นศูนย์
ระบบพิสูจน์ความรู้เป็นศูนย์ที่ทันสมัยมีต้นกำเนิดมาจากเอกสารที่ตีพิมพ์ร่วมกันโดย Goldwasser, Micali และ Rackoff: The Knowledge Complexity of Interactive Proof Systems (GMR85) ซึ่งเสนอในปี 1985 และเผยแพร่ในปี 1989 เอกสารนี้ส่วนใหญ่อธิบายถึงจำนวนความรู้ที่ต้องแลกเปลี่ยนหลังจากการโต้ตอบรอบ K ในระบบโต้ตอบเพื่อพิสูจน์ว่าข้อความนั้นถูกต้อง หากความรู้ที่แลกเปลี่ยนเป็นศูนย์ได้ จะเรียกว่าการพิสูจน์ความรู้เป็นศูนย์ สันนิษฐานว่าผู้พิสูจน์ (prover) มีทรัพยากรไม่จำกัด ในขณะที่ผู้ตรวจสอบ (verifer) มีทรัพยากรจำกัดเท่านั้น ปัญหาของระบบโต้ตอบคือ การพิสูจน์ไม่สามารถพิสูจน์ได้ทางคณิตศาสตร์ทั้งหมด แต่ถูกต้องตามความน่าจะเป็น แม้ว่าความน่าจะเป็นจะน้อย (1/2^n)
ดังนั้น ระบบอินเทอร์แอกทีฟจึงไม่สมบูรณ์แบบแต่จะสมบูรณ์โดยประมาณเท่านั้น ระบบ non-interactive system (NP) ที่เกิดบนพื้นฐานนี้เสร็จสมบูรณ์แล้วและกลายเป็นตัวเลือกที่สมบูรณ์แบบสำหรับระบบพิสูจน์ความรู้ที่ไม่มีศูนย์
ระบบพิสูจน์ความรู้เป็นศูนย์ในช่วงปีแรก ๆ ยังขาดประสิทธิภาพและการใช้งาน ดังนั้น มันจึงยังคงอยู่ในระดับทฤษฎีเสมอมา มันยังไม่เริ่มเฟื่องฟูจนกระทั่งช่วง 10 ปีที่ผ่านมา ด้วยวิทยาการเข้ารหัสลับที่มีความโดดเด่นในการเข้ารหัสลับ การพิสูจน์ความรู้ที่ไม่มีความรู้เป็นศูนย์ มาเป็นแนวหน้าและกลายเป็นทิศทางที่สำคัญมาก โดยเฉพาะอย่างยิ่ง การพัฒนาโพรโทคอลการพิสูจน์ความรู้ที่ไม่มีความรู้เพื่อจุดประสงค์ทั่วไป ไม่โต้ตอบ และจำกัดขนาดการพิสูจน์ เป็นหนึ่งในทิศทางที่สำคัญที่สุดของการสำรวจ
โดยพื้นฐานแล้ว การพิสูจน์ที่ไม่มีความรู้เป็นศูนย์คือการแลกเปลี่ยนระหว่างความเร็วของการพิสูจน์ ความเร็วในการตรวจสอบ และขนาดของปริมาณการพิสูจน์ โปรโตคอลในอุดมคติคือการพิสูจน์ที่รวดเร็ว การตรวจสอบที่รวดเร็ว และปริมาณการพิสูจน์ที่น้อย
ความก้าวหน้าที่สำคัญที่สุดในการพิสูจน์ว่าไม่มีความรู้เป็นศูนย์คือบทความ Short Pairing-based Non-interactive Zero-Knowledge Arguments ประจำปี 2010 ของ Groth ซึ่งเป็นผู้บุกเบิกทางทฤษฎีของกลุ่ม zk-SNARK ที่สำคัญที่สุดใน ZKP
ความก้าวหน้าที่สำคัญที่สุดในการประยุกต์ใช้การพิสูจน์ความรู้เป็นศูนย์คือระบบพิสูจน์ความรู้เป็นศูนย์ซึ่งใช้โดย Z-cash ในปี 2558 ซึ่งตระหนักถึงการปกป้องการทำธุรกรรมและความเป็นส่วนตัวของจำนวนเงิน ต่อมา ได้พัฒนาเป็นการผสมผสานระหว่าง zk-SNARK และสมาร์ท สัญญา และ zk-SNARK เข้าสู่สถานการณ์การใช้งานที่กว้างขึ้น
ผลสัมฤทธิ์ทางการเรียนที่สำคัญบางประการในช่วงเวลานี้ ได้แก่ :
Pinocchio (PGHR13) ในปี 2013: Pinocchio: Nearly Practical Verifiable Computation ซึ่งบีบอัดเวลาการพิสูจน์และการตรวจสอบให้อยู่ในขอบเขตที่เกี่ยวข้อง และเป็นโปรโตคอลพื้นฐานที่ Zcash ใช้
Groth16: เกี่ยวกับขนาดของอาร์กิวเมนต์ที่ไม่มีการโต้ตอบตามการจับคู่ในปี 2559 ซึ่งช่วยลดขนาดของการพิสูจน์และปรับปรุงประสิทธิภาพการตรวจสอบ ปัจจุบันเป็นอัลกอริทึมพื้นฐาน ZK ที่ใช้กันอย่างแพร่หลายที่สุด
Bulletproofs (BBBPWM17) Bulletproofs: Short Proofs for Confidential Transactions and More ในปี 2560 ได้เสนออัลกอริทึม Bulletproof ซึ่งเป็นการพิสูจน์ความรู้แบบ Zero-Knowledge ที่สั้นมากซึ่งไม่ต้องการการตั้งค่าที่เชื่อถือได้ และจะนำไปใช้กับ Monero หลังจาก 6 เดือน ซึ่งก็คือ การเชื่อมโยงทฤษฎีสู่การประยุกต์ใช้อย่างรวดเร็วมาก
ในปี 2018 zk-STARKs (BBHR18) Scalable, Transparent, and post-quantum Secure Computational Integrity ได้เสนอโปรโตคอลอัลกอริทึม ZK-STARK ที่ไม่ต้องการการตั้งค่าที่เชื่อถือได้ นี่เป็นอีกหนึ่งแนวทางที่สะดุดตาสำหรับการพัฒนา ZK จากสิ่งนี้ StarkWare กำเนิดโครงการ ZK ที่สำคัญที่สุด
ชื่อระดับแรก
2. บทนำสั้น ๆ เกี่ยวกับการประยุกต์ใช้การพิสูจน์ความรู้เป็นศูนย์
แอปพลิเคชั่นการพิสูจน์ความรู้เป็นศูนย์ที่ใช้กันอย่างแพร่หลายมากที่สุดสองรายการคือการปกป้องความเป็นส่วนตัวและการขยายขีดความสามารถ ในช่วงแรก ๆ ด้วยการเปิดตัวการทำธุรกรรมส่วนตัวและโครงการที่มีชื่อเสียงหลายโครงการ เช่น Zcash และ Monero การทำธุรกรรมส่วนตัวครั้งหนึ่งได้กลายเป็นหมวดหมู่ที่สำคัญมาก อย่างไรก็ตาม เนื่องจากความจำเป็นในการทำธุรกรรมส่วนตัวไม่โดดเด่นอย่างที่อุตสาหกรรมคาดหวังไว้ ประเภทของโครงการตัวแทนเริ่มช้าลง ค่อยๆ เข้าสู่ค่ายของชั้นสองและสาม (ไม่ออกจากเวทีประวัติศาสตร์) ในระดับแอปพลิเคชันความจำเป็นในการขยายความจุได้เพิ่มขึ้นถึงขีด จำกัด เนื่องจาก Ethereum 2.0 (ซึ่งถูกเปลี่ยนชื่อเป็นชั้นฉันทามติ) เปลี่ยนเป็นเส้นทางที่เน้นการควบรวมศูนย์ในปี 2020 ซีรีส์ ZK ได้กลับมาสู่ความสนใจของอุตสาหกรรมอย่างเป็นทางการอีกครั้งและ ได้กลายเป็นจุดสนใจ
ธุรกรรมส่วนตัว: มีหลายโครงการที่ใช้ธุรกรรมส่วนตัว รวมถึง Zcash ที่ใช้ SNARK, Tornado, Monero ที่ใช้กระสุน และ Dash พูดตามตรง Dash ไม่ได้ใช้ ZKP แต่เป็นระบบผสมสกุลเงินที่เรียบง่ายและหยาบ ซึ่งสามารถซ่อนได้เฉพาะที่อยู่แต่ไม่สามารถซ่อนจำนวนเงินได้ ซึ่งจะถูกข้ามไปที่นี่
คำอธิบายภาพ
Source: Demystifying the Role of zk-SNARKs in Zcash
ในขั้นตอนการตั้งค่าระบบ จะมีการสร้างรหัสพิสูจน์ (พหุนามพิสูจน์การเข้ารหัส) และรหัสการตรวจสอบด้วยความช่วยเหลือของฟังก์ชัน KeyGen
วิธีการเข้ารหัส ECIES (Elliptic Curve Integrated Encryption Scheme) ในขั้นตอน CPA ใช้เพื่อสร้างคีย์สาธารณะและคีย์ส่วนตัว
ในช่วง MintingCoins จำนวนเหรียญใหม่ที่สร้างขึ้น ความมุ่งมั่นของที่อยู่สาธารณะและเหรียญ
ในขั้นตอนการเท จะมีการสร้างหลักฐาน zk-SNARK และหลักฐานจะถูกเพิ่มลงในสมุดธุรกรรมการส่ง
ในขั้นตอนการยืนยัน ผู้ตรวจสอบจะตรวจสอบว่าปริมาณธุรกรรมของ Mint และ Pour ถูกต้องหรือไม่
ในขั้นตอนการรับผู้รับจะได้รับเหรียญ หากคุณต้องการใช้เหรียญที่ได้รับ ให้เรียกการเทอีกครั้งเพื่อยืนยัน zk-SNARK ทำซ้ำขั้นตอนที่ 4-6 ด้านบนเพื่อทำธุรกรรมให้เสร็จสมบูรณ์
Zcash ยังคงมีข้อจำกัดในการใช้ความรู้เป็นศูนย์ กล่าวคือ เป็นข้อมูลที่ใช้ UTXO ดังนั้นข้อมูลธุรกรรมบางอย่างจึงได้รับการป้องกันเท่านั้น ไม่ได้ปกปิดอย่างแท้จริง ปรับขนาดได้ยาก (รวมกับแอปพลิเคชันอื่นๆ) เนื่องจากเครือข่ายแยกต่างหากตามการออกแบบของ Bitcoin อัตราการใช้การป้องกัน (นั่นคือธุรกรรมส่วนตัว) น้อยกว่า 10% ซึ่งบ่งชี้ว่าธุรกรรมส่วนตัวยังไม่ขยายสำเร็จ (จาก 2202)
พูลผสมขนาดใหญ่เดี่ยวที่ใช้โดย Tornado นั้นกว้างกว่าและอิงตามเครือข่ายที่ "พิสูจน์แล้ว" เช่น Ethereum Torndao เป็นหลักในการผสมสกุลเงินโดยใช้ zk-SNARK และการตั้งค่าที่เชื่อถือได้นั้นอ้างอิงจากกระดาษ Groth 16 คุณสมบัติที่ Tornado Cash สามารถให้ได้ ได้แก่:
สามารถถอนได้เฉพาะเหรียญที่ฝากเท่านั้น
ไม่สามารถถอนเหรียญได้สองครั้ง
กระบวนการรับรองจะผูกพันกับการแจ้งเตือนการลบล้าง (Nullifier) ของสกุลเงิน และแฮชที่มีใบรับรองเดียวกันแต่ Nullifiers ต่างกันจะไม่อนุญาตให้ถอน
ความปลอดภัยมีการรักษาความปลอดภัย 126 บิตและจะไม่ลดลงเนื่องจากองค์ประกอบ
Vitalik กล่าวว่าเมื่อเทียบกับการขยายความจุแล้วความเป็นส่วนตัวนั้นค่อนข้างง่ายที่จะบรรลุได้หากสามารถสร้างโปรโตคอลการขยายบางอย่างได้โดยทั่วไปแล้วความเป็นส่วนตัวจะไม่เป็นปัญหา
การขยายตัวของ ZK สามารถทำได้บนเครือข่ายชั้นที่ 1 เช่น Mina หรือสามารถทำได้บนเครือข่ายชั้นที่ 2 นั่นคือ zk-roll up แนวคิดของ ZK roll up เริ่มแรกอาจมาจาก โพสต์ของ Vitalik ในปี 2018 On-chain scaling เป็น ~500 tx/sec ผ่านการตรวจสอบ Mass tx
คำอธิบายภาพ
Source: Polygon
ข้อดีและข้อเสียของการยกเลิก ZK:
ข้อดี: ต้นทุนต่ำ ซึ่งแตกต่างจาก OP ที่จะถูกโจมตีโดยเศรษฐกิจ ไม่จำเป็นต้องชะลอการทำธุรกรรม สามารถปกป้องความเป็นส่วนตัว และบรรลุผลสำเร็จได้อย่างรวดเร็ว
คำอธิบายภาพ
ที่มา: การวิจัย Ethereum
คำอธิบายภาพ
Source: Starkware
โครงการ ZKrollup ที่มีการแข่งขันสูงที่สุดในปัจจุบัน ได้แก่: StarkNet ของ Starkware, zkSync ของ Matterlabs และ Aztec connect ของ Aztec, Hermez และ Miden ของ Polygon, Loopring, Scroll เป็นต้น
เส้นทางทางเทคนิคโดยทั่วไปอยู่ที่การเลือก SNARK (และเวอร์ชันปรับปรุง) และ STARK รวมถึงการสนับสนุน EVM (รวมถึงความเข้ากันได้หรือเทียบเท่า)
Aztec ได้พัฒนาโปรโตคอล SNARK ทั่วไป - โปรโตคอล Plonk Aztec3 ที่ใช้งานอยู่อาจรองรับ EVM แต่ความเป็นส่วนตัวมาก่อนความเข้ากันได้ของ EVM
Starnet ใช้ zk-STARK ซึ่งเป็น zkp ที่ไม่ต้องการการตั้งค่าที่เชื่อถือได้ แต่ปัจจุบันไม่รองรับ EVM และมีคอมไพเลอร์และภาษาการพัฒนาของตัวเอง
zkSync ยังใช้ plonk และรองรับ EVM zkSync 2.0 รองรับ EVM และมี zkEVM เป็นของตัวเอง
Scroll ซึ่งเป็นการรวม ZK ที่เข้ากันได้กับ EVM ทีมงานยังเป็นผู้สนับสนุนที่สำคัญในโครงการ zkEVM ของมูลนิธิ Ethereum
หารือเกี่ยวกับปัญหาความเข้ากันได้ของ EVM โดยย่อ:
ชื่อระดับแรก
3. หลักการพื้นฐานของการใช้งาน ZK SNARK
Goldwasser, Micali และ Rackoff เสนอว่าการพิสูจน์ความรู้เป็นศูนย์มีคุณสมบัติสามประการ:
ความสมบูรณ์: ทุกคำแถลงที่มีพยานที่สมเหตุสมผลสามารถตรวจสอบได้โดยผู้ตรวจสอบ
ความสมบูรณ์: ทุกคำกล่าวที่มีแต่พยานที่ไม่สมเหตุสมผลไม่ควรถูกตรวจสอบโดยผู้ตรวจสอบ
ไม่มีความรู้: กระบวนการตรวจสอบไม่มีความรู้
ดังนั้นเพื่อให้เข้าใจ ZKP เราจะเริ่มต้นด้วย zk-SNARK เนื่องจากแอปพลิเคชันบล็อกเชนในปัจจุบันจำนวนมากเริ่มต้นด้วย SNARK ก่อนอื่น เรามาดู zk-SNARK กันก่อน
zk-SNARK หมายถึง: zero-knowledge proof (zh-SNARK) คือ zero-knowledge Succint Non-interactive ARguments of Knowledge
ความรู้เป็นศูนย์: กระบวนการพิสูจน์เป็นศูนย์ความรู้และจะไม่เปิดเผยข้อมูลที่ซ้ำซ้อน
รวบรัด: ขนาดการตรวจสอบขนาดเล็ก
ไม่โต้ตอบ: กระบวนการไม่โต้ตอบ
อาร์กิวเมนต์: การคำนวณมีความน่าเชื่อถือ กล่าวคือ ผู้รับรองที่มีอำนาจในการคำนวณจำกัดไม่สามารถปลอมแปลงการพิสูจน์ได้ และผู้รับรองที่มีกำลังในการคำนวณไม่จำกัดสามารถปลอมแปลงการพิสูจน์ได้
ความรู้: ผู้พิสูจน์ไม่สามารถสร้างพารามิเตอร์และการพิสูจน์โดยไม่ทราบข้อมูลที่ถูกต้อง
สำหรับผู้พิสูจน์ เป็นไปไม่ได้ที่จะสร้างชุดของพารามิเตอร์และการพิสูจน์โดยไม่ทราบหลักฐาน (พยาน เช่น การป้อนข้อมูลของฟังก์ชันแฮชหรือเส้นทางเพื่อกำหนดโหนด Merkle-tree) "
คำอธิบายภาพ
Source: https://learnblockchain.cn/article/3220
ขั้นตอนคือ:
1. แปลงปัญหาเป็นวงจร
2. แผ่วงจรเป็นรูป R1CS
3. แปลงรูปแบบ R1CS เป็น QAP (Quadratic Arithmetic Programs)
4. สร้างการตั้งค่าที่เชื่อถือได้ สร้างพารามิเตอร์แบบสุ่ม รวมถึง PK (คีย์พิสูจน์) VK (คีย์การตรวจสอบ)
5. การสร้างหลักฐานและการตรวจสอบ zk-SNARK
ในบทความหน้า เราจะเริ่มศึกษาหลักการและการประยุกต์ใช้ zk-SNARK ใช้หลายๆ กรณีเพื่อดูพัฒนาการของ ZK-SNARK และสำรวจความสัมพันธ์กับ zk-STARK
Reference:
https://ethresear.ch/t/on-chain-scaling-to-potentially-500-tx-sec-through-mass-tx-validation/3477
https://blog.polygon.technology/zkverse-why-zero-knowledge-rollups-need-a-new-consensus-mechanism/
https://blog.decentriq.com/zk-snarks-primer-part-one/
