概述
GeodeHook.sol 是整个 Geode 协议的单一合约(约 1,190 行)。它实现了 Uniswap v4 IHooks 接口和 IUnlockCallback,通过 beforeSwap 拦截交换,并通过 geodeSettleBatch() 提供批量结算。
Hook 标志:BEFORE_SWAP | BEFORE_SWAP_RETURNS_DELTA
不可变量
常量
状态变量
外部入口
geodeSettleBatch()
主结算函数。无许可——任何人都可以调用并赚取奖励。
beforeSwap()
Hook 回调,拦截配置池上的每次交换。
sender == address(this)(Hook 路由剩余):无费用,直通- 活跃曲线池:
_curveDirectSwap()— Hook 计算联合曲线输出,收取 0.3% 三方分配费用,返回完整 delta - 标准池:收取
directSwapFeeBps,约 1/3 → 金库,约 2/3 → 盈余
geodeInitializePool()
一次性池配置。曲线池(设置了 deployer)需要工厂作为调用者。
registerLaunch()
由工厂调用以注册永久曲线状态。
视图函数
事件
| 事件 | 触发时机 |
|---|---|
GeodeBatchSettled | 批量结算完成 |
GeodeIntentFilled | 每个已成交的意图 |
SettlerPaid | 结算者收到付款 |
GeodeCurveSwap | 直接联合曲线交换执行 |
GeodeDirectSwap | 直接交换费用收取(标准池) |
GeodePoolConfigured | 池配置为批量处理 |
GeodeLaunched | 发行代币注册 |
源代码
GeodeHook.sol
在 GitHub 上查看完整源代码(约 1,190 行)。