كل المقالات

استكشاف الـ zkEVM و Polygon zkEVM

·
4 أكتوبر 2022
·
وقت القراءة: 6 د
·
••• مشاهدة
·
••• إعجاب

مترجمة عن المقالة الأصلية باللغة الإنجليزية. اقرأها بالإنجليزية

استكشاف الـ zkEVM و Polygon zkEVM

مقدمة

صُمّم Polygon zkEVM ليكون zk-rollup متوافقًا مع EVM. ويهدف إلى تحسين الإنتاجية والأداء والكفاءة. وبالاستفادة من Plonky2 (وهي تقنية توسّع zk متطورة)، يستطيع توليد براهين خفيفة وكذلك تسهيل التحقق التعاودي من SNARKs، مما يتيح للمستخدمين التحقق من البراهين بسرعة.

وإلى جانب تقليص زمن توليد البراهين، أصبح الـ zkEVM يتيح الآن معاملات أرخص بكثير، مما يجعل كل تطبيق لامركزي على الـ zkEVM أكثر كفاءة من حيث التكلفة.

مشكلة قابلية التوسع في Ethereum

في الوقت الحالي، لا يُعدّ بناء تطبيقات لامركزية يستخدمها عامة الناس على Ethereum أمرًا عمليًا، لأن معالجة المعاملات تستغرق وقتًا طويلًا وتكلفتها مرتفعة إلى حد كبير، وهذا يخلق تجربة مستخدم سيئة ويعيق التبنّي الحقيقي.

والسبب وراء هذه المشكلة هو أن كل عقدة مشاركة في الشبكة تحتاج إلى معالجة كل معاملة على حدة، مما يؤدي إلى معالجة 13 معاملة فقط في الثانية.

دور ZK-rollups

تُعدّ Zk-Rollups النوع الثاني من الـ rollups بعد الـ optimistic rollups. وهي تختلف عن نظيراتها المتفائلة لأنها تعتمد على توليد براهين تشفيرية تُعرف باسم zk-proofs للتحقق من المعاملات التي جُمّعت في دفعات، بدلًا من استخدام آلية فترة الانتظار التي تستخدمها الـ optimistic rollups، وهذا يجعل الـ zk-rollups أسرع.

تكلّف الـ Zk-rollups أقل بكثير لأنها تجمع المعاملات في دفعة واحدة ولا تنشر سوى براهين تلك المعاملات. وحتى الآن، كانت الـ ZK-rollups التي تدعم العقود الذكية تتطلب من المطورين مغادرة منظومة Ethereum لأنها لم تكن متوافقة مع الـ EVM.

وقد مضت Polygon قُدمًا في بناء ZK-rollup ببيئة تشغيل للشيفرة تدعم الـ bytecode الخاص بـ Ethereum، يُسمّى Polygon zkEVM. وهذا يوفّر على المطورين عناء كتابة الشيفرة من الصفر، إذ يمكنهم بدلًا من ذلك نقل عقودهم الذكية بسهولة إلى الـ zkEVM.

استكشاف الـ zkEVM و Polygon zkEVM
بنية Hermez zk-rollup.

لماذا الـ zkEVM هو المستقبل

قبل أن نتحدث عن كيف يتفوق الـ zkEVM على الـ EVM التقليدي، علينا أن نفهم كيف يعمل الـ EVM التقليدي.

آلة Ethereum الافتراضية (EVM) هي آلة افتراضية تامة وفق تورينج (turing-complete) تعمل بوصفها بيئة التشغيل للعقود الذكية. وعندما تحدث معاملة، تُترجَم كل شيفرة الـ bytecode الخاصة بالعقد من المصدر وتُرفع إلى تخزين الـ EVM، وهنا تُنفَّذ العُقد في شبكة الند للند. وتتأكد العُقد من أنها تصل إلى الوجهة الصحيحة باستخدام مدخلات المعاملة نفسها.

بعد ذلك، تتفاعل رموز عمليات الـ EVM (opcodes) مع الحالات المختلفة للـ EVM، ثم تقرأ القيم من تخزين الحالة وترسل القيم الجديدة إلى تخزين الـ EVM.

وفي النهاية، تُنسخ القيم الجديدة بواسطة العُقد الجديدة، وتبقى الحالة قائمة إلى أن تُعالَج معاملة أخرى.

استكشاف الـ zkEVM و Polygon zkEVM
آلة Ethereum الافتراضية: رسم توضيحي لنموذج التنفيذ في الـ EVM.

يعمل الـ zkEVM وفق المبدأ نفسه، لكنه يذهب أبعد من ذلك ليضمن فحص البيانات بشكل أفضل. فبالإضافة إلى الخطوات التي تحدثنا عنها في الـ EVM، يتحقق الـ zkEVM أيضًا مما إذا كان الـ bytecode الذي يجري تحميله صحيحًا وقادمًا من العنوان الصحيح. كما يضمن تطابق البيانات القادمة من البلوك تشين مع البيانات الموجودة في الـ EVM.

بنية Polygon zkEVM

