Transfer Hooks

Transfer Hooks Token-2022 позволяют программе выполнять пользовательскую логику при каждом переводе токенов. Rome позволяет смарт-контрактам Solidity выступать в роли transfer hooks — привнося программируемость EVM в стандарт токенов Solana.

Как работают Transfer Hooks

Token-2022 (токенная программа Solana следующего поколения) поддерживает расширение под названием Transfer Hook. Когда для mint настроен transfer hook:

  1. Каждый только вызов для этого mint инициирует назначенную hook-программу

  2. Hook получает сведения о переводе (отправитель, получатель, сумма, mint)

  3. Hook может одобрить или отклонить перевод

  4. Если hook отклоняет (revert), весь перевод завершается неудачей

Transfer Hooks на базе EVM

В Rome контракт Solidity может выступать в роли обработчика transfer hook:

Пользователь обменивает токен на Jupiter (Solana)

Jupiter вызывает transfer_checked

Token-2022 вызывает назначенную hook-программу

Hook-программа = Rome Meta-Hook Router

Router направляет вызов в контракт Solidity через CPI → Rome EVM

Контракт Solidity выполняет логику соответствия требованиям

Успех: перевод завершается
Ошибка: весь перевод откатывается

Это означает каждый SPL-перевод токенов в Solana — будь то через Jupiter, Raydium, Phantom или любой кошелёк — может запускать логику соответствия требованиям EVM.

Пример: hook для KYC-верификации

Ключевые ограничения

только только. Hooks срабатывают только на только вызовах, а не на обычных transfer. Любая интеграция, использующая токены Rome, должна использовать только для обеспечения соблюдения требований.

Требуется односостоянийный режим. Transfer hooks выполняются внутри транзакций Solana. OP-Geth из этого контекста недоступен. Вся логика EVM-hook должна выполняться в односостоянийном (proxy) режиме.

Бюджет глубины CPI. Вызов hook расходует глубину CPI:

После цепочки вызова hook остаётся только один уровень CPI.

Бюджет вычислений. EVM-hooks потребляют значительное количество CU:

  • Базовые накладные расходы на перевод: 100 000 CU

  • На каждый EVM sub-hook: 200 000 CU

  • Рекомендуемый бюджет для EVM-перевода: 800 000 CU

Белый список DeFi-протоколов

Хранилища DeFi-протоколов (Jupiter, Kamino, Orca, bridge vault Rome) требуют особой обработки. Эти хранилища получают и отправляют токены в рамках обычных операций — их блокировка нарушит работу DeFi.

Контракт соответствия поддерживает protocolWhitelist mapping. Адреса из белого списка (хранилища, PDA для известных протоколов) одобряются без KYC-проверок. Это позволяет проводить переводы токенов через DeFi-протоколы, при этом сохраняя контроль соответствия требованиям для переводов конечных пользователей.

Модель адресов

Transfer hooks видят EVM-адреса, производные от Rome, а не Ethereum-адреса. Когда пользователь Solana взаимодействует с токеном, подключённым к Rome-hook, его Solana pubkey сопоставляется с EVM-адресом через derivation PDA. Rome Solidity SDK предоставляет утилиты для такого сопоставления.

Связанные страницы

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

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