في مناقشة عمق الجهاز الافتراضي Ethereum (EVM)

المؤلف: Gimer Cervera ، Ethereum Smart Contract Developer Translation: Shan Ouba ، Withain Vision World

يقدم

تستكشف هذه المقالة في الأجهزة الافتراضية Ethereum -Depth (EVM) وتجميع الصلابة لتحقيق تحسين العقود الذكية والأمان.

الجهاز الظاهري Ethereum (EVM) هو المكون الأساسي لشبكة Ethereum.EVM هو برنامج يسمح بنشر وتنفيذ العقود الذكية المكتوبة بلغة متقدمة (مثل الصلابة).بعد كتابة العقد ، قم بتجميعه في Bytecode ونشره على EVM.يعمل EVM على كل عقدة من شبكة Ethereum.

Assembly Solidity هي لغة برمجة منخفضة المستوى تتيح للمطورين كتابة التعليمات البرمجية على المستوى الأقرب من EVM نفسه.يوفر تحكمًا أكثر تفصيلاً في تنفيذ العقود الذكية ، مما يسمح بالتحسين والتخصيص الذي لا يمكن تحقيقه من خلال رمز الصلابة الأعلى.

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

EVM هو准 图 灵 灵 灵آلة الدولة.في هذه الحالة ، المصطلح“يسمح”وهذا يعني أن تنفيذ العملية يقتصر على خطوات حساب الرقم المحدود ، اعتمادًا على أي من كميات الغاز التي يمكن تنفيذها بواسطة أي عقد ذكي معين.هذه هي الطريقة للتعامل مع تعليق التوقف وإمكانية التنفيذ (ضارة أو حادث) إلى الأبد.وبهذه الطريقة ، يتم تجنب منصة Ethereum.

الغاز هو مفهوم حساب الحساب المطلوب لإكمال المعاملة في Ethereum.يتم دفع تكلفة المعاملة من قبل Ethereum وترتبط بسعر الغاز والغاز.هدفنا في هذه العملية هو تعلم كيفية تقليل المبلغ الإجمالي للغاز المستهلكة دون التأثير على الأمن.

مشكلة تحسين الكود

التجميع المفصل الداخلي هو وسيلة للوصول إلى EVM في مستوى أقل.إنه يتجاوز العديد من وظائف الأمن المهمة وعمليات التفتيش من الصلابة.الاستخدام الصحيح للتجميع المفصل الداخلي يمكن أن يقلل بشكل كبير من تكلفة التنفيذ.ومع ذلك ، يجب عليك استخدامها فقط لتحتاج إلى مهمتها ، وفقط عندما تعرف ما تفعله.قد يؤدي استخدام رمز تحسين Lianhui الداخلي إلى مشكلات أمان جديدة إلى الكود الخاص بك.لإتقان التجمع الداخلي ، نحتاج إلى فهم مبادئ عمل EVM ومكوناتها.

في EVM ، يجب أن تدفع في كل مرة تزور فيها أي متغير تخزين لأول مرة“بارد”زيارات ، يستغرق 2100 غاز.تسمى الأوقات الثانية أو المتتالية“حار”الوصول ، ويستغرق 100 غاز.

الرمز التالي هو مثال على كيفية تحسين الكود مع Yul.وظيفةsetData1استخدم الصلابة بالطريقة التقليدية كمتغير عالمياضبط القيمة الجديدة.نحتاج إلى إنفاق 22،514 غازًا عندما يخصص هذه القيمة الجديدة أولاً.التكلفة الثانية أقل بكثير ، أي 5414 غاز.

>

وظيفةsetData2إدراك التجميع الداخلي.تتميز كتلة الصرف الأجنبي الداخلي بالتجميع {…} ، حيث يكون الرمز الموجود في القوس هو رمز لغة Yul.ليست هناك حاجة لفهم التعليمات البرمجية المصدر في هذا الوقت ، فقط تذكر أن البرنامج يصل إلى مساحة التخزين عند مستوى أقل.لذلك ، ستكون تكلفة التنفيذ أقل.

في مثالنا ، سيكلف التعديل الأول لهذه القيمة 22،484 غاز.عدة مرات على التوالي ، التكلفة هي 5384 غاز.قد لا يبدو الفرق مهمًا ، لكن يجب أن نعتبر أنه قد يتم تنفيذ هذا الرمز آلاف المرات.

>

لماذا هو مكلف للغاية؟تذكر ، نحن في عالم لا مركزي.إذا كان من الضروري الوصول إلى المعاملات المستقبلية أو تغييرها ، فيجب استخدامها بسهولة لكل عقدة في الشبكة.التكلفة الإجمالية للبيانات تساوي مساحة التخزين التي تستهلكها ومجموع حساب البيانات على الشبكة بأكملها.

مكدس EVM والتخزين والذاكرة

