For the complete documentation index, see llms.txt. This page is also available as Markdown.

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

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

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

Понятия Solana

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

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

PDA (адрес, производный от программы) — Детерминированный адрес, полученный из сидов и идентификатора программы. 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).

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

Понятия Rome

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

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

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

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

Счёт-буфер — Ончейн-буфер, который хранит крупные EVM-транзакции (до 80 КБ), превышающие лимит размера транзакции Solana в 1 232 байта. Управляется SDK прозрачно.

StateHolder — Ончейн-счёт, который хранит сериализованное состояние 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-токена — отдельного состояния нет. Сегодня фабрика развёртывает кэшированную версию.

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

Реестр — Канонические обёртки, газовые токены и настройки моста курируются вне цепочки в rome-protocol/registry; в блокчейне нет контракта реестра токенов. Это удерживает каждый актив привязанным к единственному каноническому 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 и преобразование в base58 из Solidity.

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

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

Контракт вывода (0x42...16) — вывод SOL или SPL-токенов из EVM обратно в Solana.

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

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

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

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

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

Что дальше

Последнее обновление

Это было полезно?