الآلة الافتراضية هي نظام كمبيوتر يحاكي البرامج ويوفر بيئة تنفيذ للبرامج. يمكنه محاكاة العديد من الأجهزة ، بحيث يمكن تشغيل البرامج في بيئة متوافقة ومتحكم بها. جهاز Ethereum Virtual Machine (EVM) عبارة عن آلة افتراضية قائمة على المكدس تُستخدم لتنفيذ عقود Ethereum الذكية.
zkEVM هو نموذج EVM يدمج تقنية إثبات المعرفة الصفرية / إثبات الصلاحية. يسمح بالتحقق من تنفيذ EVM باستخدام براهين انعدام المعرفة دون مطالبة جميع المدققين بإعادة تنفيذ EVM. هناك العديد من منتجات zkEVM في السوق ، ولكل منها نهجها وتصميمها الخاصين.
سبب zkEVM هو الحاجة إلى جهاز افتراضي يدعم تنفيذ العقد الذكي على الطبقة 2. بالإضافة إلى ذلك ، تختار بعض المشاريع استخدام zkEVM للاستفادة من النظام البيئي الواسع للمستخدم الخاص بـ EVM وتصميم مجموعة تعليمات أكثر ملاءمة لإثبات المعرفة الصفرية.
Kakarot هو zkEVM مطبق على Starknet باستخدام لغة القاهرة. إنه يحاكي المكدس والذاكرة والتنفيذ والجوانب الأخرى لجهاز EVM في شكل عقود القاهرة الذكية. واجهت Kakarot تحديات مثل التوافق مع نظام حساب Starknet ، وتحسين التكلفة ، والاستقرار ، حيث كانت لغة القاهرة لا تزال تجريبية.
Warp هو مترجم من Solidity code إلى Cairo code ، مما يوفر التوافق على مستوى لغوي عالي المستوى. من ناحية أخرى ، يوفر Kakarot التوافق على مستوى EVM من خلال تنفيذ أكواد التشغيل EVM والترجمة المسبقة.
ما هي الآلة الافتراضية؟
لتوضيح ماهية الآلة الافتراضية ، يجب أن نتحدث أولاً عن عملية تنفيذ الكمبيوتر في ظل بنية فون نيومان السائدة الحالية. عادةً ما يتم تحويل البرامج المختلفة التي يتم تشغيلها على جهاز كمبيوتر بواسطة طبقات من اللغات عالية المستوى ، وفي النهاية يتم إنشاء رموز آلة مفهومة للآلة للتنفيذ. وفقًا لطريقة التحويل إلى رمز الآلة ، يمكن تقسيم اللغات عالية المستوى تقريبًا إلى لغات مجمعة ولغات مفسرة.
! [Kakarot: استكشاف طريق توافق Starknet's EVM] (https://img-cdn.gateio.im/resized-social/moments-69a80767fe-14f84ab4de-dd1a6f-7649e1)
تعني اللغة المترجمة أنه بعد كتابة الكود ، يجب معالجته بواسطة مترجم لتحويل رمز اللغة عالي المستوى إلى رمز آلة وإنشاء ملف قابل للتنفيذ. بمجرد تجميعها ، يمكن تنفيذها عدة مرات بكفاءة أعلى. ميزة اللغة المترجمة هي أن الكود قد تم تحويله إلى كود آلة أثناء التجميع ، وبالتالي فإن سرعة التنفيذ سريعة ، ويمكن تشغيل البرنامج في بيئة بدون مترجم ، وهو أمر مناسب للمستخدمين للاستخدام ولا يحتاجون إليه لتثبيت برامج إضافية. تشمل اللغات المترجمة الشائعة C و C ++ و Go وما إلى ذلك.
نظير اللغات المترجمة هو لغات مفسرة. تعني اللغة المفسرة أن الشفرة يتم تفسيرها وتنفيذها سطراً بسطر من خلال مترجم فوري ، وتعمل مباشرة على الكمبيوتر ، وتحتاج عملية الترجمة إلى إعادة ترجمتها في كل مرة يتم تشغيلها فيها. تتمثل مزايا اللغات المفسرة في كفاءة تطوير عالية وسهولة تصحيح أخطاء التعليمات البرمجية ، ولكن سرعة التنفيذ بطيئة نسبيًا. تشمل اللغات المفسرة الشائعة Python و Java و Ruby وما إلى ذلك.
يجب التأكيد على أن اللغة لا تميز بين الأنواع المترجمة والمترجمة في الجوهر ، ولكن ستكون هناك بعض الاتجاهات في التصميم الأولي. يتم ترجمة C / C ++ وتنفيذها في معظم الحالات ، ولكن يمكن أيضًا تفسيرها وتنفيذها (Cint ، Cling). يتم الآن تجميع العديد من اللغات المفسرة بالمعنى التقليدي في رموز وسيطة وتنفيذها على أجهزة افتراضية (Python ، Lua).
بمعرفة عملية تنفيذ الآلة الفعلية ، دعنا نتحدث عن الآلة الافتراضية الآن.
توفر الأجهزة الافتراضية عادةً بيئة كمبيوتر افتراضية عن طريق محاكاة أجهزة مختلفة. تختلف الأجهزة التي يمكن محاكاتها بواسطة أجهزة افتراضية مختلفة ، ولكنها تشمل عمومًا وحدة المعالجة المركزية والذاكرة والقرص الصلب وواجهة الشبكة وما إلى ذلك.
خذ جهاز Ethereum Virtual Machine (EVM) كمثال. EVM هي آلة افتراضية قائمة على المكدس تُستخدم لتنفيذ عقود Ethereum الذكية. يوفر EVM بيئة كمبيوتر افتراضية من خلال محاكاة الأجهزة مثل وحدة المعالجة المركزية والذاكرة والتخزين والمكدس.
! [Kakarot: استكشاف طريق توافق Starknet's EVM] (https://img-cdn.gateio.im/resized-social/moments-69a80767fe-09d35a2d06-dd1a6f-7649e1)
على وجه التحديد ، فإن EVM عبارة عن جهاز افتراضي قائم على المكدس يستخدم مكدسًا لتخزين البيانات وتنفيذ التعليمات. تتضمن مجموعة التعليمات الخاصة بـ EVM أكواد تشغيل مختلفة ، مثل العمليات الحسابية ، والعمليات المنطقية ، وعمليات التخزين ، وعمليات القفز ، وما إلى ذلك. يمكن تنفيذ هذه التعليمات على كومة من EVM لإكمال تنفيذ العقود الذكية.
الذاكرة والتخزين التي تمت مضاهاتها بواسطة EVM هي الأجهزة المستخدمة لتخزين حالة وبيانات العقود الذكية. يعامل EVM الذاكرة والتخزين على أنهما منطقتان متميزتان ، ويمكنه الوصول إلى حالة وبيانات العقود الذكية عن طريق القراءة والكتابة على الذاكرة والتخزين.
يتم استخدام المكدس الذي تمت محاكاته بواسطة EVM لتخزين المعاملات ونتائج التعليمات. تعتمد معظم التعليمات الموجودة في مجموعة تعليمات EVM على المكدس ، حيث تقوم بقراءة المعاملات من المكدس وتدفع النتائج مرة أخرى إلى المكدس.
باختصار ، يوفر EVM بيئة كمبيوتر افتراضية من خلال محاكاة الأجهزة مثل وحدة المعالجة المركزية والذاكرة والتخزين والمكدس ، والتي يمكنها تنفيذ تعليمات العقود الذكية وتخزين حالة وبيانات العقود الذكية. في التشغيل الفعلي ، سيقوم EVM بتحميل الرمز الثانوي للعقد الذكي في الذاكرة ، وتنفيذ منطق العقد الذكي من خلال تنفيذ مجموعة التعليمات. ما يحل محل EVM في الواقع هو جزء من نظام التشغيل + الأجهزة في الشكل أعلاه.
من الواضح أن عملية تصميم EVM تتم من أسفل إلى أعلى. أولاً ، تم الانتهاء من محاكاة بيئة الأجهزة (المكدس والذاكرة) ، ثم تم تصميم مجموعة من مجموعة تعليمات التجميع (رمز التشغيل) والرمز الثنائي (Bytecode) وفقًا للبيئة المقابلة. على الرغم من أن مجموعة تعليمات التجميع مخصصة للأشخاص للقراءة ، إلا أنها تتضمن الكثير من المعرفة منخفضة المستوى ، ولها متطلبات عالية للمطورين ، كما أنها مرهقة للتطوير. لذلك ، هناك حاجة إلى لغة عالية المستوى لحماية المستوى المنخفض الغامض والمرهق المكالمات ، وتزويد المطورين بتجربة أفضل. نظرًا للتصميم المخصص لمجموعة تعليمات التجميع الخاصة بـ EVM ، من الصعب استخدام اللغات التقليدية عالية المستوى بشكل مباشر ، وإعادة إنشاء لغة جديدة عالية المستوى للتكيف مع الجهاز الظاهري. قام مجتمع Ethereum بتصميم لغتين عاليتين تم تجميعهما - Solidity و Vyper - لكفاءة تنفيذ EVM. لا داعي للتأكيد على الصلابة ، Vyper هي لغة EVM رفيعة المستوى صممها Vitalik بعد تحسين بعض العيوب في Solidity ، ولكن لم يتم تبنيها على نطاق واسع في المجتمع ، لذا فهي تتلاشى تدريجياً من مرحلة التاريخ.
ما هو zkEVM
ببساطة ، zkEVM هو EVM يستخدم تقنية إثبات المعرفة الصفرية / إثبات الصلاحية ، بحيث يمكن التحقق من عملية تنفيذ EVM بشكل أكثر كفاءة وبتكلفة منخفضة من خلال إثبات عدم المعرفة / إثبات الصلاحية دون الحاجة إلى حمل جميع المحققين من عملية تنفيذ EVM.
هناك العديد من منتجات zkEVM في السوق ، والمضمار ساخن. تشمل الجهات الفاعلة الرئيسية Starknet ، و zkSync ، و Scroll ، و Taiko ، و Linea ، و Polygon zkEVM (سابقًا Polygon Hermez) ، وما إلى ذلك ، والتي تنقسم إلى 5 فئات (1 ، 2 ، 2.5، 3، 4) بواسطة Vitalik. يمكن الاطلاع على المحتوى المحدد على مدونة Vitalik.
لماذا هناك حاجة إلى zkEVM
يجب النظر إلى هذا السؤال من منظورين.
يمكن لمحاولات zk Rollup الأولية تحقيق وظائف نقل ومعاملات بسيطة نسبيًا ، مثل zkSync Lite و Loopring وما إلى ذلك. ولكن بمجرد أن أصبح البحر صعبًا للغاية ، اعتاد الناس استخدام Turing-complete EVM على Ethereum. عندما كان من المستحيل إنشاء تطبيقات مختلفة من خلال البرمجة ، بدأ الناس في طلب أجهزة افتراضية على L2. الحاجة إلى كتابة عقود ذكية واحدة.
! [Kakarot: استكشاف طريق توافق Starknet's EVM] (https://img-cdn.gateio.im/resized-social/moments-69a80767fe-0ea9250ee4-dd1a6f-7649e1)
نظرًا لأن بعض التصميمات في EVM ليست صديقة لإنشاء إثبات عدم المعرفة / إثبات الصلاحية ، يختار بعض اللاعبين استخدام مجموعة تعليمات ملائمة لإثبات عدم المعرفة / إثبات الصلاحية في الطبقة السفلية ، مثل Starknet's Cairo Assembly و zkSync's تعليمات الزنك. ولكن في الوقت نفسه ، لا يرغب الجميع في التخلي عن بيئة المستخدم الضخمة الخاصة بـ EVM ، لذلك اختاروا التوافق مع EVM على الطبقة العليا ، وهي النوع 3 و 4 zkEVM. لا يزال بعض اللاعبين يصرون على رمز التشغيل لمجموعة تعليمات EVM التقليدية ، ويركزون على إنشاء براهين أكثر كفاءة لرمز التشغيل ، وهما النوع 1 والنوع 2 zkEVM. البيئة الضخمة لـ EVM مقسمة إلى قسمين.
! [Kakarot: استكشاف طريق توافق Starknet's EVM] (https://img-cdn.gateio.im/resized-social/moments-69a80767fe-90532777a7-dd1a6f-7649e1)
كاكاروت: آلة افتراضية على آلة افتراضية؟
لماذا يمكن صنع آلة افتراضية أخرى على الآلة الافتراضية؟ هذا الشيء شائع لممارسي الكمبيوتر ، لكنه قد لا يكون واضحًا جدًا للمستخدمين الذين لا يفهمون أجهزة الكمبيوتر. في الواقع ، من السهل فهمها ، وهذا يشبه اللبنات الأساسية ، طالما أن الطبقة السفلية قوية بدرجة كافية (مع بيئة تنفيذ Turing-Complete) ، يمكن تكديس اللبنات الأساسية على الطبقة العليا بدون حدود. ولكن بغض النظر عن عدد الطبقات التي تم إنشاؤها ، لا يزال يتعين معالجة التنفيذ النهائي بواسطة الأجهزة المادية ذات المستوى الأدنى ، لذا فإن زيادة عدد الطبقات سيؤدي إلى انخفاض الكفاءة. في الوقت نفسه ، نظرًا للتصميمات المختلفة لبنات البناء المختلفة (تصميمات مختلفة للآلات الافتراضية) ، نظرًا لأن اللبنات الأساسية مبنية أعلى وأعلى ، فإن احتمال انهيار الكتل الأساسية (أخطاء التشغيل) أكبر ، الأمر الذي يتطلب مستوى أعلى من الدعم الفني.
Kakarot هو نموذج EVM مطبق في القاهرة على Starknet ، ويستخدم عقود القاهرة الذكية لمحاكاة المكدس والذاكرة والتنفيذ وما إلى ذلك في EVM. من الناحية النسبية ، ليس من الصعب تنفيذ EVM. بالإضافة إلى EVM المكتوب بلغة Golang في Go-Ethereum ، والذي يحتوي على أعلى معدل استخدام ، هناك أيضًا أجهزة EVM موجودة مكتوبة بلغة Python و Java و Java و Rust.
! [Kakarot: استكشاف طريق توافق Starknet's EVM] (https://img-cdn.gateio.im/resized-social/moments-69a80767fe-02fb8bfa1d-dd1a6f-7649e1)
تتمثل الصعوبة الفنية لـ Kakarot zkEVM في أن البروتوكول موجود كعقد على سلسلة Starknet ، مما يؤدي إلى مشكلتين رئيسيتين.
التوافق تستخدم Starknet نظام حساب مختلف تمامًا عن Ethereum. تنقسم الحسابات في Ethereum إلى EOA (حساب مملوك خارجيًا) و CA (حساب عقد). ومع ذلك ، تدعم Starknet تجريد الحساب الأصلي ، وجميع الحسابات عبارة عن حسابات. في الوقت نفسه ، نظرًا لخوارزميات التشفير المختلفة المستخدمة ، لا يمكن للمستخدمين استخدام نفس الإنتروبيا لإنشاء نفس العنوان في Starknet كما في Ethereum.
التكلفة نظرًا لوجود kakarot zkEVM في السلسلة كعقد ، فإنه يحتوي على متطلبات عالية لتنفيذ الكود ويلزم تحسينه للغاز قدر الإمكان لتقليل تكاليف التفاعل.
الاستقرار بخلاف استخدام اللغات التقليدية عالية المستوى مثل Golang و Rust و Python وما إلى ذلك ، لا تزال لغة القاهرة في المرحلة التجريبية ، من القاهرة 0 إلى القاهرة 1 إلى القاهرة 2 (أو إذا كنت تفضل ، القاهرة 1 الإصدار 2) ، فإن الفريق الرسمي لا يزال يتم مراجعة ميزات اللغة باستمرار. في الوقت نفسه ، لم يتم اختبار Cairo VM بشكل كافٍ ، ولا يمكن استبعاد إمكانية إعادة الكتابة اللاحقة على نطاق واسع.
يتكون بروتوكول kakarot من خمسة مكونات رئيسية (أربعة مكتوبة في مستند GitHub ، لم يتم تضمين EOA ، تم تعديل هذه المقالة لراحة القراء):
Kakarot (Core): مسؤول عن تنفيذ المعاملات في شكل Ethereum ، وتوفير حسابات Starknet المقابلة لمستخدمي Ethereum
حسابات العقد: CA بمعنى Ethereum ، مسؤول عن تخزين الرمز الثانوي للعقد وحالة المتغيرات في العقد
الحسابات المملوكة خارجيًا: EOA بمعنى Ethereum ، المسؤول عن إعادة توجيه معاملات Ethereum إلى Kakarot Core
سجل الحساب: يخزن المراسلات بين حسابات Ethereum وحسابات Starknet.
سجل Blockhash: باعتباره رمز تشغيل خاص ، يحتاج Blockhash إلى بيانات كتلة سابقة ، ولا يمكن لـ Kakarot الحصول مباشرة على البيانات الموجودة على السلسلة. يخزن هذا المكون علاقة تعيين block \ _number -> block \ _hash ، والتي يكتبها المسؤول ويتم تقديمها إلى Kakarot Core.
! [Kakarot: استكشاف طريق توافق Starknet's EVM] (https://img-cdn.gateio.im/resized-social/moments-69a80767fe-1ced50ba33-dd1a6f-7649e1)
وفقًا لتعليقات من الرئيس التنفيذي لشركة kakarot Elias Tazartes ، في الإصدار الأخير من الفريق ، تم التخلي عن تصميم Account Resister ، وبدلاً من ذلك ، تم استخدام تعيين من عنوان Starknet 31 بايت إلى عنوان EVM بحجم 20 بت مباشرةً لحفظ العلاقة المقابلة . في المستقبل ، لتحسين قابلية التشغيل البيني والسماح لعقود Starknet بتسجيل عناوين EVM الخاصة بهم ، يمكن إعادة استخدام تصميم سجل الحساب.
متوافق مع EVM على Starknet: ما الفرق بين Warp و kakarot
وفقًا لنوع zkEVM الذي حدده Vitalik ، ينتمي Warp إلى Type-4 ، بينما ينتمي kakarot حاليًا إلى Type-2.5.
! [Kakarot: استكشاف طريق توافق Starknet's EVM] (https://img-cdn.gateio.im/resized-social/moments-69a80767fe-318178ab91-dd1a6f-7649e1)
Warp هو مترجم يحول كود Solidity إلى كود Cairo ، والسبب في عدم تسميته مترجمًا يرجع على الأرجح إلى أن الناتج Cairo لا يزال لغة عالية المستوى. من خلال Warp ، يمكن لمطوري Solidity الحفاظ على حالة التطوير الأصلية دون الحاجة إلى تعلم لغة القاهرة الجديدة. بالنسبة للعديد من أطراف المشروع ، يخفض Warp عتبة الدخول إلى نظام Starknet البيئي ، ولا يحتاج إلى استخدام القاهرة لإعادة كتابة كمية كبيرة من الكود الهندسي.
على الرغم من أن فكرة الترجمة بسيطة ، إلا أن التوافق هو الأسوأ أيضًا ، فبعض أكواد Solidity لا يمكن ترجمتها جيدًا إلى القاهرة ، ومنطق الكود الذي يتضمن نظام الحساب ، وخوارزمية التشفير ، وما إلى ذلك يحتاج إلى تعديل شفرة المصدر لإكمال الترحيل. يمكن رؤية الميزات المحددة غير المدعومة وثائق Warp. على سبيل المثال ، ستميز العديد من المشاريع منطق التنفيذ لحسابات EOA وحسابات العقود ، ولكن جميع الحسابات في Starknet هي حسابات عقود ، وهذا الجزء من الكود يحتاج إلى تعديل قبل الترجمة.
Warp متوافق على مستوى اللغة عالي المستوى ، و kakarot متوافق على مستوى EVM.
تسمح إعادة الكتابة الكاملة لـ EVM والتنفيذ الفردي للرمز التشغيلي والترجمة المسبقة لـ kakarot بالحصول على توافق أصلي أعلى. بعد كل شيء ، التنفيذ في نفس الجهاز الظاهري (EVM) دائمًا ما يكون أكثر توافقًا من التنفيذ في جهاز افتراضي مختلف (Cairo VM). يقوم Account Registry و Blockhash Registry بحماية الاختلافات في ظل الأنظمة المختلفة بذكاء وتقليل احتكاك ترحيل المستخدم.
! [Kakarot: استكشاف طريق توافق Starknet's EVM] (https://img-cdn.gateio.im/resized-social/moments-69a80767fe-15072cbf3c-dd1a6f-7649e1)
فريق كاكاروت
! [Kakarot: استكشاف طريق توافق Starknet's EVM] (https://img-cdn.gateio.im/resized-social/moments-69a80767fe-6a12d66c70-dd1a6f-7649e1)
شكرا لفريق kakarot على تعليقاتهم القيمة على هذا المقال ، وخاصة إلياس تازارتس. شكرا لك سيدي!
شاهد النسخة الأصلية
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
كاكاروت: استكشاف طريق Starknet المتوافق مع EVM
المؤلف: ساينيك
TL ؛ DR
ما هي الآلة الافتراضية؟
لتوضيح ماهية الآلة الافتراضية ، يجب أن نتحدث أولاً عن عملية تنفيذ الكمبيوتر في ظل بنية فون نيومان السائدة الحالية. عادةً ما يتم تحويل البرامج المختلفة التي يتم تشغيلها على جهاز كمبيوتر بواسطة طبقات من اللغات عالية المستوى ، وفي النهاية يتم إنشاء رموز آلة مفهومة للآلة للتنفيذ. وفقًا لطريقة التحويل إلى رمز الآلة ، يمكن تقسيم اللغات عالية المستوى تقريبًا إلى لغات مجمعة ولغات مفسرة.
! [Kakarot: استكشاف طريق توافق Starknet's EVM] (https://img-cdn.gateio.im/resized-social/moments-69a80767fe-14f84ab4de-dd1a6f-7649e1)
تعني اللغة المترجمة أنه بعد كتابة الكود ، يجب معالجته بواسطة مترجم لتحويل رمز اللغة عالي المستوى إلى رمز آلة وإنشاء ملف قابل للتنفيذ. بمجرد تجميعها ، يمكن تنفيذها عدة مرات بكفاءة أعلى. ميزة اللغة المترجمة هي أن الكود قد تم تحويله إلى كود آلة أثناء التجميع ، وبالتالي فإن سرعة التنفيذ سريعة ، ويمكن تشغيل البرنامج في بيئة بدون مترجم ، وهو أمر مناسب للمستخدمين للاستخدام ولا يحتاجون إليه لتثبيت برامج إضافية. تشمل اللغات المترجمة الشائعة C و C ++ و Go وما إلى ذلك.
نظير اللغات المترجمة هو لغات مفسرة. تعني اللغة المفسرة أن الشفرة يتم تفسيرها وتنفيذها سطراً بسطر من خلال مترجم فوري ، وتعمل مباشرة على الكمبيوتر ، وتحتاج عملية الترجمة إلى إعادة ترجمتها في كل مرة يتم تشغيلها فيها. تتمثل مزايا اللغات المفسرة في كفاءة تطوير عالية وسهولة تصحيح أخطاء التعليمات البرمجية ، ولكن سرعة التنفيذ بطيئة نسبيًا. تشمل اللغات المفسرة الشائعة Python و Java و Ruby وما إلى ذلك.
بمعرفة عملية تنفيذ الآلة الفعلية ، دعنا نتحدث عن الآلة الافتراضية الآن.
توفر الأجهزة الافتراضية عادةً بيئة كمبيوتر افتراضية عن طريق محاكاة أجهزة مختلفة. تختلف الأجهزة التي يمكن محاكاتها بواسطة أجهزة افتراضية مختلفة ، ولكنها تشمل عمومًا وحدة المعالجة المركزية والذاكرة والقرص الصلب وواجهة الشبكة وما إلى ذلك.
خذ جهاز Ethereum Virtual Machine (EVM) كمثال. EVM هي آلة افتراضية قائمة على المكدس تُستخدم لتنفيذ عقود Ethereum الذكية. يوفر EVM بيئة كمبيوتر افتراضية من خلال محاكاة الأجهزة مثل وحدة المعالجة المركزية والذاكرة والتخزين والمكدس.
! [Kakarot: استكشاف طريق توافق Starknet's EVM] (https://img-cdn.gateio.im/resized-social/moments-69a80767fe-09d35a2d06-dd1a6f-7649e1)
على وجه التحديد ، فإن EVM عبارة عن جهاز افتراضي قائم على المكدس يستخدم مكدسًا لتخزين البيانات وتنفيذ التعليمات. تتضمن مجموعة التعليمات الخاصة بـ EVM أكواد تشغيل مختلفة ، مثل العمليات الحسابية ، والعمليات المنطقية ، وعمليات التخزين ، وعمليات القفز ، وما إلى ذلك. يمكن تنفيذ هذه التعليمات على كومة من EVM لإكمال تنفيذ العقود الذكية.
الذاكرة والتخزين التي تمت مضاهاتها بواسطة EVM هي الأجهزة المستخدمة لتخزين حالة وبيانات العقود الذكية. يعامل EVM الذاكرة والتخزين على أنهما منطقتان متميزتان ، ويمكنه الوصول إلى حالة وبيانات العقود الذكية عن طريق القراءة والكتابة على الذاكرة والتخزين.
يتم استخدام المكدس الذي تمت محاكاته بواسطة EVM لتخزين المعاملات ونتائج التعليمات. تعتمد معظم التعليمات الموجودة في مجموعة تعليمات EVM على المكدس ، حيث تقوم بقراءة المعاملات من المكدس وتدفع النتائج مرة أخرى إلى المكدس.
باختصار ، يوفر EVM بيئة كمبيوتر افتراضية من خلال محاكاة الأجهزة مثل وحدة المعالجة المركزية والذاكرة والتخزين والمكدس ، والتي يمكنها تنفيذ تعليمات العقود الذكية وتخزين حالة وبيانات العقود الذكية. في التشغيل الفعلي ، سيقوم EVM بتحميل الرمز الثانوي للعقد الذكي في الذاكرة ، وتنفيذ منطق العقد الذكي من خلال تنفيذ مجموعة التعليمات. ما يحل محل EVM في الواقع هو جزء من نظام التشغيل + الأجهزة في الشكل أعلاه.
من الواضح أن عملية تصميم EVM تتم من أسفل إلى أعلى. أولاً ، تم الانتهاء من محاكاة بيئة الأجهزة (المكدس والذاكرة) ، ثم تم تصميم مجموعة من مجموعة تعليمات التجميع (رمز التشغيل) والرمز الثنائي (Bytecode) وفقًا للبيئة المقابلة. على الرغم من أن مجموعة تعليمات التجميع مخصصة للأشخاص للقراءة ، إلا أنها تتضمن الكثير من المعرفة منخفضة المستوى ، ولها متطلبات عالية للمطورين ، كما أنها مرهقة للتطوير. لذلك ، هناك حاجة إلى لغة عالية المستوى لحماية المستوى المنخفض الغامض والمرهق المكالمات ، وتزويد المطورين بتجربة أفضل. نظرًا للتصميم المخصص لمجموعة تعليمات التجميع الخاصة بـ EVM ، من الصعب استخدام اللغات التقليدية عالية المستوى بشكل مباشر ، وإعادة إنشاء لغة جديدة عالية المستوى للتكيف مع الجهاز الظاهري. قام مجتمع Ethereum بتصميم لغتين عاليتين تم تجميعهما - Solidity و Vyper - لكفاءة تنفيذ EVM. لا داعي للتأكيد على الصلابة ، Vyper هي لغة EVM رفيعة المستوى صممها Vitalik بعد تحسين بعض العيوب في Solidity ، ولكن لم يتم تبنيها على نطاق واسع في المجتمع ، لذا فهي تتلاشى تدريجياً من مرحلة التاريخ.
ما هو zkEVM
ببساطة ، zkEVM هو EVM يستخدم تقنية إثبات المعرفة الصفرية / إثبات الصلاحية ، بحيث يمكن التحقق من عملية تنفيذ EVM بشكل أكثر كفاءة وبتكلفة منخفضة من خلال إثبات عدم المعرفة / إثبات الصلاحية دون الحاجة إلى حمل جميع المحققين من عملية تنفيذ EVM.
هناك العديد من منتجات zkEVM في السوق ، والمضمار ساخن. تشمل الجهات الفاعلة الرئيسية Starknet ، و zkSync ، و Scroll ، و Taiko ، و Linea ، و Polygon zkEVM (سابقًا Polygon Hermez) ، وما إلى ذلك ، والتي تنقسم إلى 5 فئات (1 ، 2 ، 2.5، 3، 4) بواسطة Vitalik. يمكن الاطلاع على المحتوى المحدد على مدونة Vitalik.
لماذا هناك حاجة إلى zkEVM
يجب النظر إلى هذا السؤال من منظورين.
يمكن لمحاولات zk Rollup الأولية تحقيق وظائف نقل ومعاملات بسيطة نسبيًا ، مثل zkSync Lite و Loopring وما إلى ذلك. ولكن بمجرد أن أصبح البحر صعبًا للغاية ، اعتاد الناس استخدام Turing-complete EVM على Ethereum. عندما كان من المستحيل إنشاء تطبيقات مختلفة من خلال البرمجة ، بدأ الناس في طلب أجهزة افتراضية على L2. الحاجة إلى كتابة عقود ذكية واحدة.
! [Kakarot: استكشاف طريق توافق Starknet's EVM] (https://img-cdn.gateio.im/resized-social/moments-69a80767fe-0ea9250ee4-dd1a6f-7649e1)
نظرًا لأن بعض التصميمات في EVM ليست صديقة لإنشاء إثبات عدم المعرفة / إثبات الصلاحية ، يختار بعض اللاعبين استخدام مجموعة تعليمات ملائمة لإثبات عدم المعرفة / إثبات الصلاحية في الطبقة السفلية ، مثل Starknet's Cairo Assembly و zkSync's تعليمات الزنك. ولكن في الوقت نفسه ، لا يرغب الجميع في التخلي عن بيئة المستخدم الضخمة الخاصة بـ EVM ، لذلك اختاروا التوافق مع EVM على الطبقة العليا ، وهي النوع 3 و 4 zkEVM. لا يزال بعض اللاعبين يصرون على رمز التشغيل لمجموعة تعليمات EVM التقليدية ، ويركزون على إنشاء براهين أكثر كفاءة لرمز التشغيل ، وهما النوع 1 والنوع 2 zkEVM. البيئة الضخمة لـ EVM مقسمة إلى قسمين.
! [Kakarot: استكشاف طريق توافق Starknet's EVM] (https://img-cdn.gateio.im/resized-social/moments-69a80767fe-90532777a7-dd1a6f-7649e1)
كاكاروت: آلة افتراضية على آلة افتراضية؟
لماذا يمكن صنع آلة افتراضية أخرى على الآلة الافتراضية؟ هذا الشيء شائع لممارسي الكمبيوتر ، لكنه قد لا يكون واضحًا جدًا للمستخدمين الذين لا يفهمون أجهزة الكمبيوتر. في الواقع ، من السهل فهمها ، وهذا يشبه اللبنات الأساسية ، طالما أن الطبقة السفلية قوية بدرجة كافية (مع بيئة تنفيذ Turing-Complete) ، يمكن تكديس اللبنات الأساسية على الطبقة العليا بدون حدود. ولكن بغض النظر عن عدد الطبقات التي تم إنشاؤها ، لا يزال يتعين معالجة التنفيذ النهائي بواسطة الأجهزة المادية ذات المستوى الأدنى ، لذا فإن زيادة عدد الطبقات سيؤدي إلى انخفاض الكفاءة. في الوقت نفسه ، نظرًا للتصميمات المختلفة لبنات البناء المختلفة (تصميمات مختلفة للآلات الافتراضية) ، نظرًا لأن اللبنات الأساسية مبنية أعلى وأعلى ، فإن احتمال انهيار الكتل الأساسية (أخطاء التشغيل) أكبر ، الأمر الذي يتطلب مستوى أعلى من الدعم الفني.
Kakarot هو نموذج EVM مطبق في القاهرة على Starknet ، ويستخدم عقود القاهرة الذكية لمحاكاة المكدس والذاكرة والتنفيذ وما إلى ذلك في EVM. من الناحية النسبية ، ليس من الصعب تنفيذ EVM. بالإضافة إلى EVM المكتوب بلغة Golang في Go-Ethereum ، والذي يحتوي على أعلى معدل استخدام ، هناك أيضًا أجهزة EVM موجودة مكتوبة بلغة Python و Java و Java و Rust.
! [Kakarot: استكشاف طريق توافق Starknet's EVM] (https://img-cdn.gateio.im/resized-social/moments-69a80767fe-02fb8bfa1d-dd1a6f-7649e1)
تتمثل الصعوبة الفنية لـ Kakarot zkEVM في أن البروتوكول موجود كعقد على سلسلة Starknet ، مما يؤدي إلى مشكلتين رئيسيتين.
يتكون بروتوكول kakarot من خمسة مكونات رئيسية (أربعة مكتوبة في مستند GitHub ، لم يتم تضمين EOA ، تم تعديل هذه المقالة لراحة القراء):
! [Kakarot: استكشاف طريق توافق Starknet's EVM] (https://img-cdn.gateio.im/resized-social/moments-69a80767fe-1ced50ba33-dd1a6f-7649e1)
وفقًا لتعليقات من الرئيس التنفيذي لشركة kakarot Elias Tazartes ، في الإصدار الأخير من الفريق ، تم التخلي عن تصميم Account Resister ، وبدلاً من ذلك ، تم استخدام تعيين من عنوان Starknet 31 بايت إلى عنوان EVM بحجم 20 بت مباشرةً لحفظ العلاقة المقابلة . في المستقبل ، لتحسين قابلية التشغيل البيني والسماح لعقود Starknet بتسجيل عناوين EVM الخاصة بهم ، يمكن إعادة استخدام تصميم سجل الحساب.
متوافق مع EVM على Starknet: ما الفرق بين Warp و kakarot
وفقًا لنوع zkEVM الذي حدده Vitalik ، ينتمي Warp إلى Type-4 ، بينما ينتمي kakarot حاليًا إلى Type-2.5.
! [Kakarot: استكشاف طريق توافق Starknet's EVM] (https://img-cdn.gateio.im/resized-social/moments-69a80767fe-318178ab91-dd1a6f-7649e1)
Warp هو مترجم يحول كود Solidity إلى كود Cairo ، والسبب في عدم تسميته مترجمًا يرجع على الأرجح إلى أن الناتج Cairo لا يزال لغة عالية المستوى. من خلال Warp ، يمكن لمطوري Solidity الحفاظ على حالة التطوير الأصلية دون الحاجة إلى تعلم لغة القاهرة الجديدة. بالنسبة للعديد من أطراف المشروع ، يخفض Warp عتبة الدخول إلى نظام Starknet البيئي ، ولا يحتاج إلى استخدام القاهرة لإعادة كتابة كمية كبيرة من الكود الهندسي.
على الرغم من أن فكرة الترجمة بسيطة ، إلا أن التوافق هو الأسوأ أيضًا ، فبعض أكواد Solidity لا يمكن ترجمتها جيدًا إلى القاهرة ، ومنطق الكود الذي يتضمن نظام الحساب ، وخوارزمية التشفير ، وما إلى ذلك يحتاج إلى تعديل شفرة المصدر لإكمال الترحيل. يمكن رؤية الميزات المحددة غير المدعومة وثائق Warp. على سبيل المثال ، ستميز العديد من المشاريع منطق التنفيذ لحسابات EOA وحسابات العقود ، ولكن جميع الحسابات في Starknet هي حسابات عقود ، وهذا الجزء من الكود يحتاج إلى تعديل قبل الترجمة.
Warp متوافق على مستوى اللغة عالي المستوى ، و kakarot متوافق على مستوى EVM.
تسمح إعادة الكتابة الكاملة لـ EVM والتنفيذ الفردي للرمز التشغيلي والترجمة المسبقة لـ kakarot بالحصول على توافق أصلي أعلى. بعد كل شيء ، التنفيذ في نفس الجهاز الظاهري (EVM) دائمًا ما يكون أكثر توافقًا من التنفيذ في جهاز افتراضي مختلف (Cairo VM). يقوم Account Registry و Blockhash Registry بحماية الاختلافات في ظل الأنظمة المختلفة بذكاء وتقليل احتكاك ترحيل المستخدم.
! [Kakarot: استكشاف طريق توافق Starknet's EVM] (https://img-cdn.gateio.im/resized-social/moments-69a80767fe-15072cbf3c-dd1a6f-7649e1)
فريق كاكاروت
! [Kakarot: استكشاف طريق توافق Starknet's EVM] (https://img-cdn.gateio.im/resized-social/moments-69a80767fe-6a12d66c70-dd1a6f-7649e1)
شكرا لفريق kakarot على تعليقاتهم القيمة على هذا المقال ، وخاصة إلياس تازارتس. شكرا لك سيدي!