> 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/almrja/json-rpc.md).

# دعم JSON-RPC

تتحدث نقاط نهاية Rome EVM بصيغة Ethereum JSON-RPC القياسية. تعمل Foundry وHardhat وethers وviem وMetaMask مع Rome بالطريقة نفسها التي تعمل بها على أي سلسلة EVM. تسرد هذه الصفحة ما هو مدعوم وبعض السلوكيات الخاصة بـ Rome التي يجدر معرفتها.

## الطرق المدعومة

**الأساسيات (الحالة والتنفيذ):** `eth_chainId`, `eth_blockNumber`, `eth_getBalance`, `eth_getCode`, `eth_getStorageAt`, `eth_getTransactionCount`, `eth_call`, `eth_estimateGas`, `eth_gasPrice`, `eth_maxPriorityFeePerGas`, `eth_feeHistory`.

**الكتل والمعاملات:** `eth_getBlockByNumber`, `eth_getBlockByHash`, `eth_getBlockReceipts`, `eth_getTransactionByHash`, `eth_getTransactionReceipt`, `eth_sendRawTransaction`، والمتغيرات حسب الفهرس/العدد للكتل.

**السجلات والمرشحات:** `eth_getLogs`, `eth_newFilter`, `eth_newBlockFilter`, `eth_getFilterChanges`, `eth_getFilterLogs`, `eth_uninstallFilter`.

**اشتراكات WebSocket:** `eth_subscribe` / `eth_unsubscribe` (`newHeads`, `logs`). راجع [اشتراكات WebSocket](/ar/adlh-almtwr/websocket-subscriptions.md).

**Net / web3:** `net_version`, `net_listening`, `net_peerCount`, `web3_clientVersion`.

### غير مدعوم

`debug_traceTransaction` / `trace_*` (تتبّع المعاملات)، `eth_getProof`, `eth_createAccessList`, `eth_blobBaseFee` (لا توجد معاملات blob)، `txpool_*` (لا توجد ذاكرة انتظار عامة). `newPendingTransactions` تُقبل الاشتراكات لكنها لا تصدر أي شيء أبدًا.

## طرق إضافة Rome

إلى جانب RPC القياسي لـ Ethereum، يوفّر الوكيل `rome_*` الطرق:

| الطريقة                        | الغرض                                                  |
| ------------------------------ | ------------------------------------------------------ |
| `rome_emulateTx`               | محاكاة معاملة خارج السلسلة (تُرجع نتيجة تنفيذ Solana)  |
| `rome_emulateTxWithPayer`      | المحاكاة باستخدام دافع محدد                            |
| `rome_emulateCallAccounts`     | محاكاة وإرجاع حسابات Solana التي يلمسها الاستدعاء      |
| `rome_emulateRegRollup`        | محاكاة تسجيل rollup                                    |
| `rome_getResources`            | الإبلاغ عن حالة تجمع موارد الوكيل (الدافعون، الحاملون) |
| `rome_mintId`                  | حلّ SPL mint الموجود خلف غلاف ERC-20                   |
| `rome_buildInfo`               | معلومات بناء الوكيل + معلومات البرنامج على السلسلة     |
| `rome_isCompatible`            | التحقق من توافق الوكيل/البرنامج                        |
| `rome_solanaTxForEvmTx`        | الحصول على معاملة/معاملات Solana لوسم تجزئة معاملة EVM |
| `rome_sendUnsignedTransaction` | إرسال معاملة غير موقعة (تدفقات المرسل الاصطناعي)       |

## سلوكيات خاصة بـ Rome

### الغاز مشتق من Solana — قدّرْه ولا تثبّتْه يدويًا

يقيس Rome التنفيذ بوحدات حساب Solana، ويعرضها على أنها غاز EVM. والنتائج العملية:

* **دع أدواتك تقدّر الغاز دائمًا.** `forge create`, `cast`، وHardhat call `eth_estimateGas` على السلسلة وتحصل على القيمة الصحيحة تلقائيًا.
* **لا تثبّت `21000` للتحويلات الأصلية.** التحويل إلى عنوان غير موجود بعد يكلف أكثر من 21000 (إذ ينشئ حساب المستلم). تتولى عملية التقدير هذا الأمر؛ أما قيمة `21000` محددة مسبقًا للغاز فستفشل مع المستلمين الجدد.

### `forge script --broadcast` يحتاج إلى `--skip-simulation`

`forge script` يضبط حد الغاز للبث من **محاكاة** محلية، وهذا يقلل التخصيص مقارنةً بنموذج الغاز في Rome. أضف `--skip-simulation` حتى يستخدم Foundry `eth_estimateGas` الشبكة بدلًا من ذلك:

```bash
forge script script/Deploy.s.sol:Deploy \\
  --rpc-url <RPC> --private-key $PRIVATE_KEY --broadcast --skip-simulation
```

`forge create`, `cast send`، وHardhat غير متأثرين — فهما يقدّران على السلسلة أصلًا.

### `eth_getLogs` محدود بالنطاق (\~12,000 كتلة)

مثل Infura وAlchemy وغيرها من واجهات RPC الإنتاجية، `eth_getLogs` يرفض النطاقات الواسعة جدًا من الكتل (الخطأ `-32005`). حدِّد استعلاماتك ضمن نطاق:

```javascript
const latest = await provider.getBlockNumber();
const logs = await contract.queryFilter(filter, latest - 5000, latest);
```

استدعاء `queryFilter` من دون نطاق يمسح كل السجل وسيتجاوز الحد — مرِّر `fromBlock`/`toBlock`. لا تتأثر التأكيدات المعتمدة على الإيصال للأحداث (مثل انتظار معاملة وقراءة سجلاتها).

### الرسوم

`eth_gasPrice` تُرجع السعر الحقيقي المستند إلى oracle؛ وتستخدمه المحافظ (بما فيها MetaMask) وتعرض الرسوم الصحيحة. تُقبل حقول الرسوم المرسلة بتسامح — إذ تصل كل من المعاملات القديمة ومعاملات EIP-1559 باستخدام القيم الافتراضية للأدوات القياسية.


---

# 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/almrja/json-rpc.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.
