Смарт-контракты 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 с жёстким потолком цены.