コントラクト
以下は現在のHypercallメインネット・アルファのコントラクトアドレスです。取引所の対象範囲を広げていく間、ローンチ時のスコープは意図的に限定しています。
Hypercallのオンチェーンコンポーネントは、HyperEVM(チェーンID 999)上にデプロイされています。各ユーザーにはAccountコントラクトが1つずつ割り当てられます。ExchangeはUSDCとオプションを取引所として保管し、署名済みディレクティブをAccountに対して実行します。FactoryはAccountを作成し、Option Registryはオプショントークンをデプロイして識別します。
コントラクトの役割
Exchange
アップグレード可能なプロキシです。メインネットのバージョンは 0.6.1 です。
- 預け入れられたUSDCを取引所としてHyperCore上で保管します(
depositUsdcFor、depositPmLiquidityFor)。 - 入金時にオプションERC20をバーンし、エンジンが残高に反映できるよう
Depositを発行します(depositOption)。 - Factoryが作成したAccountを登録し、各Accountのマネージャーを記録します(
getAccounts、getAccount、managers)。 - 署名済みディレクティブを実行します。
executeUserDirectiveは、マネージャーまたはAPIウォレットが署名したディレクティブをAccountに転送します。executeRsmDirectiveは、RSMが署名したシステムディレクティブ(入金反映、出金、清算状態)を実行します。どちらもHypercallのシーケンサーのみが呼び出せます。ユーザーが署名し、Hypercallが送信します。 - 署名者ごとに使用済みのnonceを記録します(
isNonceUsed)。
Account
ユーザーごとに1つ、BeaconProxyとしてデプロイされます。メインネットのバージョンは 0.2.4 です。
- ユーザーのHyperCore上の残高とポジションを保有します。パーペチュアルと現物は、AccountのHyperCore台帳上に置かれます。
- マネージャー(Accountを作成したEOA)を1つ持ち、名前付きのAPIウォレットを任意の数だけ持てます。
- ディレクティブの署名を検証します。APIウォレットは注文とキャンセルに署名できます。それ以外の操作にはマネージャーの署名が必要です。EIP-712署名を参照してください。
- マネージャーのみが直接呼び出せる関数として、
transferTo(recipient, token, amount)とapproveZeroFeeBuilder(builder)があります。前者はHyperEVM上のトークンをAccountから送金し、後者はHyperliquidのビルダーを最大手数料0%で承認します。Hypercallのパーペチュアル注文にはHypercallのビルダーコードが付くため、最初のパーペチュアル注文の前にこの承認が一度必要です。 depositSpotは、HYPEまたは対応する現物トークンをHyperEVMからHyperCore上のAccountへブリッジします。
Factory
createAccount(uint96 salt) でAccountを作成します。アドレスはマネージャーとsaltの組み合わせから決定的に定まり、predictAccount(manager, salt) で作成前に取得できます。オンボーディングを参照してください。
Router
入金用のヘルパーです。deposit(account, token, amount, isPerp) は、USDCをCircleのCoreDepositWallet経由でHyperCoreへ、現物トークンをAccount経由で、オプショントークンをExchange経由でそれぞれルーティングします。depositHype(account) はネイティブのHYPEをブリッジします。
Option Registry
オプションERC20をデプロイし、あるトークンが対応オプションかどうかを判定する唯一の情報源です(isSupportedOption)。
ディレクティブの種類
| ディレクティブ | 署名者 | 説明 |
|---|---|---|
hl_limit_order | APIウォレット | Hyperliquidの指値注文 |
hl_cancel_by_oid | APIウォレット | Hyperliquidの注文IDによるキャンセル |
hl_cancel_by_cloid | APIウォレット | クライアント注文IDによるキャンセル |
hc_update_api_wallet | マネージャー | Accountの名前付きAPIウォレットの追加、置き換え、削除 |
hl_add_api_wallet | マネージャー | HyperCore上でAccountのHyperliquid APIウォレットを承認 |
hl_send_asset | マネージャー | HyperCore上のAccountから資産を送金 |
hl_set_abstraction | マネージャー | AccountのHyperCoreアカウントモードを設定(unifiedのみ) |
RSMディレクティブ(入金反映、出金、清算の開始と停止、reduce-onlyの回復注文)は、RSM署名者が署名し、シーケンサーが送信します。ユーザーがこれらに署名することはありません。RSMディレクティブを参照してください。
清算
清算はHypercallエンジン内で実行されます。清算を参照してください。Exchangeには、オンチェーンのオークションコントラクトがAccountのマネージャーを落札者に移転するためのフックがありますが、メインネットではオークショニアは設定されていません。
信頼と権限
このセクションは、オンチェーンで誰が何をできるかのリファレンスです。要約は信頼モデルをご覧ください。
送信
ExchangeのSEQUENCER_ROLEを保持しているのはHypercallのシーケンサーのみであり、executeUserDirectiveとexecuteRsmDirectiveを呼び出せるのはシーケンサーだけです。署名はユーザーが行い、送信はHypercallが行います。シーケンサーがユーザーディレクティブを偽造することはできません。Accountが自ら署名者を復元し、マネージャーまたは有効なAPIウォレットのみを受け付けます。
RSMディレクティブ
エンジンの状態がオンチェーンでのアクションを必要とする場合、RSM署名者がディレクティブに署名し、シーケンサーがそれを送信します。Exchangeは、登録されたRSM署名者(Exchange.rsmSigner)が署名していないRSMディレクティブをすべて拒否します。現在のRSM署名者はオペレーターが管理しています。この役割をどのように分散化し、あるいは信頼を最小化していくかは、ロードマップで公開する予定です。
Exchangeが自ら実行するディレクティブ:
- ExchangeのHyperCore残高からのUSDCまたはスポットトークンの送金(通常のUSDC出金を含む)
- オプションの出金時に、オプションERC20をアドレスへミント
- Accountに対する清算の開始と停止
AccountがRSMから受け付けるディレクティブ(Accountコントラクトが制約を強制):
- AccountのHyperliquid残高に対する、reduce-onlyのIOC注文、または市場価格付近でUSDCへ売却するIOCスポット売り注文
- HyperCore上のAccountからの資産送金。送金先はExchangeのみ(例: マイナス残高の補填)
- 注文のキャンセル
RSMディレクティブは、Accountが清算中でも実行されます。オプションの満期決済はRSMディレクティブではなく、エンジンの状態で現金に対して適用されます。RSM署名者のアドレスと、すべてのディレクティブの実行はオンチェーンで確認できます。
アップグレード
- ExchangeとOption Registryはアップグレード可能なプロキシです。
- AccountとOption TokenはBeaconProxyです。すべてのAccountが同じ実装で動作するため、Account Beaconを1回アップグレードするとすべてのAccountが同時に変わります。オプショントークンとOption Token Beaconについても同様です。
- Timelockは、Exchangeのプロキシ管理者権限と、Account、Option Token、Option Registryのアップグレード経路を保有しています。最小遅延は30秒です。
- Admin Safeマルチシグは、Exchangeの管理者ロールとガバナーロール、およびFactoryのオーナーロールを保有しています。
- Admin Safeが保有するガバナーロールは、RSM署名者とオークショニアを差し替え、ExchangeのUSDCを移動できます(
rescueUsdcToEvm)。信頼モデル計画のステップ1でタイムロックの対象になります。また、Exchangeのデフォルト管理者として、SafeはSEQUENCER_ROLEをはじめExchangeのあらゆるロールを、タイムロックを経ずに直接付与・剥奪できます。
これらのアドレスは下記のメインネット設定の表にあります。アカウントの所有権は、オンチェーントランザクションによってのみ変更されます。
デプロイ済みアドレス
メインネット・アルファ
| コントラクト | アドレス | 説明 |
|---|---|---|
| Exchange | 0xE6b7FaA216cabb2b38B392f577C9c826378b2240 | メインのExchangeコントラクト |
| Exchange Implementation | 0xF7F0610aC612d140bdb34DCD2872828Bc67349cD | プロキシの背後にあるExchangeの実装 |
| Account Implementation | 0xCD87F572bef2855c8Ffb69A6Da3D9785d6017791 | Accountの実装 |
| Account Beacon | 0x1b96D6a48d1fB34dC45953697414656D2851Ca93 | Accountのビーコン |
| Fetcher | 0x8654912Eae1554662665C13EeD4f1D8A4b028aDB | 読み取り用ヘルパーコントラクト |
| Option Token Implementation | 0x6D0C7a116f9561A8De692c23c4C11682738ed206 | オプショントークンの実装 |
| Option Token Beacon | 0xfb320352B25Dba7f139EA9Bf8966891CCa12dC35 | オプショントークンのビーコン |
| Factory | 0x2CeeAC2E032e4cCb05FF744619BfAb8cC75efE1b | Accountのファクトリー |
| Router | 0xF41FF41B6F007dE851ACc9F43Bd2f597Da741E2D | 入金およびルーティング用ヘルパー |
| Option Registry | 0x8C8efdd5F78C25215d03c8BbD5D1f6f0F1BB0598 | オプショントークンのレジストリ |
| Option Registry Implementation | 0xF222421a93df1086E329503723b3cC4c30546C46 | プロキシの背後にあるOption Registryの実装 |
| Hypercall Fee Collector | 0x406ceBfC7063e55761007D1C4b66B29308016602 | パーペチュアル注文に付くHyperliquidのビルダーアドレス(GET /exchange-info の hl_builder_address と同じ) |
メインネットの設定
| パラメータ | アドレスまたは値 | 説明 |
|---|---|---|
| USDC | 0xb88339CB7199b77E23DB6E890353E22632Ba630f | Hypercallが使用するHyperEVM上のUSDC |
| Core Deposit | 0x6B9E773128f453f5c2C60935Ee2DE2CBc5390A24 | HyperCoreへの入金ヘルパー |
| RSM Signer | 0x502E7fAbF34E84EeB115C34FE947b79A94dF886E | 現在のオペレーター管理下のRSM署名者 |
| Sequencer | 0x56a2924217C91EB4d6989Cf4C7b4dF03020E8944 | 現在のシーケンサー |
| Timelock | 0x96f17e6f7269cA4300a391514c109eBA70661674 | Exchangeのプロキシ管理者権限と、Account、Option Token、Option Registryのアップグレード経路を保有します。最小遅延は30秒です。 |
| Admin Safe | 0xF741246D2e0ADD4EFa7e88BE0961cccf3562b502 | Exchangeのadminロールとgovernorロール、およびFactoryのownerロールを保有するマルチシグ |
ソースコード
コントラクトのソースコードは、監査完了後に公開する予定です。