تمامًا مثل الـ EVM، تتمثل الوظيفة الرئيسية للـ zkEVM في دعم العقود الذكية. فهو سيجمع معاملات L2، وينفّذ انتقالات الحالة، ويشهد على صحة تغييرات الحالة هذه عبر توليد براهين الصلاحية.

يتكوّن الـ zkEVM من 5 مكوّنات رئيسية:

تسطيح العقد
رسم توضيحي للعقد الذكي الخاص بـ PoE

المُرتِّبون (Sequencers)

يجمع المُرتِّبون معاملات L2 من مستخدمي الشبكة، ثم يحزمون هذه المعاملات في دفعة ويقترحون هذه الدفعة على العقد الذكي الخاص بـ PoE. ودور المُرتِّب لا يحتاج إلى إذن، فأي شخص يمكنه أن يكون مُرتِّبًا ما دام يشغّل برنامج zkNode على جهازه. وهذا يعزّز لامركزية الشبكة.

على المُرتِّب الذي يريد اقتراح دفعة على L1 أن يدفع رسوم الغاز على L1 وأن يودع رسومًا إضافية بالرمز. وهذا يساعد على الحماية من الإغراق بالرسائل المزعجة، كما يحفّز المُرتِّبين على اقتراح المعاملات الصالحة فقط. ورسوم الدفعات التي يدفعها المستخدمون هي ما يحصل منه المُرتِّبون على حوافزهم.

ستُنشر الدفعات المقترحة على L1 بوصفها calldata. وأي عقدة جديدة لا تحتاج إلى إذن ستعيد بناء البيانات ثم تزامن حالتها. وبمجرد تعدينها، تحدد معاملات L1 الترتيب الذي تُنفَّذ به معاملات L2. وعندها تُنشأ حالة جديدة حتمية، ولا تُعتمد الحالة الجديدة إلا عند إرسال برهان الصلاحية إلى L1. وهنا يأتي دور المُجمِّعين.

تسطيح العقد
كيف يعمل المُرتِّبون

المُجمِّعون (Aggregators)

يتمثل دور المُجمِّع في توليد براهين الصلاحية لدفعات معاملات L2 التي يقترحها المُرتِّبون. وعندما تُقترح الدفعات، تُرتَّب وفق موضعها وتحتوي على بيانات المعاملات.

يتنافس المُجمِّعون بعد ذلك على إنشاء براهين الصلاحية لكل دفعة باستخدام عتاد متخصص يُعرف باسم zkProver. ويُكافأ أول مُجمِّع يولّد هذا البرهان برسوم Matic التي أودعها المُرتِّبون.

ودور المُجمِّع مفتوح أيضًا لأي شخص ما دام برنامج zkNode مثبّتًا لديه ويستطيع تشغيل الـ zkProver.

تسطيح العقد
كيف يعمل المُجمِّعون

خصائص تصميم الـ zkEVM

مكافئ للـ EVM - يتمتع zkEVM الخاص بـ Polygon بتوافق "على مستوى الـ bytecode". وهذا يعني أنه متوافق تمامًا على مستوى رموز عمليات الـ EVM وعلى مستوى لغة solidity. فكل الأدوات والعقود الذكية التي تعمل على Ethereum لا تحتاج إلى أي تغييرات على الإطلاق كي تعمل أيضًا على الـ zkEVM. آمن - مع العلم أن الـ zkEVM يرث معظم أمانه من Ethereum، فإنه يستخدم أيضًا براهين المعرفة الصفرية مثل zk-STARKs و zk-SNARKs لضمان أنه عندما تحدث تغييرات في الحالة، فإنها تتم؛ بشكل صحيح، وأن البراهين التي تشهد على تغيير الحالة تُولَّد، وأن هذه البراهين تُتاح على السلسلة للتحقق منها. لامركزي ولا يحتاج إلى إذن - يمكن لأي شخص المشاركة في الشبكة ما دام يمتلك الأدوات المطلوبة بحسب الأدوار التي يريد أداءها. فعّال - بما أن الكفاءة عنصر أساسي في أداء الشبكة، فإن المُجمِّعين الأكثر كفاءة هم من يقدّمون براهين الصلاحية ويحصلون على الحوافز، كما تُجرى كل العمليات الحسابية خارج السلسلة، بينما لا يُحفظ على السلسلة سوى الـ zk-proofs والبيانات الضرورية.


الخاتمة

الـ zkEVM هو النسخة المحسّنة من الآلات الافتراضية المعتادة، إذ ينفّذ المعاملات بشكل أسرع وأكثر أمانًا. وستجعل Polygon المشروع بأكمله مفتوح المصدر، ويمكن أن يستخدمه أي شخص يبحث عن طريقة أفضل وأرخص وأسرع لاستخدام Ethereum.

إنها تقنية معقدة جدًا، لكننا نبني بوتيرة متسارعة ولا نطيق صبرًا حتى نريكم ما كنا نعمل عليه.

•••
شارك هذه المقالة:

ابقَ على اطلاع

احصل على أحدث المقالات في بريدك الوارد.