Как это устроено
Обзор архитектуры
Протокол — это небольшой набор контрактов в HyperEVM, которые через прекомпилы читают цены из HyperCore, слоя Hyperliquid, и переводят в нём USDC. На этой странице показано, какие есть контракты и как они связаны между собой.
Контракты (HyperEVM)
- Exchange: торговый контракт. Он ведёт все балансы, открывает и закрывает позиции, рассчитывает результаты, ведёт очередь выплат и хранит LP и счета комиссий. Тонкая точка входа делегирует вызовы четырём библиотекам (торговля, очередь, средства, администрирование). Открытия и закрытия поступают только через BatchExecutor; выводы и служебные вызовы может отправлять кто угодно.
- BatchExecutor: единственный вход для релейера. Он принимает пакеты только от настроенных ключей релейера и передаёт каждый подписанный вызов только в фиксированный список функций.
- SessionKeyManager: регистрирует сеансовые ключи, проверяет каждую подпись и каждый nonce для Exchange и обрабатывает отзыв. Регистрация приходит через релейер; отзыв можно сделать и прямым вызовом из кошелька.
- Token, Staking, Tokenomics: токен BACK (переводы на старте: выключено), контракт стейкинга с аккумулятором наград и контракт, который рассчитывает и начисляет BACK за убытки и ведёт учётный LP.
- BuilderRegistry: одобренные билдеры и единая ставка комиссии билдера с потолком 15%. Не обновляется: заменить его — значит развернуть новый контракт и переключить на него SessionKeyManager.
- DepositProxyFactory и DepositProxy: вычисляют детерминированный адрес для пополнения каждого аккаунта и разворачивают за ним небольшой контракт, который может отправлять USDC в HyperCore только в Exchange. Ни тот, ни другой не обновляются: адрес для пополнения никогда не должен меняться.
- Линзы и PriceOracle: представления только для чтения поверх Exchange и HyperCore и вспомогательный контракт цен — для приложений и сервисов. Exchange читает прекомпилы напрямую, а не через них.
Адреса — на странице Адреса контрактов.
Прекомпилы (HyperCore)
- BBO
0x000000000000000000000000000000000000080e: лучшая цена покупки и лучшая цена продажи; их середина — цена исполнения. - Mark
0x0000000000000000000000000000000000000806: маркировочная цена Hyperliquid; её читают неактивные ценовые защиты, и она служит запасной ценой при выводе рынка из обращения. - Oracle
0x0000000000000000000000000000000000000807: цена оракула Hyperliquid, применяется так же, как маркировочная. - CoreWriter
0x3333333333333333333333333333333333333333: системный контракт, который отправляет действия в HyperCore. Прокси для пополнения используют его, чтобы отправлять USDC на счёт Exchange в HyperCore, а Exchange — чтобы выплачивать выводы на ваш счёт в HyperCore.
Прекомпилы балансов позволяют Exchange проверить, что пополнение действительно пришло, прежде чем зачислить его (Пополнения: прокси CREATE2).
Сделка от начала до конца
Вы подписываете интент сеансовым ключом, и приложение отправляет его релейеру, который проверяет его и ставит в очередь. Релейер собирает интенты из очереди в пакет и отправляет его в BatchExecutor, который вызывает Exchange по одному разу на интент. Exchange проверяет подпись через SessionKeyManager, читает BBO для цены исполнения, открывает позицию или рассчитывает закрытие с LP, обновляет ваш баланс и при убытке поручает Tokenomics начислить вам BACK. Интенты многих аккаунтов делят одну транзакцию, но каждый рассчитывается отдельно: релейер помечает каждый вызов как допускающий неудачу, поэтому сбой одного интента не останавливает остальные.
Фронтенды
Все открытия и закрытия отправляет наш релейер. Другой фронтенд может создавать те же подписи и отправлять их через API релейера (API интентов), но не может отправлять открытия и закрытия в контракты напрямую.
Внешние сервисы
| Сервис | Задача |
|---|---|
| Приём релейера | Принимает подписанные интенты, проверяет их и резервирует балансы. |
| Движок релейера | Планирует интенты из очереди и отправляет их пакетами. |
| Индексатор | Следит за блокчейном блок за блоком, в каждом блоке проверяет инварианты учёта и транслирует обновления аккаунтов. |
| API чтения и поток | Отдают приложению состояние рынков, историю и поток аккаунта в реальном времени. |
| Киперы | Ликвидируют, проводят сборы по очереди, распределяют награды за стейкинг, двигают лимиты открытого интереса, переключают кривую выплат по расписанию, воспроизводят отложенные начисления. |
| Свипер и воркер переводов | Переводят пополнения в Exchange и пересылают выводы в другие сети. |
Ни один из этих сервисов не может подписывать за вас или перемещать ваши средства без вашей подписи. Если они остановятся, остановится и торговля, но свободный баланс по-прежнему можно вывести из кошелька.
Управление
Владелец каждого обновляемого контракта — таймлок: обновление или изменение параметров планирует мультисиг управления, и выполнить его можно только через 2 дня. Второй таймлок, с задержкой 7 дней, определяет, у кого роли первого. Мультисиг-хранитель может действовать сразу в экстренной ситуации — в узких пределах, перечисленных в разделе Риски.