المؤلف: Miles المصدر: X, @Miles082510
موضوع الاختبار
SP1 عبارة عن zkVM مفتوح المصدر عالي الأداء للتحقق من تنفيذ أي برنامج Rust (أو أي لغة مجمعة بواسطة LLVM). تعمل SP1 على تعزيز Plonky3، وتدعم البراهين العودية، وتدعم مجموعة متنوعة من خوارزميات التشفير، بما في ذلك الخوارزميات المستندة إلى ECC مثل Groth16.
يسمح RISC0 zkVM بإثبات التنفيذ الصحيح لرمز الصدأ التعسفي. إنه مبني على بنية RISC-V وهو مناسب بطبيعته لتنفيذ وظائف تجزئة التشفير القياسية مثل SHA-256 وECDSA. يستخدم RISC0 STARK، مما يوفر مستوى أمان 98 بت. نظرًا لأنه متوافق مع LLVM وWASM، فهو يدعم لغات برمجة متعددة بما في ذلك C وRust.
Nexus عبارة عن مكتبة معيارية وقابلة للتوسعة ومفتوحة المصدر وقابلة للتوازي بدرجة كبيرة ومُحسَّنة للتحقق من الصحة وصديقة للمساهمين ومكتوبة بلغة Rust Friendly zkVM . إنه يركز على الأداء والأمان، باستخدام نظام Nova Folding، والذي يعد فعالًا بشكل خاص في البراهين العودية. يدعم Nexus أيضًا الترجمة المسبقة والترجمة الموجهة، بالإضافة إلى Rust، فهو يوفر أيضًا دعم C++.
ZkMIPS هي بنية تحتية حوسبة عالمية يمكن التحقق منها تعتمد على البنية الدقيقة Plonky2 وMIPS، بهدف تمكين Ethereum كطبقة تسوية عالمية. ويمكنه أيضًا تشغيل كود Rust التعسفي. تجدر الإشارة إلى أن zkMIPS هو zkVM الوحيد في هذه القائمة الذي يستخدم مجموعة أكواد التشغيل MIPS.
يتبع ZkWASM ويدعم مواصفات الرمز الثانوي WASM القياسي غير المعدل. نظرًا لأن كود Rust يتم تجميعه إلى كود WASM الثانوي، فيمكن نظريًا تشغيل أي كود Rust على جهاز zkWASM، مما يوفر المرونة ودعمًا واسعًا للغة.
Valida عبارة عن آلة افتراضية تعتمد على STARK مع مجموعة تعليمات مستوحاة من RISC تعمل على تبسيط أهداف لغات البرمجة التقليدية. يجري تطوير مترجم الواجهة الخلفية لتجميع LLVM IR إلى Valida ISA، مما يتيح التحقق من البرامج المكتوبة بلغات Rust وGo وC++ واللغات الأخرى مع عدم إجراء تغييرات تقريبًا على كود المصدر.
مشروع تجريبي
المرحلة 1: العمليات الحسابية (Hept 100) تركز المرحلة الأولى على تقييم قدرة zkVMs على التعامل مع العمليات الحسابية الأساسية : عمليات الجمع والطرح والضرب والقسمة والقسمة المعيارية والجذر التربيعي. لقد صممنا اختباراتنا حول الأرقام السداسية، والتي تتطلب أن تتعامل أجهزة zkVM مع عمليات حسابية متعددة في وقت واحد
المرحلة 2: استهلاك الذاكرة (Vec 10000) تقوم المرحلة الثانية بتقييم قدرة كل zkVM على إدارة الذاكرة تحت الحمل الثقيل. والغرض من هذه المرحلة هو تحديد أي اختناقات في الذاكرة وتحديد ما إذا كان zkVM يمكنه إدارة المهام عالية الكثافة بشكل فعال. يتم اختبار العديد من الهياكل، بما في ذلك القوائم وخرائط التجزئة. deques، وقوائم الانتظار، وBTreeMaps، ومجموعات التجزئة، والأكوام الثنائية. يتم اختبار كل zkVM للعمليات التالية:
إدراج: ما مدى سرعة إضافة zkVM للبيانات إلى البنية؟
حذف: هل يتعامل zkVM مع تحرير الذاكرة بكفاءة؟
إلحاق: هل يمكن لـ zkVM تنمية هياكل البيانات بكفاءة؟
البحث: ما مدى سرعة وكفاءة zkVM في استرداد البيانات المخزنة؟
اختبار تكوين الجهاز
< ul class=" list-paddingleft-2">
وحدة المعالجة المركزية: معالج AMD EPYC 7713 "Milan" 64 نواة (إجمالي 128 خيطًا)
li>ذاكرة الوصول العشوائي: ذاكرة الوصول العشوائي ECC سعة 600 جيجا بايت DDR4 بسرعة 3200 ميجا هرتز، موزعة عبر 16 وحدة DIMM
نظام التشغيل المضيف: Proxmox 8.3
المشرف الافتراضي: KVM
طبقة الشبكة: افتح vSwitch
طراز الجهاز: Supermicro AS-2024US-TRT p>
نتائج الاختبار
نتيجة العملية الحسابية (Hept 100):
li>
نتائج اختبار المرحلة الأولى
2. استهلاك الذاكرة (Vec 10000)
نتائج اختبار المرحلة الثانية
الملخص
يصبح RISC0 هو الخيار الأول . إنه يؤدي أداءً جيدًا من حيث وقت وحجم إنشاء الإثبات مع الحفاظ على مساحة معقولة للذاكرة. بفضل إمكانات إثبات المعرفة الصفرية القوية ودعم لغات البرمجة المتعددة، فإنه يلبي احتياجات الخصوصية والأداء والمرونة. إن توازنها الشامل بين الأداء والكفاءة يجعلها أكثر أجهزة zkVM المتاحة في هذه المرحلة قابلية للتطبيق.
حققت Valida نتائج مبهرة في سرعة إنشاء الدليل وحجمه، بحجم إثبات يبلغ 280 كيلو بايت ووقت إثبات أقل من ثانية واحدة. ومع ذلك، نظرًا لدعم Valida المحدود لـ Rust، لم يكن التحليل ممكنًا. تقوم Valida حاليًا بتجميع Rust باستخدام الواجهة الخلفية لـ LLVM، وتنقل LLVM IR للاستفادة من تطبيق C/C++ الخاص بها، والذي يمكن أن يسبب أخطاء عند التعامل مع هياكل البيانات أو التبعيات الخاصة بـ Rust. ونتيجة لذلك، لا يمكن اختبار تفاعلات الذاكرة المعقدة، ولا يُنصح حاليًا باستخدام Valida مع Rust code. تتطلب البراهين المعرفة. يعد أدائها في العمليات الحسابية جديرًا بالثناء، ولكنه ليس كافيًا لتبرير المزيد من الاهتمام نظرًا لافتقارها إلى وظائف ZK
يوضح Nexus حجم دليل متسق واستخدامًا للذاكرة يمكن التحكم فيه، ولكن الأداء الضعيف أثناء المهام كثيفة الاستهلاك للذاكرة، وحجمه المثبت (خاصة بالنسبة لأحمال العمل الأكبر) يجعله غير مؤهل ليكون منافسًا رئيسيًا.
يوفر zkMIPS أوقات إثبات موثوقة، ولكن مشكلة الذاكرة شديدة جدًا بحيث لا يمكن تحملها
zkWASM كان لها أسوأ النتائج، حيث عانت من حجم الإثبات وزمن التوليد. على الرغم من أنه قد يدعم رمز بايت WASM، إلا أن استهلاك ذاكرة الوصول العشوائي (ما يصل إلى 57 جيجابايت في اختبار الذاكرة) مفرط