EVM عبارة عن جهاز يعتمد على المكدس يتم تشغيله على بنية البيانات المسمى Stack ، والذي يحفظ القيمة وينفذ العملية.لدى EVM مجموعة من الإرشادات الخاصة بها (يشار إليها باسم رموز التشغيل) لأداء مهام مثل القراءة والكتابة تخزين ، واتصال العقود الأخرى ، وأداء العمليات الرياضية.كومة حسبفي وقت لاحق ، أولا الخروج (LIFO)قم بتشغيل الطريق ، انظر الشكل 1 ، مما يعني أنه يتم تخزين العنصر الذي تم إدراجه مؤخرًا في الجزء العلوي من المكدس ، وهو العنصر الأول الذي يتم حذفه.

>

عند تنفيذ العقود الذكية ، يقوم EVM بإنشاء سياق تنفيذ يحتوي على مختلف هياكل البيانات ومتغيرات الحالة.بعد الانتهاء من التنفيذ ، سيتم التخلص من السياق والاستعداد للعقد التالي.أثناء التنفيذ ، ستحافظ EVM على ذاكرة مؤقتة ، ولن يكون هناك وجود مستمر بين وجود المعاملات.ينفذ EVM جهاز مكدس بعمق 1024 عناصر.كل مشروع هو كلمة 256 بت.

EVM لديه المكونات التالية ، كما هو مبين في الشكل 2:

  • المكدس: مكدس EVM هو بنية بيانات تعمل (LIFO) تعمل (LIFO) في الطريق ، والتي يتم استخدامها لتخزين القيم المؤقتة أثناء تنفيذ العقود الذكية.

  • التخزين: التخزين الدائم هو جزء من حالة Ethereum ، والتي يتم تهيئتها فقط إلى الصفر لأول مرة.

  • الذاكرة: يتم استخدام صفيف البايت الحجم الديناميكي السهل ، لتخزين البيانات الوسيطة أثناء تنفيذ العقود.في كل مرة تقوم فيها بإنشاء سياق تنفيذ جديد ، تتم تهيئة الذاكرة إلى الصفر.

  • CallData: هذه أيضًا منطقة تخزين بيانات سهلة إلى أخرى ، على غرار الذاكرة.ومع ذلك ، فإنه يخزن بيانات متغيرة غير قادرة.ويهدف إلى حفظ البيانات المرسلة كجزء من معاملة العقد الذكي.

  • عداد البرنامج: يشير برنامج عداد البرنامج (PC) إلى التعليمات التالية التي سيتم تنفيذها بواسطة EVM.يضيف الكمبيوتر عادة بايت بعد تنفيذ التعليمات.

  • ROM الظاهري: يتم تخزين العقود الذكية في المنطقة كـ BYTECODE.يتم قراءة ROM الظاهري فقط.

>

مكدس EVM

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

>

واحدة من أهم الميزات التي تعتمد على بنية المكدس هي أنها تتيح تنفيذ التشغيل البسيط والفعال للغاية.نظرًا لأن المكدس عبارة عن بنية بيانات LIFO ، يمكن أن تكون البيانات والتعليمات هي معالجة البيانات والتعليمات بسهولة.

لدى EVM مجموعة من التعليمات الخاصة بها ، تسمى رمز التشغيل.يتم استخدام رمز التشغيل لأداء مهام مثل القراءة وكتابة التخزين ، والاتصال بالعقود الأخرى ، وتنفيذ العمليات الرياضية.توفر مجموعة تعليمات EVM معظم العمليات التي قد تتوقعها ، بما في ذلك:

  • عملية المكدس: البوب ​​، الدفع ، DUP ، مبادلة

  • الحساب/المقارنة/الوصفة: إضافة ، sub ، gt ، lt ، و ، أو

  • البيئة: المتصل ، callvalue ، الرقم

  • عملية الذاكرة: MLOOD ، MSTORE ، MSTORE8 ، MSIZE

  • عملية التخزين: Sload ، Sstore

  • رمز التشغيل المرتبط بمضادة البرنامج: القفز ، القفز ، الكمبيوتر الشخصي ، القفز

  • توقف عن رمز التشغيل: توقف ، إرجاع ، عودة ، غير صالح ، تدمير ذاتي

تخزين EVM

EVM Storage هي مساحة غير متوقعة ، وتوفير 256 -Bit -& GT ؛إجمالي عدد فتحات التخزين في العقد هو 2 ، وهو عدد كبير جدًا من الفتحات.كل عقد ذكي على blockchain لديه مساحة التخزين الخاصة بها.

أثناء مكالمة الوظيفة ، يتم استخدام التخزين للبيانات التي يجب تذكرها بين مكالمات الوظائف.يتم استخدامه لتخزين المتغيرات المتاحة وهياكل البيانات التي يمكن أن تكون متاحة حتى بعد تنفيذ العقود الذكية.

>

