﻿---
title: "آلة إيثريوم الافتراضية (EVM)"
description: "دليل يراعي إصدارات الترقية لمعاملات EVM وأطر استدعاء الرسائل والبايت كود والمكدس والذاكرة والتخزين والغاز وREVERT وDELEGATECALL والعقود سابقة التجميع والإيصالات ومطابقة الحالة."
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# آلة إيثريوم الافتراضية (EVM)

> لأغراض تعليمية فقط؛ لا يشكل ذلك نصيحة استثمارية أو توصية استثمارية. قد تؤدي الاستثمارات إلى خسائر.

<a id="answer"></a>

## الإجابة المباشرة

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

المعاملة الموقعة خارجيًا كائن بروتوكولي أعلى. أما النشاط بين العقود فيتكون من استدعاءات رسائل متداخلة وأطر استدعاء، وليس معاملات مستقلة لكل منها nonce وإيصال وhash خاص. ويضم كل إطار البايت كود وعداد البرنامج ومكدسًا من كلمات 256 بت وذاكرة وcalldata وreturndata وغازًا وسياق تنفيذ؛ وينتمي التخزين الدائم إلى حساب، بينما يستمر التخزين العابر طوال المعاملة وفق قواعد الترقية.

<a id="mechanism"></a>

## آلية العمل

1. ثبّت لقطة التنفيذ: السلسلة و`chainId`، والشبكة، ورقم الكتلة وhash، والحالة القانونية أو النهائية، والترقية، وعميل التنفيذ ومراجعة المواصفة، والحالة السابقة أو جذرها، ونوع المعاملة، والبايتات الموقعة الأصلية، وhash المعاملة وإيصالها. الحتمية مشروطة بهذا السياق الدقيق.
2. فك غلاف المعاملة وافصل الصلاحية السابقة للتنفيذ عن التنفيذ. تحقق من التوقيع والمرسل وnonce والوجهة أو الإنشاء والقيمة وcalldata وحد الغاز وحقول الرسوم وقائمة الوصول وأي حقول خاصة بالنوع. المعاملة المرفوضة قبل الإدراج ليست معاملة مدرجة نُفذت ثم تراجعت.
3. أنشئ الرسالة العليا وشجرة الاستدعاءات الكاملة. سجّل أطر `CALL` و`STATICCALL` و`DELEGATECALL` وإنشاء العقود والعقود سابقة التجميع؛ والمتصل وعنوان السياق وعنوان الكود و`msg.sender` و`msg.value` وتحويل القيمة وcalldata وreturndata والغاز المحال وعلامة النجاح. تسمية المستكشف «معاملة داخلية» عرض مشتق من trace وليست معاملة موقعة.
4. تتبع في كل إطار عداد البرنامج والمكدس والذاكرة وcalldata وreturndata والسجلات والتخزين الدائم ودفتر التخزين العابر. يستخدم `CALL` عنوان المستدعى وسياق تخزينه؛ وينفذ `DELEGATECALL` الكود المستهدف ضمن عنوان المتصل وسياق تخزينه مع الحفاظ على المرسل والقيمة القادمين من الأعلى؛ ويمنع `STATICCALL` تعديل الحالة.
5. طبّق قواعد الغاز للترقية المستهدفة: الغاز الأساسي، والتكاليف الديناميكية للتعليمات، وتوسيع الذاكرة، والوصول البارد والدافئ، وتمرير الغاز للاستدعاء، والمخصصات، ورسوم العقود سابقة التجميع، والمبالغ المستردة وحدودها. ثم احسب رسوم المعاملة بصورة منفصلة عن القيمة باستخدام الغاز المستهلك وسعر الغاز الفعلي. تقدير الغاز مشروط وليس ضمانًا.
6. حدد نتائج الأطر بحسب نطاقها. يثبت `RETURN` نتائج الإطار إذا ثبتت نتائج أسلافه لاحقًا. ويتراجع `REVERT` عن الإطار وذريته ويعيد بيانات، ولا يلزم أن يستهلك كل الغاز المتبقي للإطار؛ أما التوقفات الاستثنائية فمختلفة. يمكن للأب التقاط فشل استدعاء منخفض المستوى ومواصلة التنفيذ، لذلك قد تكون حالة الإيصال الأعلى `1` رغم فشل ابن. والفشل الأعلى المدرج يظل مستهلكًا nonce المرسل والغاز المدفوع.
7. طابق حالة الإيصال والغاز المستهلك والسجلات والعنوان المنشأ وبيانات الإرجاع مع الأرصدة وnonce والكود والتخزين الدائم والعابر ودفاتر الرموز وtraces قبل الحالة وبعدها ومع جذر حالة الكتلة. أعد التنفيذ بعميل مستقل عند الحاجة، ودقق تنفيذات proxy وتخطيطات التخزين والعقود سابقة التجميع وهدف EVM للمترجم وترقيات fork بمعزل عن نهائية الإجماع.

