用途
v4-hook-generator 用于通过 OpenZeppelin Contracts Wizard 的 MCP 工具生成 Uniswap v4 hook 合约。它适合从零搭建新的 v4 hook 合约、为特定用例选择合适的基础 hook 类型、配置 hook 权限与工具库、生成规范的 MCP 工具调用 JSON,以及在确定实现前理解不同配置选项之间的取舍。
主要能力
技能提供了一张 hook 类型决策表,覆盖自定义交换逻辑(BaseHook)、异步/延迟交换(BaseAsyncSwap)、hook 持有的流动性(BaseCustomAccounting)、自定义曲线(BaseCustomCurve)、动态 LP 费用(BaseDynamicFee)、动态交换费用(BaseOverrideFee)、交换后费用(BaseDynamicAfterFee)、固定 hook 费用(BaseHookFee)、MEV 保护(AntiSandwichHook)、JIT 保护(LiquidityPenaltyHook)、限价订单(LimitOrderHook)、闲置资产收益(ReHypothecationHook)、预言机(BaseOracleHook)以及兼容 V3 的预言机(OracleHookWithV3Adapters)。
技能还列出全部 14 个权限标志及其启用条件与风险等级,包括 beforeInitialize、afterInitialize、beforeAddLiquidity、afterAddLiquidity、beforeRemoveLiquidity、afterRemoveLiquidity、beforeSwap、afterSwap、beforeDonate、afterDonate、beforeSwapReturnDelta、afterSwapReturnDelta、afterAddLiquidityReturnDelta、afterRemoveLiquidityReturnDelta。权限会被编码为 hook 合约部署地址中的位,部署地址必须设置正确的位,否则 PoolManager 会回退。可使用 v4-periphery 的 HookMiner 挖掘符合位模式的 salt。权限在部署后不可更改。
技能涵盖三个可选工具库:currencySettler(在 hook 与 PoolManager 之间转移代币时使用)、safeCast(类型转换可能溢出时使用)、transientStorage(需在单笔交易内的回调间传递数据且不持久化到存储时使用,要求 EVM Cancun 或更高版本、Solidity >= 0.8.24)。
份额配置包括 false(不发份额代币)、ERC20(同质化份额代币)、ERC6909(多代币,开销低于 ERC1155)、ERC1155(标准多代币,带元数据 URI 支持)。
访问控制包括 ownable(构造函数含 initialOwner 参数)、roles(构造函数含 admin 参数,使用 OpenZeppelin AccessControl)、managed(构造函数含 authority 参数,使用 OpenZeppelin AccessManaged)。
hook 输入包括 blockNumberOffset(uint256,供 AntiSandwichHook、LiquidityPenaltyHook 使用)与 maxAbsTickDelta(int24,供 AntiSandwichHook 使用)。不使用这些输入的 hook 类型可省略 inputs 字段或传空对象。
使用方式
工作流为:收集需求 → 选择 hook 类型 → 配置全部六项决策 → 组装并调用 MCP 工具 → 应用安全基础。第一步是询问或推断 hook 的主要目标、需要拦截的生命周期事件、是否持有或移动用户资金、由谁管理 hook、是否需要在单笔交易内在回调间传递状态、目标链是否支持 EVM Cancun。随后按决策表选择单一最佳 hook 类型,完成六项配置(hook 类型、权限标志、工具库、份额、访问控制、inputs),组装 JSON 对象并调用 OpenZeppelin Contracts Wizard MCP 工具。
规范的 MCP 工具调用 JSON 包含 hook、name、pausable、currencySettler、safeCast、transientStorage、shares.options、permissions、inputs、access、info.license 等字段。其中 access 可选 ownable、roles 或 managed;info.license 为 SPDX 许可证标识符,开源 hook 可使用 MIT。
MCP 工具返回 Solidity 源代码字符串,不会自动写文件。收到代码后需展示给用户、解释关键生成部分(构造函数、getHookPermissions、已启用回调),并说明需要的手动步骤(如 HookMiner 地址挖掘、因访问控制方式导致的构造函数参数变更而更新部署脚本)。
适用场景与限制
适用于需要搭建或配置 Uniswap v4 hook 的开发者。技能强调生成的 hook 代码涉及资金处理合约,必须立即应用 v4-security-foundations 技能,在部署到任何网络前审计权限、delta 记账与访问控制。hook 配置错误可能导致用户资金损失。相关技能还包括 viem-integration(用于部署与交互生成的 hook 合约)和 v4-sdk-integration(通过 Uniswap v4 SDK 与已部署 hook 交互)。