# تهيئة طبقة L2 الخاصة بك

**ملاحظة: نستخدم مصطلحي "الوكيل (Proxy)" و"العميل الخفيف (Light Client)" بالتبادل.**

## انتقل إلى الدليل rome-setup/docker

```
cd rome-setup/docker
```

## تعيين متغيرات البيئة

```bash
export ROME_APPS_TAG=v1.0.1
export DEPOSIT_UI_TAG=v1.0.1
export GETH_TAG=v1.0.1

solana config set -u https://node3.devnet-us-sol-api.devnet.romeprotocol.xyz
```

## توليد أزواج مفاتيح سولانا

توليد زوجي مفاتيح سولانا جديدين في rome-apps/docker/keys، باسم **زوج مفاتيح Rhea** و **زوج مفاتيح الوكيل (Proxy)**. سيتم استخدام هذه أزواج المفاتيح بواسطة خدمتي Rhea والعميل الخفيف (الموضحة في الصفحة التالية) لتوقيع ودفع رسوم معاملات سولانا.

```bash
solana-keygen new -o keys/rhea-sender.json --no-bip39-passphrase --force
solana-keygen new -o keys/proxy-sender.json --no-bip39-passphrase --force
```

## إسقاط عملة SOL (Airdrop)

قم بإسقاط عملة SOL إلى **Rhea** و **أزواج مفاتيح الوكيل (Proxy)** باستخدام الأوامر أدناه:

```bash
solana -ud airdrop 1 $(solana address -k keys/rhea-sender.json)
solana -ud airdrop 1 $(solana address -k keys/proxy-sender.json)
```

