Ключевые концепции
Основная терминология и концепции для построения на Rome Protocol.
Понятия Solana
Программа — Эквивалент смарт-контракта в Solana. Программы — это безсостоянийные исполняемые файлы, развернутые в сети. Rome EVM сам по себе является программой Solana.
Аккаунт — Всё состояние в Solana хранится в аккаунтах. У каждого аккаунта есть владелец (программа), баланс (лампорты) и данные. В отличие от Ethereum, код и состояние хранятся в отдельных аккаунтах.
PDA (адрес, выведенный программой) — Детерминированный адрес, полученный из seed-значений и идентификатора программы. PDA позволяют программам «владеть» аккаунтами без закрытого ключа. Rome использует PDA для сопоставления адресов Ethereum с аккаунтами Solana.
CPI (вызов между программами) — Когда одна программа Solana вызывает другую в рамках одной и той же транзакции. Именно так контракты Rome EVM взаимодействуют с Jupiter, Kamino, SPL Token и другими программами Solana.
Токен SPL — Стандартная токен-программа Solana. Эквивалент ERC-20 в Ethereum. Все взаимозаменяемые токены в Solana (USDC, SOL и т. д.) являются токенами SPL.
Token-2022 — Токен-программа SPL нового поколения с расширениями, такими как Transfer Hooks, Confidential Transfers и Permanent Delegates.
Transfer Hook — Расширение Token-2022, которое вызывает программу при каждом переводе токена. Rome позволяет смарт-контрактам EVM выступать в роли transfer hook.
ATA (ассоциированный токен-аккаунт) — Детерминированный токен-аккаунт для пары кошелёк + mint. У каждого пользователя есть один ATA на каждый удерживаемый им токен.
Лампорты — Наименьшая единица SOL. 1 SOL = 1 000 000 000 лампортов (10^9).
Единицы вычисления (CU) — Эквивалент Ethereum gas в Solana. У каждой транзакции есть бюджет вычислений (по умолчанию около 200 тыс. CU, максимум около 1,4 млн CU). Операции потребляют CU.
Понятия Rome
Программа Rome EVM — Программа Solana, содержащая интерпретатор байткода EVM. Развёртывается с конкретным идентификатором программы для каждой среды.
ID сети — Каждому приложению в Rome назначается собственный EVM chain ID. Это создаёт изолированные EVM-среды, использующие одно и то же базовое состояние Solana.
Атомарное выполнение (VmAt) — Транзакция EVM, выполняемая полностью в рамках одной транзакции Solana. Используется для большинства операций.
Итеративное выполнение (VmIt) — Транзакция EVM, разбитая на несколько транзакций Solana, выполняющая примерно 500 опкодов за шаг. Используется для ресурсоёмких операций, таких как 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.
Rhea — Шлюз mempool, который пересылает транзакции из OP-Geth в Solana (используется только в режиме OP-Geth).
Плательщик — Пара ключей Solana, которая подписывает и оплачивает транзакции Solana от имени пользователей EVM. Управляется Proxy через пулы плательщиков.
Понятия токенов
ERC20SPL — Контракт-обёртка ERC-20, представляющая токен SPL внутри Rome EVM. Обёртка читает балансы напрямую из базового аккаунта токена SPL — без отдельного состояния.
ERC20SPLFactory — Контракт-фабрика, который развёртывает обёртки ERC20SPL для любого токена SPL при первом мостовом переводе.
Единый реестр канонических токенов — Сопоставляет каждый актив с одним каноническим mint SPL, чтобы предотвратить фрагментацию представлений (например, USDC всегда сопоставляется с нативным mint SPL от Circle).
Пре-компиляции
Стандартные Ethereum-прекомпиляции — ecrecover (0x01), SHA-256 (0x02), RIPEMD-160 (0x03), identity (0x04), BN254 ecAdd/ecMul/ecPairing (0x06-0x08), Blake2f (0x09).
Пре-компиляция System Program (0xFF...07— получение PDA, преобразование base58, создание аккаунтов из Solidity.
Пре-компиляция CPI (0xFF...08— Межпрограммный вызов из Solidity. Вызывайте любую программу Solana с invoke() или invoke_signed().
Пре-компиляция Withdraw (0x42...16— Вывод SOL или токенов SPL из EVM обратно в Solana.
Типы транзакций
RheaTx — Одна транзакция EVM в одном роллапе. Наиболее распространённый тип.
RemusTx — Несколько транзакций EVM в разных роллапах, выполняемых атомарно. Если какая-либо транзакция не удаётся, откатываются все.
RomulusTx — Комбинированные транзакции EVM + нативные инструкции Solana в одной атомарной операции. Самый мощный тип — сочетание Solidity и Solana в одной транзакции.
Режимы развертывания
Режим Single-State — Пользователи подключаются напрямую к Rome Proxy. Более простая настройка, меньшая задержка. Блоки EVM формируются Hercules и хранятся в PostgreSQL.
Режим OP-Geth — Пользователи подключаются к OP-Geth для полной совместимости с Ethereum RPC. Rhea мостит mempool в Solana. Hercules передаёт блоки в OP-Geth через Engine API.
Что дальше
Модель исполнения — подробный разбор того, как транзакции EVM выполняются в Solana
Взаимодействие токенов — как взаимодействуют токены ERC-20 и SPL
Ограничения — важные ограничения и границы
Последнее обновление
Это было полезно?