深入原理
架构概览
协议是 HyperEVM 上的一小组合约,它通过预编译合约读取 Hyperliquid 的 HyperCore 来获取价格,并在 HyperCore 上转移 USDC。本页梳理这些合约以及它们如何协同工作。
合约(HyperEVM)
- Exchange:交易合约。它保存所有余额,负责开仓和平仓、结算结果、运行赔付队列,并持有 LP 和手续费账户。一个精简的入口合约把逻辑委托给四个库(交易、队列、资金、管理)。开仓和平仓只能经由 BatchExecutor 到达;提现和维护调用任何人都可以发起。
- BatchExecutor:中继进入的唯一途径。它只接受来自已配置中继密钥的批量调用,并转发其中每个已签名的调用,且只能调用固定列表中的函数。
- SessionKeyManager:登记会话密钥,为 Exchange 验证每个签名和 nonce,并处理撤销。登记经由中继到达;撤销也可以由你的钱包直接调用。
- 代币、Staking、Tokenomics:TOKEN 代币(上线时转账未开启)、带收益累加器的质押合约,以及为亏损计算并铸造 TOKEN、同时记账资金池的合约。
- BuilderRegistry:已获批准的构建者,以及统一的构建者费率,上限为 15%。它不可升级:替换它意味着部署一个新合约,并让 SessionKeyManager 指向它。
- DepositProxyFactory 与 DepositProxy:推导每个账户确定性的充值地址,并部署地址背后的小合约;这个合约只能把 HyperCore 上的 USDC 发送给 Exchange。两者都不可升级:充值地址永远不能改变。
- Lens 合约与 PriceOracle:供应用和服务使用的只读视图(覆盖 Exchange 和 HyperCore)以及价格辅助合约。Exchange 直接读取预编译合约,不经过它们。
合约地址见合约地址。
预编译合约(HyperCore)
- BBO
0x000000000000000000000000000000000000080e:最优买价和最优卖价;二者的中点就是成交价。 - 标记价
0x0000000000000000000000000000000000000806:Hyperliquid 的标记价,供休眠的价格防护读取,并在市场下架时作为备用价格。 - 预言机价
0x0000000000000000000000000000000000000807:Hyperliquid 的预言机价,用途与标记价相同。 - CoreWriter
0x3333333333333333333333333333333333333333:向 HyperCore 发送操作的系统合约。充值代理合约用它把 USDC 发送到 Exchange 的 HyperCore 账户,Exchange 用它把提现支付到你的 HyperCore 账户。
余额预编译合约让 Exchange 在入账之前核实充值确实已经到账(充值:CREATE2 代理合约)。
一笔交易的完整流程
你用会话密钥签署一个意图,应用把它发送给中继,中继检查后将其排队。中继把排队的意图打包成一个批次发送给 BatchExecutor,后者为每个意图调用一次 Exchange。Exchange 通过 SessionKeyManager 验证签名,读取 BBO 得到成交价,开仓或与 LP 结算平仓,更新你的余额;如果亏损,还会让 Tokenomics 为你铸造 TOKEN。来自许多账户的意图共用一笔交易,但每个意图单独结算:中继把每个调用都标记为允许失败,因此一个意图失败不会影响其他意图。
前端
每一笔开仓和平仓都由我们的中继提交。其他前端可以生成相同的签名,并通过中继的 API 发送(意图 API),但不能直接向合约提交开仓或平仓。
链下服务
| 服务 | 职责 |
|---|---|
| 中继接收端 | 接收已签名的意图,进行检查并冻结余额。 |
| 中继引擎 | 安排排队的意图并批量提交。 |
| 索引服务 | 逐块跟踪链上数据,每个区块检查账目不变式,并推送账户更新。 |
| 读取 API 与推送 | 向应用提供市场状态、历史数据和实时账户推送。 |
| 维护程序 | 执行爆仓、结算(harvest)赔付队列、分配质押收益、调整未平仓量上限、按时间表切换派付曲线、补铸延迟的代币。 |
| 归集与资金服务 | 归集充值,并把提现转到其他链。 |
这些服务都不能替你签名,也不能在没有你签名的情况下转移你的资金。如果它们停止运行,交易也会停止,但你的可用余额仍可以用钱包直接提走。
治理
每个可升级合约的所有者都是时间锁:升级或参数修改由治理多签安排,只能在 2 天 之后执行。另一个延迟为 7 天 的时间锁控制谁持有第一个时间锁的角色。守护者多签可以在紧急情况下立即行动,但只限于风险页面列出的有限范围。
最后更新: