
在Uniswap V4中建立Hook数据标准
来源:登链社区
原文链接:https://mp.weixin.qq.com/s/Jz3ONarTdRuCEzJ0_PfjrQ
Hooks 是 Uniswap v4 的决定性特征,它们使开发者能够自定义和扩展流动性池的行为。在本指南中,我们的目标是为 hook 开发者、hook 数据索引者和分析师建立一个标准,以便所有用户,从开发者和 LP 到分析师,在使用 hook 数据时都可以使用相同的共享框架。
Hook 与 Uni v4
但首先,让我们澄清 hook 如何融入 v4。可以将它们视为 PoolManager 合约的插件或外部 API。每个池只能链接到 一个 hook,但单个 hook 合约可以服务于 多个 池。一旦池使用 hook 初始化,该池就成为“hooked 池”(相对于“vanilla 池”),并且 hook 本身被认为是“已初始化”。相比之下,没有池的 hook 合约只是一个未使用的 Solidity 合约,它实现了 核心 hook 函数 的一个子集。
请记住,Uniswap v4 是一个 单例:PoolManager 从一个地方管理 所有 v4 池及其状态。下面的可视化展示了这些部分——池、hook 和 PoolManager——是如何关联的。
Hook 标准
虽然 hook 可以包含任何 Solidity 代码,但它们都锚定在 Uniswap v4 中的 10 个核心 hook 函数 上。这些函数对应于池生命周期中的关键点(例如,互换或流动性修改之前/之后),并为自定义提供清晰的“入口点”。有关参考,请参阅 Uni v4 核心库中的 Hooks.sol 合约和 OpenZeppelin 制作的 BaseHook.sol 模板,该模板定义了所有 hook 入口点。
除了这些核心函数外,还有 4 个“delta-returning”标志,使可能的“hook 标志”总数达到 14。每个 hook 合约都通过其地址的最后 14 位来指示它实现了哪些 14 个标志(请参阅我们 之前的 v4 数据指南 关于如何读取这些位的文章)。这允许开发者和索引者快速确定 hook 的属性。如果你不熟悉 return deltas,请参阅 v4 文档中的 自定义会计、解锁回调和 Deltas 和 BeforeSwapDelta。
虽然 hook 可以做的不仅仅是标准的 10 个核心函数,但这些函数创建了一个一致的基础:
-
开发者可以依靠已知的“入口点”来自定义池行为。 -
索引器可以可靠地解析来自不同 hook 的相同核心 hook 调用的跟踪数据。
在许多情况下,hook 只会修改或扩展正常的 v4 PoolManager 流程,从而继承 Uniswap v4 核心合约中的常用事件。但是,某些 hook 可能会绕过或替换某些逻辑,从而导致跳过默认的 v4 事件或使其不准确。为了填补这一空白——并确保交易量、TVL 和费用的准确指标——我们提出了一组 hook 特定的事件。通过在正确的时间发出它们,hook 保持可发现性,分析保持可靠,并且 LP 获得完整的风险回报图。
我们正在与 OpenZeppelin 合作,将这些标准纳入 Uniswap Hooks 库,并与 Atrium Academy 合作,以便在开发者培训中采用它们。与任何主要标准(例如,ERC20、EIP1559)一样,广泛的社区支持是成功的关键。
标准 Hook 事件
我们强烈建议你发出这些事件,以便开发者、LP、分析师和用户都可以共享一个统一的hook数据解释框架。 通过遵循此标准,你还可以访问我们正在开发的开源存储库,从而可以轻松检索 hook 的指标,将其集成到前端显示中,并将其用于内部分析——确保你的 hook 在更广泛的生态系统中保持可见且有价值。
event HookSwap( bytes32 indexed id, // v4 池 ID address indexed sender, // 互换的路由器 int128 amount0, int128 amount1, uint128 hookLPfeeAmount0, uint128 hookLPfeeAmount1 ); event HookFee( bytes32 indexed id, // v4 池 ID address indexed sender, // 互换的路由器 uint128 feeAmount0, uint128 feeAmount1 ); event HookModifyLiquidity( bytes32 indexed id, // v4 池 ID address indexed sender, // 路由器地址 int128 amount0, int128 amount1 ); event HookBonus( bytes32 indexed id, // v4 池 ID uint128 amount0, uint128 amount1 );
你不需要发出 全部 四个事件——只需发出与你的 hook 行为相关的事件即可。
用例流程图
以下图表说明了在 hook 的生命周期中 何时 发出每个事件。请记住,这些场景可以 重叠。你的 hook 可能同时位于“自定义曲线”和“hook 费用”中,因此你需要为 两种 流程发出事件。
自定义曲线
在 v4 中,开发者可以通过使用 自定义会计 来绕过内置的 v3 集中流动性,从而允许他们实现自己的互换曲线。这实现了自定义流动性供应和互换逻辑。自定义曲线 通过 Hooks.BEFORE_SWAP_FLAG 和 Hooks.BEFORE_SWAP_RETURNS_DELTA_FLAG 启用。此类曲线的示例包括:
-
常数和曲线 -
StableSwap -
LAMMbert -
非对称曲线 -
动态曲线 -
阶梯式曲线
由于这些自定义曲线绕过了内置的 ModifyLiquidity 事件的发出,并产生了不正确的 Swap 事件信息,因此我们强烈建议在 hook 合约中发出 HookSwap 和 HookModifyLiquidity 事件。
异步互换
异步互换 将互换执行推迟到稍后的时间,从而允许 hook 控制互换的顺序并保护互换者免受 MEV 三明治攻击。此外,异步互换还可以用自定义曲线替换 v4 互换逻辑,从而有效地绕过类似 v3 的互换实现。
异步互换 使用 Hooks.BEFORE_SWAP_FLAG 和 Hooks.BEFORE_SWAP_RETURNS_DELTA_FLAG 启用。由于基于批处理的执行模型,我们建议在批处理完成时而不是针对每个单独的互换发出 HookSwap 事件。
你可以在 此处 找到 OpenZeppelin 开发的异步互换模板。
Hook 费用
Hook 可以选择对互换或流动性修改收取费用,无论是作为固定金额还是动态计算。如果 hook 为互换者提供有价值的服务,它可能会选择在互换期间收取费用。同样,hook 可以对流动性修改征收费用。例如,hook 可能会通过对在特定时间范围内移除流动性收取高额费用来惩罚即时 (JIT) 流动性。有关实施静态 hook 费用的示例,请查看此内容。
Hook 奖励
Hook 奖励与 hook 费用相反——hook 不是向互换者收费,而是向用户返利,以激励通过实施这些奖励机制的池进行互换。Hook 可以使用 return-delta-flags 来实现此目的,即 BEFORE_SWAP_RETURNS_DELTA_FLAG 和/或 AFTER_SWAP_RETURNS_DELTA_FLAG。
对于数据索引器
现在我们已经介绍了开发者将如何集成 hook 标准,让我们讨论如何有效地索引 hook 数据。
-
识别已初始化的 Hook -
监控池创建期间来自 v4 PoolManager 的 Initialize 事件。 -
此事件指示池是 hook 池(你将看到有效的 hook 地址)还是 vanilla 池(地址为 null 地址)。 -
通过跟踪这些地址,你可以编译一个完整的数据索引初始化 hook 列表。 -
索引 Hook 活动 -
所有已初始化的 hook 都实现了 10 个核心 hook 函数,并且应该发出我们介绍的标准 hook 事件。 -
通过监控这些函数和事件的日志和跟踪数据(请参阅附录中的 ABI),你可以以一致、标准化的方式捕获每个 hook 的活动。
Hook 指标
恭喜你走到这一步——我们几乎到达终点线了!
现在我们已经探讨了 hook 与 Uniswap v4 的关系,以及 hook 标准和各种用例流程,现在是时候处理指标了。建立一个共享术语确保了当我们讨论与 hook 相关的指标和 v4 指标时,我们都对内容有一个清晰、一致的理解。
我们将专注于两个关键指标类别——TVL 和交易量。下面,我们将定义这些指标并提供有关其计算的建议。
TVL(总锁定价值)
总体 TVL
Uniswap v4 中的总体 TVL 是锁定在协议中的所有流动性的总价值(通常以美元计)。这包括保存在单例 v4 Pool Manager 合约中的流动性,以及保存在外部已初始化 hook 合约中的任何流动性。hook 合约一旦在至少一个 Uniswap v4 池中注册,就被认为是“已初始化”。
单例 TVL
单例 TVL 是指仅保存在 Uniswap v4 的核心(单例)Pool Manager 合约中的总流动性部分。即使池使用外部 hook 初始化,单例 TVL 也仅计算锁定在核心合约本身中的资产,不包括 hook 合约持有的任何外部流动性。
外部 TVL
外部 TVL 是指保存在 Uniswap v4 核心 Pool Manager 合约之外的总流动性,特别是保存在已初始化的 hook 合约中。hook 合约一旦在至少一个 Uniswap v4 池中注册,就被认为是“已初始化”。
Hook TVL
Hook TVL 是指使用 hook 的池中的总流动性。它包括 常规 hook 池(流动性保留在 Uniswap v4 Pool Manager 合约中)和 特殊 hook 池(例如,自定义曲线)(流动性驻留在外部 hook 合约中)。
关于高级 Hook 场景的说明
Hook可能会引入更复杂的流动性流,从而超出上述简单的“锁定”模型。例如,重新抵押hook可能会将流动性部署到外部借贷协议中,在那里可以赚取收益,而不是停留在v4 Pool Manager合约中。同样,即时 (JIT) 流动性hook可能会仅在互换需要时才从其他地方提取流动性。这些场景意味着v4中的“TVL”(单例和外部)可能与用于互换或在任何给定时刻驻留在协议中的实际资本不同。
我们正在与更广泛的 Uniswap 社区和 hook 开发者积极合作,以改进我们针对这些高级用例的 TVL 定义和测量方法。我们将在最终确定这些修订后的 TVL 标准后立即分享更新。
计算
可以通过两种方式确定 TVL:
-
跟踪流动性修改事件 – 监视包括互换在内的流动性变化,以得出总流动性净值。 -
跟踪代币流 – 衡量相关合约中的流入和流出。
由于 v4 的单例架构,在 池级别,TVL 不再能仅从代币流中得出。但是,对于更广泛的总体 TVL 计算,跟踪代币流通常比监视流动性修改事件更有效。
成交量
交易量表示 Uniswap v4 上的总交易活动(通常以美元计),按每笔交易衡量。例如,将 2,673.83 USDC 兑换为 1 ETH(使用 2 月 13 日下午 5:23 的 ETH 价格)计为 2,673.83 美元的交易量,而不是交易中两种资产的总额的两倍。
总交易量(在一段时间内)
总交易量(在一段时间内)是给定时间范围内所有 Uniswap v4 池中的累计交易量,包括 vanilla 池和 hook 池。
Hook 交易量(在一段时间内)
Hook 交易量(在一段时间内)是指给定时间范围内 hook 池 中的总交易量。这包括由使用其自己的自定义逻辑和/或流动性的返回 delta hook(例如,自定义曲线或异步互换)促成的互换金额。
Vanilla 交易量(在一段时间内)
Vanilla 交易量(在一段时间内)是指 vanilla 池 中的总交易量,即未使用任何 hook 初始化的池。
计算
为了准确衡量 Uniswap v4 中的交易量,有两种主要方法:
-
基于事件的跟踪 – 你可以跟踪发出的事件,但要获得完整的画面,你必须同时监视: -
来自 v4 核心合约的互换事件。 -
来自 delta-returning hook 合约的 HookSwap 事件(例如,自定义曲线)。仅依赖互换事件将错过由 delta-returning hook 促成的交易量。 -
跟踪数据索引 – 一种更全面的方法是索引 v4 中互换函数调用的 跟踪数据。这需要根据互换参数解析 swapDelta 字段以重建 amount0 和 amount1。此方法确保捕获所有互换,包括通过 delta-returning hook 处理的互换。
你已经可以从 Dune 和 Allium 上的 dex.trades 查询整体交易量,它们使用跟踪数据索引。我们还在与 Uniswap Labs 合作将此应用于 v4 开源子图。
结束语
我们希望本指南有助于阐明 Uniswap v4 hook 数据的格局,从标准和事件到索引和分析。在我们结束时,以下是我们主要的行为号召:
-
Hook 开发者: 采用四个标准事件并在建议的点发出它们。这有助于生态系统中的每个人轻松理解和集成你的 hook 的行为。通过坚持此标准,你还可以使用我们即将推出的开源存储库,使你能够无缝检索你的 hook 的指标,在前端界面上展示它们并在内部进行分析——使你的 hook 在更广泛的生态系统中保持最前沿并节省你的团队大量工时。 -
索引器和分析师: 更新你的管道以检测初始化时的 hook 并解析标准 hook 事件。这确保了 v4 中互换、费用和流动性变化的全面覆盖。
通过像 ERC20 或 EIP1559 标准出现的方式一样共同努力,我们可以为 Uniswap v4 hook 塑造一个一致、可发现和透明的未来!
原文链接: https://uniswapfoundation.mirror.xyz/KGKMZ2Gbc_I8IqySVUMrEenZxPnVnH9-Qe4BlN1qn0g 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
比推快讯
更多 >>- 美国副总统万斯批评美联储未履行职责,称当前利率过高
- 道琼斯、标普 500、纳斯达克指数均上涨,纳指涨幅达 0.53%
- 英伟达 CEO:预计在未来十年将建设价值3至4万亿美元的人工智能工厂基础设施
- 数据:过去 24h Binance 净流入 7.77 亿 USDT
- 现货黄金向上触及3420美元/盎司,为7月23日以来首次,日内涨0.67%
- xAI 推出高效推理模型 Grok Code Fast 1
- Bitwise:预计比特币将于 2035 年涨至 130 万美元
- 美 SEC 推迟对灰度现货以太坊 ETF 增加质押功能作出决定
- 近 24 小时 Solana 发币平台市场份额排行:pump.fun、Letsbonk、Believe 位列前三
- 美联储逆回购操作接纳 319.66 亿美元对手方
- 美元指数短线走低 现报 97.75
- 离岸人民币兑美元涨破 7.12 创 10 个月新高
- 美 CFTC 将发布指导意见,明确外国交易平台注册规则
- CyberKongz:KONG 总量 2%空投给 2023 年以来在 OpenSea 买入以太坊链上 NFT 金额达 1 万美元的地址
- Solana Mobile 宣布将于 9 月 8 日开启 Seeker Season
- 美联储理事库克相关案件的法官定于周五举行听证会
- CZ:持有大量 BNB,相当大一部分财富与其挂钩
- Greeks.Live:市场情绪趋于谨慎,认为 BTC 和 ETH 走势相对疲软
- 数据:已有 145.9 亿枚 WLFI 转移至 Lockbox 合约,占代币总量的 14.59%
- 比特币优先协议 Portal to Bitcoin 完成 5000 万美元新融资
- 美财长贝森特:关税并未影响物价或消费者支出
- 初请失业金人数公布后,9 月降息概率现报 87.3%
- 欧盟提议取消美国商品关税,推动美方降低汽车关税
- USDC Treasury 在以太坊网络新增铸造 5000 万枚 USDC
- 墨西哥加密货币平台 Bitso 进军智利和秘鲁
- 比特币持有者盈利钱包数量超 5500 万,创历史新高
- DeFi Development Corporation 增持 407,247 枚 SOL,总持有量达 1,831,011 枚 SOL
- Mitosis 已开放空投申领
- Coinbase 为美国商务部在 GDP 数据上链项目的加密基础设施合作伙伴
- Lombard 在 Solana 网络推出收益型比特币资产 LBTC
- 美国政府向比特币、以太坊、SOLANA、TRON、STELLAR、AVALANCHE、ARBITRUM 和 POLYGON 公布了最新的 GDP 数据
- Tether Treasury 于以太坊链上新增铸造 10 亿枚 USDT
- USD.AI 与 Plasma 达成合作,将为 USDT 开放新的存款限额
- 特朗普提名的美联储理事提名人米兰有望在美联储会议前得到确认
- 三地址于 11 日前囤积 56.1 万枚 LINK,目前浮盈达 143.1 万美元
- Pyth Network 现报被美国商务部选中,用于链上经济数据的验证和分发
- 纳斯达克 100 指数转跌
- 美国商务部和 Chainlink 合作,将美国政府宏观经济数据上链
- 摩根大通:比特币波动率创历史新低,价格相较黄金被低估
- 美股开盘,道指涨 0.09% 英伟达涨 1.45%
- 美国数据向好打压降息预期
- 美国计划将 GDP 数据上链,目标覆盖 9 条区块链
- Arx Veritas 与 Blubird 通过区块链技术完成价值 320 亿美元碳减排资产的代币化
- FIST 代币风险预警:多个地址持续套现,警惕崩盘风险
- 市场消息:美联储理事库克正式起诉特朗普,抗议其罢免她的美联储职务
- IMF:市场仍信美联储独立性,但实际风险不容忽视
- Binance CEO:未来十年加密行业核心在于用户采用
- Falcon Finance 设立 Onchain 保险基金,首期投入 1000 万美元
- Circle 向韩国金融部门提议发行美元稳定币而非韩元稳定币
- 美国上周初请失业金人数下降,裁员数量维持低位
比推专栏
更多 >>观点
比推热门文章
- 美国副总统万斯批评美联储未履行职责,称当前利率过高
- 道琼斯、标普 500、纳斯达克指数均上涨,纳指涨幅达 0.53%
- 英伟达 CEO:预计在未来十年将建设价值3至4万亿美元的人工智能工厂基础设施
- 数据:过去 24h Binance 净流入 7.77 亿 USDT
- 现货黄金向上触及3420美元/盎司,为7月23日以来首次,日内涨0.67%
- Trend Research: “抢购ETH”已成机构明牌,市值终将超越BTC
- xAI 推出高效推理模型 Grok Code Fast 1
- Bitwise:预计比特币将于 2035 年涨至 130 万美元
- 美 SEC 推迟对灰度现货以太坊 ETF 增加质押功能作出决定
- 近 24 小时 Solana 发币平台市场份额排行:pump.fun、Letsbonk、Believe 位列前三