Hyperliquid 没有基于以太坊或 Cosmos, 而是从共识层 (HyperBFT) 到撮合引擎全部用 Rust 自研了一条 L1, 200ms 出块, 在链上跑订单簿. 本文介绍其 L1 架构, 链上订单簿机制, HLP Vault 做市模式, 保证金清算流程, 以及 JELLY 事件暴露出的一些问题.
一、术语表 1.1 架构
术语
英文
含义
应用链
Appchain
专为单一应用构建的区块链, 不与其他 dApp 共享资源
共识
Consensus
验证者节点对交易排序/确认达成一致的协议
HyperBFT
HyperBFT
Hyperliquid 自研 BFT 共识, 基于 HotStuff 优化
验证者
Validator
运行共识 + 撮合引擎的节点
区块时间
Block Time
出块间隔, Hyperliquid ~200ms
1.2 交易
术语
英文
含义
链上订单簿
On-chain Order Book
每个订单作为交易提交到链上, 撮合在共识层完成
撮合引擎
Matching Engine
按 price-time priority 配对买卖订单
做市
Market Making
在买卖两侧同时挂单, 赚取 bid-ask spread
HLP
Hyperliquid LP Vault
协议原生做市 vault, 用户存 USDC 参与做市
ADL
Auto-Deleveraging
保险基金不足时, 强制让盈利方减仓
1.3 代币
术语
英文
含义
HYPE
HYPE Token
Hyperliquid 原生代币, 用于 staking + 手续费折扣
HIP-1
Hyperliquid Improvement Proposal 1
代币标准 + Spot 上币规则: 定义如何在 L1 上发行代币, 通过荷兰拍卖竞拍 ticker 上线交易对
HIP-2
Hyperliquid Improvement Proposal 2
协议自动做市: 新 token 上线后协议自动在订单簿两侧挂单, 解决冷启动流动性问题, 不依赖外部做市商
二、Hyperliquid 概述 2.1 为什么需要 Hyperliquid? 现有链上永续协议的问题:
协议
问题
GMX (Oracle 型)
零滑点但 OI 受限, LP 被动承担对手方风险
dYdX v3 (StarkEx)
订单簿在 StarkEx 链下, 依赖中心化 sequencer
dYdX v4 (Cosmos)
订单簿在内存中 (off-chain), 只有撮合结果上链
vAMM (Perp Protocol)
虚拟流动性, 滑点大, 易被操纵
Hyperliquid 的目标: 把完整的订单簿和撮合引擎搬到链上 , 同时保持 CEX 级别的性能.
2.2 当前规模 (量级参考)
指标
数值 (约)
日均交易量
$1B ~ $10B
总 OI (Open Interest)
$1B ~ $5B
上线交易对
100+
最大杠杆
50x
注: 具体数据随市场波动, 以上为 2025 年 Q1 的量级参考. 请以 Hyperliquid Stats 为准.
三、架构: 自研 L1 Q: Hyperliquid L1 到底是什么? 跟 Ethereum L2, Cosmos 链, EVM 链是什么关系?
Hyperliquid L1 是完全自建的独立 L1, 不是 Ethereum L2, 不是 Cosmos 链, 也不是 EVM 链. 用 Rust 从零写的, 不基于任何现有框架 (不用 OP Stack, 不用 Cosmos SDK, 不用 Substrate). 共识协议是 HyperBFT, 基于学术界的 HotStuff 改进而来.
维度
GMX (Arbitrum L2)
dYdX v4 (Cosmos appchain)
Hyperliquid (自建 L1)
基础框架
Ethereum L2 (OP Stack)
Cosmos SDK (Go)
自研 (Rust)
安全性继承
Ethereum
自身验证者
自身验证者
定制性
低
高
极高
EVM 兼容
完全
不兼容
后期加了 HyperEVM
Hyperliquid 架构
用户 (API / Web UI)
API Gateway (REST / WebSocket)
HyperBFT 共识层
Validator 1
撮合引擎
Validator 2
撮合引擎
Validator 3
撮合引擎
...
Perp Order Book
100+ 交易对
保证金 / 清算 / Funding
HLP Vault
Spot Order Book
HIP-1 代币标准
HIP-2 协议做市
Bridge
3.1 HyperBFT 共识 HyperBFT 基于学术界的 HotStuff 协议优化:
1 2 3 4 5 6 7 HotStuff (学术论文, Facebook/Meta Libra 使用) ↓ 优化 HyperBFT (Hyperliquid 自研) - 降低通信轮次 - 针对订单簿场景优化 - ~200ms 区块时间 - 100k+ orders/sec 吞吐
关键特性:
特性
说明
区块时间
~200ms (vs Ethereum ~12s, vs Cosmos ~6s)
吞吐量
100k+ orders/sec
确认
单次共识即最终确认 (no reorg)
容错
BFT: 容忍 < 1/3 恶意节点
3.2 vs dYdX v4: 同为 Appchain, 路径不同
dYdX v4 vs Hyperliquid: 架构对比
dYdX v4
Cosmos SDK + CometBFT
订单簿: 内存中 (off-chain)
只有撮合结果上链
Go 实现, 开源
路线: 站在 Cosmos 肩上, 复用生态
Hyperliquid
自研 L1 + HyperBFT
订单簿: 完全链上 (on-chain)
每个订单都是链上交易
Rust 实现, 未开源
路线: 从零自建, 最大灵活性
维度
dYdX v4
Hyperliquid
基础框架
Cosmos SDK
自研
共识
CometBFT
HyperBFT (HotStuff)
订单簿位置
内存 (off-chain)
链上 (on-chain)
上链内容
撮合结果
每个订单
透明性
中 (撮合过程不可验证)
高 (全链路可验证)
语言
Go (开源)
Rust (未开源)
IBC 互操作
支持
不支持
核心区别 : dYdX 的订单簿在验证者内存中, 用户无法验证撮合过程是否公平. Hyperliquid 每个订单都上链, 撮合过程完全可审计, 但代价是对共识层性能要求极高.
四、链上订单簿 4.1 工作原理 Hyperliquid 的每个操作都是一笔链上交易:
Hyperliquid Order Execution Flow
用户提交 limit buy ETH @ 3000 USDC
交易进入 HyperBFT 共识
验证者排序并执行
撮合引擎检查: 有没有 sell @ ≤ 3000?
有匹配
无匹配
立即成交
更新双方余额
挂到订单簿
等待匹配
4.2 订单类型
订单类型
说明
Limit Order
指定价格, 到价成交
Market Order
按当前最优价格立即成交
Stop Loss
价格跌到触发价 → 自动卖出
Take Profit
价格涨到触发价 → 自动卖出
TWAP
时间加权均价, 大单拆分为小单分时段执行
4.3 撮合规则: Price-Time Priority
订单簿 (ETH-USDC): Price-Time Priority
Asks (卖单, 价格从低到高)
价格
数量
时间戳
3001.5
2.0 ETH
T+1
3002.0
5.0 ETH
T+0 ← 先挂
3002.0
3.0 ETH
T+2 ← 后挂
Bids (买单, 价格从高到低)
价格
数量
时间戳
3000.0
10.0 ETH
T+0
2999.5
4.0 ETH
T+1
撮合规则
1
价格优先: 买方出价高的先成交, 卖方要价低的先成交
2
时间优先: 同价格下, 先挂的订单先成交
4.4 vs dYdX: 订单簿的关键区别
维度
dYdX v4
Hyperliquid
订单存储
验证者内存
链上状态
挂单
gossip 到验证者内存
作为交易上链
撮合
内存中完成, 结果打包上链
共识层执行, 结果写入链上状态
可审计性
只能验证最终结果
每笔订单可追溯
取消订单
从内存删除 (免费)
需要上链 (消耗资源)
类比: dYdX 像一个公证处: 你看不到内部审批过程, 但可以看到公证结果. Hyperliquid 像法庭公开审理: 每个环节都公开记录.
五、HLP Vault HLP (Hyperliquid LP) 是 Hyperliquid 最独特的设计之一: 一个协议原生的做市 vault.
5.1 工作原理
HLP Vault 做市机制
用户存入 USDC
获得 vault 份额
HLP Vault
协议控制的做市策略
订单簿
买卖两侧挂单
HLP 收益来源
做市利润
bid-ask spread
买低卖高赚差价
清算利润
接管被清算头寸
以折价获得仓位
Funding 收入
持仓方向有利时
收取 funding
风险: 做市亏损
单边行情下库存偏斜 → 持有大量亏损方向的头寸
极端情况: JELLY 事件暴露 HLP 做市风险, 团队紧急干预 (见第 11 节)
5.2 HLP vs GMX GLP: 本质区别
维度
GMX GLP
Hyperliquid HLP
角色
被动对手方
主动做市
策略
无策略, 交易者赚 = GLP 亏
协议运行做市策略, 赚 spread
风险来源
交易者的盈亏 (零和)
做市策略的库存风险
收益模式
手续费 + 交易者亏损
手续费 + spread + 清算利润
资产
多种 (ETH, BTC, USDC…)
仅 USDC
赎回
随时 (有冷却期)
随时 (有冷却期)
GLP : “你存钱进来, 交易者赢了你就亏, 交易者亏了你就赢.”HLP : “你存钱进来, 协议帮你做市赚差价, 但行情剧烈时可能亏.”
5.3 HLP 的子策略 HLP vault 内部运行多个策略组件:
策略
说明
Hyperliquidity
在多个交易对提供流动性 (挂 bid/ask)
Liquidator
接管被清算的仓位
Clearinghouse
处理 ADL 和风险管理
用户存入 USDC 后, 资金按比例分配到各策略, 收益也按比例分配.
六、保证金与清算
详细的保证金/清算机制见保证金管理与清算引擎. 这里只记录 Hyperliquid 的特殊实现.
6.1 保证金模式
模式
说明
Cross Margin (默认)
所有头寸共享保证金, 一个赚的可以 cover 另一个亏的
Isolated Margin
每个头寸独立保证金, 亏完就清算, 不影响其他头寸
6.2 Mark Price 1 mark_price (标记价格) = median (中位数) (binance_price, okx_price, bybit_price, ...)
Hyperliquid 的 mark price 由验证者节点从多个 CEX 拉取价格, 取 中位数 (median).
为什么用中位数而不是加权平均?
中位数天然抗单个数据源异常 (一个 CEX 宕机或被操纵, 中位数不受影响)
加权平均会被极端值拉偏
6.3 清算流程
Hyperliquid 清算流程
保证金率 < MM
mark price 触发
协议自动清算
无需外部 keeper
HLP 接管头寸
或市场平仓
结算
盈余 → 保险基金
Insurance Fund (保险基金)
清算盈余存入, 清算亏损消耗
保险基金不足时
ADL (自动减仓)
强制让盈利最多的对手方减仓, 分摊损失
Hyperliquid vs 其他协议的清算区别:
协议
清算执行者
清算激励
GMX
Keeper 网络 (外部)
清算奖励
dYdX v4
任意链上交易 (外部)
清算利润
Hyperliquid
协议自动 (内部)
无需外部激励
Hyperliquid 的清算由验证者节点自动执行, 不需要外部 keeper. 这降低了清算延迟, 但也意味着清算逻辑完全由协议控制 (不像 GMX/dYdX 由竞争性 keeper 执行).
七、Funding Rate 7.1 结算频率
协议
Funding 频率
说明
Binance / OKX
8h 离散结算
每 8 小时结算一次
dYdX v3
8h 离散结算
每 8 小时结算一次
dYdX v4
连续累积, 费率/8h
每个区块连续累积
Hyperliquid
连续累积, 费率/1h
每个区块连续累积
GMX
连续累积, 费率/1h
每个区块连续累积
Hyperliquid 每个区块连续累积 funding, 费率以 1h 为单位标注. 连续累积意味着:
价格偏离被更快纠正
不存在 “结算前抢跑” 的套利窗口
套利者有更多机会参与
7.2 计算逻辑 1 2 3 4 5 6 7 8 9 premium (溢价) = (mark_price (标记价格) - oracle_price (预言机价格)) / oracle_price funding_rate (资金费率) = clamp (premium, -0.05 %, +0.05 %) funding_payment (资金支付) = position_size (头寸规模) × funding_rate
7.3 为什么连续累积比离散结算好?
Funding 累积频率对比
8h 离散结算 (CEX / dYdX v3)
0h
8h
16h
连续累积, 费率/1h (Hyperliquid)
0
4h
8h
8h 离散结算: 偏离可以累积 8 小时才被修正, 偏离幅度可能很大
连续累积: 每个区块都修正, 价格锚定更紧密, 无结算前抢跑窗口
trade-off: 更频繁的结算 = 更高的计算开销 (但 Hyperliquid 的 L1 性能足够支撑)
八、Spot 交易 Hyperliquid 不只做永续, 它也在链上运行了完整的 Spot 订单簿.
8.1 HIP-1: 链上 Spot Order Book HIP-1 定义了 Hyperliquid L1 上的代币标准和 spot 交易规则:
代币在 Hyperliquid L1 上原生发行
交易通过链上订单簿完成 (与 perp 相同的撮合引擎)
通过 bridge 与 Arbitrum 互通 (USDC 桥接)
8.2 HIP-2: Hyperliquidity (协议自有做市) HIP-2 是 Hyperliquid 的创新: 协议自动为 spot 市场做市 , 不依赖外部做市商.
1 2 3 4 5 6 7 传统 spot DEX: 新 token 上线 → 需要找做市商 → 没人做市 → 流动性差 → 没人交易 (冷启动问题) Hyperliquid HIP-2 : 新 token 上线 → 协议自动做市 (protocol-owned liquidity) → 立即有流动性 → 用户可以交易
维度
Uniswap (AMM)
Hyperliquid HIP-2
模型
x * y = k
订单簿 + 协议做市
流动性来源
LP 提供
协议自有
冷启动
需要 LP 注入
自动启动
价格发现
AMM 曲线
订单簿 (更高效)
8.3 Bridge Hyperliquid 通过 bridge 连接 Arbitrum:
用户将 USDC 从 Arbitrum 桥接到 Hyperliquid L1
提款时从 Hyperliquid L1 桥回 Arbitrum
bridge 由验证者集合维护 (多签)
Q: Hyperliquid 上的 USDC 是 Circle 原生发行的吗?
不是. Hyperliquid 上的 USDC 是从 Arbitrum 桥接过来的, 不是 Circle 在 Hyperliquid 上原生发行的. bridge 安全性由 Hyperliquid 验证者集合保障 (多签), 不是 trustless 的. dYdX 也是类似情况, USDC 通过 Noble chain 经 IBC 转入, 也不是 Circle 直接发行.
Circle 是否在某条链上原生发行 USDC, 本质上是对该链的信任背书. 目前 Circle 原生支持的链包括 Ethereum, Arbitrum, Base, Solana, Avalanche 等, 但不包括 Hyperliquid 和 dYdX chain.
8.4 代币的三种上线方式 Q: Hyperliquid 上的代币有几种来源?
Hyperliquid 上的代币有三种来源:
跨链桥接 (Bridge) : 从 Arbitrum 桥接 USDC 到 Hyperliquid, 目前只支持 USDC 一种资产
原生层 HIP-1 代币 : 通过荷兰拍卖 (Dutch Auction) 机制上币, 无需审批, 任何人出价竞拍 ticker 即可上线 spot 交易对
HyperEVM ERC20 : 任何人都可以在 HyperEVM 上部署 Solidity 合约, 发行标准 ERC20 代币
这三种方式对应 Hyperliquid 的双层架构:
Hyperliquid 双层架构
HyperEVM (通用智能合约层)
- 任何人部署 Solidity 合约
- ERC20 代币
- DeFi 协议 (借贷, DEX 等)
灵活 (任意 Solidity)
性能受限于 EVM 执行开销
互操作
Hyperliquid Native (核心交易引擎)
- Perp 订单簿
- Spot 订单簿 (HIP-1)
- 协议做市 (HIP-2)
- Bridge (USDC)
200ms 区块 | 100k+ orders/sec | 只运行预定义逻辑
Native 层性能极高 (200ms 区块, 100k+ orders/sec), 但只能运行 Hyperliquid 预定义的逻辑. HyperEVM 层更灵活 (任意 Solidity), 但性能受限于 EVM 执行开销. 两层之间可以互操作.
九、HYPE Token 9.1 用途
用途
说明
Staking
质押 HYPE 参与网络验证, 获得 staking 收益
手续费折扣
持有/质押 HYPE 降低交易手续费
治理
未来可能用于协议治理 (目前治理权集中)
9.2 空投 2024 年 11 月, Hyperliquid 进行了大规模空投:
基于历史交易量和协议使用情况
总供应量 31% 分配给社区
无 VC 轮次, 无 lockup (社区空投部分)
被认为是 2024 年最大规模的空投之一
十、费率结构 10.1 Maker/Taker 分层费率
层级
30d 交易量
Maker
Taker
基础
< $5M
0.01%
0.035%
VIP 1
$5M ~ $25M
0.008%
0.03%
VIP 2
$25M ~ $100M
0.006%
0.025%
VIP 3
$100M ~ $500M
0.004%
0.02%
VIP 4
> $500M
0.002%
0.015%
注: 费率随协议更新可能调整, 以上为参考值.
特点:
Maker 费率极低 (鼓励挂单提供流动性)
与 CEX 相比, 整体费率有竞争力 (Binance maker 0.02%, taker 0.04%)
HYPE staking 可获得额外折扣
10.2 Referral System
推荐人获得被推荐人手续费的一定比例 (通常 ~10%)
被推荐人获得手续费折扣 (~5%)
referral code 绑定在地址上
十一、Go: 与 Hyperliquid API 交互 Hyperliquid 提供 REST + WebSocket API. 以下用 Go 演示常见操作.
11.1 基础设置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 package mainimport ( "bytes" "context" "encoding/json" "fmt" "io" "log" "net/http" "time" )const ( baseURL = "https://api.hyperliquid.xyz" infoURL = baseURL + "/info" )type Client struct { http *http.Client }func NewClient () *Client { return &Client{ http: &http.Client{Timeout: 10 * time.Second}, } }func (c *Client) post(ctx context.Context, payload any) ([]byte , error ) { body, err := json.Marshal(payload) if err != nil { return nil , fmt.Errorf("marshal payload: %w" , err) } req, err := http.NewRequestWithContext(ctx, http.MethodPost, infoURL, bytes.NewReader(body)) if err != nil { return nil , fmt.Errorf("create request: %w" , err) } req.Header.Set("Content-Type" , "application/json" ) resp, err := c.http.Do(req) if err != nil { return nil , fmt.Errorf("do request: %w" , err) } defer func () { _ = resp.Body.Close() }() data, err := io.ReadAll(resp.Body) if err != nil { return nil , fmt.Errorf("read response: %w" , err) } if resp.StatusCode != http.StatusOK { return nil , fmt.Errorf("unexpected status %d: %s" , resp.StatusCode, string (data)) } return data, nil }
11.2 读取 Order Book (L2)
L2 = Level 2 (二档行情) , 不是 Layer 2 (二层网络). 这是交易所 API 的通用术语:
L1 (Level 1) : 只返回最优买卖价 (best bid/ask)
L2 (Level 2) : 返回多档聚合报价 (同一价格的订单合并, 显示总量和档数)
L3 (Level 3) : 返回每笔订单明细 (不聚合)
CEX (Binance, OKX) 的 API 也用同样的 L1/L2/L3 命名.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 type L2Book struct { Levels [][]PriceLevel `json:"levels"` }type PriceLevel struct { Px string `json:"px"` Sz string `json:"sz"` N int `json:"n"` }func (c *Client) GetL2Book(ctx context.Context, coin string ) (*L2Book, error ) { payload := map [string ]any{ "type" : "l2Book" , "coin" : coin, } data, err := c.post(ctx, payload) if err != nil { return nil , fmt.Errorf("get l2 book: %w" , err) } var book L2Book if err := json.Unmarshal(data, &book); err != nil { return nil , fmt.Errorf("unmarshal l2 book: %w" , err) } return &book, nil }
11.3 读取 Open Interest 和 Funding Rate 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 type Meta struct { Universe []AssetMeta `json:"universe"` }type AssetMeta struct { Name string `json:"name"` SzDecimals int `json:"szDecimals"` MaxLeverage int `json:"maxLeverage"` OnlyIsolated bool `json:"onlyIsolated"` }type AssetCtx struct { Funding string `json:"funding"` OpenInterest string `json:"openInterest"` PrevDayPx string `json:"prevDayPx"` DayNtlVlm string `json:"dayNtlVlm"` MarkPx string `json:"markPx"` MidPx string `json:"midPx"` OraclePx string `json:"oraclePx"` }type MetaAndAssetCtx struct { Meta Meta `json:"-"` AssetCtxs []AssetCtx `json:"-"` }func (c *Client) GetMetaAndAssetCtxs(ctx context.Context) (*MetaAndAssetCtx, error ) { payload := map [string ]any{ "type" : "metaAndAssetCtxs" , } data, err := c.post(ctx, payload) if err != nil { return nil , fmt.Errorf("get meta: %w" , err) } var raw []json.RawMessage if err := json.Unmarshal(data, &raw); err != nil { return nil , fmt.Errorf("unmarshal outer: %w" , err) } if len (raw) != 2 { return nil , fmt.Errorf("expected 2 elements, got %d" , len (raw)) } result := &MetaAndAssetCtx{} if err := json.Unmarshal(raw[0 ], &result.Meta); err != nil { return nil , fmt.Errorf("unmarshal meta: %w" , err) } if err := json.Unmarshal(raw[1 ], &result.AssetCtxs); err != nil { return nil , fmt.Errorf("unmarshal asset ctxs: %w" , err) } return result, nil }
11.4 查询用户持仓 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 type UserState struct { AssetPositions []AssetPosition `json:"assetPositions"` CrossMarginSummary MarginSummary `json:"crossMarginSummary"` }type AssetPosition struct { Position Position `json:"position"` Type string `json:"type"` }type Position struct { Coin string `json:"coin"` Szi string `json:"szi"` EntryPx string `json:"entryPx"` PositionValue string `json:"positionValue"` UnrealizedPnl string `json:"unrealizedPnl"` Leverage Leverage `json:"leverage"` }type Leverage struct { Type string `json:"type"` Value int `json:"value"` }type MarginSummary struct { AccountValue string `json:"accountValue"` TotalMarginUsed string `json:"totalMarginUsed"` TotalNtlPos string `json:"totalNtlPos"` }func (c *Client) GetUserState(ctx context.Context, address string ) (*UserState, error ) { payload := map [string ]any{ "type" : "clearinghouseState" , "user" : address, } data, err := c.post(ctx, payload) if err != nil { return nil , fmt.Errorf("get user state: %w" , err) } var state UserState if err := json.Unmarshal(data, &state); err != nil { return nil , fmt.Errorf("unmarshal user state: %w" , err) } return &state, nil }
11.5 使用示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 func main () { client := NewClient() ctx := context.Background() book, err := client.GetL2Book(ctx, "ETH" ) if err != nil { log.Fatalf("get order book: %v" , err) } if len (book.Levels) == 2 && len (book.Levels[0 ]) > 0 { fmt.Printf("ETH best bid: %s, best ask: %s\n" , book.Levels[0 ][0 ].Px, book.Levels[1 ][0 ].Px) } meta, err := client.GetMetaAndAssetCtxs(ctx) if err != nil { log.Fatalf("get meta: %v" , err) } for i, asset := range meta.Meta.Universe { if i >= len (meta.AssetCtxs) { break } actx := meta.AssetCtxs[i] fmt.Printf("%-8s funding: %s OI: %s mark: %s\n" , asset.Name, actx.Funding, actx.OpenInterest, actx.MarkPx) } state, err := client.GetUserState(ctx, "0x..." ) if err != nil { log.Fatalf("get user state: %v" , err) } fmt.Printf("Account value: %s\n" , state.CrossMarginSummary.AccountValue) for _, ap := range state.AssetPositions { p := ap.Position fmt.Printf(" %s: size=%s entry=%s pnl=%s\n" , p.Coin, p.Szi, p.EntryPx, p.UnrealizedPnl) } }
11.6 WebSocket 订阅 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 const wsURL = "wss://api.hyperliquid.xyz/ws" type WSSubscription struct { Method string `json:"method"` Subscription map [string ]string `json:"subscription"` }
十二、风险与争议 12.1 中心化程度
维度
现状
验证者数量
有限 (远少于 Ethereum 的数千节点)
代码
未开源 (Rust 实现, 不可审计)
治理
团队主导, 无链上治理
Bridge
验证者多签, 非 trustless
虽然 Hyperliquid 声称 “链上透明”, 但核心代码未开源, 用户无法验证撮合引擎是否真的公平. 这是一个 信任假设 : 你信任验证者集合不会作恶.
12.2 JELLY 事件 (2025 年 3 月) 2025 年 3 月发生的 JELLY 事件是 Hyperliquid 迄今最大的争议, 也是典型的 “市场操纵 + 强制清算转嫁” 攻击.
攻击对象 : JELLY (JellyJelly), 一个极小市值的 meme token, 流动性极差, 价格容易被操纵.
攻击步骤:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 第 1 步 : 建立巨额空头 在 Hyperliquid 上做空 JELLY, 仓位远超正常水平 例 : $5M 保证金, 10x 杠杆, 做空 $50M 的 JELLY 第 2 步 : 拉盘 自己在现货市场 (链上 DEX) 大量买入 JELLY JELLY 市值本来就小, 几百万美元就能把价格拉起来 → 攻击者在现货端赚了 第 3 步 : 等空头被清算 价格被拉高 → 攻击者自己的空头仓位爆仓 但攻击者根本不在乎, 他故意让自己被清算 关键 : 清算后这个巨额空头仓位去哪了? → HLP (协议做市 vault) 自动接盘! 被迫持有这个巨额空头 结果 : JELLY 价格还在高位 → HLP 持有的空头巨亏 攻击者 : 现货端赚的钱 > 空头保证金的损失 → 净赚 HLP 用户 (存 USDC 的普通人) → 承担亏损
攻击成功的三个条件 (缺一不可):
条件
说明
小市值 token 上了永续合约
现货流动性差, 容易操纵价格
OI 上限 (Open Interest Cap) 设置过高
允许建立与市值不匹配的巨额仓位 (如市值 $10M 却允许 $50M 空头)
HLP 自动接管清算仓位
攻击者利用此机制把 “毒仓位” 转移给 HLP
团队应对 (争议核心):
1 2 3 4 5 6 7 8 9 团队做了什么: 1. 紧急下架 JELLY 永续合约 2. 以 "团队认为合理的价格" 强制结算所有 JELLY 仓位 3. HLP 的亏损被部分挽回 为什么有争议: - "合理价格" 由团队单方面决定, 非市场价格 - 链上交易的不可篡改性被绕过: 直接改了结算价格 - 本质上与 CEX "拔网线" 无异
问题:
问题
说明
市场操纵
攻击者利用小市值 token 的低流动性, 联动现货和永续两个市场
HLP 风险暴露
HLP 作为清算接收方, 被迫持有高风险头寸, 成为定向攻击目标
中心化干预
团队单方面下架 token 并以自定价格强制结算, 违背去中心化原则
信任危机
“链上透明” 的叙事被动摇: 关键时刻团队可以直接干预
教训:
链上订单簿不等于去中心化: 如果运营方能单方面干预, 本质上与 CEX 无异
HLP 的风险不只是做市亏损: 作为清算接收方, 面临被定向攻击的风险
小市值 token 的 OI 上限需要严格控制, 应与现货市值挂钩
vs GMX : GMX 的 Oracle 模型 (Chainlink 多源聚合) 不容易被单个 DEX 的价格操纵影响; Hyperliquid 的链上订单簿直接反映市场价格, 被操纵了就是被操纵了
12.3 审计状况
核心代码未开源, 难以进行完整审计
团队声称内部有安全审计流程, 但缺乏第三方独立审计报告
智能合约 (bridge 等) 部分有审计
十三、小结 13.1 Hyperliquid 的定位
订单簿 + 高性能区
DeFi 原生区
去中心化
性能
CEX (Binance)
最快, 但完全中心化
Hyperliquid
~200ms, 少量验证者
dYdX v4
Cosmos 验证者网络
GMX
Arbitrum L2, Oracle 定价
vAMM
L1 上链, 受 gas 限制
优势
劣势
CEX 级别性能 (~200ms)
验证者数量有限, 偏中心化
完全链上订单簿, 可审计
代码未开源
HLP vault 创新做市模式
HLP 面临被定向攻击风险 (JELLY)
连续累积 funding (费率/1h), 价格锚定更紧
Bridge 依赖验证者多签
大规模社区空投
关键时刻团队可单方面干预
13.2 核心问题
Hyperliquid 本质上是一个 “由少数验证者运行的高性能订单簿” . 它比传统 DeFi 更快, 比 CEX 更透明, 但它真的去中心化吗? JELLY 事件表明, 当危机发生时, 它的行为与中心化交易所并无二致.
下一步 : → 永续合约中的 MEV - 清算 MEV, Oracle 抢跑, 跨市场套利.