> For the complete documentation index, see [llms.txt](https://docs.rome.builders/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rome.builders/ar/albda/architecture.md).

# البنية المعمارية

يُضمّن Rome مفسّرًا لشفرة EVM الثنائية داخل برنامج على السلسلة في Solana. يتواصل المستخدمون مع Rome Proxy عبر معيار Ethereum JSON-RPC، ويُرسل الوكيل معاملاتِهم مباشرةً إلى برنامج Rome EVM على Solana. لا توجد طبقة تنفيذ منفصلة للمزامنة — حالة EVM *هي* حالة Solana.

## نظرة عامة على النظام

<figure><img src="/files/8d781b9c3b56e5a72b139b1e75e6f9e56893ea10" alt="User to Rome Proxy to the Rome EVM program on Solana, with Hercules indexing back"><figcaption></figcaption></figure>

## المكوّنات

### برنامج Rome EVM (على السلسلة)

جوهر Rome — برنامج Solana BPF يحتوي على مفسّر كامل لشفرة EVM الثنائية (نسخة فرعية من SputnikVM). وهو:

* يستقبل معاملات EVM المُسلسلة كتعليمات في Solana
* ينفّذ شيفرة Solidity الثنائية داخل بيئة تشغيل Solana
* يُعيّن كل عنوان Ethereum ‏(H160) إلى PDA في Solana
* يُوفّر precompiles للاتصال بـ Solana ‏(CPI، System، Helper، Withdraw) إلى جانب precompiles Ethereum القياسية
* يخزّن حالة EVM (الأرصدة، nonce، الشفرة، التخزين) كبيانات حسابات Solana

### Rome Proxy (خادم JSON-RPC)

خادم Ethereum JSON-RPC قياسي على المنفذ 9090 — نقطة الدخول للسلاسل العامة. يحوّل استدعاءات واجهة Ethereum إلى نشاط في Solana:

* `eth_sendRawTransaction` → يُسلسل معاملة EVM → يرسل تعليمات إلى Solana
* `eth_call` → يحاكي التنفيذ خارج السلسلة عبر محاكي Mollusk SVM
* `eth_estimateGas` → يُحاكي لتقدير الغاز
* `eth_getBalance`, `eth_getCode`, `eth_getBlockByNumber`، والإيصالات، والسجلات → تُقدَّم من الحالة المفهرسة

كما يوفّر امتدادات Rome: `rome_emulateTx`, `rome_emulateRegRollup`, `rome_mintId`, `rome_buildInfo`, `rome_getResources`، والمزيد.

### Hercules (المفهرس)

يراقب برنامج Rome EVM على Solana ويُعيد بناء كتل متوافقة مع Ethereum — المعاملات، والإيصالات، والسجلات، وتغييرات الحالة — مدعومةً بـ PostgreSQL. على السلاسل العامة يعمل في وضع محاذاة الفتحة، بحيث يطابق رقم الكتلة فتحةً في Solana وتنتج الفتحة نفسها الكتلة نفسها على أي مفهرس. يقدّم الوكيل هذه الكتل إلى المحافظ ومستكشفي السلاسل.

### الـ Precompiles

يُطبّق Rome الـ precompiles القياسية في Ethereum (ecrecover، SHA-256، RIPEMD-160، identity، modexp، عمليات منحنى BN254، blake2f) بدلالات مماثلة للشبكة الرئيسية، بالإضافة إلى precompiles غير EVM تصل إلى Solana: **CpiProgram** (`0xFF…08`، واستدعاء CPI عشوائي)، **System** (`0xFF…07`، اشتقاق PDA ومساعدات base58)، **HelperProgram** (`0xFF…09`، إنشاء ATA/PDA، وتحويلات SPL، والغاز ↔ lamports)، و **Withdraw** (`0x42…16`). راجع [عناوين العقود](/ar/almrja/contract-addresses.md) للاطلاع على الجدول الكامل.

## أوضاع التنفيذ

ينفّذ Rome معاملة EVM بإحدى طريقتين:

### الذري (VmAt)

معاملة Solana واحدة. تُنفَّذ معاملة EVM كاملة ضمن ميزانية الحوسبة لمعاملة Solana واحدة (\~1.4 مليون وحدة حوسبة). تُستخدم لمعظم العمليات — التحويلات، واستدعاءات العقود العادية، والمبادلات.

### التكراري (VmIt)

للأعمال التي تتجاوز ميزانية معاملة واحدة. يُقسَّم التنفيذ عبر عدة معاملات Solana:

1. تُنفّذ كل خطوة (معاملة Solana) أكبر عدد ممكن من تعليمات EVM مما يتّسع له مقدار الحوسبة المتاح لها — حجم الخطوة تكيفي، وليس ثابتًا
2. تُسلسَل حالة VM بتنسيق Borsh إلى حساب `StateHolder` بين الخطوات
3. تُقفل الحسابات بقفل TTL لبضع ثوانٍ أثناء التنفيذ
4. تُستخدم للعمليات الثقيلة مثل اقتران BN254

## تعيين الحسابات

يُعيَّن كل عنوان Ethereum حتمًا إلى PDA في Solana مشتق من معرّف السلسلة والعنوان تحت برنامج Rome EVM. يمتلك هذا الـ PDA رصيد الحساب (كحسابات SPL token)، وشيفرة العقد، وفتحات التخزين، والـ nonce — وكلها كبيانات حسابات Solana.

## حسابات الحاوية

تُقيَّد معاملات Solana بـ 1,232 بايت، لكن معاملات EVM (وخاصة نشر العقود) يمكن أن تكون أكبر بكثير. يقوم Rome بتجهيز المعاملات الكبيرة داخل **حسابات الحاوية**: تُقسَّم المعاملة إلى أجزاء تُكتب بالتتابع في حاوية (حتى 80 كيلوبايت)، ثم تُجمَّع وتُنفَّذ على السلسلة. تتولى Rome SDK إدارة ذلك بشفافية.

## الغاز والتسعير

لكل سلسلة رمز غاز خاص بها — أي رمز SPL. يقرأ تسعير الغاز مجمّع Meteora DAMM ‏(v1 أو v2، قابل للتهيئة) للتحويل بين رمز الغاز وSOL لرسوم معاملة Solana الأساسية.

## ما التالي

* [الشبكات](/ar/alshbkat/networks.md) — اتصل بـ Martius أو Hadrian
* [البدء السريع](/ar/albda/quickstart.md) — انشر أول عقد لك
* [نموذج التنفيذ](/ar/almfahym-alasasyh/execution-model.md) — التنفيذ الذري مقابل التكراري بالتفصيل


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.rome.builders/ar/albda/architecture.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
