> 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/bezopasnost/known-limitations.md).

# Известные ограничения

Текущие ограничения Rome EVM и их последствия — неподдерживаемые opcode, структура хранилища аккаунтов, лимиты CU, глубина CPI и ограничения оракулов.

Честное описание текущих ограничений протокола Rome и их последствий.

## Ограничения выполнения

**SELFDESTRUCT не поддерживается.** У этого opcode нет обработчика, поэтому контракт, который его выполняет, прерывает всю транзакцию (см. ниже); он не откатывает только один кадр.

**Opcode, который Rome не реализует, прерывает всю транзакцию.** Интерпретатор не имеет обработчика для этого байта, поэтому транзакция завершается с `IncompatibleVersionEVM(opcode)`, ничего из сделанного не фиксируется, а ошибка возвращается отправителю, а не подавляется вызывающим контрактом.

**Отсутствует отдельная газовая схема для каждого opcode.** Значение газа, переданное в `CALL`, `DELEGATECALL`, `STATICCALL` и `CREATE` принимается для совместимости с ABI, но не применяется на практике — вызываемый контракт выполняется с полным оставшимся бюджетом вызывающего, и 2300-газовый стипенд не предусмотрен. Защита от повторного входа на основе стипенда (`transfer()` / `send()`) на Rome не действует; используйте явные защитные механизмы от повторного входа и шаблон checks-effects-interactions.

**Modexp (0x05) отключен.** Вызов приводит к откату с `вызов big_mod_exp отключен` пока Solana не активирует `big_mod_exp` syscall.

**256 слотов хранения на каждый аккаунт хранения.** Хранилище контрактов распределяется по аккаунтам Solana, по 256 слотов в каждом. Контракты с большим объёмом хранилища используют несколько аккаунтов, что влияет на стоимость в CU.

**Около 1,4 млн вычислительных единиц на атомарную транзакцию.** Работа, превышающая бюджет одной транзакции Solana, переводится в итеративное выполнение (разбивается на несколько транзакций). Некоторые операции выполняются только атомарно и не могут запускаться итеративно — в частности, legacy-track CPI (`CpiProhibitedInIterativeTx`; эффекты cached-track откладываются и действительно выполняются итеративно).

**Ограничение глубины CPI: 4.** Глубоко вложенные вызовы CPI завершатся неудачей. Проектируйте контракты с неглубокими деревьями вызовов.

## Ограничения оракулов

**Нет исторических данных раундов.** Адаптеры Oracle Gateway поддерживают только `latestRoundData()`. Исторические запросы цен через `getRoundData(roundId)` завершаются откатом.

**Смещения парсера проверяются по текущим структурам.** Данные аккаунтов Pyth и Switchboard разбираются с использованием байтовых смещений. Если Pyth или Switchboard изменят структуру своих аккаунтов, адаптеры будут возвращать некорректные данные, пока смещения не будут повторно проверены.

## Ограничения инструментов

**Отсутствует трассировка транзакций в стиле Ethereum.** `debug_traceTransaction` и `trace_*` не поддерживаются. Единственный метод трассировки — `debug_traceRomeTransaction`, который разбивает транзакцию, объединяющую несколько вызовов в один пакет, на её подвызовы и CPI. Обычные транзакции возвращают `null`. Для всего остального используйте `eth_call` и [Через обозреватель](/ru/prilozheniya-v-rome/via.md) (который показывает инструкции Solana, стоящие за транзакцией) для отладки. См. [JSON-RPC](/ru/spravochnik/json-rpc.md).

**`eth_getLogs` имеет ограничение по диапазону.** Публичные сети отклоняют слишком широкие диапазоны блоков (ошибка `-32005`); ограничивайте свои запросы. См. [JSON-RPC](/ru/spravochnik/json-rpc.md).

## Ограничения инфраструктуры

**Модель с одним оператором.** Каждое развертывание Rome обслуживается одной сущностью (оператором пула плательщиков). Децентрализованного набора операторов нет.

**Блокировка итеративного режима.** Во время итеративного выполнения аккаунты блокируются на несколько секунд, что может вызывать конкуренцию за часто используемые аккаунты.

## Что дальше

* [Ответственное раскрытие](/ru/bezopasnost/responsible-disclosure.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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.rome.builders/ru/bezopasnost/known-limitations.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
