其他
需要查询 Uniswap 路由器、适配器…
通过 Grimoire venue CLI 获取 Uniswap 路由器地址、适配器信息以及 V3/V4 代币和池元数据,并生成 spell 的 params 块。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 35/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 40/100 ×0.15
适用场景
需要查询 Uniswap 路由器、适配器特定
解决思路
- 优先使用 `grimoire venue uniswap ...` 调用 Uniswap venue 子命令。
- 如需免安装运行,使用 `npx -y @grimoirelabs/cli venue uniswap ...`。
- 在仓库本地运行时,使用 `bun run packages/cli/src/index.ts venue uniswap ...`。
- 如需直接二进制,使用来自 `@grimoirelabs/venues` 的 `grimoire-uniswap ...`。
- 执行前建议预检:`grimoire venue doctor --adapter uniswap --chain 1 --rpc-url <rpc> --json`。
- 查看适配器元数据:`grimoire venue uniswap info`。
- 查询每条链上的 router 地址:`grimoire venue uniswap routers [--chain <id>]`。
- 查询 token 列表:`grimoire venue uniswap tokens [--chain <id>] [--symbol <sym>] [--address <addr>] [--source <url>]`。
- 生成 token 的 spell `params:` 块:`grimoire venue uniswap tokens-snapshot [--chain <id>] [--symbol <sym>] [--address <addr>] [--source <url>]`(agent-only)。
- 查找某 token pair 的池:`grimoire venue uniswap pools --token0 <address|symbol> --token1 <address|symbol> [--chain <id>] [--fee <bps>] [--limit <n>] [--source <url>] [--endpoint <url>] [--graph-key <key>] [--subgraph-id <id>] [--rpc-url <url>] [--factory <address>]`。
- 生成 pool 的 spell `params:` 块:`grimoire venue uniswap pools-snapshot --token0 <address|symbol> --token1 <address|symbol> [--chain <id>] [--fee <bps>] [--limit <n>] [--source <url>] [--endpoint <url>] [--graph-key <key>] [--subgraph-id <id>] [--rpc-url <url>] [--factory <address>]`(agent-only)。
- 当设置了 `GRAPH_API_KEY` 时,池数据默认从 The Graph 去中心化网络的 subgraph 查询;内置 Ethereum、Optimism、Polygon、Base、Arbitrum 的 subgraph ID。
- 如果没有可用 graph 配置,则回退到链上 factory 查询:提供 `--rpc-url`/`RPC_URL` 时使用该 RPC,否则在可用时使用链默认 RPC。
- 要强制 RPC 模式:提供 `--rpc-url` 并省略 `--graph-key`。
- 设置 `GRAPH_API_KEY` 环境变量用于 subgraph 查询(可在 https://thegraph.com/studio/apikeys/ 获取)。
- 设置 `RPC_URL` 环境变量作为链上池查询的回退 RPC。
- 示例:`grimoire venue uniswap info --format table`。
- 示例:`grimoire venue uniswap routers`。
- 示例:`grimoire venue uniswap routers --chain 1`。
- 示例:`grimoire venue uniswap tokens --chain 1 --symbol USDC --format spell`。
- 示例:`grimoire venue uniswap pools --chain 1 --token0 USDC --token1 WETH --fee 3000 --format spell`。
- 示例:`grimoire venue uniswap pools --chain 8453 --token0 USDC --token1 WETH --fee 500 --rpc-url $RPC_URL --format table`。
- 示例:`grimoire venue uniswap pools --chain 8453 --token0 USDC --token1 WETH --fee 500 --graph-key $GRAPH_API_KEY --subgraph-id <id>`。
- 示例:`grimoire venue uniswap tokens-snapshot --chain 1 --symbol USDC`。
- 示例:`grimoire venue uniswap pools-snapshot --chain 1 --token0 USDC --token1 WETH --rpc-url $RPC_URL`。
- 使用 `tokens-snapshot` 或 `pools-snapshot` 输出 spell 输入用的 `params:` 块;这些是 agent-only 命令,在交互模式下输出被抑制。
- 进行协议比较时,Uniswap V3 和 V4 暴露 `quote_out` metric:在 spell 中写 `v3_out = metric("quote_out", uni_v3, USDC, "asset_out=WETH,amount=1000000,fee_tier=3000")` 和 `v4_out = metric("quote_out", uni_v4, USDC, "asset_out=WETH,amount=1000000,fee_tier=3000,tick_spacing=60")`。
- `quote_out` selector 必填 `asset_out`;可选 `amount`(默认输入资产的 1 个单位)、`fee_tier`;V4 还可选 `tick_spacing`。
- 在 `.spell` 文件中写针对 Uniswap 的 swap action 时,用 `with` 子句设置约束,例如:`uniswap_v3.swap(USDC, WETH, params.amount) with (fee_tier=3000, max_slippage=50, min_output=900000000000000, deadline=300,)`。
- `fee_tier` 必填;未指定时 adapter 会抛错;它是 action 参数(不是 constraint),从 `with()` 子句提取。
- 常用 fee tier:`500` (0.05%)、`3000` (0.3%)、`10000` (1%)。
- `fee_tier` 参数类型 integer (bps),必填,表示 Uniswap 池 fee tier(例如 `500`、`3000`、`10000`)。
- 可设置约束 `max_slippage` integer (bps),最大滑点,例如 `50` = 0.5%。
- 可设置约束 `min_output` integer (wei),最小输出下限。
- 可设置约束 `max_input` integer (wei),最大输入上限。
- 可设置约束 `deadline` integer (seconds),从现在起的交易截止时间。
- 可设置约束 `require_quote` boolean,链上报价获取失败时失败。
- 可设置约束 `require_simulation` boolean,模拟不可用时失败。
- 可设置约束 `max_gas` integer (wei),gas 估算上限。
- swap 时始终同时设置 `max_slippage` 和 `min_output`,防止意外损失。
- 支持 `@uniswap_v3` adapter:Router 为 SwapRouter02,授权流程为标准 ERC20 approve。
- 支持 `@uniswap_v4` adapter:Router 为 Universal Router,授权流程为 Permit2。
- CLI 当前只暴露 V3 元数据;V4 adapter 可通过 `createUniswapV4Adapter()` 在程序中使用。
- 元数据查询(`tokens`、`pools`)即使 spell venue 是 `uniswap_v4`,也使用 `grimoire venue uniswap ...`。
- 输出为 JSON/table;`tokens` 和 `pools` 也支持 `--format spell`。
- 自动化与可复现快照优先使用 `--format json`。
- 只暴露元数据,不暴露链上报价端点。
适用边界 · 注意事项
- 不适用于需要链上报价端点或实时报价的场景,因为该 CLI 只暴露元数据。
- 不适用于无法安装/运行 Grimoire CLI,或没有目标链 RPC/The Graph API key 的环境(部分池查询依赖这些配置)。
- CLI 当前只暴露 V3 元数据;需要 V4 元数据/适配器时必须通过代码 `createUniswapV4Adapter()`,不能只靠 CLI。