0Pricing
Cryptology Academy · บทเรียน

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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. สัญชาตญาณ ZKP: ถ้ำอาลีบาบา
  2. โพรโทคอลซิกมาและการระบุตัวตนแบบ Schnorr
  3. zk-SNARKs: อาร์กิวเมนต์แบบกระชับและไม่โต้ตอบ
  4. การประยุกต์ใช้ ZKP: ZK Rollups และเหรียญเพื่อความเป็นส่วนตัว
← กลับไปที่ Cryptology Academy