Интероперабельность токенов
Как ERC-20 и SPL-токены в Rome представляют собой один и тот же базовый аккаунт.
Rome представляет ERC-20-токен и лежащий в его основе SPL-токен как один общий аккаунт. На этой странице объясняется, как токены работают в EVM и Solana.
Модель общего состояния
Rome не блокирует токены на одной стороне и не выпускает обёрнутые копии на другой. ERC-20-токен в Rome — это прозрачная обёртка над SPL-аккаунтом токена в Solana — баланс ERC-20 равен балансу SPL.
Без задержки моста — баланс 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 пользователя из Solanatransfer()— перемещает токены в Solanaapprove()/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 — вызовите
Withdrawprecompile (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-обёрток должны быть уникальными для каждой фабрики
Что дальше
Адреса контрактов — precompile и адреса для каждой цепочки
Вызывать Solana из EVM — CPI и операции SPL из Solidity
Последнее обновление
Это было полезно?