DEX · Velocity

Смарт-контракты Velocity: программы, адреса, администрирование

Открытая кодовая база, новый деплой программы и тировая модель ключей

Velocity построен как полностью открытый on-chain протокол: монорепозиторий velocity-v1 опубликован на GitHub вместе с Rust-исходниками программы, TypeScript SDK и документацией миграции. Протокол унаследовал выверенную годами архитектуру Drift v2, но развёрнут как новая программа — с чистого листа, под новым адресом и с пересмотренной моделью привилегий.

Ниже — верифицированные mainnet-адреса программ и ключевые архитектурные факты для разработчиков и аналитиков.

Реестр верифицированных адресов (Solana mainnet)

Компонент Адрес Назначение
Velocity
Ядро протокола
vELoC1audYbSYVRXn1vPaV8Axoa9oU6BYmNGZZBDZ1P Перпетуальные рынки, кросс-маржа, спот-залог, страховые фонды
Velocity Vaults
Делегированные пулы
vAuLTsyrvSfZRuRB3XgvkPwNGgYSs9YRYymVebLKoxR Управляемые торговые vaults с долевым учётом
USDT (quote mint)
Расчётный актив
Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB Базовый залог и валюта расчёта PnL всех перпетуальных рынков
Drift (legacy)
Справочно
dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH Остановленная программа Drift; состояние в Velocity не переносилось

Служебная заметка для интеграторов: сид PDA глобального состояния переименован из drift_state в velocity_state. Все PDA-адреса (пользователи, рынки, хранилища) обязаны выводиться от нового программного ID — переиспользование адресов прежнего деплоя невозможно по определению.

Тировая модель админ-ключей

Главный архитектурный урок апрельского инцидента — концентрация привилегий в едином администраторе — решён разделением ролей. Вместо одного State.admin программа оперирует четырьмя уровнями ключей:

  • cold_admin — критичные и редко меняемые конфигурации: назначение получателя протокольных комиссий (protocolFeeRecipientPerp/Spot), структурные параметры. Ключ предполагается хранить в холодном контуре.
  • warm_admin — параметрическое управление рынками без права менять получателей выплат.
  • горячие ключи — операционные действия с высокой частотой (например, вывод протокольных комиссий через выделенный ключ FeeWithdraw).
  • pause_admin — экстренная остановка отдельных функций или протокола целиком.

Вывод протокольных комиссий дополнительно recipient-locked: средства из protocol_fee_pool уходят строго на адрес, зафиксированный cold_admin, а объём вывода не может превысить баланс пула — затронуть пользовательские депозиты технически невозможно. Механизм durable-nonce, позволивший атакующим получить подписи Security Council в апреле, из программы удалён полностью.

Инфраструктура оракулов: Pyth и Pyth Lazer

Ценообразование рынков опирается на Pyth (push-оракул) и Pyth Lazer — низколатентный сервис с доставкой цен в реальном времени. Поддержка Switchboard удалена: конфигурации с этим источником помечены устаревшими и не загружают цену. Для prelaunch-рынков, у которых ещё нет внешней спот-цены, используется внутренний оракул на базе mark-TWAP с жёстким потолком — самоссылающаяся конструкция, при которой фандинг поощряет возврат цены к устойчивому уровню и ограничивает пространство для манипуляций.

Каждый рынок также оперирует диапазоном доверия оракула и правилами санитизации TWAP-обновлений, привязанными к контрактовому тиру: чем рискованнее рынок, тем жёстче допустимый коридор расхождения цены.

Программа Velocity Vaults

Делегированные торговые пулы вынесены в отдельную программу vAuLT… с собственной SDK. Менеджер vault'а получает делегированные полномочия на торговый аккаунт, депозиторы — доли с защитой от размытия: watermark-механика profit share, hurdle rate, период выкупа (redeem period) и запрет на прямое изъятие средств менеджером в обычном классе vault'ов. Повышение комиссий менеджером возможно только через timelock длительностью не менее max(1 недели, 2× периода выкупа); понижение применяется немедленно.

Часто задаваемые вопросы

Переносятся ли адреса и аккаунты Drift на Velocity?

Нет. Velocity — совершенно новое развёртывание программы с собственным ID: каждый PDA-адрес (состояние, пользователи, рынки, хранилища) выводится от нового программного адреса, и никакое on-chain состояние из прежнего деплоя Drift не переносится. Даже сид одного служебного аккаунта переименован: drift_state стал velocity_state. Переиспользовать выведенные от старой программы адреса на Velocity нельзя.

Как защищены административные функции протокола?

Единый администратор Drift разделён на тиры: cold_admin (критичные конфигурации, включая назначение получателя протокольных комиссий), warm_admin, операционные горячие ключи и pause_admin для экстренной остановки. Вывод протокольных комиссий заблокирован за конкретным получателем и требует выделенного горячего ключа FeeWithdraw, а повышение комиссий в vaults проходит через timelock длительностью не менее недели.

Какие оракулы использует Velocity?

Ценовые потоки поставляют Pyth (push) и Pyth Lazer — низколатентный push-сервис Pyth. Поддержка Switchboard полностью удалена: рынки, сконфигурированные с устаревшим источником Switchboard, не загружают цену. Для prelaunch-рынков без внешней спот-цены используется внутренний оракул на базе mark-TWAP с жёстким потолком цены.

---