仕組みの詳細
アーキテクチャの概要
プロトコルは、HyperEVM上の少数のコントラクトで構成されています。これらはプリコンパイルを通じてHyperliquidのHyperCoreから価格を読み、HyperCore上でUSDCを動かします。このページでは、コントラクトの全体像と、それぞれのつながりを説明します。
コントラクト(HyperEVM)
- Exchange: 取引のコントラクトです。すべての残高を管理し、ポジションの新規建てと決済、損益の精算、支払いキューの運用を行い、LPと手数料の勘定を保持します。薄いエントリーポイントが四つのライブラリ(取引、キュー、資金、管理)に処理を委譲します。新規建てと決済はBatchExecutor経由でしか届きません。出金とメンテナンス用の呼び出しは誰でも行えます。
- BatchExecutor: リレイヤーの唯一の入口です。設定されたリレイヤーの鍵からのバッチだけを受け付け、署名済みの各呼び出しを、決められた関数のリストにだけ転送します。
- SessionKeyManager: セッションキーを登録し、Exchangeのためにすべての署名とノンスを検証し、取り消しを処理します。登録はリレイヤー経由で届きます。取り消しは、ウォレットからの直接の呼び出しでも行えます。
- Token、Staking、Tokenomics: BACKトークン(ローンチ時点では送金機能は無効)、報酬アキュムレーターを持つステーキングコントラクト、そして損失に対してBACKを計算・発行し、記帳上のLPを管理するコントラクトです。
- BuilderRegistry: 承認済みのビルダーと、上限15%の単一のビルダー手数料率です。アップグレードはできません。置き換えるには新しくデプロイし、SessionKeyManagerの参照先をそちらに変えます。
- DepositProxyFactoryとDepositProxy: 各アカウントの決定論的な入金アドレスを導出し、その背後にある小さなコントラクトをデプロイします。このコントラクトは、HyperCore上のUSDCをExchangeにしか送れません。入金アドレスは決して変わってはならないため、どちらもアップグレードできません。
- レンズとPriceOracle: アプリやサービス向けの、ExchangeとHyperCoreに対する読み取り専用のビューと、価格のヘルパーです。Exchange自身はこれらを使わず、プリコンパイルを直接読みます。
アドレスはコントラクトアドレスにあります。
プリコンパイル(HyperCore)
- BBO
0x000000000000000000000000000000000000080e:最良買い気配と最良売り気配です。その中間が約定価格になります。 - Mark
0x0000000000000000000000000000000000000806:Hyperliquidのマーク価格です。休止中の価格ガードが読み、マーケットを廃止するときの代替価格にもなります。 - Oracle
0x0000000000000000000000000000000000000807:Hyperliquidのオラクル価格で、用途はマーク価格と同じです。 - CoreWriter
0x3333333333333333333333333333333333333333:HyperCoreにアクションを送るシステムコントラクトです。入金プロキシはこれを使ってHyperCore上のExchangeのアカウントにUSDCを送り、ExchangeはこれでHyperCore上のあなたのアカウントに出金を支払います。
残高のプリコンパイルによって、Exchangeは入金が実際に届いたことを確認してから反映できます(入金:CREATE2プロキシ)。
取引の端から端まで
あなたがセッションキーでインテントに署名すると、アプリがそれをリレイヤーに送り、リレイヤーが確認してキューに入れます。リレイヤーはキューのインテントをバッチにまとめてBatchExecutorに送り、BatchExecutorはインテントごとに一回ずつExchangeを呼び出します。ExchangeはSessionKeyManagerを通じて署名を検証し、BBOを読んで約定価格を決め、ポジションを建てるか、決済をLPとの間で精算して、残高を更新します。負けの場合は、TokenomicsにあなたへのBACKを発行させます。多くのアカウントのインテントが一つのトランザクションを共有しますが、精算はそれぞれ別々に行われます。リレイヤーが各呼び出しを失敗してもよいものとしてマークするので、一つのインテントが失敗してもほかは止まりません。
フロントエンド
新規建てと決済は、すべて当社のリレイヤーが送信します。ほかのフロントエンドも同じ署名を作り、リレイヤーのAPI(インテントAPI)を通じて送ることはできますが、新規建てや決済をコントラクトに直接送ることはできません。
オフチェーンのサービス
| サービス | 役割 |
|---|---|
| リレイヤーの受付 | 署名済みインテントを受け付けて確認し、残高を確保します。 |
| リレイヤーのエンジン | キューのインテントをスケジュールし、バッチで送信します。 |
| インデクサー | ブロックごとにチェーンを追い、毎ブロック会計の不変条件を確認し、アカウントの更新を配信します。 |
| 読み取りAPIとストリーム | マーケットの状態、履歴、アカウントのライブストリームをアプリに提供します。 |
| キーパー | 清算、キューのハーベスト、ステーキング報酬の分配、建玉上限の調整、スケジュールに沿った支払いカーブの切り替え、遅延した発行の再実行を行います。 |
| スイーパーと資金ワーカー | 入金をスイープし、出金をほかのチェーンへ転送します。 |
これらのサービスはどれも、あなたの代わりに署名したり、あなたの署名なしに資金を動かしたりすることはできません。サービスが止まると取引も止まりますが、空き残高はウォレットからいつでも出金できます。
ガバナンス
アップグレード可能なすべてのコントラクトの所有者はタイムロックです。アップグレードやパラメーター変更はガバナンス・マルチシグが予約し、2日経たないと実行できません。二つ目のタイムロック(遅延7日)が、一つ目のタイムロックのロールを誰が持つかを管理します。ガーディアン・マルチシグは緊急時に即座に動けますが、その範囲はリスクに挙げた狭いものに限られます。