الدلائل بدون معرفة (ZKP) هي أداة تشفيرية قوية يمكن أن تقوم بالتحقق من دقة الحسابات مع حماية خصوصية البيانات الداخلية. تلعب اللغات الخاصة بالنطاق (DSLs) دوراً حاسمًا كجزء من هذه البنية الأساسية، حيث تبسط عملية تطوير والتحقق من دوائر الدليل بدون معرفة. إنها تعمل كجسر هام بين المفاهيم المجردة والتمثيل الدقيق للدائرة المطلوبة من أنظمة البرهان.
أحد التحديات الرئيسية التي تواجه أنظمة البرهان هو ترجمة المفاهيم المجردة عالية المستوى إلى دوائر عملية. ومع ذلك، قد أسهم ظهور لغات الوصف في حل هذه المشكلة من خلال تيسير تنظيم هذه المفاهيم المجردة بطريقة أكثر تحديدًا وقابلة للتنفيذ، وبالتالي تحقيق هذا التحدي.
في العقد الماضي، شهدنا زيادة كبيرة في كمية وتنوع لغات التوصيل الرقمي. هذه الحيوية في المجال واضحة في تطوير مختلف لغات الدوائر، بما في ذلك Noir وLeo وZinc. سواء كنت بحاجة إلى خيار متعدد الاستخدامات مثل Circom أو حلاً مخصصًا لمنصة معينة مثل Cairo، يمكنك اختيار من بين العديد من اللغات والأطر البرمجية لكتابة دوائر ZKP.
في هذا المقال، سنستكشف اللغات الرئيسية لبرمجة ZK المستخدمة بنشاط من قبل المطورين ونحلل أفضل ميزات كل لغة.
القاهرة هي اللغة الأساسية لبرامج الحوسبة العامة التي تدعم براهين STARK. لقد لعبت دورا رئيسيا في نجاح StarkNet و StarkEx ، مما أدى إلى قابلية تطوير التطبيقات على شبكة Ethereum الرئيسية. والجدير بالذكر أن القاهرة لعبت دورا أساسيا في دعم مجموعة متنوعة من التطبيقات ، بما في ذلك dYdX و Sorare و Immutable X. اسم "القاهرة" مشتق من اختصار "التمثيل الوسيط الجبري لوحدة المعالجة المركزية". في عالم براهين المعرفة الصفرية ، يعمل بشكل مشابه للغة التجميع ، مما يتيح للمطورين المطلعين على لغات البرمجة منخفضة المستوى مثل C أو C ++ أو Solidity البدء بسهولة أكبر.
مستوحاة من Rust، تمكّن Cairo المطورين من إنشاء عقود ذكية لـ Starknet مع التركيز على الأمان وتطوير ودية. تتميز Cairo بصيغة قوية تبسط إنشاء الدوائر ZK، مما يسمح للمستخدمين بأداء مهام مختلفة ضمن برامج Cairo. بالإضافة إلى ذلك، إحدى مزايا Cairo الهامة هي قابليتها للتوسع، مما يسمح بدمج مرن لميزات ووظائف جديدة.
في أنظمة ZK، الكفاءة والقابلية للتوسع أمور حاسمة، وتلبي Cairo هذه المتطلبات من خلال التركيز على كليهما. يدمج اللغة استراتيجيات التحسين، بما في ذلك تقليل القيود والقضاء على الحلقات، للتخفيف من العبء الحسابي المرتبط عادة بدوائر ZK. التحسين في تصميم الدائرة ينتج عنها توليد دليل أسرع وتحقق، مما يجعلها خيارًا مثاليًا للتطبيقات التي تتطلب إنتاجية عالية وتأخيرًا دنياً.
كان توسيع وتطوير القاهرة ملحوظًا، حيث شهدنا ارتفاعًا غير عادي في عدد المطورين بدوام كامل خلال السنتين الماضيتين. يبرز هذا الارتفاع قدرة القاهرة على التكيف، حيث لا يقتصر استخدامها على تقنية البلوكشين فقط وإنما هو ذو أهمية في أي سياق يتطلب التحقق الحسابي. لذلك، يمكننا توقع مزيد من النمو الكبير في عدد المطورين الذين يعتمدون على القاهرة.
في 28 سبتمبر 2023، قام Starknet بإطلاق ترقية رئيسية للغة البرمجة الخاصة به بـ Cairo v2.3.0. تعتبر هذه النسخة تقدمًا كبيرًا في جعل العقود أكثر تعددية من خلال إدخال ميزات جديدة وخيارات تخزين وإدارة الأحداث، مما يعزز إمكانيات العقود الذكية. تكامل هذه العناصر يوفر وسيلة مرنة لتوسيع وظائف العقود، مما يسمح للوحدات الخارجية بتعزيز وظائف العقود.
لغة برمجة Zinc مصممة خصيصًا لإنشاء العقود الذكية ودوائر SNARK على منصة zkSync. تعتمد بنية Rust وتدمج عناصر من Solidity وتقدم وظائف فريدة.
فرادة الزنك تكمن في سهولة استخدامه. يمكنك كتابة كود آمن دون الحاجة إلى التعمق في جميع التفاصيل المعقدة لنظام القيد من الدرجة الأولى (R1CS). يوضح الزنك اللاقابلية للتغيير، مما يمنحه خصائص وظيفية جوهرية. وهذا يعني أنه يعطي أولوية للبيانات اللاقابلة للتغيير وتقييم الوظائف، مما يقلل من الآثار الجانبية ويسهل كتابة رمز تعاقد ذكي أنظف وأقل عرضة للأخطاء.
وتشمل Zinc عمليات رياضية آمنة لمنع التجاوزات المحتملة، مما يضمن سلامة جميع العمليات. على الرغم من بعض القيود، مثل عدم وجود حلقات لانهائية والتكرار، إلا أن Zinc يبسط عملية تصحيح الأخطاء من خلال تتبع سجلات الوحدة التحكم. تجعل هذه السجلات من السهل تتبع وحل مشكلات المعاملات على الشبكات التجريبية أو الشبكة الرئيسية، مما يعزز بذلك تجربة تصحيح الأخطاء.
نوير، هي لغة برمجة مفتوحة المصدر تم تطويرها بواسطة أزتيك وتعتمد على لغة Rust، تهدف إلى تبسيط إنشاء دوائر ZK وبرامج ZK دون الحاجة إلى معرفة تشفيرية عميقة. تُعتبر واحدة من أكثر اللغات إمكانية لكتابة تطبيقات ZK متوافقة مع أي نظام إثبات. تركز نوير على الأمان والبساطة والأداء، مقدمة بناء بناء على مستوى عالٍ من البناء النحوي يُشابه Rust. تجرد من الأمان التشفيري، مبسطة استخدام الأساسيات التشفيرية مع الحفاظ على الأداء العالي.
لدى Noir مزايا كبيرة في توسيع نطاق التطبيقات التي يمكن أن تستفيد من قدرات حماية الخصوصية التي تقدمها ZKP، مما يعزز الخصوصية وكفاءة التحقق. يتم تجميعه إلى تمثيل وسيط متوسط يسمى تمثيل الدائرة المجردة (Acer)، الذي يمكن بعد ذلك تجميعه بشكل أفضل في R1CS. يتيح فصل نظام إثبات الخلفية عن اللغة نفسها لـ Noir دعم مختلف أنظمة الإثبات، بما في ذلك Aztec Brettenberg و Turbo Plonk والتكاملات المستقبلية المحتملة مثل Groth16 و Halo2.
اللغة تشمل مكتبة قياسية تتميز بوظائف فعّالة مثل SHA-256 (وظيفة تجزئة تشفيرية تنتج مخرجات ذات حجم ثابت) وفحوص Pedersen-Merkle (تقنية تحقق تشفيرية تستخدم التزامات Pedersen وأشجار Merkle لضمان سلامة البيانات واتساقها). تصميم Noir، مشابه لـ Rust، يضم ميزات مألوفة لمطوري التطبيقات، مثل الوظائف، الوحدات الفرعية، أنواع المستخدم المحددة (الهياكل)، البيانات الشرطية، الحلقات، والثوابت العامة. بالإضافة إلى ذلك، يتم بذل جهود متواصلة لتطوير العموميات والوظائف من الدرجة الأولى لتعزيز تعبيرية Noir بشكل أكبر.
من المهم أن نلاحظ أن Noir ما زالت تتطور، مع وجود قيود وأخطاء محتملة. ومع ذلك، فإن فريق التطوير ملتزم بتحسينها وتحسينها بشكل مستمر.
o1js، المعروف سابقا بإسم SnarkyJS، هو مكتبة TypeScript تم تطويرها بواسطة 0(1) Labs لإنشاء عقود ذكية باستخدام لغة برمجة SNARK. إنها تستفيد بشكل كامل من التقنيات المُنشأة مثل Node.js وتوافق المتصفح لضمان سهولة الوصول والراحة للمطورين.
o1js يدمج بسلاسة مع مكتبات وأدوات JavaScript وTypeScript، مما يوفر للمطورين بيئة قوية ودعم مجتمع واسع. يبسط هذا التكامل عملية التطوير ويقلل من منحنى التعلم المرتبط باعتماد بيئات تطوير جديدة. بالإضافة إلى ذلك، يدعم تمامًا Visual Studio Code (VS Code)، وهو محرر رمز يستخدم على نطاق واسع، مما يتيح للمطورين الاستفادة الكاملة من ميزات مثل الاكتمال التلقائي للكود، تحديد البنية اللغوية، وتصحيح الأخطاء لتعزيز تجربة التطوير.
بشكل أساسي، o1js هو إطار ZK متعدد الوظائف يقدم الأدوات الرئيسية المطلوبة لإنشاء دلائل ZK. يدعم مجموعة متنوعة من برامج ZK، تغطي مجموعة متنوعة من العمليات القابلة للإثبات المضمنة مثل الحسابات الأساسية، التجزئة، التوقيع، العمليات البولية، المقارنات، وأكثر من ذلك. باستخدام إطار o1js، يمكنك بناء zkApps على بروتوكول Mina، حيث تقوم هذه العقود الذكية بالتنفيذ على الجانب العميل مع المدخلات الخاصة.
بشكل ملحوظ، في بداية سبتمبر 2023، أعلن فريق 0(1) Labs عن الانتقال من SnarkyJS إلى o1js، مُؤكدين التزامهم بتحسين الأداء. يُذكر بشكل خاص إنجازهم في تقليل وقت تحميل المكتبة بمقدار 3-4 مرات، والذي يشير إلى الوقت المطلوب لاستيراد o1js، وهو عملية يمكن أن تعرقل الخيط الرئيسي. بالنسبة لتطبيقات الويب، يعتبر وقت التحميل أمرًا حاسمًا لتوقيت تنفيذ JavaScript وعملية عرض الصفحة بشكل عام. علاوة على ذلك، قام الفريق أيضًا بتحديث Mina zkApp CLI، مما يعزز تجربة بناء واجهة المستخدم، وأعلن عن تحسينات إضافية على واجهة برمجة التطبيقات للعقدة الأرشيف لتعزيز موثوقيتها ووضوحها.
يتميز بلوكشين Aleo في مجال العقود الذكية بالتركيز الكبير على حماية الخصوصية. في جوهره يوجد لغة البرمجة Leo، وهي لغة مكتوبة بشكل ثابت مستوحاة من Rust. تم تصميمها خصيصًا لتطوير التطبيقات الخاصة، وتدعم Leo الأشخاص الذين يهدفون إلى بناء نظم بيئات لامركزية آمنة وسرية. ما يميز حقًا Leo هو دوره الريادي في تقديم مجموعة أدوات شاملة لتطبيقات الصفر المعرفة العالمية. تتضمن هذه المجموعة إطار اختبار، سجل حزم، محلل استيراد، مترجم عن بعد، ومُنشئ نظريات.
مفهوم ليو ينبع من فريق تطوير بقيادة هوارد وو، يتصور نظام يمكن المطورين من بناء تطبيقات لامركزية مع التركيز على الخصوصية والأمان. مستوحى من مبادئ Rust، يتضمن تصميم ليو أيضًا عناصر مماثلة لجافا سكريبت، مما يسهل الشعور بالتعرف والسهولة أثناء عملية التطوير. علاوة على ذلك، يهدف ليو إلى تسريع وتبسيط عملية التطوير من خلال تقديم منصة اختبار متكاملة وسجل حزم ومحول استيراد. يسمح هذا التكامل للمطورين بالتركيز على المنطق الأساسي لتطبيقاتهم دون أن يتعثروا في قضايا البنية التحتية.
الميزة البارزة ل Leo هي مترجمها ، الذي يحول البرامج إلى تنسيق إثبات R1CS منخفض المستوى. يكمن تفرد مترجم Leo في عملية التحقق الرسمية الصارمة. هذا التحقق أمر بالغ الأهمية حيث يمكن أن تنشأ نقاط الضعف في مراحل متعددة ، من البرمجة الأولية إلى التدقيق والتجميع. من خلال إجراء فحوصات رياضية صارمة لضمان توافق المترجم مع نية المبرمج ، يهدف Leo إلى تقليل مخاطر الأخطاء غير المكتشفة أو نقاط الضعف المحتملة ، لا سيما في سياقات L2 أو ZK-rollups أو البرامج الخاصة على منصة Leo.
Circom ، لغة خاصة بالمجال (DSL) مصممة بدقة لتطوير دائرة ZK ، هي ابتكار تعاوني من قبل Jordi Baylina وفريق iden3. يعمل مترجم Circom ، المكتوب بلغة Rust ، بشكل أساسي على تجميع الدوائر المطورة باستخدام لغة Circom. والجدير بالذكر أن Circom قد برزت كخيار مفضل لتطبيقات ZK المتميزة في العالم الحقيقي ، مثل Dark Forest و Tornado Cash. تعزى شعبيتها إلى أدائها المثير للإعجاب ، والذي يتضمن أوقات إثبات سريعة للمتصفح من خلال براهين WASM المحسنة ، والبراهين الفعالة من جانب الخادم عبر rapidsnark ، والتحقق الفعال على السلسلة.
ومع ذلك، من المهم أن ندرك أن وظيفة Circom مركزة بشكل رئيسي على تطوير دوائر ZK، مما قد يجعلها غير مناسبة لمهام الحساب الأوسع نطاقًا. قد يجد المطورون الذين يبحثون عن إمكانيات أكثر تنوعًا لتلبية مجموعة أوسع من احتياجات التطوير أن قدرات Circom محدودة إلى حد ما. في مثل هذه الحالات، قد يحتاج المطورون إلى دمج لغات برمجة أخرى أو أطر عمل لتلبية متطلبات التطوير الشاملة أكثر.
مصدر الصورة: Circom
تركز توافقية Circom في المقام الأول على أنظمة Zero-Knowledge Proof (ZKP) المستخدمة على نطاق واسع مثل snarkjs و libsnark. يضمن هذا التوافق التكامل السلس مع هذه الأنظمة المستخدمة بشكل شائع، ولكنه يعني أيضًا أن دوائر Circom تورث ميزات وقيود محددة مرتبطة بهذه التبعيات. قد يواجه المطورون الذين يفضلون أو يحتاجون إلى أنظمة ZKP بديلة تحديات توافقية أو الحاجة إلى بذل جهد إضافي لتكييف ودمج الدوائر التي تم إنشاؤها بواسطة Circom في الأنظمة المفضلة لديهم.
لورك هو نوع من ليسب له نطاق ثابت تأثر بسكيم وكومن ليسب، مع ميزة فريدة: إنه يسمح بإثبات مباشر لصحة تنفيذ البرنامج باستخدام zk-SNARKs، مما يتيح التحقق المدمج والفعال. استخدامات لورك الرئيسية تتضمن:
الحسابات القابلة للتحقق: يمكن لـ Lurk تفعيل دليل صحة تعبيراتها تحت ظروف عدم المعرفة، مما يعزز الثقة في نتائج الحساب.
صفر المعرفة: يمكن للمستخدمين إثبات المعرفة دون الكشف عن معلومات محددة تتجاوز المدخلات العامة ، وبالتالي حماية الخصوصية.
البيانات القابلة للعنونة: تم تجهيز كل برنامج Lurk بمعرف محتوى فريد (CID)، مما يجعله متوافقًا مع IPFS و IPLD.
الاكتمال التورينغ: يدعم لورك إنشاء وإثبات البيانات الحسابية التعسفية.
الوظائف من الدرجة العالية: يمكن للوظائف التي تقف في الخلفية قبول وإرجاع وظائف أخرى، مما يسهل البرمجة الوظيفية التعبيرية.
الحسابات مع البيانات الخاصة: يسمح Lurk بالتعامل مع البيانات الخاصة مع ضمان الإخراج الصحيح بشكل قابل للإثبات دون تسريبات خصوصية.
في بناء الدوائر عامة الغرض، يستخدم لورك بشكل شامل مخصص الذاكرة "cons" في ليسب، الذي يجمع بين التعبيرات ويولد مراجع من خلال القيام بعملية تجزئة. المفتاح يكمن في إثبات أن تعبيرين يجزءان فعلا إلى نفس المرجع. يتيح هذا التحقق لـ لورك أداء العمليات ضمن دوائر الـ snark.
تتميز وظيفة Lurk بالغنى، بما في ذلك دعم الانحراف لانتهاء، والحلقات، وتدفق التحكم الشرطي، وأنظمة البرهان الخلفي المتعددة مثل Groth16، SnarkPack+، و Nova. تفتح هذه القابلية الأبواب أمام تطبيقات مختلفة، بما في ذلك الحسابات المحققة، ومعالجة البيانات الخاصة، وتنفيذ البرامج التي تكتمل بتورينغ داخل الدوائر الخفية.
مع تزايد تنوع تطبيقات ZK، تكون الآفاق لـ DSLs في مجال ZK واسعة. مفتاح نجاح DSL يكمن في إنشاء مجتمع نابض بالحياة ومكتبة غنية لتثرية تجارب المطورين. تلك الـ DSLs التي تعطي الأولوية للتوافق مع المكتبات الحالية يمكنها الاستفادة الكاملة من معرفة وموارد مجتمع المطورين الأوسع. يساعد هذا النهج في تسهيل التكامل، وتسريع عملية التطوير، وتوفير مزيد من المرونة في تنفيذ تطبيقات ZK. هذه الجهود التعاونية ضرورية في تعزيز بيئة نظام غذائي أكثر قوة حول DSLs، مقدمة فوائد ملموسة للمطورين ودفع مزيد من اعتماد وفعالية تكنولوجيا ZK.
الدلائل بدون معرفة (ZKP) هي أداة تشفيرية قوية يمكن أن تقوم بالتحقق من دقة الحسابات مع حماية خصوصية البيانات الداخلية. تلعب اللغات الخاصة بالنطاق (DSLs) دوراً حاسمًا كجزء من هذه البنية الأساسية، حيث تبسط عملية تطوير والتحقق من دوائر الدليل بدون معرفة. إنها تعمل كجسر هام بين المفاهيم المجردة والتمثيل الدقيق للدائرة المطلوبة من أنظمة البرهان.
أحد التحديات الرئيسية التي تواجه أنظمة البرهان هو ترجمة المفاهيم المجردة عالية المستوى إلى دوائر عملية. ومع ذلك، قد أسهم ظهور لغات الوصف في حل هذه المشكلة من خلال تيسير تنظيم هذه المفاهيم المجردة بطريقة أكثر تحديدًا وقابلة للتنفيذ، وبالتالي تحقيق هذا التحدي.
في العقد الماضي، شهدنا زيادة كبيرة في كمية وتنوع لغات التوصيل الرقمي. هذه الحيوية في المجال واضحة في تطوير مختلف لغات الدوائر، بما في ذلك Noir وLeo وZinc. سواء كنت بحاجة إلى خيار متعدد الاستخدامات مثل Circom أو حلاً مخصصًا لمنصة معينة مثل Cairo، يمكنك اختيار من بين العديد من اللغات والأطر البرمجية لكتابة دوائر ZKP.
في هذا المقال، سنستكشف اللغات الرئيسية لبرمجة ZK المستخدمة بنشاط من قبل المطورين ونحلل أفضل ميزات كل لغة.
القاهرة هي اللغة الأساسية لبرامج الحوسبة العامة التي تدعم براهين STARK. لقد لعبت دورا رئيسيا في نجاح StarkNet و StarkEx ، مما أدى إلى قابلية تطوير التطبيقات على شبكة Ethereum الرئيسية. والجدير بالذكر أن القاهرة لعبت دورا أساسيا في دعم مجموعة متنوعة من التطبيقات ، بما في ذلك dYdX و Sorare و Immutable X. اسم "القاهرة" مشتق من اختصار "التمثيل الوسيط الجبري لوحدة المعالجة المركزية". في عالم براهين المعرفة الصفرية ، يعمل بشكل مشابه للغة التجميع ، مما يتيح للمطورين المطلعين على لغات البرمجة منخفضة المستوى مثل C أو C ++ أو Solidity البدء بسهولة أكبر.
مستوحاة من Rust، تمكّن Cairo المطورين من إنشاء عقود ذكية لـ Starknet مع التركيز على الأمان وتطوير ودية. تتميز Cairo بصيغة قوية تبسط إنشاء الدوائر ZK، مما يسمح للمستخدمين بأداء مهام مختلفة ضمن برامج Cairo. بالإضافة إلى ذلك، إحدى مزايا Cairo الهامة هي قابليتها للتوسع، مما يسمح بدمج مرن لميزات ووظائف جديدة.
في أنظمة ZK، الكفاءة والقابلية للتوسع أمور حاسمة، وتلبي Cairo هذه المتطلبات من خلال التركيز على كليهما. يدمج اللغة استراتيجيات التحسين، بما في ذلك تقليل القيود والقضاء على الحلقات، للتخفيف من العبء الحسابي المرتبط عادة بدوائر ZK. التحسين في تصميم الدائرة ينتج عنها توليد دليل أسرع وتحقق، مما يجعلها خيارًا مثاليًا للتطبيقات التي تتطلب إنتاجية عالية وتأخيرًا دنياً.
كان توسيع وتطوير القاهرة ملحوظًا، حيث شهدنا ارتفاعًا غير عادي في عدد المطورين بدوام كامل خلال السنتين الماضيتين. يبرز هذا الارتفاع قدرة القاهرة على التكيف، حيث لا يقتصر استخدامها على تقنية البلوكشين فقط وإنما هو ذو أهمية في أي سياق يتطلب التحقق الحسابي. لذلك، يمكننا توقع مزيد من النمو الكبير في عدد المطورين الذين يعتمدون على القاهرة.
في 28 سبتمبر 2023، قام Starknet بإطلاق ترقية رئيسية للغة البرمجة الخاصة به بـ Cairo v2.3.0. تعتبر هذه النسخة تقدمًا كبيرًا في جعل العقود أكثر تعددية من خلال إدخال ميزات جديدة وخيارات تخزين وإدارة الأحداث، مما يعزز إمكانيات العقود الذكية. تكامل هذه العناصر يوفر وسيلة مرنة لتوسيع وظائف العقود، مما يسمح للوحدات الخارجية بتعزيز وظائف العقود.
لغة برمجة Zinc مصممة خصيصًا لإنشاء العقود الذكية ودوائر SNARK على منصة zkSync. تعتمد بنية Rust وتدمج عناصر من Solidity وتقدم وظائف فريدة.
فرادة الزنك تكمن في سهولة استخدامه. يمكنك كتابة كود آمن دون الحاجة إلى التعمق في جميع التفاصيل المعقدة لنظام القيد من الدرجة الأولى (R1CS). يوضح الزنك اللاقابلية للتغيير، مما يمنحه خصائص وظيفية جوهرية. وهذا يعني أنه يعطي أولوية للبيانات اللاقابلة للتغيير وتقييم الوظائف، مما يقلل من الآثار الجانبية ويسهل كتابة رمز تعاقد ذكي أنظف وأقل عرضة للأخطاء.
وتشمل Zinc عمليات رياضية آمنة لمنع التجاوزات المحتملة، مما يضمن سلامة جميع العمليات. على الرغم من بعض القيود، مثل عدم وجود حلقات لانهائية والتكرار، إلا أن Zinc يبسط عملية تصحيح الأخطاء من خلال تتبع سجلات الوحدة التحكم. تجعل هذه السجلات من السهل تتبع وحل مشكلات المعاملات على الشبكات التجريبية أو الشبكة الرئيسية، مما يعزز بذلك تجربة تصحيح الأخطاء.
نوير، هي لغة برمجة مفتوحة المصدر تم تطويرها بواسطة أزتيك وتعتمد على لغة Rust، تهدف إلى تبسيط إنشاء دوائر ZK وبرامج ZK دون الحاجة إلى معرفة تشفيرية عميقة. تُعتبر واحدة من أكثر اللغات إمكانية لكتابة تطبيقات ZK متوافقة مع أي نظام إثبات. تركز نوير على الأمان والبساطة والأداء، مقدمة بناء بناء على مستوى عالٍ من البناء النحوي يُشابه Rust. تجرد من الأمان التشفيري، مبسطة استخدام الأساسيات التشفيرية مع الحفاظ على الأداء العالي.
لدى Noir مزايا كبيرة في توسيع نطاق التطبيقات التي يمكن أن تستفيد من قدرات حماية الخصوصية التي تقدمها ZKP، مما يعزز الخصوصية وكفاءة التحقق. يتم تجميعه إلى تمثيل وسيط متوسط يسمى تمثيل الدائرة المجردة (Acer)، الذي يمكن بعد ذلك تجميعه بشكل أفضل في R1CS. يتيح فصل نظام إثبات الخلفية عن اللغة نفسها لـ Noir دعم مختلف أنظمة الإثبات، بما في ذلك Aztec Brettenberg و Turbo Plonk والتكاملات المستقبلية المحتملة مثل Groth16 و Halo2.
اللغة تشمل مكتبة قياسية تتميز بوظائف فعّالة مثل SHA-256 (وظيفة تجزئة تشفيرية تنتج مخرجات ذات حجم ثابت) وفحوص Pedersen-Merkle (تقنية تحقق تشفيرية تستخدم التزامات Pedersen وأشجار Merkle لضمان سلامة البيانات واتساقها). تصميم Noir، مشابه لـ Rust، يضم ميزات مألوفة لمطوري التطبيقات، مثل الوظائف، الوحدات الفرعية، أنواع المستخدم المحددة (الهياكل)، البيانات الشرطية، الحلقات، والثوابت العامة. بالإضافة إلى ذلك، يتم بذل جهود متواصلة لتطوير العموميات والوظائف من الدرجة الأولى لتعزيز تعبيرية Noir بشكل أكبر.
من المهم أن نلاحظ أن Noir ما زالت تتطور، مع وجود قيود وأخطاء محتملة. ومع ذلك، فإن فريق التطوير ملتزم بتحسينها وتحسينها بشكل مستمر.
o1js، المعروف سابقا بإسم SnarkyJS، هو مكتبة TypeScript تم تطويرها بواسطة 0(1) Labs لإنشاء عقود ذكية باستخدام لغة برمجة SNARK. إنها تستفيد بشكل كامل من التقنيات المُنشأة مثل Node.js وتوافق المتصفح لضمان سهولة الوصول والراحة للمطورين.
o1js يدمج بسلاسة مع مكتبات وأدوات JavaScript وTypeScript، مما يوفر للمطورين بيئة قوية ودعم مجتمع واسع. يبسط هذا التكامل عملية التطوير ويقلل من منحنى التعلم المرتبط باعتماد بيئات تطوير جديدة. بالإضافة إلى ذلك، يدعم تمامًا Visual Studio Code (VS Code)، وهو محرر رمز يستخدم على نطاق واسع، مما يتيح للمطورين الاستفادة الكاملة من ميزات مثل الاكتمال التلقائي للكود، تحديد البنية اللغوية، وتصحيح الأخطاء لتعزيز تجربة التطوير.
بشكل أساسي، o1js هو إطار ZK متعدد الوظائف يقدم الأدوات الرئيسية المطلوبة لإنشاء دلائل ZK. يدعم مجموعة متنوعة من برامج ZK، تغطي مجموعة متنوعة من العمليات القابلة للإثبات المضمنة مثل الحسابات الأساسية، التجزئة، التوقيع، العمليات البولية، المقارنات، وأكثر من ذلك. باستخدام إطار o1js، يمكنك بناء zkApps على بروتوكول Mina، حيث تقوم هذه العقود الذكية بالتنفيذ على الجانب العميل مع المدخلات الخاصة.
بشكل ملحوظ، في بداية سبتمبر 2023، أعلن فريق 0(1) Labs عن الانتقال من SnarkyJS إلى o1js، مُؤكدين التزامهم بتحسين الأداء. يُذكر بشكل خاص إنجازهم في تقليل وقت تحميل المكتبة بمقدار 3-4 مرات، والذي يشير إلى الوقت المطلوب لاستيراد o1js، وهو عملية يمكن أن تعرقل الخيط الرئيسي. بالنسبة لتطبيقات الويب، يعتبر وقت التحميل أمرًا حاسمًا لتوقيت تنفيذ JavaScript وعملية عرض الصفحة بشكل عام. علاوة على ذلك، قام الفريق أيضًا بتحديث Mina zkApp CLI، مما يعزز تجربة بناء واجهة المستخدم، وأعلن عن تحسينات إضافية على واجهة برمجة التطبيقات للعقدة الأرشيف لتعزيز موثوقيتها ووضوحها.
يتميز بلوكشين Aleo في مجال العقود الذكية بالتركيز الكبير على حماية الخصوصية. في جوهره يوجد لغة البرمجة Leo، وهي لغة مكتوبة بشكل ثابت مستوحاة من Rust. تم تصميمها خصيصًا لتطوير التطبيقات الخاصة، وتدعم Leo الأشخاص الذين يهدفون إلى بناء نظم بيئات لامركزية آمنة وسرية. ما يميز حقًا Leo هو دوره الريادي في تقديم مجموعة أدوات شاملة لتطبيقات الصفر المعرفة العالمية. تتضمن هذه المجموعة إطار اختبار، سجل حزم، محلل استيراد، مترجم عن بعد، ومُنشئ نظريات.
مفهوم ليو ينبع من فريق تطوير بقيادة هوارد وو، يتصور نظام يمكن المطورين من بناء تطبيقات لامركزية مع التركيز على الخصوصية والأمان. مستوحى من مبادئ Rust، يتضمن تصميم ليو أيضًا عناصر مماثلة لجافا سكريبت، مما يسهل الشعور بالتعرف والسهولة أثناء عملية التطوير. علاوة على ذلك، يهدف ليو إلى تسريع وتبسيط عملية التطوير من خلال تقديم منصة اختبار متكاملة وسجل حزم ومحول استيراد. يسمح هذا التكامل للمطورين بالتركيز على المنطق الأساسي لتطبيقاتهم دون أن يتعثروا في قضايا البنية التحتية.
الميزة البارزة ل Leo هي مترجمها ، الذي يحول البرامج إلى تنسيق إثبات R1CS منخفض المستوى. يكمن تفرد مترجم Leo في عملية التحقق الرسمية الصارمة. هذا التحقق أمر بالغ الأهمية حيث يمكن أن تنشأ نقاط الضعف في مراحل متعددة ، من البرمجة الأولية إلى التدقيق والتجميع. من خلال إجراء فحوصات رياضية صارمة لضمان توافق المترجم مع نية المبرمج ، يهدف Leo إلى تقليل مخاطر الأخطاء غير المكتشفة أو نقاط الضعف المحتملة ، لا سيما في سياقات L2 أو ZK-rollups أو البرامج الخاصة على منصة Leo.
Circom ، لغة خاصة بالمجال (DSL) مصممة بدقة لتطوير دائرة ZK ، هي ابتكار تعاوني من قبل Jordi Baylina وفريق iden3. يعمل مترجم Circom ، المكتوب بلغة Rust ، بشكل أساسي على تجميع الدوائر المطورة باستخدام لغة Circom. والجدير بالذكر أن Circom قد برزت كخيار مفضل لتطبيقات ZK المتميزة في العالم الحقيقي ، مثل Dark Forest و Tornado Cash. تعزى شعبيتها إلى أدائها المثير للإعجاب ، والذي يتضمن أوقات إثبات سريعة للمتصفح من خلال براهين WASM المحسنة ، والبراهين الفعالة من جانب الخادم عبر rapidsnark ، والتحقق الفعال على السلسلة.
ومع ذلك، من المهم أن ندرك أن وظيفة Circom مركزة بشكل رئيسي على تطوير دوائر ZK، مما قد يجعلها غير مناسبة لمهام الحساب الأوسع نطاقًا. قد يجد المطورون الذين يبحثون عن إمكانيات أكثر تنوعًا لتلبية مجموعة أوسع من احتياجات التطوير أن قدرات Circom محدودة إلى حد ما. في مثل هذه الحالات، قد يحتاج المطورون إلى دمج لغات برمجة أخرى أو أطر عمل لتلبية متطلبات التطوير الشاملة أكثر.
مصدر الصورة: Circom
تركز توافقية Circom في المقام الأول على أنظمة Zero-Knowledge Proof (ZKP) المستخدمة على نطاق واسع مثل snarkjs و libsnark. يضمن هذا التوافق التكامل السلس مع هذه الأنظمة المستخدمة بشكل شائع، ولكنه يعني أيضًا أن دوائر Circom تورث ميزات وقيود محددة مرتبطة بهذه التبعيات. قد يواجه المطورون الذين يفضلون أو يحتاجون إلى أنظمة ZKP بديلة تحديات توافقية أو الحاجة إلى بذل جهد إضافي لتكييف ودمج الدوائر التي تم إنشاؤها بواسطة Circom في الأنظمة المفضلة لديهم.
لورك هو نوع من ليسب له نطاق ثابت تأثر بسكيم وكومن ليسب، مع ميزة فريدة: إنه يسمح بإثبات مباشر لصحة تنفيذ البرنامج باستخدام zk-SNARKs، مما يتيح التحقق المدمج والفعال. استخدامات لورك الرئيسية تتضمن:
الحسابات القابلة للتحقق: يمكن لـ Lurk تفعيل دليل صحة تعبيراتها تحت ظروف عدم المعرفة، مما يعزز الثقة في نتائج الحساب.
صفر المعرفة: يمكن للمستخدمين إثبات المعرفة دون الكشف عن معلومات محددة تتجاوز المدخلات العامة ، وبالتالي حماية الخصوصية.
البيانات القابلة للعنونة: تم تجهيز كل برنامج Lurk بمعرف محتوى فريد (CID)، مما يجعله متوافقًا مع IPFS و IPLD.
الاكتمال التورينغ: يدعم لورك إنشاء وإثبات البيانات الحسابية التعسفية.
الوظائف من الدرجة العالية: يمكن للوظائف التي تقف في الخلفية قبول وإرجاع وظائف أخرى، مما يسهل البرمجة الوظيفية التعبيرية.
الحسابات مع البيانات الخاصة: يسمح Lurk بالتعامل مع البيانات الخاصة مع ضمان الإخراج الصحيح بشكل قابل للإثبات دون تسريبات خصوصية.
في بناء الدوائر عامة الغرض، يستخدم لورك بشكل شامل مخصص الذاكرة "cons" في ليسب، الذي يجمع بين التعبيرات ويولد مراجع من خلال القيام بعملية تجزئة. المفتاح يكمن في إثبات أن تعبيرين يجزءان فعلا إلى نفس المرجع. يتيح هذا التحقق لـ لورك أداء العمليات ضمن دوائر الـ snark.
تتميز وظيفة Lurk بالغنى، بما في ذلك دعم الانحراف لانتهاء، والحلقات، وتدفق التحكم الشرطي، وأنظمة البرهان الخلفي المتعددة مثل Groth16، SnarkPack+، و Nova. تفتح هذه القابلية الأبواب أمام تطبيقات مختلفة، بما في ذلك الحسابات المحققة، ومعالجة البيانات الخاصة، وتنفيذ البرامج التي تكتمل بتورينغ داخل الدوائر الخفية.
مع تزايد تنوع تطبيقات ZK، تكون الآفاق لـ DSLs في مجال ZK واسعة. مفتاح نجاح DSL يكمن في إنشاء مجتمع نابض بالحياة ومكتبة غنية لتثرية تجارب المطورين. تلك الـ DSLs التي تعطي الأولوية للتوافق مع المكتبات الحالية يمكنها الاستفادة الكاملة من معرفة وموارد مجتمع المطورين الأوسع. يساعد هذا النهج في تسهيل التكامل، وتسريع عملية التطوير، وتوفير مزيد من المرونة في تنفيذ تطبيقات ZK. هذه الجهود التعاونية ضرورية في تعزيز بيئة نظام غذائي أكثر قوة حول DSLs، مقدمة فوائد ملموسة للمطورين ودفع مزيد من اعتماد وفعالية تكنولوجيا ZK.