> 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/ru/spravochnik/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](/ru/rukovodstva-dlya-razrabotchikov/websocket-subscriptions.md).

**Сеть / web3:** `net_version`, `net_listening`, `net_peerCount`, `web3_clientVersion`.

### Не поддерживается

`debug_traceTransaction` / `trace_*` (трассировка транзакций), `eth_getProof`, `eth_createAccessList`, `eth_blobBaseFee` (blob-транзакции отсутствуют), `txpool_*` (публичного mempool нет). `newPendingTransactions` подписки принимаются, но никогда не публикуют события.

## Методы расширения Rome

Помимо стандартного Ethereum RPC, прокси предоставляет `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 gas. Практические последствия:

* **Всегда позволяйте инструментам оценивать gas.** `forge create`, `cast`и Hardhat call `eth_estimateGas` в ончейне и автоматически получают правильное значение.
* **Не задавайте жестко `21000` для нативных переводов.** Перевод на адрес, который еще не существует, стоит больше 21000 (при этом создается аккаунт получателя). Оценка учитывает это; жестко заданный `21000` лимит gas приведет к сбою для новых получателей.

### `forge script --broadcast` требует `--skip-simulation`

`forge script` задает лимит gas для broadcast на основе **локальной** симуляции, которая занижает значение в сравнении с моделью gas 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 и другие production RPC, `eth_getLogs` отклоняет слишком широкие диапазоны блоков (ошибка `-32005`). Ограничивайте свои запросы:

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

Запрос `queryFilter` без указания диапазона сканирует всю историю и превысит лимит — укажите явные `fromBlock`/`toBlock`. Проверки событий на основе receipt (например, ожидание транзакции и чтение ее логов) не затрагиваются.

### Комиссии

`eth_gasPrice` возвращает фактическую цену, полученную от оракула; кошельки (включая MetaMask) используют ее и отображают корректные комиссии. Переданные поля комиссии принимаются лояльно — как legacy-, так и 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/ru/spravochnik/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.