إذا واجهت مشاكل مع الإسقاطات (airdrops)، [التواصل معنا على Discord الخاص بنا](https://discord.com/invite/romeprotocol).

## توليد سر JWT

قم بتوليد [سر JWT](https://jwt.io/introduction) الذي سيستخدمه Geth. قم بتخزين هذا السر بشكل آمن.

```
openssl rand -hex 32
```

قيمة مثال أدناه.

```
7ff586310476ffc476995fa0cd3a80be82e2aba650dddc885ac26c82af29c40d
```

## التحقق من شريحة Solana (Slot)

تحقق من شريحة Solana، وقم بتحديث start\_slot في proxy-config.yml و rhea-config.yml (الموجودين في rome-setup/docker/cfg) بالقيمة الحالية للشريحة.

```bash
solana slot
```

سيتم استخدام هذه الشريحة بواسطة Rhea والعميل الخفيف (أي الوكيل) لتحديد الحالة الحالية للـ rollup استنادًا إلى سجل معاملات Solana بدءًا من الشريحة البداية.

## نسخ شهادة Nginx

إذا كنت تقوم بالإعداد على خادم بعيد، فانسخ شهادات nginx إلى الدليل المحلي لديك. إذا كنت تقوم بالإعداد محليًا، فتخط هذا الخطوة.

**ملاحظة: استبدل مسار الملف أدناه بموقع شهادتك.**

<pre class="language-bash"><code class="lang-bash">mkdir -p ./nginx/ssl
<strong>sudo cp /etc/letsencrypt/live/caesar.internal.romeprotocol.xyz/fullchain.pem ./nginx/ssl/
</strong><strong>sudo cp /etc/letsencrypt/live/caesar.internal.romeprotocol.xyz/privkey.pem ./nginx/ssl/
</strong></code></pre>

## تحديث ملفات التكوين

### Docker Compose

1. تحديث `docker-compose.yml` لاستبدال قيم CHAIN\_ID و JWT\_SECRET.

<pre class="language-yaml"><code class="lang-yaml">geth:
  image: romelabs/rollup-op-geth:${GETH_TAG:-main}
  logging: *logging-config
  hostname: geth
  container_name: geth
  environment:
<strong>    CHAIN_ID: '98989897'
</strong><strong>    JWT_SECRET: '7ff586310476ffc476995fa0cd3a80be82e2aba650dddc885ac26c82af29c40d'
</strong>...
</code></pre>

2. إذا كنت تقوم بإعداد الطبقة الثانية (L2) على خادم بعيد، قم بإلغاء تعليق الحاوية romenginx في `docker-compose.yml`. وإلا إذا كنت تقوم بالإعداد على جهازك المحلي، فتخطَ هذه الخطوة.

### تكوين Rhea

قم بتحديث rhea-config.yml لتعيين chain\_id، وعناوين rpc الخاصة بسولانا، والدافعين (payers).

<pre class="language-yaml"><code class="lang-yaml"><strong>chain_id: 98989897 # استبدل هذا بمعرف السلسلة المسجل لديك
</strong><strong>rpc_urls: ["https://node3.devnet-us-sol-api.devnet.romeprotocol.xyz"] # استبدل هذا بـ Rome Solana RPC
</strong>program_id: "RPDwFyw4ekzzgyJfSrVmJgmfi51ovyqzLckYGchLpKX"
commitment: "confirmed"
payers:
  - payer_keypair: "/opt/keys/rhea-sender.json"
    fee_recipients:
      - 0x5f5d351dB427d1131D8Dcd4F151185E6E6111907
geth_indexer:
  geth_http_addr: "http://geth:8545"
  geth_poll_interval_ms: 100
mempool_ttl: 15 # (ثواني) قيمة أعلى أو مماثلة لوقت حياة op-geth الحقيقي ستمنع rhea من الإرسال المتكرر
</code></pre>

### تكوين Hercules

قم بتحديث hercules-config.yml لتعيين chain\_id، start\_slot، rpc لسولانا، geth\_engine\_secret، والدافعين (payers).

<pre class="language-yaml"><code class="lang-yaml"><strong>start_slot: 385523275 # استبدل هذا بآخر شريحة سولانا لديك
</strong>admin_rpc: "0.0.0.0:8000"
mode: Indexer
block_loader:
  program_id: "RPDwFyw4ekzzgyJfSrVmJgmfi51ovyqzLckYGchLpKX"
  batch_size: 64
  block_retries: 100
  tx_retries: 100
  retry_int_sec: 1
  commitment: "confirmed"
  client:
    providers:
<strong>      - "https://node3.devnet-us-sol-api.devnet.romeprotocol.xyz" # استبدل هذا بـ Rome Solana RPC
</strong>storage:
  connection:
    database_url: "postgres://hercules:qwerty123@postgres_rome/test_rollup"
    max_connections: 16
    connection_timeout_sec: 30
rollup_indexer:
  max_slot_history: 4096
  block_parser:
    program_id: "RPDwFyw4ekzzgyJfSrVmJgmfi51ovyqzLckYGchLpKX"
<strong>    chain_id: 98989897 # استبدل هذا بمعرف السلسلة المسجل لديك
</strong>    parse_mode: engine_api
  block_producer:
    type: engine_api
    geth_engine:
      geth_engine_addr: "http://geth:8551"
<strong>      geth_engine_secret: "7ff586310476ffc476995fa0cd3a80be82e2aba650dddc885ac26c82af29c40d" # استبدل هذا بسر JWT الذي ولّدته
</strong>    geth_api: "http://geth:8545"
</code></pre>

### تكوين الوكيل (Proxy)

قم بتحديث proxy-config.yml لتعيين chain\_id، start\_slot، عنوان rpc لسولانا، والدافعين (payers).

<pre class="language-yaml"><code class="lang-yaml"><strong>chain_id: 98989897 # استبدل هذا بمعرف السلسلة المسجل لديك
</strong><strong>start_slot: 385523275 # استبدل هذا بآخر شريحة سولانا لديك
</strong>program_id: "RPDwFyw4ekzzgyJfSrVmJgmfi51ovyqzLckYGchLpKX"
solana:
<strong>  rpc_url: "https://node3.devnet-us-sol-api.devnet.romeprotocol.xyz" # استبدل هذا بـ Rome Solana RPC
</strong>  commitment: "confirmed"
payers:
  - payer_keypair: "/opt/keys/proxy-sender.json"
    fee_recipients:
      - 0x5f5d351dB427d1131D8Dcd4F151185E6E6111907
ethereum_storage:
  type: "pg_storage"
  connection:
    database_url: "postgres://hercules:qwerty123@postgres_rome/test_rollup"
    max_connections: 16
proxy_host: "0.0.0.0:9090"
max_slot_history: 4096
gas_price: 1000000000
</code></pre>

### تكوين واجهة الإيداع (Deposit UI)

قم بتعديل الملفين التاليين.

* `rome-setup/docker/depositui/chains.yml` لتحديد `chainId` .
* `rome-setup/docker/depositui/env.depositui` لتحديد `NEXT_PUBLIC_SOLANA_RPC_URL` .

### تحديد الدافعين (payers)

حدد عدة دافعين لزيادة الإنتاجية حيث يمكن تنفيذ المزيد من المعاملات بشكل متوازٍ بوجود دافعين أكثر.

### تحديد مستلمي الرسوم (fee\_recipients)

حدد fee\_recipients كعناوين إيثيريوم ستتلقى رموز L2 الأصلية كتعويض عن تنفيذ معاملات سولانا.

إذا لم يتم تحديد fee\_recipient، فلن يتم نقل أي رموز L2 أصلية كتعويض.

حدد عدة مستلمين للرسوم لزيادة الإنتاجية حيث يمكن تنفيذ المزيد من المعاملات بشكل متوازٍ بوجود مستلمين للرسوم أكثر.


---

# 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/initialize-your-l2.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.
