# إعداد عقدة OP Geth

تخدم عقدة OP Geth هذه كعقدة RPC غير مصوِّتة تُمكّن من تنفيذ معاملات Eth L2.

* يتطلب إعداد عقدة OP Geth كلًا من OP Geth وRhea وHercules وLight Client (المعروف أيضًا باسم Proxy) وPostgres.
* تم تعديل OP Geth لحساب الغاز بناءً على الحوسبة المطلوبة في Solana. ويسترجع قيمة الغاز المطلوبة عبر الاستعلام إلى Light Client.
* تلتقط Rhea معاملات L2 من ذاكرة OP Geth المؤقتة، وتحوّلها إلى معاملات Solana، وتُرسلها إلى Solana لترتيبها تسلسليًا.
* تُنفّذ عقد التصويت في إجماع Solana هذه المعاملات وتُصوّت على ترتيبها. يقرأ Hercules الحالة من عقد Solana ويؤكد معاملات L2 وترتيبها على OP Geth.

## مواصفات الجهاز

نوصي باستخدام جهاز Ubuntu بالمواصفات أدناه. ومع ذلك، فإن macOS مدعوم أيضًا.

{% tabs %}
{% tab title="الحد الأدنى" %}
4 أنوية، 8GB RAM، 1TB تخزين، 8MBit/sec عرض نطاق الشبكة

Ubuntu، x86\_64، 1 TB SSD
{% endtab %}

{% tab title="الموصى به" %}
8 أنوية، 16 غيغابايت RAM، 16 نواة، 1 تيرابايت SSD، عرض نطاق شبكة 25 ميغابت/ثانية

Ubuntu، x86\_64، 1 TB SSD
{% endtab %}
{% endtabs %}

## تشغيل حاويات Docker بأمر واحد

```bash
docker compose up -d
```

## بدلاً من ذلك، شغّل حاويات Docker أدناه بالتسلسل

{% stepper %}
{% step %}

#### Postgres

```bash
docker compose up -d postgres_rome
docker logs postgres_rome -f
```

انتظر حتى تُظهر السجلات "database system is ready to accept connections".
{% endstep %}

{% step %}

#### تطبيق عمليات الترحيل

```bash
docker compose up apply_migrations
```

{% endstep %}

{% step %}

#### Light Client

يوفّر Light Client واجهة Ethereum للوصول إلى حالة Solana.

ويشمل ذلك توفير تقديرات الغاز إلى Geth.

```bash
docker compose up -d proxy_rome
docker logs proxy_rome -f
```

انتظر حتى تُظهر السجلات "Starting the RPC server at 0.0.0.0:9090".
{% endstep %}

{% step %}

#### Geth

Geth هو عميل التجميع الذي يقبل وينفذ معاملات Eth L2، ويقدّم نتائج المعاملات إلى المستخدم. وهو عقدة RPC غير مصوِّتة.

```bash
docker compose up -d geth
docker logs geth -f
```

انتظر حتى تُظهر السجلات "HTTP server started".
{% endstep %}

{% step %}

#### Rhea

تأخذ Rhea معاملات التجميع من Geth، وتعبئها كمعاملات Rome Solana، وتُرسلها إلى Solana لترتيبها تسلسليًا.

```bash
docker compose up -d rhea
docker logs rhea -f
```

انتظر حتى تُظهر السجلات "Polling: <http://geth:8545>".
{% endstep %}

{% step %}

#### Hercules

يقرأ Hercules الحالة من عقد Solana ويؤكد معاملات L2 وترتيبها على OP Geth.

```bash
docker compose up -d hercules
docker logs hercules -f
```

انتظر حتى تُظهر السجلات "SolanaBlockLoader is in sync with Solana validator".
{% endstep %}

{% step %}

#### واجهة الإيداع

تمكّن واجهة الإيداع المستخدمين من إيداع وسحب SOL مقابل rSOL الذي يُستخدم لدفع رسوم الغاز على Rome.

```bash
docker compose up -d depositui
docker logs depositui -f
```

{% endstep %}

{% step %}

#### Nginx

```bash
docker compose up -d romenginx
docker logs romenginx -f
```

انتظر حتى تُظهر السجلات "Configuration complete; ready for start up".
{% endstep %}
{% endstepper %}

## أعد تشغيل الخدمات إذا لزم الأمر

```bash
docker compose down -d
```

```bash
docker compose up -d
```

## نظرة عامة على حاويات Docker

حاويات Docker التي شغّلتها مُدرجة أدناه.

| حاوية Docker      | الغرض                 |
| ----------------- | --------------------- |
| proxy\_rome       | Light Client          |
| geth              | OP Geth               |
| rhea              | Rhea                  |
| hercules          | Hercules              |
| postgres\_rome    | قاعدة بيانات Postgres |
| apply\_migrations | ترحيلات Postgres      |
| deposuitui        | واجهة الإيداع         |
| romenginx         | وكيل Nginx            |


---

# Agent Instructions: 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:

```
GET https://docs.rome.builders/ar/legacy/rome-l2-setup/setup-your-l2/setup-op-geth-node.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
