العقود الآجلة
وصول إلى مئات العقود الدائمة
TradFi
الذهب
منصّة واحدة للأصول التقليدية العالمية
الخیارات المتاحة
Hot
تداول خيارات الفانيلا على الطريقة الأوروبية
الحساب الموحد
زيادة كفاءة رأس المال إلى أقصى حد
التداول التجريبي
مقدمة حول تداول العقود الآجلة
استعد لتداول العقود الآجلة
أحداث مستقبلية
"انضم إلى الفعاليات لكسب المكافآت "
التداول التجريبي
استخدم الأموال الافتراضية لتجربة التداول بدون مخاطر
إطلاق
CandyDrop
اجمع الحلوى لتحصل على توزيعات مجانية.
منصة الإطلاق
-التخزين السريع، واربح رموزًا مميزة جديدة محتملة!
HODLer Airdrop
احتفظ بـ GT واحصل على توزيعات مجانية ضخمة مجانًا
منصة الإطلاق
كن من الأوائل في الانضمام إلى مشروع التوكن الكبير القادم
نقاط Alpha
تداول الأصول على السلسلة واكسب التوزيعات المجانية
نقاط العقود الآجلة
اكسب نقاط العقود الآجلة وطالب بمكافآت التوزيع المجاني
فيتاليك: ناقش مختلف أنواع إصدارات "ZK-EVM المدمجة" وتحديات التصميم
كلمات: فيتاليك بوتيرين
تجميع: 1912212.eth ، أخبار الاستشراف
تعتمد بروتوكولات EVM من الطبقة 2 أعلى ETH ، بما في ذلك عمليات التجميع المتفائلة ومجموعات ZK ، على التحقق من صحة EVM. ومع ذلك ، فإن هذا يتطلب منهم الوثوق بقاعدة بيانات ضخمة ، وإذا كانت هناك أخطاء في قاعدة البيانات هذه ، فإن هذه الأجهزة الافتراضية معرضة لخطر الاختراق. بالإضافة إلى ذلك ، هذا يعني أنه حتى ZK-EVMs ، التي تريد أن تكون مكافئة تماما ل L1 EVM ، تحتاج إلى شكل من أشكال الحوكمة لتكرار التغييرات على L1 EVM في ممارسات EVM الخاصة بها.
هذا الموقف ليس مثاليا ، حيث تقوم هذه المشاريع بتكرار الوظائف الموجودة بالفعل في بروتوكول ورشة العمل ETH ، والحوكمة ETH مسؤولة بالفعل عن ترقية الأخطاء وإصلاحها: ZK-EVM هي في الأساس نفس وظيفة التحقق من صحة كتل ورشة عمل ETH من الطبقة 1!بالإضافة إلى ذلك ، في السنوات القادمة ، نتوقع أن يصبح العملاء الخفيفون أكثر قوة ، ويصلون قريبا إلى النقطة التي يتم فيها استخدام ZK-SNARKs للتحقق الكامل من تنفيذ Layer 1 EVM. عند هذه النقطة ، ستقوم شبكة ETH ببناء ZK-EVM المدمج بشكل فعال. لذا ، فإن السؤال الذي يطرح نفسه: لماذا لا تجعل ZK-EVM نفسها مناسبة لعمليات التجميع أيضا؟
في هذه المقالة ، سنلقي نظرة على عدد قليل من إصدارات “ZK-EVM المدمجة” التي يمكن تنفيذها ، ونناقش المقايضات وتحديات التصميم ، بالإضافة إلى أسباب عدم السير في اتجاه معين. يجب موازنة فوائد تنفيذ ميزات البروتوكول مقابل فوائد ترك الأشياء للنظام البيئي والحفاظ على بساطة البروتوكول الأساسي.
ما هي الميزات الرئيسية التي نريدها من ZK-EVM المدمج؟
أنظمة متعددة العملاء “مفتوحة” و “مغلقة”
ربما تكون “فلسفة العملاء المتعددين” هي المطلب الأكثر ذاتية في هذه القائمة. هناك خيار للتخلي عنها والتركيز على مخطط ZK-SNARK ، والذي سيبسط التصميم ، ولكن على حساب كونه “نقطة تحول فلسفية” أكبر ل ETH Workshop (لأنه يتخلى فعليا عن فلسفة ورشة العمل متعددة العملاء طويلة الأمد ETH) وإدخال مخاطر أكبر. في المستقبل ، عندما تصبح تقنية التحقق الرسمية أفضل ، قد يكون من الأفضل اختيار هذا المسار ، ولكن يبدو الآن أن الخطر كبير جدا.
خيار آخر هو نظام مغلق متعدد العملاء حيث تعرف مجموعة ثابتة من أنظمة التصديق في البروتوكول. على سبيل المثال ، قد نقرر استخدام ثلاثة ZK-EVM: PSE ZK-EVM و Polygon ZK-EVM و Kakarot. تتطلب الكتلة إثباتا يقدمه اثنان من هؤلاء الثلاثة ليكون صالحا. هذا أفضل من نظام إثبات واحد ، لكنه يجعل النظام أقل قابلية للتكيف لأنه يتعين على المستخدمين الاحتفاظ بمدققين لكل نظام إثبات موجود ، وستكون هناك حتما عمليات حوكمة سياسية لدمج أنظمة إثبات جديدة ، إلخ.
هذا يحفزني على تفضيل نظام مفتوح متعدد العملاء ، حيث يتم وضع البراهين “خارج الكتلة” والتحقق منها من قبل العميل بشكل فردي. يمكن للمستخدمين الفرديين استخدام أي عميل يريدون التحقق من صحة الكتل ، طالما أن أستاذا واحدا على الأقل ينشئ دليلا لنظام التصديق هذا. سيكتسب نظام التصديق نفوذا من خلال إقناع المستخدمين بتشغيلها ، وليس من خلال إقناع عملية إدارة البروتوكول. ومع ذلك ، فإن هذا النهج له تكلفة أعلى من التعقيد ، كما سنرى.
ما هي الخصائص الرئيسية التي نريد الحصول عليها من تطبيق ZK-EVM؟
بالإضافة إلى الصحة الوظيفية الأساسية وضمانات السلامة ، فإن السمة الأكثر أهمية هي السرعة. بينما يمكننا تصميم ميزة ZK-EVM داخل البروتوكول ، وهي غير متزامنة ولا ترجع كل إجابة معلنة إلا بعد تأخير فتحات N ، تصبح المشكلة أسهل بكثير إذا استطعنا أن نضمن بشكل موثوق أنه سيتم إنشاء دليل في غضون ثوان ، بغض النظر عما يحدث في كل كتلة قائمة بذاتها.
بينما يستغرق الأمر عدة دقائق أو ساعات اليوم لإنشاء براهين للكتل ETH ، فإننا نعلم أنه لا يوجد سبب نظري لمنع التوازي الشامل: يمكننا دائما الجمع بين ما يكفي من وحدات معالجة الرسومات لإثبات الأجزاء الفردية من تنفيذ الكتلة بشكل منفصل ثم وضع البراهين معا باستخدام SNARKs المتكررة. بالإضافة إلى ذلك ، يمكن أن يساعد تسريع الأجهزة من خلال FPGAs و ASICs في زيادة تحسين البراهين. ومع ذلك ، فإن الوصول إلى هذه النقطة يمثل تحديا هندسيا كبيرا لا ينبغي الاستهانة به.
كيف قد تبدو ميزة ZK-EVM داخل البروتوكول؟
على غرار معاملات EIP-4844 blob ، قدمنا نوعا جديدا من المعاملات يحتوي على مطالبات ZK-EVM:
من المهم ملاحظة أنه من الناحية العملية ، قد نرغب في تقسيم التحميل الجانبي إلى تحميلين جانبيين منفصلين ، أحدهما للنقاط والآخر للبراهين ، وإعداد شبكة فرعية منفصلة لكل نوع من أنواع الإثبات (وشبكة فرعية إضافية للنقاط).
في طبقة الإجماع، أضفنا قاعدة تحقق لا تقبل كتلة إلا إذا رأى العميل دليلا صالحا على كل مطالبة في الكتلة. يجب أن يكون الدليل ZK-SNARK ، يثبت أن تسلسل المعاملة _and_witness_blobs هو تسلسل زوج (كتلة ، شاهد) ، وأن الكتلة يتم تنفيذها مع pre_state_root على الشاهد
(i) صحيح، و
(ii) إخراج المنشور الصحيح _state_root. ربما ، يمكن للعميل اختيار انتظار أنواع متعددة من إثبات M-of-N.
من المهم أن نلاحظ هنا أن تنفيذ الكتلة نفسه يمكن اعتباره ببساطة أحد الثلاثيات التي يجب التحقق منها جنبا إلى جنب مع الثلاثيات المتوفرة في كائن ZKEVMClaimTransaction (σpre ، σpost ، Proof). نتيجة لذلك ، يمكن أن يحل تطبيق ZK-EVM الخاص بالمستخدم محل عميل التنفيذ الخاص به ؛ سيستمر تنفيذ عميل التنفيذ
(ط) البروفرز وبناة الكتل و:
و (ii) العقد التي تهتم بفهرسة البيانات وتخزينها للاستخدام المحلي.
بالإضافة إلى ذلك ، نظرا لأن هذه البنية تفصل التنفيذ عن التحقق من الصحة ، فقد توفر مزيدا من المرونة والكفاءة للأدوار المختلفة في النظام البيئي ETH. على سبيل المثال ، يمكن للبروفير التركيز على إنشاء البراهين دون القلق بشأن تفاصيل التنفيذ ، بينما يمكن تحسين عملاء التنفيذ لتلبية احتياجات مستخدمين محددين ، مثل المزامنة السريعة أو قدرات الفهرسة المتقدمة.
التحقق وإعادة التصديق
لنفترض أن هناك عميلين ETH ، أحدهما يستخدم PSE ZK-EVM والآخر يستخدم Polygon ZK-EVM ، في هذه المرحلة ، تطور كلا التطبيقين إلى النقطة التي يمكنهما فيها إثبات تنفيذ كتلة ETH في أقل من 5 ثوان ، ولكل نظام إثبات ، هناك عدد كاف من المتطوعين المستقلين الذين يقومون بتشغيل الأجهزة لإنشاء البراهين.
لسوء الحظ ، نظرا لأن أنظمة إثبات الصندوق الفردية غير رسمية ، فلا يمكن تحفيزها في البروتوكول ، ومع ذلك ، نتوقع أن تكون تكلفة تشغيل البراهين أقل مقارنة بالبحث والتطوير ، لذلك يمكننا بسهولة تمويل المثبتين من خلال المؤسسات الممولة للسلع العامة.
لنفترض أن شخصا ما نشر ZKEvmClaimNetworkTransaction ، لكنه ينشر فقط دليلا على إصدار PSE ZK-EVM. ترى عقدة إثبات المضلع ZK-EVM هذا ، وتحسب الكائن وتعيد نشره ، جنبا إلى جنب مع إثبات المضلع ZK-EVM.
سيؤدي ذلك إلى زيادة إجمالي الحد الأقصى للتأخير بين أقدم عقدة صادقة تقبل كتلة وأحدث عقدة صادقة تقبل نفس الكتلة من δ إلى 2δ + Tprov (بافتراض Tprove<5s هنا).
ومع ذلك ، فإن الخبر السار هو أنه إذا اعتمدنا نهائية فتحة واحدة ، فمن شبه المؤكد أنه يمكننا “توجيه” هذا التأخير الإضافي جنبا إلى جنب مع زمن انتقال توافق الآراء متعدد الجولات المتأصل في SSF. على سبيل المثال ، في هذا الاقتراح المكون من 4 فتحات ، قد تحتاج خطوة “التصويت الرئيسي” فقط إلى التحقق من صحة الكتلة الأساسية ، لكن خطوة “التجميد والتأكيد” تتطلب وجود دليل.
التمديد: دعم “تقريبا EVMs”
الهدف المرغوب فيه لميزة ZK-EVM هو دعم “EVMs تقريبا”: EVMs مع ميزات إضافية. يمكن أن يشمل ذلك التجميع المسبق الجديد ، أو أكواد التشغيل الجديدة ، أو العقود التي يمكن أن تكون EVM أو أجهزة افتراضية مختلفة تماما (على سبيل المثال في Arbitrum Stylus) ، أو حتى العديد من EVMs المتوازية مع الاتصال المتبادل المتزامن.
يمكن دعم بعض التعديلات بطريقة بسيطة: يمكننا تحديد لغة تسمح ل ZKEVMClaimTransaction بتمرير الوصف الكامل لقاعدة EVM المعدلة. يمكن استخدام هذا في المواقف التالية:
من أجل السماح للمستخدمين بإضافة وظائف جديدة بطريقة أكثر انفتاحا ، على سبيل المثال عن طريق تقديم مترجم مسبق جديد (أو رمز تشغيل) ، يمكننا إضافة طريقة لتضمين سجلات الإدخال / الإخراج المترجمة مسبقا في قسم blob في ZKEVMClaimNetworkTransaction:
فئة PrecompileInputOutputTran (حاوية): المستخدمة \ _precompile \ _addresses: قائمة[Address][VersionedHash]المدخلات_commitments: قائمة[Bytes]المخرجات: قائمة
سيتم تعديل تنفيذ EVM على النحو التالي. ستتم تهيئة صفيف يسمى المدخلات على أنه فارغ. عندما يتم استدعاء العنوان المستخدم \ _precompile \ _addresses ، نضيف كائن InputsRecord (callee \ _address ، Gas ، input \ _calldata) إلى المدخلات وتعيين RETURNDATA المسمى إلى المخرجات[i]。 أخيرا ، نتحقق من أن المستخدم \ _precompile \ _addresses كان يسمى len (outputs) إجمالي المرات ، وأن المدخلات \ _commitments تتطابق مع نتيجة التزام النقطة الناتجة بتسلسل SSZ للمدخلات. الغرض من كشف المدخلات_commitments هو تمكين SNARK الخارجي من إثبات العلاقة بين المدخلات والمخرجات.
لاحظ عدم التماثل بين المدخلات والمخرجات، حيث يتم تخزين المدخلات في التجزئة ويتم تخزين المخرجات في وحدات البايت التي يجب توفيرها. وذلك لأن التنفيذ يجب أن يتم تنفيذه بواسطة عميل يرى فقط الإدخال ويفهم EVM. لقد أدت عمليات تنفيذ EVM بالفعل إلى إنشاء مدخلات لهم ، لذلك يحتاجون فقط إلى التحقق مما إذا كان الإدخال الذي تم إنشاؤه يتطابق مع الإدخال المعلن ، والذي يتطلب فقط التحقق من التجزئة. ومع ذلك ، يجب توفير المخرجات بالكامل لهم ، لذلك يجب أن يكون توافر البيانات متاحا.
قد تكون ميزة أخرى مفيدة هي السماح باستدعاء “المعاملات المميزة” من أي حساب مرسل. يمكن تشغيل هذه المعاملات بين معاملتين أخريين ، أو ضمن معاملة أخرى (وربما مميزة) ، أثناء استدعاء التحويل البرمجي المسبق. يمكن استخدام هذا للسماح للآليات غير EVM بالاتصال مرة أخرى ب EVM.
يمكن تعديل التصميم لدعم أكواد التشغيل الجديدة أو المعدلة ، بالإضافة إلى التجميعات المسبقة الجديدة أو المعدلة. حتى مع التجميع المسبق فقط ، فإن التصميم قوي للغاية. على سبيل المثال:
يمكن دعم وظائف مثل Arbitrum Stylus عن طريق إعداد used_precompile_addresses لتضمين قائمة بعناوين الحسابات العادية مع تعيين علامة معينة في كائن حسابهم في الحالة ، وإنشاء SNARKs التي تثبت أنها مبنية بشكل صحيح ، حيث يمكن للعقد كتابة رمزه في EVM أو WASM (أو VM آخر). يمكن استخدام المعاملات المميزة للسماح لحسابات WASM بمعاودة الاتصال ب EVM.
من خلال إضافة فحص خارجي للتأكد من مطابقة سجلات الإدخال / الإخراج والمعاملات المميزة التي تقوم بها العديد من EVMs بالطريقة الصحيحة ، يمكن إظهار نظام متوازي من EVMs متعددة تتواصل مع بعضها البعض عبر قناة التزامن.
يمكن أن يعمل ZK-EVM من النوع 4 من خلال وجود تطبيقات متعددة: واحد يحول Solidity أو لغة أخرى ذات مستوى أعلى مباشرة إلى VM صديق ل SNARK ، وآخر يقوم بتجميعها في كود EVM وينفذها في ZK-EVM المحدد. لا يمكن تشغيل التنفيذ الثاني (والأبطأ حتما) إلا إذا أرسل البروفير الفاشل معاملة تدعي وجود خطأ ، وإذا كان قادرا على عرض أن يتعامل الاثنان مع معاملات مختلفة ، فيمكن جمع المكافأة.
يمكنك تنفيذ جهاز ظاهري غير متزامن خالص عن طريق إرجاع الصفر إلى جميع المكالمات وتعيين الاستدعاءات إلى المعاملات المميزة التي تتم إضافتها إلى نهاية الكتلة.
تمديد: دعم إثبات الدولة
التحدي في التصميم أعلاه هو أنه عديم الجنسية تماما ، مما يجعله ضعيفا من حيث كفاءة البيانات. مع ضغط البيانات المثالي ، يمكن للضغط ذو الحالة أن يجعل ERC20 يرسل مساحة أكثر كفاءة بما يصل إلى 3x مقارنة بالضغط عديم الحالة وحده.
بالإضافة إلى ذلك ، لا يطلب من EVMs ذات الحالة تقديم بيانات الشهود. في كلتا الحالتين ، المبدأ هو نفسه: إنه مضيعة لطلب إتاحة البيانات عندما نعلم بالفعل أن البيانات متاحة لأنه تم إدخالها أو إنتاجها من خلال تنفيذ سابق ل EVM. **
إذا أردنا جعل ميزة ZK-EVM ذات حالة ، فلدينا خياران:
يتطلب أن تكون σpre إما فارغة ، أو قائمة معلنة مسبقا بالمفاتيح والقيم التي تتوفر لها البيانات ، أو بعض σpost التي تم تنفيذها مسبقا.
أضف التزام blob إلى مجموعة (σpre ، σpost ، proof) للإيصال R الذي تم إنشاؤه بواسطة الكتلة. أي التزامات blob تم إنشاؤها أو استخدامها مسبقا والتي يمكن الرجوع إليها في ZKEVMClaimTransaction والوصول إليها أثناء تنفيذها ، بما في ذلك الالتزامات التي تمثل الكتل أو الشهود أو الإيصالات أو حتى معاملات EIP-4844 blob العادية (قد تكون هناك بعض الحدود الزمنية ، والتي يمكن الرجوع إليها من خلال سلسلة من التعليمات: “أدخل البايت N من الالتزام i في الموضع j من بيانات الكتلة + الشاهد … N+k-1”)
(1) المعنى الأساسي هو: بدلا من إنشاء التحقق من EVM عديم الجنسية ، سننشئ سلسلة أطفال EVM.
و (2) ينشئ بشكل أساسي الحد الأدنى من خوارزمية ضغط الحالة المضمنة التي تستخدم نقطة مستخدمة مسبقا أو تم إنشاؤها كقاموس. كلاهما يضع عبئا على عقدة prover ، وعقدة prover فقط لتخزين المزيد من المعلومات ؛
في الحالة (2) ، يكون من الأسهل تحديد هذا العبء زمنيا ، بينما في الحالة (1) يكون الأمر أكثر صعوبة.
الحجج للأنظمة المغلقة متعددة المحاور والبيانات خارج السلسلة
يتجنب النظام المغلق متعدد المحاور ، الذي يوجد فيه عدد ثابت من البراهين في هيكل M-of-N ، الكثير من التعقيد الموصوف أعلاه. على وجه الخصوص ، لا يحتاج نظام متعدد الشهادات المغلق إلى القلق بشأن ضمان وجود البيانات على السلسلة. بالإضافة إلى ذلك ، سيسمح نظام الاختبار المتعدد المغلق بتنفيذ إثباتات ZK-EVM خارج السلسلة ، مما يجعلها متوافقة مع حلول البلازما EVM.
ومع ذلك ، فإن الأنظمة المغلقة متعددة الشهادات تزيد من تعقيد الحوكمة وتضعف قابلية التدقيق ، وهي تكلفة عالية يجب موازنتها مقابل هذه المزايا.
إذا قمنا ببناء ZK-EVM وجعلناها ميزة بروتوكول ، فما هو الدور المستمر لمشروع L2؟
سيتم التعامل مع وظائف التحقق من صحة EVM التي يتم تنفيذها حاليا من قبل فريق L2 أنفسهم بواسطة البروتوكول ، لكن مشروع L2 سيظل مسؤولا عن عدد من الوظائف المهمة: