Logo
新用户订阅 RPC,首月享 6.5 折优惠查看优惠
OnFinality Learn
网络与协议指南阅读约 14 分钟

Hyperliquid 预言机价格与构建者拍卖:读取市场状态

了解 Hyperliquid 如何推导预言机价格,以及构建者/数据可用性拍卖如何选择区块生产者,然后通过 info API 读取该状态。

TL;DR

Hyperliquid 的市场状态由一个 24 验证者的 L1 生成,该 L1 在每个区块计算预言机(标记)价格,并通过构建者/数据可用性拍卖(HIP-3/4)选择区块生产者。要读取该状态,可使用 info API 端点(如 metaAndAssetCtxs)和拍卖数据流,但务必始终将返回的预言机时间戳与本地时钟进行比较,以避免基于过期价格进行操作。本指南解释了相关机制并提供了可复现的 curl 示例。

直接回答:如何读取 Hyperliquid 的市场状态

如果你需要 Hyperliquid 上可审计的价格,不要从订单簿顶部临时拼凑。权威参考是预言机(标记)价格,由验证者集合计算并随每个区块上链。你可以通过 info API(例如 metaAndAssetCtxsallMids)读取它,每个响应都包含一个时间戳,指示该预言机价格的计算时间。另外,构建者/数据可用性拍卖(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 而不是 allMidsl2Book。后两者仅反映本地订单簿,可能过期或被操纵。预言机价格是协议本身用于清算和资金费率的价格,因此是最可辩护的参考。

可运行示例:读取预言机价格和拍卖状态

metaAndAssetCtxs 的预期输出(缩写)如下所示:

time 字段以毫秒为单位。将其与你的系统时间(也以毫秒为单位)进行比较以计算过期程度。exchange/auction 响应是拍卖对象列表,每个对象包含 typeassetbidtimeendTime 等字段(同样以毫秒为单位)。

# 获取 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 字段必须是文档记录的值之一(例如 1m5m15m1h4h1d)。使用不支持的值会返回错误或空数据。
  • 混淆标记价格、指数价格和最后价格markPx 是用于资金费率/清算的预言机价格。oraclePx 是资金调整前的原始预言机价格。midPx 是订单簿的中间价。last(在交易中)是最后成交价。当你需要预言机价格时,不要使用 midPx
  • 拍卖数据流可见性exchange/auction REST 端点返回当前拍卖,但实时更新需要 WebSocket auction 订阅。如果你没有收到更新,请检查是否正确订阅。
  • 节奏变化:预言机更新节奏与区块生产相关,可能随验证者延迟而变化。文档描述了目标区块时间,但不保证固定间隔。始终在阅读时从文档验证当前节奏。
  • 速率限制:info API 有速率限制。如果你轮询过于频繁,可能会收到 429 响应。有关详细信息,请参阅 Hyperliquid RPC 速率限制指南

局限性和权衡

此处描述的机制是文档化的协议概念,但具体参数(区块时间、拍卖持续时间、费用分配)可能会发生变化,并可能因网络条件而异。Hyperliquid 文档是权威来源;始终在阅读时检查最新值。例如,Hyperliquid 关于 exchange/auction 的文档 指定了拍卖字段,但每轮持续时间并未在文档中硬编码——它由协议内部逻辑决定。

此外,构建者/数据可用性拍卖是一个不断发展的领域。HIP-3 和 HIP-4 是提案,其实施方式可能与本文描述不同。截至撰写本文时,HIP-3 已用于构建者部署的市场,但 HIP-4 仍是提案。不要假设 HIP-4 中描述的所有功能都在主网上活跃。

最后,info API 提供特定区块的状态快照。如果你需要历史记录,必须使用 candlestrades 端点,这些端点有其自身的局限性(例如,它们可能不包含每次预言机更新)。对于完整的审计跟踪,请考虑运行自己的索引器或使用数据服务。

后续步骤和进一步阅读

既然你了解了如何读取 Hyperliquid 的预言机价格和拍卖状态,你就可以构建更可靠的交易或监控工具。要深入了解,请探索以下资源:

永远不用担心基础设施

OnFinality 消除了 DevOps 的繁重工作,让您能够更聪明、更快地构建。

开始