<a id="example"></a>

## أمثلة محلولة

- **تراجع أعلى مدرج ودفتر الرسوم.** لمعاملة من النوع 2 حد غاز `80,000`، واستهلاك `52,000`، ورسوم أساسية `20 gwei`، وحد أقصى لإكرامية الأولوية `3 gwei`، وحد أقصى للرسوم `40 gwei`. سعر الغاز الفعلي هو `min(40, 20 + 3) = 23 gwei`؛ والرسوم الفعلية `52,000 * 23 gwei = 0.001196 ETH`، منها `52,000 * 20 gwei = 0.001040 ETH` تُحرق و`52,000 * 3 gwei = 0.000156 ETH` إكرامية أولوية. ولا تُفرض رسوم على `28,000 gas` غير المستخدمة. وإذا تراجع التنفيذ الأعلى، تتراجع آثار التخزين وتحويل القيمة والسجلات، لكن nonce المرسل والرسوم الفعلية يبقيان.
- **التقاط فشل ابن.** يبدأ العقد A بالقيمة `A.x = 5`. يستدعي B؛ فيكتب B القيمة `B.y = 9`، ويصدر سجلًا، ثم ينفذ `REVERT`. تتراجع كتابة B وسجله. يلاحظ A أن `success = false`، ويكتب `A.x = 7`، ثم يعود طبيعيًا. حالة الإيصال النهائية `1`، والقيمة `A.x = 7`، بينما يحتفظ B بقيمته السابقة. لذلك لا يثبت نجاح المستوى الأعلى نجاح كل استدعاء ابن.
- **سياق تخزين DELEGATECALL.** لدى proxy القيمة `slot0 = 5`، ولدى حساب التنفيذ `slot0 = 99`. يقرأ كود التنفيذ الخانة 0، ويضيف `7`، ثم يخزن النتيجة. عند تنفيذه عبر `DELEGATECALL`، تتغير قيمة proxy إلى `slot0 = 12`، بينما يبقى التنفيذ عند `slot0 = 99`؛ إذ يسري عنوان proxy وسياق تخزينه، مع الحفاظ على المرسل والقيمة القادمين من الأعلى. وقد يفسد تخطيط تخزين غير متوافق حالة proxy.
- **SELFDESTRUCT ضمن ترقية محددة.** وفق قاعدة EIP-6780، ينفذ عقد موجود يملك `2 ETH` أمر `SELFDESTRUCT` لصالح المستفيد B. يتلقى B مقدار `2 ETH` ويصبح رصيد العقد صفرًا، لكن الحساب الموجود وكوده وتخزينه لا تُحذف. ويقتصر سلوك الحذف على عقد أُنشئ ودمر نفسه في المعاملة ذاتها. هذا سلوك خاص بالترقية ولا يجوز تعميمه إلى الماضي أو إلى كل سلسلة EVM.

<a id="risks"></a>

## المخاطر

