الـzk-SNARKs(ZKP) تُعتبر تقنية من أهم الابتكارات في مجال البلوك تشين، وأيضاً من الاتجاهات الرئيسية التي تركز عليها استثمارات رأس المال المخاطر. يستعرض هذا المقال بشكل شامل تاريخ تطور الـZKP على مدى الأربعين عاماً الماضية وآخر التقدمات البحثية.
أولاً تم تقديم المفهوم الأساسي لـ ZKP والخلفية التاريخية، مع التركيز على تحليل تقنية ZKP القائمة على الدوائر، بما في ذلك تصميم وتطبيقات وتحسين نماذج مثل zkSNARK وBen-Sasson وPinocchio وBulletproofs وLigero. في ما يتعلق ببيئة الحوسبة، تم استكشاف كيفية تحسين ZKVM وZKEVM لقدرة معالجة المعاملات وحماية الخصوصية وزيادة كفاءة التحقق. كما قدمت المقالة ZK Rollup كآلية عمل وخيارات تحسين لحلول التوسع Layer 2، بالإضافة إلى التقدم الأخير في تسريع الأجهزة، والحلول المختلطة، وZK EVM المخصص.
في الختام، تستعرض هذه المقالة مفاهيم جديدة مثل ZKCoprocessor وZKML وZKThreads وZK Sharding وZK StateChannels، وتناقش إمكانياتها في تحسين قابلية التوسع والتشغيل البيني وحماية الخصوصية في البلوكتشين.
من خلال تحليل هذه التقنيات والاتجاهات التطويرية، يوفر هذا المقال وجهة نظر شاملة لفهم وتطبيق تقنيات zk-SNARKs، ويظهر إمكاناتها الكبيرة في تعزيز كفاءة وأمان أنظمة البلوكتشين، مما يوفر مرجعًا مهمًا لقرارات الاستثمار المستقبلية.
الفهرس
مقدمة
أ. أساسيات zk-SNARKs
نظرة عامة
مثال على zk-SNARKs
ثانياً، zk-SNARKs غير التفاعلية
الخلفية
طرح NIZK
تحويل فيات-شامير
ينس غروث وأبحاثه
أبحاث أخرى
ثالثًا، إثبات المعرفة الصفرية القائم على الدوائر
الخلفية
المفاهيم الأساسية وخصائص نموذج الدائرة
تصميم الدوائر واستخدامها في zk-SNARKs
العيوب والتحديات المحتملة
٤. zk-SNARKs نموذج
الخلفية
نماذج الخوارزميات الشائعة
الحل القائم على PCP الخطي ومشكلة اللوغاريتمات المنفصلة
خطة قائمة على إثبات الأشخاص العاديين
إثبات zk-SNARKs القابل للتحقق بناءً على الاحتمالات ( PCP )
تصنيف مرحلة الإعداد لبناء إثبات عام CPC( )
خمسة، نظرة عامة على آلة افتراضية ذات إثبات عدم المعرفة وتطورها
الخلفية
تصنيف ZKVM الحالي
نموذج الواجهة الأمامية والخلفية
مزايا وعيوب نموذج ZKVM
ستة، نظرة عامة على zk-SNARKs و تطورها في آلة الإيثيريوم الافتراضية
الخلفية
كيفية عمل ZKEVM
عملية تنفيذ ZKEVM
ميزات ZKEVM
سبعة، نظرة عامة على حلول الشبكة ذات الطبقة الثانية لل zk-SNARKs وتطورها
الخلفية
آلية عمل zk-Rollup
عيوب ZK Rollup والتحسينات
ثامناً، اتجاهات التطوير المستقبلية للـ zk-SNARKs
تسريع تطوير بيئة الحوسبة
تقديم وتطور zk-SNARKs
التطورات المتعلقة بتقنية توسيع zk-SNARKs
تطور التوافق بين zk-SNARKs
تسعة، الاستنتاج
المقدمة
مع وصول عصر Web3, تتطور تطبيقات البلوكتشين (DApps) بسرعة, حيث تظهر تطبيقات جديدة كل يوم. في السنوات الأخيرة, تتحمل منصات البلوكتشين أنشطة ملايين المستخدمين يوميًا, وتعالج مليارات المعاملات. البيانات الضخمة الناتجة عن هذه المعاملات غالبًا ما تشمل معلومات شخصية حساسة, مثل هوية المستخدم, ومبلغ المعاملة, وعنوان الحساب, والرصيد, وما إلى ذلك. بسبب انفتاح البلوكتشين وشفافيته, فإن البيانات المخزنة هذه متاحة للجميع, مما أثار العديد من قضايا الأمان والخصوصية.
حالياً، هناك عدة تقنيات تشفير يمكن أن تواجه هذه التحديات، بما في ذلك التشفير المتجانس، والتوقيع الدائري، والحوسبة متعددة الأطراف الآمنة و zk-SNARKs. يسمح التشفير المتجانس بإجراء العمليات دون فك تشفير النصوص المشفرة، مما يساعد في حماية رصيد الحساب ومبالغ المعاملات، ولكن لا يمكنه حماية أمان عنوان الحساب. يوفر التوقيع الدائري شكلاً خاصًا من التوقيع الرقمي، قادرًا على إخفاء هوية الموقع، مما يحمي أمان عنوان الحساب، ولكنه غير فعال في حماية رصيد الحساب ومبالغ المعاملات. تسمح الحوسبة متعددة الأطراف الآمنة بتوزيع مهام الحوسبة بين عدة مشاركين، دون أن يعرف أي مشارك بيانات المشاركين الآخرين، مما يحمي بشكل فعال أمان رصيد الحساب ومبالغ المعاملات، ولكنها أيضاً لا تستطيع حماية أمان عنوان الحساب. بالإضافة إلى ذلك، لا يمكن استخدام هذه التقنيات للتحقق مما إذا كان لدى المبرهن ما يكفي من مبالغ المعاملات في بيئة البلوكتشين دون الكشف عن مبلغ المعاملة، عنوان الحساب ورصيد الحساب.
zk-SNARKs(ZKP) هو حل شامل أكثر, هذه البروتوكولات للتحقق تسمح بالتحقق من صحة بعض العبارات دون الكشف عن أي بيانات وسيطة. لا يتطلب البروتوكول مرافق مفاتيح عامة معقدة, ولا توفر تنفيذه المتكرر فرصة للمستخدمين الضارين للحصول على معلومات مفيدة إضافية. من خلال zk-SNARKs, يمكن للمتحقق التحقق مما إذا كان المثبت لديه مبلغ كافٍ من الأموال في المعاملات دون كشف أي بيانات خاصة بالمعاملات. تشمل عملية التحقق إنشاء دليل يحتوي على مبلغ المعاملات الذي يدعيه المثبت, ثم يتم تمرير هذا الدليل إلى المتحقق, حيث يقوم المتحقق بإجراء حسابات محددة مسبقًا على الدليل, وينتج النتيجة النهائية للحساب, مما يؤدي إلى استنتاج ما إذا كان سيقبل ادعاءات المثبت. إذا تم قبول ادعاءات المثبت, فهذا يعني أنهم يمتلكون مبلغًا كافيًا من الأموال في المعاملات. يمكن تسجيل عملية التحقق المذكورة أعلاه على البلوكتشين, دون أي تزوير.
تُعتبر ميزة zk-SNARKs هذه عنصراً أساسياً في معاملات البلوكتشين وتطبيقات العملات المشفرة، خاصةً في مجالات حماية الخصوصية وتوسيع الشبكة، مما جعلها ليست فقط محوراً للأبحاث الأكاديمية، بل تُعتبر على نطاق واسع واحدة من أهم الابتكارات التقنية منذ تنفيذ تقنية دفتر الأستاذ الموزع بنجاح. كما أنها تعتبر مساراً رئيسياً لتطبيقات الصناعة ورأس المال الاستثماري.
نتيجة لذلك، ظهرت العديد من مشاريع الشبكة المعتمدة على zk-SNARKs، مثل ZkSync وStarkNet وMina وFilecoin وAleo. مع تقدم هذه المشاريع، تتوالى الابتكارات في خوارزميات zk-SNARKs، حيث أفيد أن هناك خوارزميات جديدة تُطرح تقريبًا كل أسبوع. بالإضافة إلى ذلك، يتقدم تطوير الأجهزة المرتبطة بتقنية zk-SNARKs بسرعة، بما في ذلك الرقائق المخصصة المحسّنة لـ zk-SNARKs. على سبيل المثال، أكملت بعض المشاريع جمع أموال على نطاق واسع، وهذه التطورات لا تعرض فقط التقدم السريع لتقنية zk-SNARKs، بل تعكس أيضًا الانتقال من الأجهزة العامة إلى الأجهزة المخصصة مثل GPU وFPGA وASIC.
تشير هذه التقدمات إلى أن تقنية zk-SNARKs ليست فقط إنجازًا مهمًا في مجال علم التشفير، ولكنها أيضًا القوة الدافعة الرئيسية لتحقيق تطبيقات أوسع لتكنولوجيا البلوكتشين، لا سيما في تعزيز حماية الخصوصية وزيادة القدرة على المعالجة.
لذلك، قررنا تنظيم المعرفة المتعلقة بـ zk-SNARKs (ZKP ) بشكل منهجي، لمساعدتنا بشكل أفضل في اتخاذ قرارات الاستثمار المستقبلية. ولتحقيق ذلك، قمنا بمراجعة شاملة للأوراق الأكاديمية الأساسية المتعلقة بـ ZKP ( وترتيبها بناءً على الصلة وعدد الاقتباسات )؛ وفي الوقت نفسه، قمنا أيضًا بتحليل مفصل لمعلومات ومشاريع رائدة في هذا المجال وترتيبها بناءً على حجم التمويل (. توفر هذه المجموعة الشاملة من المعلومات والتحليلات أساسًا قويًا لكتابة هذه المقالة.
١. أساسيات zk-SNARKs
) 1. نظرة عامة
في عام 1985، قدم الباحثون Goldwasser وMicali وRackoff لأول مرة مفهوم zk-SNARKs في ورقتهم البحثية "تعقيد المعرفة في أنظمة الإثبات التفاعلية". تعتبر هذه الورقة حجر الأساس في zk-SNARKs، حيث عرفت العديد من المفاهيم التي أثرت على الأبحاث الأكاديمية اللاحقة. على سبيل المثال، يتم تعريف المعرفة على أنها "ناتج غير قابل للحساب"، مما يعني أن المعرفة يجب أن تكون ناتجًا، وأن يكون غير قابل للحساب، وهذا يعني أنه لا يمكن أن يكون دالة بسيطة، بل يجب أن تكون دالة معقدة. وعادة ما يمكن فهم الحساب غير القابل بأنه مشكلة NP، أي مشكلة يمكن التحقق من صحة حلها في وقت متعدد الحدود، حيث يشير وقت متعدد الحدود إلى أن زمن تشغيل الخوارزمية يمكن تمثيله كدالة متعددة الحدود لحجم الإدخال. هذا هو معيار مهم في علوم الكمبيوتر لقياس كفاءة الخوارزميات وقابليتها للتطبيق. ونظرًا لأن عملية حل مشاكل NP معقدة، فإنها تعتبر حسابًا غير قابل، ولكن عملية التحقق منها بسيطة نسبيًا، لذا فهي مناسبة جدًا لاستخدامها في تحقق zk-SNARKs.
مثال كلاسيكي لمشكلة NP هو مشكلة بائع المتجول، حيث يتعين العثور على أقصر مسار لزيارة مجموعة من المدن والعودة إلى نقطة البداية. على الرغم من أن العثور على أقصر مسار قد يكون صعباً، إلا أن التحقق مما إذا كان مسار معين هو الأقصر يكون سهلاً نسبياً. وذلك لأن التحقق من المسافة الإجمالية لمسار معين يمكن أن يتم في وقت متعدد الحدود.
قدّم غولدواسر وآخرون في ورقتهم مفهوم "تعقيد المعرفة" لقياس كمية المعرفة التي يكشفها المُثبت للمدقق في أنظمة الإثبات التفاعلية. كما اقترحوا أنظمة الإثبات التفاعلية ###Interactive Proof Systems,IPS(، حيث يتفاعل المُثبت )Prover( والمدقق )Verifier( عبر جولات متعددة لإثبات صحة عبارة معينة.
بشكل عام، فإن تعريف zk-SNARKs الذي تم تلخيصه من قبل Goldwasser وآخرين هو نوع خاص من الإثباتات التفاعلية، حيث لا يحصل المدقق خلال عملية التحقق على أي معلومات إضافية بخلاف قيمة صحة العبارة؛ وقد تم اقتراح ثلاث خصائص أساسية تشمل:
الاكتمال: إذا كانت الحجة صحيحة، يمكن للمُثبت الصادق أن يقنع المُحقق الصادق بهذه الحقيقة؛
الموثوقية: إذا كان المُثبت لا يعرف محتوى البيان، فإنه يمكنه فقط خداع المُحقق باحتمالية ضئيلة.
خاصية عدم المعرفة: بعد اكتمال عملية الإثبات، يحصل المصدّق فقط على "معلومات أن المبرهن يمتلك هذه المعرفة"، ولا يمكنه الحصول على أي محتوى إضافي.
) 2. أمثلة على براهين المعرفة الصفرية
لفهم zk-SNARKs وخصائصها بشكل أفضل، إليك مثال للتحقق مما إذا كان المثبت يمتلك بعض المعلومات السرية، هذا المثال مقسم إلى ثلاثة مراحل: الإعداد، التحدي، والاستجابة.
الخطوة الأولى: إعداد (Setup)
في هذه الخطوة، هدف المُثبت هو إنشاء دليل يُظهر أنه يعرف رقماً سرياً معيناً s، لكنه لا يُظهر s بشكل مباشر. لنفترض أن الرقم السري هو s؛
اختر عددين أوليين كبيرين p و q، احسب حاصل ضربهما n. افترض أن العددين الأوليين p و q، احسب النتيجة n؛
احسب v=s^2 mod n، هنا، v كجزء من الإثبات يُرسل إلى المدقق، لكنه غير كافٍ لتمكين المدقق أو أي متفرج من استنتاج s؛
اختر عددًا صحيحًا عشوائيًا r، واحسب x = r^2 mod n وأرسله إلى المدقق. تُستخدم هذه القيمة x في عملية التحقق اللاحقة، ولكنها لا تكشف عن s أيضًا. دع العدد الصحيح العشوائي r، واحسب x الناتج.
الخطوة الثانية: التحدي (Challenge)
يختار المدقق عشوائيًا موقعًا a### يمكن أن يكون 0 أو 1(، ثم يرسله إلى المُثبِت. هذا "التحدي" يحدد الخطوات التي يحتاج المُثبِت لاتخاذها بعد ذلك.
الخطوة الثالثة: استجابة )Response(
استجابةً للقيمة a التي أرسلها المدقق، يقوم المُبرهن بالاستجابة:
إذا كانت a=0، فإن المُثبت يرسل g=r) حيث r هو الرقم الذي اختاره عشوائيًا سابقًا (.
إذا كان a=1، يقوم المُبرهن بحساب g=rs mod n وإرساله. لنفترض أن المُحقق أرسل بت عشوائيًا a، بناءً على قيمة a، يقوم المُبرهن بحساب g؛
أخيرًا، يقوم المدقق بالتحقق مما إذا كان g^2 mod n يساوي xa^v mod n بناءً على g المستلم. إذا كانت المعادلة صحيحة، يقبل المدقق هذه الشهادة. عندما تكون a=0، يقوم المدقق بحساب g^2 mod n، والتحقق من الجهة اليمنى xa^v mod n=x؛ عندما تكون a=1، يقوم المدقق بحساب g^2 mod n، والتحقق من الجهة اليمنى xa^v mod n=xv.
هنا، نرى أن g^2 mod n=xa^v mod n الذي تم حسابه بواسطة المدقق يشير إلى أن المُثبت قد نجح في اجتياز عملية التحقق دون الكشف عن رقمه السري s. هنا، نظرًا لأن a يمكن أن تأخذ فقط 0 أو 1، هناك احتمالان فقط، واحتمال نجاح المُثبت في اجتياز التحقق بالصدفة هو 1/2) عندما تأخذ a القيمة 0. ولكن المدقق يتحدى المُثبت k مرات لاحقة، حيث يقوم المُثبت بتغيير الأرقام المعنية بشكل مستمر، ويقدمها للمدقق، ويمر دائمًا بنجاح في عملية التحقق، وبالتالي فإن احتمال نجاح المُثبت في اجتياز التحقق بالصدفة يصبح (1/2)^k( الذي يقترب بلا حدود من 0)، مما يثبت أن المُثبت يعرف بالفعل رقمًا سريًا معينًا s. هذه الحالة تثبت تكاملية وموثوقية وخصوصية نظام البلوكتشين في إثبات المعرفة الصفرية.
٢. إثبات المعرفة الصفرية غير التفاعلي
( 1. الخلفية
البلوكتشين ) ZKP ( في المفهوم التقليدي عادة ما يكون شكل بروتوكول تفاعلي وعبر الإنترنت؛ على سبيل المثال، بروتوكول Sigma عادة ما يتطلب ثلاث إلى خمس جولات من التفاعل لإكمال المصادقة. ومع ذلك، في سيناريوهات مثل المعاملات الفورية أو التصويت، غالباً ما لا تكون هناك فرصة لإجراء تفاعلات متعددة، خاصة في تطبيقات تكنولوجيا البلوكتشين، حيث تبرز أهمية وظيفة التحقق خارج الإنترنت.
) 2. تم تقديم NIZK
في عام 1988، قدم كل من بلوم وفيلدمن وميكالي مفهوم إثبات عدم المعرفة غير التفاعلي لأول مرة، حيث أثبتوا أنه يمكن للبرهان أن يتم دون الحاجة إلى تفاعلات متعددة، مما يعني أن البرهان (Prover) والمحقق ###Verifier( لا يزال بإمكانهما إكمال عملية المصادقة. كانت هذه النقلة نوعية.
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تحليل شامل لتقنية zk-SNARKs في تطبيقات البلوكتشين وآفاق المستقبل
تطبيقات وتطور تقنية zk-SNARKs في مجال البلوكتشين
ملخص
الـzk-SNARKs(ZKP) تُعتبر تقنية من أهم الابتكارات في مجال البلوك تشين، وأيضاً من الاتجاهات الرئيسية التي تركز عليها استثمارات رأس المال المخاطر. يستعرض هذا المقال بشكل شامل تاريخ تطور الـZKP على مدى الأربعين عاماً الماضية وآخر التقدمات البحثية.
أولاً تم تقديم المفهوم الأساسي لـ ZKP والخلفية التاريخية، مع التركيز على تحليل تقنية ZKP القائمة على الدوائر، بما في ذلك تصميم وتطبيقات وتحسين نماذج مثل zkSNARK وBen-Sasson وPinocchio وBulletproofs وLigero. في ما يتعلق ببيئة الحوسبة، تم استكشاف كيفية تحسين ZKVM وZKEVM لقدرة معالجة المعاملات وحماية الخصوصية وزيادة كفاءة التحقق. كما قدمت المقالة ZK Rollup كآلية عمل وخيارات تحسين لحلول التوسع Layer 2، بالإضافة إلى التقدم الأخير في تسريع الأجهزة، والحلول المختلطة، وZK EVM المخصص.
في الختام، تستعرض هذه المقالة مفاهيم جديدة مثل ZKCoprocessor وZKML وZKThreads وZK Sharding وZK StateChannels، وتناقش إمكانياتها في تحسين قابلية التوسع والتشغيل البيني وحماية الخصوصية في البلوكتشين.
من خلال تحليل هذه التقنيات والاتجاهات التطويرية، يوفر هذا المقال وجهة نظر شاملة لفهم وتطبيق تقنيات zk-SNARKs، ويظهر إمكاناتها الكبيرة في تعزيز كفاءة وأمان أنظمة البلوكتشين، مما يوفر مرجعًا مهمًا لقرارات الاستثمار المستقبلية.
الفهرس
مقدمة
أ. أساسيات zk-SNARKs
ثانياً، zk-SNARKs غير التفاعلية
ثالثًا، إثبات المعرفة الصفرية القائم على الدوائر
٤. zk-SNARKs نموذج
خمسة، نظرة عامة على آلة افتراضية ذات إثبات عدم المعرفة وتطورها
ستة، نظرة عامة على zk-SNARKs و تطورها في آلة الإيثيريوم الافتراضية
سبعة، نظرة عامة على حلول الشبكة ذات الطبقة الثانية لل zk-SNARKs وتطورها
ثامناً، اتجاهات التطوير المستقبلية للـ zk-SNARKs
تسعة، الاستنتاج
المقدمة
مع وصول عصر Web3, تتطور تطبيقات البلوكتشين (DApps) بسرعة, حيث تظهر تطبيقات جديدة كل يوم. في السنوات الأخيرة, تتحمل منصات البلوكتشين أنشطة ملايين المستخدمين يوميًا, وتعالج مليارات المعاملات. البيانات الضخمة الناتجة عن هذه المعاملات غالبًا ما تشمل معلومات شخصية حساسة, مثل هوية المستخدم, ومبلغ المعاملة, وعنوان الحساب, والرصيد, وما إلى ذلك. بسبب انفتاح البلوكتشين وشفافيته, فإن البيانات المخزنة هذه متاحة للجميع, مما أثار العديد من قضايا الأمان والخصوصية.
حالياً، هناك عدة تقنيات تشفير يمكن أن تواجه هذه التحديات، بما في ذلك التشفير المتجانس، والتوقيع الدائري، والحوسبة متعددة الأطراف الآمنة و zk-SNARKs. يسمح التشفير المتجانس بإجراء العمليات دون فك تشفير النصوص المشفرة، مما يساعد في حماية رصيد الحساب ومبالغ المعاملات، ولكن لا يمكنه حماية أمان عنوان الحساب. يوفر التوقيع الدائري شكلاً خاصًا من التوقيع الرقمي، قادرًا على إخفاء هوية الموقع، مما يحمي أمان عنوان الحساب، ولكنه غير فعال في حماية رصيد الحساب ومبالغ المعاملات. تسمح الحوسبة متعددة الأطراف الآمنة بتوزيع مهام الحوسبة بين عدة مشاركين، دون أن يعرف أي مشارك بيانات المشاركين الآخرين، مما يحمي بشكل فعال أمان رصيد الحساب ومبالغ المعاملات، ولكنها أيضاً لا تستطيع حماية أمان عنوان الحساب. بالإضافة إلى ذلك، لا يمكن استخدام هذه التقنيات للتحقق مما إذا كان لدى المبرهن ما يكفي من مبالغ المعاملات في بيئة البلوكتشين دون الكشف عن مبلغ المعاملة، عنوان الحساب ورصيد الحساب.
zk-SNARKs(ZKP) هو حل شامل أكثر, هذه البروتوكولات للتحقق تسمح بالتحقق من صحة بعض العبارات دون الكشف عن أي بيانات وسيطة. لا يتطلب البروتوكول مرافق مفاتيح عامة معقدة, ولا توفر تنفيذه المتكرر فرصة للمستخدمين الضارين للحصول على معلومات مفيدة إضافية. من خلال zk-SNARKs, يمكن للمتحقق التحقق مما إذا كان المثبت لديه مبلغ كافٍ من الأموال في المعاملات دون كشف أي بيانات خاصة بالمعاملات. تشمل عملية التحقق إنشاء دليل يحتوي على مبلغ المعاملات الذي يدعيه المثبت, ثم يتم تمرير هذا الدليل إلى المتحقق, حيث يقوم المتحقق بإجراء حسابات محددة مسبقًا على الدليل, وينتج النتيجة النهائية للحساب, مما يؤدي إلى استنتاج ما إذا كان سيقبل ادعاءات المثبت. إذا تم قبول ادعاءات المثبت, فهذا يعني أنهم يمتلكون مبلغًا كافيًا من الأموال في المعاملات. يمكن تسجيل عملية التحقق المذكورة أعلاه على البلوكتشين, دون أي تزوير.
تُعتبر ميزة zk-SNARKs هذه عنصراً أساسياً في معاملات البلوكتشين وتطبيقات العملات المشفرة، خاصةً في مجالات حماية الخصوصية وتوسيع الشبكة، مما جعلها ليست فقط محوراً للأبحاث الأكاديمية، بل تُعتبر على نطاق واسع واحدة من أهم الابتكارات التقنية منذ تنفيذ تقنية دفتر الأستاذ الموزع بنجاح. كما أنها تعتبر مساراً رئيسياً لتطبيقات الصناعة ورأس المال الاستثماري.
نتيجة لذلك، ظهرت العديد من مشاريع الشبكة المعتمدة على zk-SNARKs، مثل ZkSync وStarkNet وMina وFilecoin وAleo. مع تقدم هذه المشاريع، تتوالى الابتكارات في خوارزميات zk-SNARKs، حيث أفيد أن هناك خوارزميات جديدة تُطرح تقريبًا كل أسبوع. بالإضافة إلى ذلك، يتقدم تطوير الأجهزة المرتبطة بتقنية zk-SNARKs بسرعة، بما في ذلك الرقائق المخصصة المحسّنة لـ zk-SNARKs. على سبيل المثال، أكملت بعض المشاريع جمع أموال على نطاق واسع، وهذه التطورات لا تعرض فقط التقدم السريع لتقنية zk-SNARKs، بل تعكس أيضًا الانتقال من الأجهزة العامة إلى الأجهزة المخصصة مثل GPU وFPGA وASIC.
تشير هذه التقدمات إلى أن تقنية zk-SNARKs ليست فقط إنجازًا مهمًا في مجال علم التشفير، ولكنها أيضًا القوة الدافعة الرئيسية لتحقيق تطبيقات أوسع لتكنولوجيا البلوكتشين، لا سيما في تعزيز حماية الخصوصية وزيادة القدرة على المعالجة.
لذلك، قررنا تنظيم المعرفة المتعلقة بـ zk-SNARKs (ZKP ) بشكل منهجي، لمساعدتنا بشكل أفضل في اتخاذ قرارات الاستثمار المستقبلية. ولتحقيق ذلك، قمنا بمراجعة شاملة للأوراق الأكاديمية الأساسية المتعلقة بـ ZKP ( وترتيبها بناءً على الصلة وعدد الاقتباسات )؛ وفي الوقت نفسه، قمنا أيضًا بتحليل مفصل لمعلومات ومشاريع رائدة في هذا المجال وترتيبها بناءً على حجم التمويل (. توفر هذه المجموعة الشاملة من المعلومات والتحليلات أساسًا قويًا لكتابة هذه المقالة.
١. أساسيات zk-SNARKs
) 1. نظرة عامة
في عام 1985، قدم الباحثون Goldwasser وMicali وRackoff لأول مرة مفهوم zk-SNARKs في ورقتهم البحثية "تعقيد المعرفة في أنظمة الإثبات التفاعلية". تعتبر هذه الورقة حجر الأساس في zk-SNARKs، حيث عرفت العديد من المفاهيم التي أثرت على الأبحاث الأكاديمية اللاحقة. على سبيل المثال، يتم تعريف المعرفة على أنها "ناتج غير قابل للحساب"، مما يعني أن المعرفة يجب أن تكون ناتجًا، وأن يكون غير قابل للحساب، وهذا يعني أنه لا يمكن أن يكون دالة بسيطة، بل يجب أن تكون دالة معقدة. وعادة ما يمكن فهم الحساب غير القابل بأنه مشكلة NP، أي مشكلة يمكن التحقق من صحة حلها في وقت متعدد الحدود، حيث يشير وقت متعدد الحدود إلى أن زمن تشغيل الخوارزمية يمكن تمثيله كدالة متعددة الحدود لحجم الإدخال. هذا هو معيار مهم في علوم الكمبيوتر لقياس كفاءة الخوارزميات وقابليتها للتطبيق. ونظرًا لأن عملية حل مشاكل NP معقدة، فإنها تعتبر حسابًا غير قابل، ولكن عملية التحقق منها بسيطة نسبيًا، لذا فهي مناسبة جدًا لاستخدامها في تحقق zk-SNARKs.
مثال كلاسيكي لمشكلة NP هو مشكلة بائع المتجول، حيث يتعين العثور على أقصر مسار لزيارة مجموعة من المدن والعودة إلى نقطة البداية. على الرغم من أن العثور على أقصر مسار قد يكون صعباً، إلا أن التحقق مما إذا كان مسار معين هو الأقصر يكون سهلاً نسبياً. وذلك لأن التحقق من المسافة الإجمالية لمسار معين يمكن أن يتم في وقت متعدد الحدود.
قدّم غولدواسر وآخرون في ورقتهم مفهوم "تعقيد المعرفة" لقياس كمية المعرفة التي يكشفها المُثبت للمدقق في أنظمة الإثبات التفاعلية. كما اقترحوا أنظمة الإثبات التفاعلية ###Interactive Proof Systems,IPS(، حيث يتفاعل المُثبت )Prover( والمدقق )Verifier( عبر جولات متعددة لإثبات صحة عبارة معينة.
بشكل عام، فإن تعريف zk-SNARKs الذي تم تلخيصه من قبل Goldwasser وآخرين هو نوع خاص من الإثباتات التفاعلية، حيث لا يحصل المدقق خلال عملية التحقق على أي معلومات إضافية بخلاف قيمة صحة العبارة؛ وقد تم اقتراح ثلاث خصائص أساسية تشمل:
الاكتمال: إذا كانت الحجة صحيحة، يمكن للمُثبت الصادق أن يقنع المُحقق الصادق بهذه الحقيقة؛
الموثوقية: إذا كان المُثبت لا يعرف محتوى البيان، فإنه يمكنه فقط خداع المُحقق باحتمالية ضئيلة.
خاصية عدم المعرفة: بعد اكتمال عملية الإثبات، يحصل المصدّق فقط على "معلومات أن المبرهن يمتلك هذه المعرفة"، ولا يمكنه الحصول على أي محتوى إضافي.
) 2. أمثلة على براهين المعرفة الصفرية
لفهم zk-SNARKs وخصائصها بشكل أفضل، إليك مثال للتحقق مما إذا كان المثبت يمتلك بعض المعلومات السرية، هذا المثال مقسم إلى ثلاثة مراحل: الإعداد، التحدي، والاستجابة.
الخطوة الأولى: إعداد (Setup)
في هذه الخطوة، هدف المُثبت هو إنشاء دليل يُظهر أنه يعرف رقماً سرياً معيناً s، لكنه لا يُظهر s بشكل مباشر. لنفترض أن الرقم السري هو s؛
اختر عددين أوليين كبيرين p و q، احسب حاصل ضربهما n. افترض أن العددين الأوليين p و q، احسب النتيجة n؛
احسب v=s^2 mod n، هنا، v كجزء من الإثبات يُرسل إلى المدقق، لكنه غير كافٍ لتمكين المدقق أو أي متفرج من استنتاج s؛
اختر عددًا صحيحًا عشوائيًا r، واحسب x = r^2 mod n وأرسله إلى المدقق. تُستخدم هذه القيمة x في عملية التحقق اللاحقة، ولكنها لا تكشف عن s أيضًا. دع العدد الصحيح العشوائي r، واحسب x الناتج.
الخطوة الثانية: التحدي (Challenge)
يختار المدقق عشوائيًا موقعًا a### يمكن أن يكون 0 أو 1(، ثم يرسله إلى المُثبِت. هذا "التحدي" يحدد الخطوات التي يحتاج المُثبِت لاتخاذها بعد ذلك.
الخطوة الثالثة: استجابة )Response(
استجابةً للقيمة a التي أرسلها المدقق، يقوم المُبرهن بالاستجابة:
إذا كانت a=0، فإن المُثبت يرسل g=r) حيث r هو الرقم الذي اختاره عشوائيًا سابقًا (.
إذا كان a=1، يقوم المُبرهن بحساب g=rs mod n وإرساله. لنفترض أن المُحقق أرسل بت عشوائيًا a، بناءً على قيمة a، يقوم المُبرهن بحساب g؛
أخيرًا، يقوم المدقق بالتحقق مما إذا كان g^2 mod n يساوي xa^v mod n بناءً على g المستلم. إذا كانت المعادلة صحيحة، يقبل المدقق هذه الشهادة. عندما تكون a=0، يقوم المدقق بحساب g^2 mod n، والتحقق من الجهة اليمنى xa^v mod n=x؛ عندما تكون a=1، يقوم المدقق بحساب g^2 mod n، والتحقق من الجهة اليمنى xa^v mod n=xv.
هنا، نرى أن g^2 mod n=xa^v mod n الذي تم حسابه بواسطة المدقق يشير إلى أن المُثبت قد نجح في اجتياز عملية التحقق دون الكشف عن رقمه السري s. هنا، نظرًا لأن a يمكن أن تأخذ فقط 0 أو 1، هناك احتمالان فقط، واحتمال نجاح المُثبت في اجتياز التحقق بالصدفة هو 1/2) عندما تأخذ a القيمة 0. ولكن المدقق يتحدى المُثبت k مرات لاحقة، حيث يقوم المُثبت بتغيير الأرقام المعنية بشكل مستمر، ويقدمها للمدقق، ويمر دائمًا بنجاح في عملية التحقق، وبالتالي فإن احتمال نجاح المُثبت في اجتياز التحقق بالصدفة يصبح (1/2)^k( الذي يقترب بلا حدود من 0)، مما يثبت أن المُثبت يعرف بالفعل رقمًا سريًا معينًا s. هذه الحالة تثبت تكاملية وموثوقية وخصوصية نظام البلوكتشين في إثبات المعرفة الصفرية.
٢. إثبات المعرفة الصفرية غير التفاعلي
( 1. الخلفية
البلوكتشين ) ZKP ( في المفهوم التقليدي عادة ما يكون شكل بروتوكول تفاعلي وعبر الإنترنت؛ على سبيل المثال، بروتوكول Sigma عادة ما يتطلب ثلاث إلى خمس جولات من التفاعل لإكمال المصادقة. ومع ذلك، في سيناريوهات مثل المعاملات الفورية أو التصويت، غالباً ما لا تكون هناك فرصة لإجراء تفاعلات متعددة، خاصة في تطبيقات تكنولوجيا البلوكتشين، حيث تبرز أهمية وظيفة التحقق خارج الإنترنت.
) 2. تم تقديم NIZK
في عام 1988، قدم كل من بلوم وفيلدمن وميكالي مفهوم إثبات عدم المعرفة غير التفاعلي لأول مرة، حيث أثبتوا أنه يمكن للبرهان أن يتم دون الحاجة إلى تفاعلات متعددة، مما يعني أن البرهان (Prover) والمحقق ###Verifier( لا يزال بإمكانهما إكمال عملية المصادقة. كانت هذه النقلة نوعية.