SuperAPI AI 工具集

deploy-uni-hook

部署与运维

查看项目

更新于 10-15 10:07

技能介绍

deploy-uni-hook 是一个把一行简短需求(brief)变成可运行的 Uniswap v4 hook 的技能,支持所有 Uniswap v4 链(包括各测试网与主网)。它的设计目标是安全:每次部署前都会模拟,默认在测试网执行 dry-run,只有显式使用 arm: 才会真正上链。

用途 该技能用于根据自然语言 brief 生成、编译、挖矿(CREATE2 salt)、模拟并部署 Uniswap v4 hook 及测试池。它面向需要快速创建 v4 hook 的场景,同时通过多重门禁降低误部署风险。

主要能力

  • 模板模式:提供预审计模板 dynamic(动态费用)、noop(最小/起始)、skim(抽取 hook 费用)。
  • freeform 模式:根据 prompt 从零构建完整 hook。
  • 链支持:chains.tsv 是唯一事实来源,包含每条 Uniswap v4 链的 name、chainId、testnet、poolManager、stateView、rpc、explorer、alchemy 等字段。默认链为 base-sepolia。测试网包括 base-sepolia、unichain-sepolia、arbitrum-sepolia;主网(testnet: false)包括 base、ethereum、unichain、arbitrum、optimism、polygon、bnb、avalanche 等。
  • 强制 AeonFee:每个 hook 都继承 AeonFee,在 afterSwap 中按 swap 的未指定(输出)货币收取 10 bps(0.10%)协议费,发送到 AEON_FEE_RECIPIENT(0xF1E958db7D1e4C074377946018Ad645db4FB158e)。费率和接收地址是编译期常量,afterSwap 非 virtual,hook 无法降低、跳过或重定向。hook 自身的额外逻辑通过 _afterSwapExtra 实现,额外费用叠加在 10 bps 之上。
  • 安全门禁:主网需要三重锁(arm:、显式 chain:、实例变量 HOOK_MAINNET_OK=1);部署前读取部署者余额,不足则中止(DEPLOY_HOOK_UNDERFUNDED);hook-deploy.sh 独立执行资金下限(exit 8)、可选 MAX_GAS_GWEI 价格上限(exit 9),并在部署者持有超过 HOOK_MAX_FLOAT_ETH(默认 0.25)时警告。
  • 模拟与审计:freeform 模式在部署前依次执行静态审计、行为测试与模拟。静态审计检查合约名为 Hook、继承 AeonFee、未重声明 afterSwap、至少有一个回调或 afterSwapExtra、每个回调带 onlyPoolManager、test/Hook.t.sol 至少有一个 test 函数等。
  • 幂等性:广播前读取 memory/state/hook-deploys.json,若相同 brief 在一小时内已部署则不重复部署;部署脚本在地址级别幂等,若规范地址已有代码则记录 ALREADY_DEPLOYED 并跳过。

使用方式 输入格式为 ${var},语法:[arm:][template:<name>] [chain:<name>] <brief>。

  • 空输入:打印帮助并退出 DEPLOY_HOOK_EMPTY。
  • 仅 <brief>:dry-run,生成、编译、挖矿、模拟,不广播(默认)。
  • arm:<brief>:先完整 dry-run,模拟通过后真正部署。
  • template:<name>:强制模式 dynamic | noop | skim | freeform;省略则自动选择。
  • chain:<name>:指定链,默认 base-sepolia。主网需要同时有 arm: 和显式 chain:。

模板选择规则(未指定 template: 时):brief 提到 fee、volatility、dynamic、surge 选 dynamic;提到 skim、hook fee、take a cut、revenue 选 skim;提到 minimal、starter、empty 选 noop;提到 game、leaderboard、points、crown、loyalty 或其他模板未覆盖的新逻辑选 freeform。

部署流程:解析输入 → 解析链(chains.tsv,默认 base-sepolia,未注册则退出 DEPLOY_HOOK_BAD_CHAIN)→ 确认预置工具链与项目(Foundry 在 PATH,$HOOKBUILD_DIR 默认 $HOME/hookbuild 存在)→ 构建 hook(模板模式只编辑 AEON:LOGIC 区域;freeform 模式写入 src/Hook.sol 并替换 AEON:BODY 区域)→ 编写行为测试(替换 test/Hook.t.sol 的 AEON:ASSERT 区域)→ 模拟与审计(./hook-deploy.sh simulate <kind> <chain>)→ 广播(仅 arm: 且模拟通过)。

适用场景

  • 在测试网快速原型化 Uniswap v4 hook。
  • 使用预审计模板部署动态费用、最小或抽成类 hook。
  • 根据自定义需求构建 freeform hook,并附带行为测试。
  • 需要强制协议费且不可绕过的 hook 部署。

限制

  • 主网部署需要三重锁,且实例必须由 owner 门控(TELEGRAM_ALLOWED_USER_ID / 多通道允许列表),不可信发送者不能触发。
  • 所有 aeon hook 因 AeonFee 的 afterSwapReturnsDelta take() 而带有 AFTER_SWAP + AFTER_SWAP_RETURNS_DELTA(0x44),因此不会被 Uniswap Labs 自动路由,需要允许列表或 UniswapX filler。
  • 沙箱阻止在运行中安装 Foundry 或克隆库;若工具链缺失则降级为 DEPLOY_HOOK_NO_TOOLCHAIN(输出生成的源码与计划)。
  • 模拟回滚时不广播,报告回滚并退出 DEPLOY_HOOK_SIM_FAILED。
  • 部署者密钥是 burner,绝不打印,绝不出现在 shell 命令行,只能通过 ./hook-deploy.sh 从环境读取。
  • 不得在 amountSpecified、区块号或必需 swap 方向上编码游戏逻辑;sender 是 router 而非用户。
  • 价格/余额/偏斜门禁必须添加 afterInitialize 回调并锚定池自身起始价格,不能使用隐式 1.0。
  • 不得使用 balanceOf(poolManager),应使用 StateLibrary。
  • 测试中不得跨 vm.roll 缓存 block.number,应使用 vm.getBlockNumber()。
  • 价格/余额/偏斜门禁必须在非 1:1 价格下断言(使用 _freshPoolAt),仅在 1:1 验证是假通过。
  • 关于收费、价格、平台、效果等未在资料中明确提供的信息,暂未提供。