> 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/ecosystem.md).

# Экосистема и репозитории

Каждый публичный репозиторий Rome, что он представляет собой и как они сочетаются — карта для навигации по системе.

Публичная поверхность Rome — это набор репозиториев: несколько **основа** пакетов, на которых вы строите, генератор шаблона, эталонные приложения для обучения и два сервиса, к которым обращается ваше приложение. Эта страница — карта: что представляет собой каждый репозиторий и как они сочетаются.

Два соседних репозитория отвечают на разные вопросы, и эта страница ссылается на оба вместо того, чтобы повторять их:

* [Архитектура](/ru/nachalo-raboty/architecture.md) объясняет **протокол** — как EVM работает внутри программы Solana.
* Каждый репозиторий поставляется с **`AGENTS.md`** (например, [rome-sdk-ts/AGENTS.md](https://github.com/rome-protocol/rome-sdk-ts/blob/main/AGENTS.md)) который маршрутизирует по **тому, с чего вы начинаете** (контракт Solidity, программа Solana, с нуля, из домашней цепочки) к тому примеру, который ближе всего к вашему случаю.

Эта страница — промежуточный уровень: **вся поверхность** и как части связаны между собой.

## Поверхность вкратце

### Основа — стройте на этом

| Репозиторий                                                     | Что это                                                                                                                                                                         | Используйте, когда                                           |
| --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| [rome-registry](https://github.com/rome-protocol/rome-registry) | `@rome-protocol/registry` — только для чтения, сгенерированная проекция актуальных фактов цепочки (идентификаторы, RPC, адреса, mint'ы токенов, program id, oracle feeds, ALT). | Вам нужен реальный факт цепочки — никогда не хардкодьте его. |
| [rome-sdk-ts](https://github.com/rome-protocol/rome-sdk-ts)     | `@rome-protocol/sdk` — путь записи TypeScript: `submitRomeTx` + расчет размера комиссии, оба канала, кодировщики PDA/ATA + CPI, привязки к precompile, клиент `/bridge` клиент. | Вы пишете код приложения или фронтенда.                      |
| [rome-solidity](https://github.com/rome-protocol/rome-solidity) | Интерфейсы precompile Solidity, обёртки SPL/ERC-20 и адаптеры oracle — набор инструментов на стороне контракта.                                                                 | Вы пишете контракты.                                         |

Названия `@rome-protocol/…` выше — это имена пакетов, но сами пакеты не публикуются в npm. Устанавливайте их из GitHub (команды приведены в каждом разделе под [Слой основы, крупным планом](#the-foundation-layer-up-close)); пути импорта в вашем коде остаются теми же.

### роллапы Rome ZK EVM

| Репозиторий                                                     | Что это                                                      | Используйте, когда                                          |
| --------------------------------------------------------------- | ------------------------------------------------------------ | ----------------------------------------------------------- |
| [solana-zk-evm](https://github.com/rome-protocol/solana-zk-evm) | программы ZK rollup, узел, prover и документация оператора.  | Вы запускаете EVM-цепочку, которая урегулируется на Solana. |
| [rome-zk-guest](https://github.com/rome-protocol/rome-zk-guest) | Источник batch guest, собранный для генезиса каждой цепочки. | Вы собираете guest и запрашиваете его verification key.     |

### Canton ZK EVM

| Репозиторий                                                                                                             | Что это                                                                                                          | Используйте, когда                                                                                                                              |
| ----------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| [canton-zk-evm](https://github.com/rome-protocol/canton-zk-evm/blob/a84e84e439a5cc669c0ae61facf7c8c995d9d564/README.md) | Ostia, ранний релиз Canton zkEVM, который урегулирует доказанные блоки EVM и действия Canton в одной транзакции. | Вы запускаете локальную демонстрацию или изучаете её gateway и проверки доказательств. См. [Canton ZK EVM](/ru/canton-zk-evm/canton-zk-evm.md). |

### Референсные приложения — учитесь на примерах

| Репозиторий                                                             | Что это                                                                                                                            | Используйте, когда                                            |
| ----------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- |
| [rome-dex](https://github.com/rome-protocol/rome-dex)                   | AMM с двумя каналами — нативный пул Solana с тонким EVM-роутером.                                                                  | Открытие другого канала; **native-core** пример.              |
| [aerarium](https://github.com/rome-protocol/aerarium)                   | Кредитование с двумя каналами — ядро Comet на Solidity, к которому пользователи Solana обращаются через синтетический отправитель. | Открытие другого канала; **ядро Solidity** пример.            |
| [cardo](https://github.com/rome-protocol/cardo)                         | Пользователи EVM, управляющие dApps Solana (swap/stake/lend/perps) через CPI.                                                      | Практический пример приложения Solana через CPI для изучения. |
| [appia](https://github.com/rome-protocol/appia)                         | DeFi между VM с акцентом на позиции; пользователи обращаются к нему со своей домашней цепочки.                                     | Приложение **из домашней цепочки** .                          |
| [rome-aave-v3-demo](https://github.com/rome-protocol/rome-aave-v3-demo) | Поставка/заём/погашение Aave v3, развёрнуто без изменений.                                                                         | Полноценное EVM-приложение, работающее как есть.              |

### Форки контрактов — известные протоколы, развёрнутые в Rome

| Репозиторий                                                                       | Что это                           | Используйте, когда             |
| --------------------------------------------------------------------------------- | --------------------------------- | ------------------------------ |
| [compound-on-rome-comet](https://github.com/rome-protocol/compound-on-rome-comet) | Рынок денег Compound III (Comet). | Форк известного EVM-протокола. |
| [rome-aave-v3](https://github.com/rome-protocol/rome-aave-v3)                     | Форк контрактов Aave v3.          | Форк известного EVM-протокола. |

### Сервисы — ваше приложение вызывает их

| Репозиторий                                                                 | Что это                                                                                         | Используйте, когда                                 |
| --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -------------------------------------------------- |
| [rome-bridge-api](https://github.com/rome-protocol/rome-bridge-api)         | Внецепочечный оркестратор + спонсор комиссий для ончейн-моста. Не хранит ключей.                | Пополнение кошелька или поток из домашней цепочки. |
| [rome-oracle-gateway](https://github.com/rome-protocol/rome-oracle-gateway) | Ценовые фиды Solana (Pyth, Switchboard), доступные EVM через Chainlink `AggregatorV3Interface`. | Вам нужен ценовой фид.                             |

### Шаблонизатор — начните здесь

| Репозиторий                                                         | Что это                                                                                                                                                                     | Используйте, когда          |
| ------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------- |
| [create-rome-app](https://github.com/rome-protocol/create-rome-app) | `npx github:rome-protocol/create-rome-app` — создает шаблон приложения с двумя каналами, заранее подключенный к registry + SDK, с проверкой финансирования в обоих каналах. | Начинаете новое приложение. |

## Как они сочетаются

```mermaid
flowchart TD
    REG["rome-registry — актуальные факты цепочки"]
    SDK["rome-sdk-ts — запись, CPI, bridge client"]
    SOL["rome-solidity — интерфейсы precompile, обёртки SPL, адаптеры oracle"]
    CRA["create-rome-app — генератор шаблона"]
    APP["ваше приложение — фронтенд + контракты"]
    BAPI["rome-bridge-api — внецепочечный оркестратор, не хранит ключей"]
    OG["rome-oracle-gateway — ценовые фиды Solana"]

    CRA -->|создает шаблон, предварительно подключен| APP
    REG -->|факты, никогда не хардкодятся| APP
    SDK -->|путь записи и CPI| APP
    SOL -->|импортируется вашими контрактами| APP
    APP -->|SDK /bridge client| BAPI
    APP -->|читает через AggregatorV3Interface| OG
    OG -.->|адаптеры находятся в| SOL
    CRA -.->|подключает| REG
    CRA -.->|подключает| SDK
```

Основа состоит из трех базовых компонентов и генератора шаблона:

* [**rome-registry**](https://github.com/rome-protocol/rome-registry) — это единый источник актуальных фактов. [**rome-sdk-ts**](https://github.com/rome-protocol/rome-sdk-ts) — это путь записи — и его `/bridge` подпуть — это клиент, который ваше приложение использует для взаимодействия с `rome-bridge-api`. [**rome-solidity**](https://github.com/rome-protocol/rome-solidity) — это то, что импортируют ваши контракты (и форки); адаптеры oracle, `rome-oracle-gateway` развертываются там же. Эти три части независимы друг от друга — выбирайте те, которые нужны вашему приложению.
* [**create-rome-app**](https://github.com/rome-protocol/create-rome-app) связывает первые две части для нового приложения, чтобы новый проект уже с самого начала читал registry и записывал через SDK.

Референсные приложения — исключение, о котором стоит знать: **они были созданы до выделения пакетов.** cardo использует пакет registry; appia проецирует registry в статический JSON на этапе сборки; и оба вендорят свой путь записи вместо импорта SDK. Читайте их, чтобы понять шаблоны — но новому **новому** приложению следует начинать с `create-rome-app` + пакетов, а не с клонирования приложения.

## Навигация по тому, что вам нужно

* **Актуальный факт цепочки** (id, address, mint, program id) → [rome-registry](https://github.com/rome-protocol/rome-registry). Никогда не хардкодьте.
* **Написание кода приложения** (запись, вызов CPI, мост) → [rome-sdk-ts](https://github.com/rome-protocol/rome-sdk-ts); справка в [Rome SDK](/ru/produkty/rome-sdk.md).
* **Написание контрактов** → [rome-solidity](https://github.com/rome-protocol/rome-solidity); см. [Развертывание Solidity-контрактов](/ru/rukovodstva-dlya-razrabotchikov/deploy-solidity.md).
* **Вызов программы Solana из Solidity-контракта** → precompile для CPI в [rome-solidity](https://github.com/rome-protocol/rome-solidity) (`interface.sol`); [cardo](https://github.com/rome-protocol/cardo) — практический пример.
* **Рабочий пример** AMM, кредитования, CPI или приложения из домашней цепочки → приведенные выше референсные приложения; у каждого репозитория `AGENTS.md` — маршрут по исходной точке.
* **Создание шаблона нового приложения** → [create-rome-app](https://github.com/rome-protocol/create-rome-app).
* **Ценовой фид** → [rome-oracle-gateway](https://github.com/rome-protocol/rome-oracle-gateway) (см. [портал Oracle Gateway](/ru/prilozheniya-v-rome/oracle-gateway.md)).
* **Пользователи в другой цепочке** → [Из домашней цепочки](/ru/rukovodstva-dlya-razrabotchikov/from-home.md) + [rome-bridge-api](https://github.com/rome-protocol/rome-bridge-api).
* **Определение, какая сторона содержит вашу логику** → [Выберите свое ядро](/ru/klyuchevye-ponyatiya/choose-your-core.md).

## Слой основы, крупным планом

### rome-registry — актуальные факты, публичные по конструкции

Реестр **генерируется** из внутреннего источника Rome: allowlist публикует только то, что должно быть публичным, **заменяет** внутренние endpoints на их публичные эквиваленты и **по умолчанию отклоняет** все остальное — так что по конструкции он безопасен для публикации. Для каждой цепочки он публикует `chain.json` / `tokens.json` / `contracts.json` / `oracle.json` / `bridge.json` / `alts.json`, а также Solana `программы` и развертывания приложений по каждому протоколу.

Установите из GitHub, закрепив на теге релиза: `npm install github:rome-protocol/rome-registry#v0.2.0`. Вы читаете его через геттеры — `getChain`, `getTokens`, `getContracts`, `getOracle`, `getBridge`, `getAlts`, и `getPrograms(network)` (program id привязаны к сети, а не к chain id). Пакет — обычный ESM (сегодня без встроенных TypeScript-типов).

Два момента, которые нужно знать перед подключением:

* **`getTokens()` не возвращает `assetRef`.** Чтобы найти обёртку токена, сопоставьте его по **mint** (`mintId`) — например, обёртка gas token — это запись, которая разделяет с ним mint.
* **Он читает JSON с диска (`node:fs`) — он не подходит для браузера.** В веб-приложении проецируйте необходимые значения в статический JSON-файл на этапе сборки и импортируйте его в клиент. (Именно так поступают `create-rome-app` и appia.)

Адреса контрактов возвращаются как список версий по каждому контракту; выберите ту, у которой `status` — `активен`. [Чтение списка контрактов](/ru/spravochnik/contract-addresses.md#reading-the-contracts-list) показывает, как это сделать. Факты, которые ваше приложение не читает вживую, также доступны в [справочнике Contract Addresses](/ru/spravochnik/contract-addresses.md) .

### rome-sdk-ts — путь записи, оба канала

Установите из GitHub: `npm install github:rome-protocol/rome-sdk-ts#v0.4.0`.

`@rome-protocol/sdk` (v0.4.0) оборачивает всё необходимое для записи в Rome, чтобы вам не приходилось вручную собирать calldata или комиссии:

* **`submitRomeTx`** — путь записи для EVM-канала: рассчитывает gas на основе `eth_estimateGas` (с padding, с запасным потолком, если оценка завершается ошибкой) и предоставляет комиссии EIP-1559.
* **`submitRomeTxV1`** — то же самое, но для **кошелька Solana** управляющего вашим EVM-приложением: одна транзакция Solana v1 на каждый вызов, два запроса к кошельку. Синтетический отправитель не хранит ничего в состоянии; `buildFundLeg`/`buildSweepLeg` перемещают стоимость внутрь и наружу как ERC-20 (`wUSDC`), **не** нативный `msg.value`; обычные инструкции Solana вокруг вызова (fund leg, создание token-account кошелька перед sweep) проходят через `submitSolanaInstructionsV1` тоже как транзакции v1. `submitRomeTxSolanaLane` — более ранний путь, который собирает legacy-транзакцию Solana в клиенте и автоматически создает новый synthetic (`create_pda`) при первом использовании.
* **Вывод производных PDA/ATA, CPI `invoke`/`invoke_signed` кодировщики, привязки к precompile**, а также **`/bridge`** подпуть (`@rome-protocol/sdk/bridge`) — клиент моста с приоритетом на котировки.

Полное API + примеры: [Rome SDK](/ru/produkty/rome-sdk.md), а также руководства [Вызов Solana из EVM](/ru/rukovodstva-dlya-razrabotchikov/call-solana-from-evm.md), [Вызов EVM из Solana](/ru/rukovodstva-dlya-razrabotchikov/call-evm-from-solana.md), и [Создание приложения с двумя каналами](/ru/rukovodstva-dlya-razrabotchikov/dual-lane-app.md).

### rome-solidity — набор инструментов на стороне контракта

Устанавливайте из GitHub, а не из npm. С npm или Hardhat: `npm install github:rome-protocol/rome-solidity`. С Foundry: `forge install rome-protocol/rome-solidity`, затем добавьте remapping `@rome-protocol/rome-solidity/=lib/rome-solidity/` в `foundry.toml` (в `[profile.default]`, как `remappings = [...]`), чтобы `@rome-protocol/rome-solidity/contracts/interface.sol` разрешался. Имя пакета в `package.json` — `@rome-protocol/rome-solidity`, так что тот же путь импорта работает в обоих случаях.

Что импортируют ваши контракты:

* **`contracts/interface.sol`** — интерфейсы precompile, привязанные к своим адресам: **CPI** `ICrossProgramInvocation` (`0xFF…08`), **Helper** `IHelperProgram` (`0xFF…09`, создание ATA/PDA, переводы SPL, gas↔lamports), **Withdraw** `IWithdraw` (`0x42…16`), и **System** (`0xFF…07`). Оптимизированное по газу **кэшированное** семейство также находится здесь; контракт использует один из треков последовательно. Полная таблица адресов: [справочнике Contract Addresses](/ru/spravochnik/contract-addresses.md).
* **Обёртки SPL/ERC-20** — `SPL_ERC20` (на основе CPI) и `SPL_ERC20_cached` (кэшированный трек, используется в devnet); любой mint SPL уже является ERC-20 через них.
* **Адаптеры oracle** (`contracts/oracle/`) — адаптеры Pyth/Switchboard `rome-oracle-gateway` развертываются, читаются через `IAggregatorV3Interface`.
* Практические примеры в `contracts/examples/`.

Раздел Solidity SDK [Rome SDK](/ru/produkty/rome-sdk.md) показывает шаблоны импорта и привязки precompile в коде.

## Что дальше

* [Выберите свое ядро](/ru/klyuchevye-ponyatiya/choose-your-core.md) — какая сторона содержит вашу логику.
* [Быстрый старт](/ru/nachalo-raboty/quickstart.md) — разверните свой первый контракт.
* [create-rome-app](https://github.com/rome-protocol/create-rome-app) — создайте шаблон приложения с двумя каналами.
* У каждого репозитория `AGENTS.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/ecosystem.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.
