Безопасность
Обзор безопасности
Внутренний обзор исходного кода контрактов. Сторонний аудит контрактов ещё не проводился, и эта страница его не заменяет.
Что проверялось
Исходный код Exchange и его административного модуля, подключаемые библиотеки, логика ордеров, выплат и ликвидаций, пополнение и вывод, сеансовые ключи, пакетный исполнитель, прокси пополнения, стейкинг, токен и его награды. Код читали в том виде, в каком он находится в коммите e456c4d (2026-11-06). Офчейн-сервисы, приложения и скрипты развёртывания в объём работы не входили.
Итог
Обзор не обнаружил дефектов критической или высокой серьёзности в коде контрактов. Каждый путь, по которому движутся средства, прочитан построчно и выдержал проверку. Последним добавленным кодом (стейкинг, токен и закрытие из кошелька) занимались меньше всего; его прочитали целиком, а учёт в стейкинге дополнительно протестировали, как описано ниже.
Что выдержало проверку
- Контроль доступа. Каждая функция, меняющая состояние, проверяет вызывающего прежде, чем что-либо изменить. Административный модуль нельзя использовать отдельно. От владения нельзя отказаться, а обновить контракт может только владелец.
- Подписи. Типизированные сообщения содержат сеть и проверяющий контракт, отклоняют изменяемые подписи, используют каждый nonce один раз и только после проверки подписи, а также истекают. Сеансовый ключ не может подписать сообщение, предназначенное кошельку, кошелёк не может подписать сделку, а отзыв всех ключей разом работает.
- Движение средств. Учёт между наличными пула, отслеживаемым пулом, очередью выплат и боковым ведром остаётся согласованным. Непроверяемой арифметики нет, сужающие преобразования проверяются, а каждое округление идёт в ту сторону, которую задаёт замысел. Комиссии ограничены сверху, а при выводе баланс уменьшается до отправки действия в Hyperliquid.
- Повторный вход. Каждая функция, двигающая средства, защищена от повторного входа, а состояние записывается до внешних вызовов. Хук токена работает с фиксированным лимитом газа, поэтому вызывающий не может заставить его отложиться.
- Адреса пополнения. Прокси пополнения может отправлять действия HyperCore только через Exchange, а его владелец может вывести из него лишь токены EVM и нативный HYPE. Способ получения адреса не изменился.
- Шаблоны кода. Нет
selfdestruct,tx.origin,.transfer,.sendиcallcode. Единственные delegatecall идут в административный модуль и подключённые библиотеки. - Сгорающий токен. BACK ставится в стейкинг в момент начисления и сгорает через 7 дней, в ближайшую полночь UTC. Отсчёт не начинается, пока учётный LP впервые не достигнет $500,000. День истечения каждой партии, ленивый обход партий аккаунта, глобальное расписание, повторно проигрываемые минты и начало обратного отсчёта соответствуют этому замыслу, который описан в разделе Награды и получение.
Как тестировался учёт в стейкинге
Отдельную модель написали только по опубликованным правилам, не читая арифметику контракта. Случайные последовательности минтов (включая запоздалые повторы), начала обратного отсчёта, распределений, получений наград и скачков времени (за секунду до полуночи, ровно в полночь, на дни и до 150 дней простоя) прогоняли и на контракте, и на модели, сравнивая результаты после каждого шага. За 76,800 вызовов и ещё 38,400 с долгими простоями расхождений не было: действующие балансы и предложение совпали точно, награды совпали с точностью до пыли округления, ни один аккаунт не смог получить больше отложенного, а каждое получение выплатило ровно то, что причиталось. Два специально внесённых бага были обнаружены.
Находки
| Серьёзность | Находка | Статус |
|---|---|---|
| Средняя (уверенность) | Статические анализаторы и фаззеры (Slither, Aderyn, Medusa, Echidna, Halmos, Gambit) в последний раз запускались до переписывания токена. Для нового кода есть набор тестов, кампания инвариантов обычной длины и описанная выше модель. | Будут запущены заново до внешнего аудита. |
| Средняя (замысел, раскрыто) | На запуске все ончейн-защиты цены отключены: исполнение идёт по середине необработанных лучших цен покупки и продажи Hyperliquid при высоком плече. Защита обеспечивается лимитами релейера, киперами и дозорным, всё это офчейн. | Раскрыто; см. Риски. |
| Низкая | Согласие на комиссию билдера, данное сеансовым ключом, не стирается ни при повторной регистрации ключа со старым типом подписи, ни при его отзыве, поэтому назначенный позже билдер мог бы получать комиссию до ранее согласованной ставки. Потолок комиссий билдеров ограничивает это. | Будет исправлено до развёртывания в продакшене. |
| Низкая | В очереди отложенных минтов нельзя пропустить запись. Если запись будет падать при каждом повторе, следующие минты будут ждать за ней. Причиной могут стать изменение стоимости газа в HyperEVM или ошибка в будущем обновлении. | Восстановление — обновление через таймлок. |
| Средняя (экономическая, раскрыто) | С 2026-11-08 убыток даёт начисление на всю свою базу начисления: прибыль не зачитывается против последующих убытков, и лимита на аккаунт нет. Трейдер может держать противоположные позиции и получать начисление на убыточной ноге, что бы ни делал рынок. Эта проверка читала код до этого изменения. |
Раскрыто. Единственные тормоза — комиссии, сжигание после отсчёта и доля, которую остальные живые токены забирают из каждого распределения; см. Риски. |
| Низкая | Хранитель может поставить торговлю на паузу, навсегда вывести рынок из обращения, заменить кипера рынка и кипера внерабочих часов, разрешать и отзывать релейеры и повысить лимит газа для чтения цен. Он не может двигать средства и снимать паузу. | Так задумано; см. Риски. |
| Инфо | Баланс и предложение токена точны всегда, но событие о сгоревшем токене записывается лишь при следующем обращении к аккаунту, поэтому инструменты, суммирующие события, показывают сгоревшие токены как действующие. | Читайте балансы, а не события. |
| Инфо | Время начисления наград: минт прямо перед распределением получает долю пропорционально, первый держатель забирает всё нераспределённое, а после долгого простоя истёкшие партии делят распределения, сделанные за это время. Выплачивается никогда не больше, чем распределено. | Задокументировано; платёжеспособность подтверждена тестами. |
| Инфо | Строка версии Exchange показывает версию старее, чем у его интерфейса. | Будет исправлено до развёртывания в продакшене. |
| Инфо | Одна функция прокси пополнения никогда не вызывается. | Сохранена, потому что код прокси определяет все адреса пополнения. |
| Инфо | Владелец может зачислить на аккаунт излишек на Hyperliquid, который никто не востребовал. | Допущение о доверии; в продакшене — за таймлоком. |
Что не охвачено
- Лишь бегло просмотрены контракты-линзы только для чтения, библиотека администрирования рынков и библиотека границ, построчного разбора не было.
- Полный набор тестов и проверки раскладки хранилища, интерфейса, размера контрактов и кода прокси пополнения для этого обзора заново не запускались. Опирались на результаты последнего полного прогона.
- Форк-тесты против Hyperliquid, скрипты развёртывания помимо проверок ролей, офчейн-сервисы и приложения.
- Правило начисления токена после изменения от
2026-11-08(без зачёта прибыли, без лимита), расход газа хуком токена и то, ведут ли себя прекомпайлы Hyperliquid так, как предполагают тесты.
Чтобы страница оставалась честной
Это один обзор на один момент времени. Об изменениях контрактов после указанного выше коммита он ничего не говорит. Контракты обновляемы за таймлоком, поэтому то, что развёрнуто в данный момент, нужно сверять с адресами контрактов.