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

Интероперабельность токенов

Как ERC-20 и SPL-токены в Rome представляют собой один и тот же базовый аккаунт.

Rome представляет ERC-20-токен и лежащий в его основе SPL-токен как один общий аккаунт. На этой странице объясняется, как токены работают в EVM и Solana.

Модель общего состояния

Rome не блокирует токены на одной стороне и не выпускает обёрнутые копии на другой. ERC-20-токен в Rome — это прозрачная обёртка над SPL-аккаунтом токена в Solana — баланс ERC-20 равен балансу SPL.

An ERC-20 wrapper over the same SPL token account on Solana
  • Без задержки моста — баланс ERC-20 равен балансу SPL

  • Без фрагментации ликвидности — DeFi по обе стороны видит одни и те же токены

  • Без риска моста — нет отдельного эскроу, которым можно злоупотребить

Пути импорта ниже используют @rome-protocol/rome-solidity. Публикация в npm ещё не завершена; сегодня вы используете их из публичного rome-solidity репозитория (git-зависимость или скопированные интерфейсы). Интерфейсы precompile находятся в contracts/interface.sol.

Контракт-обёртка

SPL_ERC20 (и его вариант на cached-track SPL_ERC20_cached, который фабрика сегодня разворачивает), предоставляет полный интерфейс ERC-20 поверх SPL mint:

  • balanceOf() — считывает баланс ATA пользователя из Solana

  • transfer() — перемещает токены в Solana

  • approve() / allowance() — использует хранилище EVM (в SPL нет разрешений в стиле EVM)

  • totalSupply() — считывает предложение SPL mint

Фабрика

ERC20SPLFactory разворачивает обёртку для любого SPL mint:

Актуальные адреса фабрик: Hadrian 0x86149124d74ebb3aa41a19641b700e88202b6285, Martius 0xd7aeeedca26cdd4d34eb7c21110af2e590a8c58a. Всегда сверяйтесь с реестром — это источник достоверных данных для развёрнутых адресов.

Канонические mint

В блокчейне нет контракта реестра токенов. Канонические обёртки и токены газа/моста курируются во внецепочечном rome-protocol/registry; обёртки без разрешений, созданные через add_spl_token_no_metadata обнаруживаются через ончейн TokenCreated событие. Это позволяет каждому активу соответствовать единственному каноническому SPL mint без фрагментации ликвидности.

Операции SPL из Solidity

Для SPL-примитивов, подписываемых пользователем через PDA, используйте HelperProgram precompile (0xFF…09) — создание ATA, переводы SPL и конвертация gas↔lamports:

transfer_spl имеет несколько перегрузок (включая вариант delegate для transferFrom потоков); см. interface.sol для точных сигнатур. На cached-track эквивалентные операции находятся в ISplCached (0xFF…05) и IAssociatedSplCached (0xFF…06). Контракт последовательно использует один вариант.

Внесение и вывод

  • В EVM — на стороне SPL баланс зачисляется на ATA пользователя, принадлежащий PDA; обёртка ERC-20 немедленно отражает этот баланс. Входящие кросс-чейн переводы рассчитываются без доверия через подписанное пользователем разрешение на мосту.

  • В Solana — вызовите Withdraw precompile (0x42…16): withdraw_to_pda / withdraw_to_ata перемещает токены из PDA пользователя обратно в Solana. Путь wrap-gas-to-SPL — withdraw_to_ata.

Газовый токен

У каждой цепочки есть собственный газовый токен — любой SPL-токен, цена которого определяется через пул Meteora DAMM (v1 или v2, настраивается). Публичные цепочки (Martius, Hadrian) используют USDC. Универсального токена газа по умолчанию не существует.

Ограничения

  • Количество SPL-токенов представлено типом uint64 (макс. 18,446,744,073,709,551,615)

  • Разрешения используют хранилище EVM, а не делегатов Solana

  • Символы ERC-20-обёрток должны быть уникальными для каждой фабрики

Что дальше

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

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