> 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/nachalo-raboty/key-concepts.md).

# Ключевые понятия

Основная терминология Solana и Rome EVM для разработчиков — программы, аккаунты, PDA, CPI, SPL-токены и атомарное vs. итеративное выполнение.

Основные термины и концепции для разработки на протоколе Rome.

## Понятия Solana

**Программа** — Аналог смарт-контракта в Solana. Программы — это бессостоя́тные исполняемые модули, развернутые в сети. Rome EVM сам по себе является программой Solana.

**Аккаунт** — Все состояние в Solana хранится в аккаунтах. У каждого аккаунта есть владелец (программа), баланс (лампорты) и данные. В отличие от Ethereum, код и состояние хранятся в разных аккаунтах.

**PDA (адрес, производный от программы)** — Детерминированный адрес, полученный из seed-ов и идентификатора программы. PDA позволяют программам «владеть» аккаунтами без приватного ключа. Rome использует PDA для сопоставления Ethereum-адресов с аккаунтами Solana.

**CPI (вызов между программами)** — Один вызов программы Solana другой программе в рамках одной транзакции. Именно так контракты Rome EVM взаимодействуют с Jupiter, Kamino, SPL Token и другими программами Solana.

**SPL Token** — Стандартная токен-программа Solana. Аналог ERC-20 в Ethereum. Все взаимозаменяемые токены в Solana (USDC, SOL и т. д.) являются SPL-токенами.

**Token-2022** — Токен-программа SPL следующего поколения с расширениями, такими как Transfer Hooks, Confidential Transfers и Permanent Delegates.

**Transfer Hook** — Расширение Token-2022, которое вызывает программу при каждом `transfer_checked` вызове.

**ATA (ассоциированный токен-аккаунт)** — Детерминированный токен-аккаунт для пары кошелек + mint. У каждого пользователя есть один ATA на каждый токен, которым он владеет.

**Лампорты** — Наименьшая единица SOL. 1 SOL = 1 000 000 000 лампортов (10^9).

**Единицы вычислений (CU)** — Аналог газа Ethereum в Solana. У каждой транзакции есть бюджет вычислений (по умолчанию \~200 тыс. CU, максимум \~1,4 млн CU). Операции потребляют CU.

## Концепции Rome

**Программа Rome EVM** — Программа Solana, содержащая интерпретатор байткода EVM. Развернута под определенным идентификатором программы для каждой среды.

**ID цепочки** — Каждому приложению в Rome назначается свой chain ID EVM. Это создает изолированные среды EVM, использующие одно и то же базовое состояние Solana.

**Атомарное выполнение (VmAt)** — EVM-транзакция, выполняемая полностью в рамках одной транзакции Solana. Используется для большинства операций.

**Итеративное выполнение (VmIt)** — EVM-транзакция, разделенная на несколько транзакций Solana, где каждый шаг упаковывает столько opcode-ов, сколько помещается в бюджет вычислений одной транзакции Solana (адаптивно, а не фиксированным количеством). Используется для ресурсоемких операций, таких как pairing на BN254.

**Аккаунт-холдер** — On-chain буфер, который хранит крупные EVM-транзакции (до 80 КБ), превышающие лимит размера транзакции Solana (v1) в 4 КБ. Управляется SDK прозрачно.

**StateHolder** — On-chain аккаунт, который хранит сериализованное состояние VM между итеративными шагами выполнения.

**Rome Proxy** — JSON-RPC-сервер (порт 9090), который преобразует вызовы Ethereum API в транзакции Solana. К нему подключаются MetaMask и Hardhat.

**Hercules** — Индексатор блоков, который отслеживает события Rome EVM в Solana и формирует данные блоков, совместимые с Ethereum.

**Плательщик** — Пара ключей Solana, которая подписывает и оплачивает транзакции Solana от имени пользователей EVM. Управляется Proxy через пулы плательщиков.

## Концепции токенов

**SPL\_ERC20 / SPL\_ERC20\_cached** — Контракты-обертки ERC-20, представляющие SPL-токен внутри Rome EVM. Для кошелька обертка считывает баланс напрямую из базового аккаунта SPL-токена. Токены, удерживаемые контрактом, находятся в собственном эскроу-аккаунте обертки и отслеживаются в хранилище обертки (см. [Интеграция программы Solana](/ru/rukovodstva-dlya-razrabotchikov/integrate-solana-program.md)). Сегодня фабрика разворачивает кешированную версию.

**ERC20SPLFactory** — Контракт-фабрика, который разворачивает обертки для любого SPL-токена.

**Реестр** — Канонические обертки, gas-токены и настройки моста курируются вне сети в [rome-protocol/registry](https://github.com/rome-protocol/rome-registry); on-chain-контракта реестра токенов не существует. Это позволяет сопоставлять каждый актив с единственным каноническим SPL mint.

## Прекомпиляции

**Стандартные Ethereum-препкомпайлы** — ecrecover (0x01), SHA-256 (0x02), RIPEMD-160 (0x03), identity (0x04), modexp (0x05), BN254 ecAdd/ecMul/ecPairing (0x06–0x08), Blake2f (0x09).

**Системный препкомпайл** (`0xFF...07`) — извлечение PDA и преобразование из Solidity в base58.

**Препкомпайл CpiProgram** (`0xFF...08`) — Межпрограммный вызов (`invoke` / `invoke_signed`) плюс сокращения для чтения из другого состояния.

**Препкомпайл HelperProgram** (`0xFF...09`) — создание ATA/PDA, переводы SPL и конвертация gas ↔ lamports; основная поверхность для SPL-операций, подписанных пользователем через PDA.

**Препкомпайл Withdraw** (`0x42...16`) — вывод SOL или SPL-токенов из EVM обратно в Solana.

Семейство cached-track (`0xff…04/05/06/0b`) повторяет их для чтений, эффективных по CU; контракт последовательно использует одну ветку.

## Типы транзакций

**RheaTx** — Одна EVM-транзакция в одном роллапе. Самый распространенный тип.

**RemusTx** — Несколько EVM-транзакций в разных роллапах, выполняемых атомарно. Если хотя бы одна транзакция завершается сбоем, все откатываются.

**RomulusTx** — Комбинация EVM-транзакций и нативных инструкций Solana в одной атомарной операции. Самый мощный тип — сочетайте Solidity и Solana в одной транзакции.

## Что дальше

* [Модель выполнения](/ru/klyuchevye-ponyatiya/execution-model.md) — подробный разбор того, как EVM-транзакции выполняются в Solana
* [Совместимость токенов](/ru/klyuchevye-ponyatiya/token-interop.md) — как взаимодействуют токены ERC-20 и SPL
* [Ограничения](/ru/klyuchevye-ponyatiya/constraints.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/nachalo-raboty/key-concepts.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.