- إعادة التشغيل على سلسلة أو كتلة أو ترقية أو عميل أو حالة سابقة خاطئة.
- اعتبار حالة غير قانونية أو أعيد تنظيمها سياق تنفيذ نهائيًا.
- الخلط بين رفض التحقق السابق والتراجع عن تنفيذ مدرج.
- افتراض أن محاكاة معلقة ستطابق الحالة عند الإدراج لاحقًا.
- تجاهل تراجع أعلى أو توقف استثنائي أو نفاد الغاز.
- إغفال فشل ابن التقطه أبوه.
- إساءة قراءة سياق الاستدعاء أو عنوان الكود أو المتصل أو المرسل أو القيمة.
- إفساد حالة proxy بسبب عدم توافق تخطيط التخزين في `DELEGATECALL`.
- السماح بإعادة الدخول أو تحويل خارجي غير آمن للقيمة والتحكم.
- الوثوق ببيانات إرجاع أو علامات نجاح أو أخطاء مخصصة من دون تحقق.
- اعتبار السجلات أو traces حالة نهائية موثوقة.
- الخطأ في حساب الوصول البارد والدافئ أو الذاكرة أو الغاز المحال للاستدعاء.
- إساءة تطبيق المبالغ المستردة أو حدودها أو المخصصات أو قاعدة `63/64`.
- استخدام عنوان أو مدخلات أو رسوم أو دلالات ترقية خاطئة لعقد سابق التجميع.
- الخلط بين أعمار التخزين الدائم والذاكرة والتخزين العابر.
- توقع نجاح تعديل الحالة داخل `STATICCALL`.
- تطبيق افتراضات حذف `SELFDESTRUCT` السابقة لـEIP-6780.
- إغفال تغير تنفيذ proxy أو المسؤول أو هدف المترجم.
- تشغيل قواعد عميل تنفيذ مختلفة أو غير محدثة.
- استنتاج أمان الإجماع أو الجسر أو الرمز أو الحوكمة أو النهائية من توافق EVM.

<a id="misconceptions"></a>

## مفاهيم خاطئة شائعة

- كود Solidity المصدري هو الكائن الذي يُنفذ مباشرة على السلسلة.
- المعاملة المدرجة التي تراجعت لا تكلف شيئًا ولا تغير nonce.
- تثبت حالة الإيصال `1` نجاح كل استدعاء داخلي كما هو مقصود.
- الحدث أو trace هو الحالة الموثوقة للأصول والتخزين.
- يضمن توافق EVM تطابق التعليمات والغاز والعقود سابقة التجميع والإجماع والأمان.

<a id="related"></a>

## موضوعات ذات صلة

- [النموذج القائم على الحساب](/ar/crypto/account-based-model/)
- [رسوم الغاز](/ar/crypto/gas-fee/)
- [العقد الذكي](/ar/crypto/smart-contract/)

<a id="sources"></a>

## المصادر

- [Ethereum Virtual Machine (EVM)](https://ethereum.org/developers/docs/evm/) - Ethereum.org (تاريخ الاطلاع: 2026-08-12)
- [Ethereum Yellow Paper: a formal specification of Ethereum, a programmable blockchain](https://ethereum.github.io/yellowpaper/paper.pdf) - Ethereum Foundation (تاريخ الاطلاع: 2026-08-12)
- [Ethereum Execution Layer Specification](https://ethereum.github.io/execution-specs/) - Ethereum Execution Specs (تاريخ الاطلاع: 2026-08-12)
- [Introduction to Smart Contracts](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html) - Solidity Documentation (تاريخ الاطلاع: 2026-08-12)
- [EIP-7: DELEGATECALL](https://eips.ethereum.org/EIPS/eip-7) - Ethereum Improvement Proposals (تاريخ الاطلاع: 2026-08-12)
- [EIP-140: REVERT instruction](https://eips.ethereum.org/EIPS/eip-140) - Ethereum Improvement Proposals (تاريخ الاطلاع: 2026-08-12)
- [EIP-2929: Gas cost increases for state access opcodes](https://eips.ethereum.org/EIPS/eip-2929) - Ethereum Improvement Proposals (تاريخ الاطلاع: 2026-08-12)
- [EIP-6780: SELFDESTRUCT only in same transaction](https://eips.ethereum.org/EIPS/eip-6780) - Ethereum Improvement Proposals (تاريخ الاطلاع: 2026-08-12)

Source: https://wiki.fcontext.com/ar/crypto/evm/index.mdx