رمز التشغيل للوصول إلى التخزين هو: Sload و Sstore

تخزين الحساب هذا هو تخزين البيانات الدائم ، والذي لا يتم استخدامه إلا من قبل العقود الذكية.لا يحتوي الحساب (EOA) على رمز ومساحة التخزين فارغة.

ذاكرة EVM

الذاكرة هي ذاكرة سهلة إلى -LOSS في الهندسة المعمارية ، وبياناتها لا تدوم في blockchain.الذاكرة هي بنية بيانات الوصول العشوائية التي تخزن البيانات المؤقتة أثناء تنفيذ العقود الذكية.

>

تنقسم الذاكرة إلى أربعة أجزاء: يتم استخدام أخاديد 2 لمساحة التخزين المؤقتة ، ويتم استخدام فتحة واحدة لتأسيس الذاكرة المجانية ، و 0 أخاديد ونقطة فتحة واحدة للذاكرة المجانية المتاحة.سيتم استخدام مساحة البايت 64 الأولى بواسطة طريقة الشحن.

مؤشر الذاكرة المجاني هو مجرد مؤشر لبداية الذاكرة الحرة.إنه يضمن تتبع مواقع الذاكرة في العقود الذكية والتي لا تزال متوفرة.هذا يمنع تغطية العقد من بعض الذاكرة التي تم تعيينها لمتغير آخر.يوضح الشكل 6 كيف تنقسم الذاكرة:

>

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

بالنظر إلى أن الذاكرة هي -initialization ، فإن رمز التشغيل للوصول إلى الذاكرة هو: MLOOD ، MSTORE ، MSTORE8

ملخص

في هذه المقالة ، نقوم بمراجعة بعض المفاهيم الأساسية المتعلقة بالآلة الافتراضية Ethereum (EVM).لتحقيق رمز التجميع الداخلي ، تحتاج إلى فهم EVM في العمق.هذا لأننا نتفاعل مع بعض مكونات EVM.في الدورات المستقبلية ، سنقوم بتحليل عناصر EVM الأخرى بالتفصيل ، مثل: التخزين والذاكرة و CallData.بالإضافة إلى ذلك ، سنراجع المفاهيم المهمة مثل Bytecode و Gas و Application Binary Interface (ABI).أخيرًا ، سنناقش مبدأ العمل لرمز التشغيل وأمثلة أكثر داخليًا وأجنبيًا على تحسين تنفيذ العقود الذكية بشكل آمن.

  • Related Posts

    عرض سريع لشبكة جسيمات مشروع Airdrop Airdrop الأخير من Binance Hodler

    المصدر: موقع Binance الرسمي ، الموقع الرسمي لشبكة الجسيمات ، ورقة بيضاء ؛ المترجمة: رؤية Baitchain في 24 مارس ، 2025 ، وفقًا للإعلان الرسمي لبينانس ، أطلقت Binance Hodler…

    Ethereum Dellines ، يسود PVP ، يفتقد صيف عام 2020

    جيسي (@susanliu33) ، رؤية Baitchain اختفى Vitalik على X لأكثر من 20 يومًا. خلال هذه الأيام العشرين ، انخفض سعر Ethereum بشكل متكرر دون الدفاع النفسي للمستثمرين.يستمر سعر صرف ETH…

    اترك تعليقاً

    لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

    You Missed

    الاتجاه التاريخي: Bitcoin هي رصيد آمن

    • من jakiro
    • أبريل 19, 2025
    • 2 views
    الاتجاه التاريخي: Bitcoin هي رصيد آمن

    ما الذي يجعل أحداث سحب سجادة العملة المشفرة تحدث بشكل متكرر؟

    • من jakiro
    • أبريل 18, 2025
    • 5 views
    ما الذي يجعل أحداث سحب سجادة العملة المشفرة تحدث بشكل متكرر؟

    Wintermute Ventures: لماذا نستثمر في Euler؟

    • من jakiro
    • أبريل 18, 2025
    • 3 views
    Wintermute Ventures: لماذا نستثمر في Euler؟

    هل يستطيع ترامب إطلاق النار على باول؟ ما هي المخاطر الاقتصادية التي ستجلبها؟

    • من jakiro
    • أبريل 18, 2025
    • 3 views
    هل يستطيع ترامب إطلاق النار على باول؟ ما هي المخاطر الاقتصادية التي ستجلبها؟

    Glassnode: هل نشهد انتقالًا ثورًا؟

    • من jakiro
    • أبريل 18, 2025
    • 3 views
    Glassnode: هل نشهد انتقالًا ثورًا؟

    الدفعة الأولى لـ Post Web Accelerator من 8 مشاريع مختارة

    • من jakiro
    • أبريل 17, 2025
    • 3 views
    الدفعة الأولى لـ Post Web Accelerator من 8 مشاريع مختارة
    Home
    News
    School
    Search