zk-SNARKs: براهين موجزة غير تفاعلية
افهم إعداد Groth16 وإنشاء البرهان والتحقق منه
zk-SNARKs: براهين موجزة غير تفاعلية درس مجاني في Cryptology Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cryptology Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cryptology Academy 4 دروس في المجموع.
ما هو zk-SNARK؟
zk-SNARK (Zero-Knowledge Succinct Non-interactive ARgument of Knowledge) هو برهان: (1) يحقق المعرفة الصفرية، (2) موجز (برهان صغير جدًا وتحقق سريع بغض النظر عن حجم الحساب)، (3) غير تفاعلي (سلسلة برهان واحدة).
الدافع
تعمل بروتوكولات سيغما مع العبارات البسيطة، مثل معرفة اللوغاريتم المتقطع. أما الحسابات المعقدة — «لقد نفذت هذه الدالة بصورة صحيحة على مدخلات خاصة» — فتحتاج إلى نظام براهين عام الغرض. تثبت SNARKs حسابات عامة في زمن تحقق 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. ويُستخدم في تطبيقات ZK-EVM، مثل Polygon Hermez وzkSync Era.
STARKs مقابل SNARKs
لا تتطلب STARKs (Scalable Transparent ARguments of Knowledge) إعدادًا موثوقًا، وتستخدم دوال التجزئة (الآمنة بعديًا). والمقابل هو براهين أكبر حجمًا (عشرات KB مقابل 200 بايت). وتُستخدم في StarkWare وStarkNet ولغة Cairo. أما SNARKs فأصغر حجمًا، بينما STARKs آمنة في مواجهة الحوسبة الكمومية.
التشفير القائم على الاقترانات
يستخدم Groth16 الاقترانات الثنائية الخطية: e: G1 × G2 → GT حيث e(a*P, b*Q) = e(P,Q)^{ab}. ويتيح ذلك التحقق من هويات كثيرات الحدود في الأس دون كشف القيم. وقد حُسِّن منحنى BLS12-381 لتنفيذ اقترانات Groth16 بكفاءة.
تكلفة توليد البرهان
يستغرق توليد برهان Groth16 لدائرة تضم 10^6 بوابة نحو 10 ثوانٍ على وحدة معالجة مركزية حديثة. أما التحقق فيستغرق نحو 1 ms. وهذا التفاوت مقصود: فالمُثبِت، الذي أجرى الحسابات الثقيلة، ينفذ العمل؛ بينما لا ينفذ المدقق، أي عقدة سلسلة الكتل، إلا عملًا شبه معدوم.
تحقق سريع
ما العيب الرئيسي في Groth16 مقارنةً بـ PLONK؟
مراجعة
تثبت zk-SNARKs حسابات عامة باستخدام براهين ثابتة الحجم. المسار: الحساب → الدائرة الحسابية → R1CS → QAP → برهان SNARK. يُعد Groth16 الأكثر كفاءة (إعداد موثوق لكل دائرة)، بينما يستخدم PLONK إعدادًا عامًا. التالي: تطبيقات براهين المعرفة الصفرية في سلسلة الكتل.
الأسئلة الشائعة
هل درس «zk-SNARKs: براهين موجزة غير تفاعلية» مجاني؟
نعم — نص درس «zk-SNARKs: براهين موجزة غير تفاعلية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cryptology Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Cryptology Academy 4 دروس في المجموع.
ماذا ستتعلم في «zk-SNARKs: براهين موجزة غير تفاعلية»؟
افهم إعداد Groth16 وإنشاء البرهان والتحقق منه تتمرن على Cryptology Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Cryptology Academy؟
لا تُشترط خبرة سابقة. Cryptology Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «zk-SNARKs: براهين موجزة غير تفاعلية»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Cryptology Academy هذا؟
نعم. كل درس في Cryptology Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- حدس ZKP: كهف علي بابا
- بروتوكولات Sigma وتحديد هوية Schnorr
- zk-SNARKs: براهين موجزة غير تفاعلية
- تطبيقات ZKP: تجميعات ZK وعملات الخصوصية