zk-SNARKs: อาร์กิวเมนต์แบบกระชับและไม่โต้ตอบ
ทำความเข้าใจการตั้งค่า Groth16 การสร้างบทพิสูจน์ และการตรวจสอบ
zk-SNARKs: อาร์กิวเมนต์แบบกระชับและไม่โต้ตอบ เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน
zk-SNARK คืออะไร
zk-SNARK คือการพิสูจน์ความรู้แบบกระชับและไม่ต้องโต้ตอบโดยไม่เปิดเผยความรู้ ซึ่ง (1) ไม่เปิดเผยความรู้ (2) กระชับ มีการพิสูจน์ขนาดเล็กและตรวจสอบได้รวดเร็วไม่ว่าการคำนวณจะมีขนาดเท่าใด และ (3) ไม่ต้องโต้ตอบ โดยใช้ข้อความการพิสูจน์เพียงชุดเดียว
แรงจูงใจ
โปรโตคอล Sigma เหมาะกับข้อความง่าย ๆ เช่น ความรู้เกี่ยวกับลอการิทึมไม่ต่อเนื่อง แต่สำหรับการคำนวณที่ซับซ้อน เช่น "ฉันคำนวณฟังก์ชันนี้อย่างถูกต้องด้วยข้อมูลนำเข้าส่วนตัว" เราจำเป็นต้องมีระบบการพิสูจน์อเนกประสงค์ SNARK ใช้พิสูจน์การคำนวณทั่วไปด้วยเวลาตรวจสอบ O(1)
วงจรเลขคณิต
ขั้นแรกจะแสดงการคำนวณเป็นวงจรเลขคณิต ซึ่งเป็นกราฟมีทิศทางแบบไม่มีวัฏจักรของเกตการบวกและการคูณบนฟิลด์จำกัด ตัวอย่างเช่น พิสูจน์ว่าคุณรู้ x ที่ทำให้ x^3 + x + 5 = 35 เป็นจริง โดยไม่เปิดเผยว่า x=3 วงจรนี้มีเกตประมาณ 5 ตัว
R1CS: ระบบข้อจำกัดอันดับหนึ่ง
วงจรเลขคณิตจะถูกแปลงเป็น R1CS ซึ่งเป็นชุดข้อจำกัด (A*z)*(B*z) = C*z โดย z เป็นเวกเตอร์ของค่าบนสายสัญญาณทั้งหมด เกตการคูณแต่ละตัวจะกลายเป็นข้อจำกัดหนึ่งรายการ ผู้พิสูจน์ต้องหา z ที่ทำให้ข้อจำกัดทั้งหมดเป็นจริง โดยไม่เปิดเผยสายสัญญาณส่วนตัว
QAP: โปรแกรมเลขคณิตกำลังสอง
R1CS จะถูกแปลงเป็น QAP ซึ่งประกอบด้วยพหุนาม A(x), B(x), C(x) ที่ทำให้ A(x)*B(x)-C(x) หารด้วยพหุนามเป้าหมาย t(x) ลงตัวก็ต่อเมื่อข้อจำกัดเป็นจริง ผู้พิสูจน์แสดงว่ารู้ผลหารพหุนาม H(x) โดยไม่เปิดเผยข้อมูลพยาน
การพิสูจน์ Groth16
Groth16 (2016) เป็น SNARK ทั่วไปที่มีประสิทธิภาพสูงสุด หลังการตั้งค่าที่เชื่อถือได้ (การสร้าง CRS) ผู้พิสูจน์จะสร้างการพิสูจน์จากสมาชิกของกรุป 3 รายการ (ประมาณ 192 ไบต์สำหรับ BLS12-381) การตรวจสอบใช้การดำเนินการจับคู่ 3 ครั้ง การพิสูจน์มีขนาดคงที่ไม่ว่าขนาดวงจรจะเป็นเท่าใด
พิธีการตั้งค่าที่เชื่อถือได้
Groth16 ต้องมีการตั้งค่าที่เชื่อถือได้สำหรับแต่ละวงจร: สุ่มข้อมูลลับอันตราย (ความลับแบบสุ่ม) คำนวณสตริงอ้างอิงร่วม แล้วทำลายข้อมูลลับนั้น หากข้อมูลลับยังคงอยู่ ผู้โจมตีอาจปลอมแปลงการพิสูจน์ได้ พิธีการหลายฝ่าย เช่น Powers of Tau ช่วยกระจายความไว้วางใจ
PLONK: การตั้งค่าแบบสากล
PLONK (2019) ใช้การตั้งค่าที่เชื่อถือได้แบบสากล โดยพิธีการครั้งเดียวใช้ได้กับทุกวงจรที่มีขนาดไม่เกินขอบเขตที่กำหนด จึงไม่ต้องตั้งค่าสำหรับแต่ละวงจร ข้อแลกเปลี่ยนคือการพิสูจน์มีขนาดใหญ่กว่า Groth16 เล็กน้อย ใช้ในการนำ zkEVM ไปใช้งาน (Polygon Hermez, zkSync Era)
STARK เทียบกับ SNARK
STARK คือการโต้แย้งความรู้ที่ปรับขนาดได้และโปร่งใส ไม่ต้องใช้การตั้งค่าที่เชื่อถือได้และใช้ฟังก์ชันแฮช ซึ่งปลอดภัยหลังยุคควอนตัม ข้อแลกเปลี่ยนคือการพิสูจน์มีขนาดใหญ่กว่า (หลายสิบ KB เทียบกับ 200 ไบต์) ใช้ใน StarkWare และ StarkNet รวมถึงภาษา Cairo SNARK มีขนาดเล็กกว่า ส่วน STARK ปลอดภัยต่อคอมพิวเตอร์ควอนตัม
วิทยาการเข้ารหัสลับโดยอาศัยการจับคู่
Groth16 ใช้การจับคู่เชิงเส้นคู่: e: G1 × G2 → GT โดย e(a*P, b*Q) = e(P,Q)^{ab} วิธีนี้ช่วยตรวจสอบเอกลักษณ์ของพหุนามในเลขชี้กำลังโดยไม่เปิดเผยค่า เส้นโค้ง BLS12-381 ได้รับการปรับแต่งให้การจับคู่สำหรับ Groth16 มีประสิทธิภาพสูง
ต้นทุนการสร้างการพิสูจน์
เวลาสร้างการพิสูจน์ของ Groth16 สำหรับวงจรที่มีเกต 10^6 ตัว: ประมาณ 10 วินาทีบน CPU รุ่นใหม่ การตรวจสอบ: ประมาณ 1 มิลลิวินาที ความไม่สมมาตรนี้เป็นสิ่งที่ตั้งใจไว้ ผู้พิสูจน์ซึ่งเป็นผู้ทำการคำนวณหนักจะเป็นผู้รับภาระงาน ส่วนผู้ตรวจสอบซึ่งเป็นโหนดบล็อกเชนแทบไม่ต้องทำงาน
ตรวจสอบความเข้าใจ
ข้อเสียเปรียบหลักของ Groth16 เมื่อเทียบกับ PLONK คืออะไร?
ทบทวน
zk-SNARK ใช้พิสูจน์การคำนวณทั่วไปด้วยการพิสูจน์ขนาดคงที่ กระบวนการ: การคำนวณ → วงจรเลขคณิต → R1CS → QAP → การพิสูจน์ SNARK Groth16 มีประสิทธิภาพสูงสุด (ต้องตั้งค่าสำหรับแต่ละวงจร) ส่วน PLONK ใช้การตั้งค่าแบบสากล บทถัดไป: การประยุกต์ใช้ ZKP ในบล็อกเชน
คำถามที่พบบ่อย
บทเรียน “zk-SNARKs: อาร์กิวเมนต์แบบกระชับและไม่โต้ตอบ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “zk-SNARKs: อาร์กิวเมนต์แบบกระชับและไม่โต้ตอบ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “zk-SNARKs: อาร์กิวเมนต์แบบกระชับและไม่โต้ตอบ”
ทำความเข้าใจการตั้งค่า Groth16 การสร้างบทพิสูจน์ และการตรวจสอบ คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “zk-SNARKs: อาร์กิวเมนต์แบบกระชับและไม่โต้ตอบ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม
ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- สัญชาตญาณ ZKP: ถ้ำอาลีบาบา
- โพรโทคอลซิกมาและการระบุตัวตนแบบ Schnorr
- zk-SNARKs: อาร์กิวเมนต์แบบกระชับและไม่โต้ตอบ
- การประยุกต์ใช้ ZKP: ZK Rollups และเหรียญเพื่อความเป็นส่วนตัว