Hyperliquid 的市场状态由一个 24 验证者的 L1 生成,该 L1 在每个区块计算预言机(标记)价格,并通过构建者/数据可用性拍卖(HIP-3/4)选择区块生产者。要读取该状态,可使用 info API 端点(如 metaAndAssetCtxs)和拍卖数据流,但务必始终将返回的预言机时间戳与本地时钟进行比较,以避免基于过期价格进行操作。本指南解释了相关机制并提供了可复现的 curl 示例。
直接回答:如何读取 Hyperliquid 的市场状态
如果你需要 Hyperliquid 上可审计的价格,不要从订单簿顶部临时拼凑。权威参考是预言机(标记)价格,由验证者集合计算并随每个区块上链。你可以通过 info API(例如 metaAndAssetCtxs 或 allMids)读取它,每个响应都包含一个时间戳,指示该预言机价格的计算时间。另外,构建者/数据可用性拍卖(HIP-3/4)决定了谁有权提议区块以及优先费用如何分配;你可以通过 exchange/auction info 端点观察当前拍卖状态。本指南将介绍机制并提供可运行的命令来验证你所看到的内容。
关键的实际规则:在使用价格进行资金费率、清算或任何财务决策之前,始终将 API 响应中的预言机时间戳与本地系统时钟进行比较。如果时间戳早于几秒(文档中的节奏接近区块时间,但具体值可能变化),请将该价格视为过期并重新轮询。同样的纪律适用于拍卖数据,拍卖数据仅在新一轮开始时更新。
Hyperliquid 如何生成预言机价格
Hyperliquid 运行自己的 L1:一个委托权益证明链,拥有 24 个验证者,非 EVM 的 Rust 二进制,以及协议目标但可能随验证者延迟变化的区块时间。验证者集合负责维护规范的市场数据,包括每个资产的预言机价格。根据 Hyperliquid 关于预言机价格的文档,预言机价格是多个交易所价格的链上中位数,由验证者计算。它随每个网络区块更新,你在 info API 中看到的就是该更新。
预言机价格用作资金支付和清算的标记价格。它故意不是订单簿最优价格,因为单一订单簿的顶部可能被操纵或流动性不足。通过使用跨交易所的中位数,Hyperliquid 使参考价格更加稳健。当你调用 metaAndAssetCtxs 时,每个资产上下文中的 markPx 字段就是该预言机价格,而 oraclePx 字段(如果存在)是资金调整前的原始预言机价格。响应中的 time 字段是计算该预言机的区块的 Unix 时间戳(以毫秒为单位)。
有关机制的更深入介绍,Hyperliquid 关于 Info 端点的文档 列出了所有请求类型。metaAndAssetCtxs 请求返回所有资产的资产元数据和当前上下文(包括标记价格、预言机价格、资金费率和未平仓合约)。allMids 请求是更轻量级的变体,仅返回中间价格(源自订单簿,而非预言机),常用于快速轮询。不要将 allMids 与预言机价格混淆:allMids 是 L2 订单簿的中间价,而 metaAndAssetCtxs 提供预言机价格。
构建者和数据可用性拍卖(HIP-3/4)
Hyperliquid 的区块生产并非无政府状态。在基础协议中,验证者按确定性顺序生产区块,但拍卖决定了谁有权提交下一个区块的交易。这就是构建者拍卖:区块生产者(构建者)竞标赢得提议区块的权利,中标者支付用户附加到交易中的优先费用。Hyperliquid 关于 exchange/auction 的文档 描述了当前的拍卖格式以及 exchange/auction info 端点返回的字段。
HIP-3(构建者部署的永续合约)扩展了这一概念:它允许构建者部署自己的永续市场,这些市场可以具有私有拍卖,只有部署的构建者才能为该市场提交区块。这在 HIP-3 提案 中有文档说明。HIP-4(从永续到预测)是一个更广泛的提案,包括针对负载数据的数据可用性拍卖,但截至撰写本文时,它只是一个提案,而非活跃机制。文档将其描述为数据可用性定价和拍卖的设计,但你应该在阅读时验证当前状态。
对于读者来说,重要的是拍卖状态是可观察的。exchange/auction info 端点返回当前拍卖轮次、资产(或主链的 'HL')、出价以及拍卖结束时间。你可以轮询它以查看谁在领先以及下一轮何时开始。但请注意,拍卖数据流仅通过某些订阅可用——WebSocket auction 订阅提供实时更新,而 REST info 端点提供快照。有关存在哪些订阅的详细信息,请参阅 Hyperliquid WebSocket 订阅指南。
应该轮询哪个 Info 端点?
不同的用例需要不同的数据源。下表总结了决策。
| 用例 | 端点 / 订阅 | 提供内容 |
|---|---|---|
| 可审计价格(资金费率、清算) | metaAndAssetCtxs(REST)或 activeAssetCtx(WS) | 带时间戳的预言机(标记)价格 |
| 实时订单簿 | l2Book(WS)或 l2Book REST | 订单簿顶部买卖盘,无预言机 |
| 历史价格 | candles(REST)或 trades(REST) | OHLCV 或交易历史,均带时间戳 |
| 拍卖状态 | exchange/auction(REST)或 auction(WS) | 当前出价、轮次、结束时间 |
对于可安全用于金融逻辑的价格,始终优先选择 metaAndAssetCtxs 而不是 allMids 或 l2Book。后两者仅反映本地订单簿,可能过期或被操纵。预言机价格是协议本身用于清算和资金费率的价格,因此是最可辩护的参考。
可运行示例:读取预言机价格和拍卖状态
metaAndAssetCtxs 的预期输出(缩写)如下所示:
time 字段以毫秒为单位。将其与你的系统时间(也以毫秒为单位)进行比较以计算过期程度。exchange/auction 响应是拍卖对象列表,每个对象包含 type、asset、bid、time 和 endTime 等字段(同样以毫秒为单位)。
# 获取 metaAndAssetCtxs(预言机价格)
curl -s https://api.hyperliquid.xyz/info -X POST -H 'Content-Type: application/json' \
-d '{"type":"metaAndAssetCtxs"}'
# 获取 exchange/auction(当前拍卖)
curl -s https://api.hyperliquid.xyz/info -X POST -H 'Content-Type: application/json' \
-d '{"type":"exchange/auction"}'
# 获取 allMids(中间价格,非预言机)
curl -s https://api.hyperliquid.xyz/info -X POST -H 'Content-Type: application/json' \
-d '{"type":"allMids"}'
# 预期输出(缩写)
{
"meta": { ... },
"assetCtxs": [
{
"dayNtlVlm": "123456789.0",
"funding": "0.00001234",
"markPx": "65432.1",
"midPx": "65430.0",
"openInterest": "1234.5",
"oraclePx": "65431.0",
"premium": "0.00002",
"time": 1720000000000
}
]
}填写结果表:预言机时间戳与系统时间
为了验证你没有基于过期价格操作,请运行上述 curl 命令并填写下表。在 Linux 上使用 date +%s%3N 或在 Windows 上使用 Get-Date -Format 'yyyy-MM-dd HH:mm:ss.fff' 获取系统时间(毫秒)。
| 轮询 # | 预言机 time(毫秒) | 系统时间(毫秒) | 差值(毫秒) | 过期?(>5000 毫秒) |
|---|---|---|---|---|
| 1 | ||||
| 2 | ||||
| 3 |
如果差值持续超过几秒,则你使用的 API 端点可能滞后,或者网络本身可能存在延迟。Hyperliquid 文档指出预言机随每个区块更新,但确切的区块时间不是固定的;它取决于验证者的性能。对于生产系统,设置一个符合你风险承受能力的阈值(例如 5 秒),如果超过则重新轮询。
故障排除和验证清单
在读取 Hyperliquid 市场状态时,你可能会遇到几个常见陷阱。使用此清单进行诊断。
- 时间戳单位:info 响应中的
time字段以毫秒为单位。如果你将其与以秒为单位的 Unix 时间戳进行比较,你会认为价格比实际旧 1000 倍。始终转换为相同单位。 - 错误的间隔查找键:查询
candles时,interval字段必须是文档记录的值之一(例如1m、5m、15m、1h、4h、1d)。使用不支持的值会返回错误或空数据。 - 混淆标记价格、指数价格和最后价格:
markPx是用于资金费率/清算的预言机价格。oraclePx是资金调整前的原始预言机价格。midPx是订单簿的中间价。last(在交易中)是最后成交价。当你需要预言机价格时,不要使用midPx。 - 拍卖数据流可见性:
exchange/auctionREST 端点返回当前拍卖,但实时更新需要 WebSocketauction订阅。如果你没有收到更新,请检查是否正确订阅。 - 节奏变化:预言机更新节奏与区块生产相关,可能随验证者延迟而变化。文档描述了目标区块时间,但不保证固定间隔。始终在阅读时从文档验证当前节奏。
- 速率限制:info API 有速率限制。如果你轮询过于频繁,可能会收到 429 响应。有关详细信息,请参阅 Hyperliquid RPC 速率限制指南。
局限性和权衡
此处描述的机制是文档化的协议概念,但具体参数(区块时间、拍卖持续时间、费用分配)可能会发生变化,并可能因网络条件而异。Hyperliquid 文档是权威来源;始终在阅读时检查最新值。例如,Hyperliquid 关于 exchange/auction 的文档 指定了拍卖字段,但每轮持续时间并未在文档中硬编码——它由协议内部逻辑决定。
此外,构建者/数据可用性拍卖是一个不断发展的领域。HIP-3 和 HIP-4 是提案,其实施方式可能与本文描述不同。截至撰写本文时,HIP-3 已用于构建者部署的市场,但 HIP-4 仍是提案。不要假设 HIP-4 中描述的所有功能都在主网上活跃。
最后,info API 提供特定区块的状态快照。如果你需要历史记录,必须使用 candles 或 trades 端点,这些端点有其自身的局限性(例如,它们可能不包含每次预言机更新)。对于完整的审计跟踪,请考虑运行自己的索引器或使用数据服务。
后续步骤和进一步阅读
既然你了解了如何读取 Hyperliquid 的预言机价格和拍卖状态,你就可以构建更可靠的交易或监控工具。要深入了解,请探索以下资源:
- Hyperliquid 网络概述 – 了解链架构和端点。
- Hyperliquid RPC 端点(RPC 助手) – 为你的用例找到合适的端点。
- 读取 Hyperliquid 历史市场数据 – 了解如何获取蜡烛图和交易数据以进行回测。
- 处理 Hyperliquid 订单拒绝和 API 错误 – 排查常见 API 问题。
- Hyperliquid WebSocket 订阅 – 获取价格和拍卖的实时更新。
- Hyperliquid RPC 延迟和性能 – 测量和优化你的连接。
- OnFinality Learn 中心 – 更多关于网络协议的指南。
- RPC 定价 – 了解 OnFinality 如何提供可靠的 RPC 访问。
- API 服务 – 了解 OnFinality 的托管 API 服务。