Clawlett
安全代币交换和Trenches交易在Base Mainnet上,由Safe + Zodiac Roles提供支持。
交换引擎:CoW Protocol(MEV保护的批量拍卖)。 代币创建和绑定曲线交易:Trenches(通过AgentKeyFactoryV3)。
网络:Base Mainnet(链ID:8453)
概览
这项技能通过Gnosis Safe实现自动代币交换和Trenches代币创建/交易。代理通过Zodiac Roles操作,限制操作为:
- 通过CoW Protocol(MEV保护)交换代币
- 在Trenches绑定曲线上创建代币
- 在Trenches绑定曲线上买卖代币
- 批准代币给CoW Vault Relayer
- 通过ZodiacHelpers delegatecall预签名CoW订单
- 通过ZodiacHelpers包装ETH到WETH和解包WETH到ETH
- 仅将交换的代币发送回Safe(无排水)
功能
| 动作 | 自动 | 注释 |
|---|---|---|
| 检查余额 | ✅ | ETH和Base Mainnet上的任何ERC20 |
| 获取交换报价 | ✅ | 通过CoW Protocol |
| 交换代币 | ✅ | 任何有流动性的一对 |
| 包装/解包ETH | ✅ | ETH ↔ WETH通过ZodiacHelpers |
| 批准代币 | ✅ | 仅限CoW Vault Relayer |
| 创建代币(Trenches) | ✅ | 通过AgentKeyFactoryV3绑定曲线 |
| 购买代币(Trenches) | ✅ | 用ETH在绑定曲线上购买 |
| 出售代币(Trenches) | ✅ | 用ETH在绑定曲线上出售 |
| 代币信息 | ✅ | 从Trenches API获取代币详情 |
| 代币发现 | ✅ | 趋势,新,交易量最高,涨幅,跌幅 |
| 转移资金 | ❌ | 被Roles阻止 |
代理名称(CNS)
每个代理都可以选择通过Clawlett名称服务(CNS)注册一个唯一名称。这个名字是代理的应用程序范围标识符——没有两个代理可以共享同一个名称。名称在Base上作为NFT铸造。
在初始化期间传递--name以注册CNS名称。如果省略,跳过CNS注册。一旦注册,无法更改。
代币安全
验证代币
受保护的代币只能解析为验证的Base Mainnet地址:
| 代币 | 验证地址 |
|---|---|
| ETH | 本地ETH(0x0000000000000000000000000000000000000000) |
| WETH | 0x4200000000000000000000000000000000000006 |
| USDC | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
| USDT | 0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2 |
| DAI | 0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb |
| USDS | 0x820C137fa70C8691f0e44Dc420a5e53c168921Dc |
| AERO | 0x940181a94A35A4569E4529A3CDfB74e38FD98631 |
| cbBTC | 0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf |
| VIRTUAL | 0x0b3e328455c4059EEb9e3f84b5543F74E24e7E1b |
| DEGEN | 0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed |
| BRETT | 0x532f27101965dd16442E59d40670FaF5eBB142E4 |
| TOSHI | 0xAC1Bd2486aAf3B5C0fc3Fd868558b082a531B2B4 |
| WELL | 0xA88594D404727625A9437C3f886C7643872296AE |
| BID | 0xa1832f7f4e534ae557f9b5ab76de54b1873e498b |
如果诈骗代币冒充这些符号,代理将检测并警告。
未验证代币搜索
不在验证列表中的代币通过DexScreener(Base对)搜索。搜索结果包括:
- 合约地址(链上验证)
- 24小时交易量和流动性
- 代币交易的DEX
代理对未验证代币的行为:
- 始终显示带有合约地址、交易量和流动性的警告
- 在继续交换之前要求用户确认
- 从不默默交换未验证的代币
设置
- 所有者提供他们的钱包地址(和可选的代理名称)
- 代理生成密钥对 → 所有者在Base Mainnet上向代理发送0.001 ETH以支付汽油费
- 代理在Base Mainnet上部署Safe(所有者作为唯一所有者)
- 代理在后端注册并可选地在链上铸造CNS名称(如果提供
--name) - 代理部署具有交换权限的Zodiac Roles
- 代理将自己从Safe所有者中移除(保持Roles访问权限)
- 所有者在Base Mainnet上为Safe注资以进行交易
使用方法
初始化
用所有者0x123...初始化我的钱包...
用所有者0x123...和名称MYAGENT初始化我的钱包...
检查余额
我的余额是多少?
我有多少USDC?
交换代币
交换0.1 ETH为USDC
交换100 USDC为ETH
交换50 DAI为AERO
CoW Protocol交换是MEV保护的。ETH在需要时自动包装为WETH(CoW需要ERC20)。包装被捆绑到交换交易中。
包装/解包ETH
将0.5 ETH包装为WETH
将0.5 WETH解包为ETH
包装和解包是通过ZodiacHelpers delegatecall完成的。当通过CoW从ETH交换时,包装被自动处理为交换交易的一部分。
Trenches交易
Trenches在Base上启用代币创建和绑定曲线交易。代币是通过AgentKeyFactoryV3合约创建的,并在Uniswap V3风格的绑定曲线上交易。
所有链上操作都通过ZodiacHelpers包装函数(createViaFactory, tradeViaFactory)进行,这些函数验证工厂地址并转发带有显式ethValue的调用(因为在delegatecall中msg.value不起作用)。
创建一个名为"My Token"的代币,符号为MTK
创建一个与BID(默认基础代币)配对的代币
创建一个禁用反机器人的代币,并在创建后立即购买
在Trenches上购买0.01 ETH价值的MTK
出售我所有的MTK代币
Trenches上的趋势是什么?
向我展示涨幅最高的代币
获取MTK代币的信息
重要 — 代币创建参数收集: 当用户要求创建代币时,代理必须在执行之前收集所有以下参数。如果用户的请求缺少这些参数中的任何一个,请向他们索取缺失的值。不要默默使用默认值 — 总是与用户确认每个参数。
| 参数 | 必需 | 描述 |
|---|---|---|
| 名称 | 是 | 代币名称(例如,“My Token”) |
| 符号 | 是 | 代币的票证符号(例如,MTK) |
| 描述 | 是 | 代币的描述 |
| 图像 | 是 | 代币图像文件的路径(PNG/JPEG/WEBP,最大4MB) |
| 基础代币 | 否 | BID(默认)或ETH — 与哪个代币配对 |
| 反机器人保护 | 否 | 默认为ON(10分钟狙击手保护)。询问用户是否要启用或禁用 |
| 初始购买 | 否 | 创建后立即购买的ETH金额(仅在反机器人关闭时有效) |
| 否 | 代币的Twitter/X手柄 | |
| 网站 | 否 | 代币的网站URL |
| 团队分配 | 否 | SSL团队在价格超过给定位置后可以认领的团队位置 |
代理应向用户展示所有参数的摘要(包括默认值),并在执行创建前请求确认。
代币创建默认值:
- 基础代币:BID(使用
--base-token ETH进行ETH配对) - 反机器人保护:ON(10分钟狙击手保护窗口)
- 当反机器人启用时,初始购买被阻止(代理在保护窗口期间不能购买)
- 使用
--no-antibot禁用保护并允许初始购买 - 使用
--image附加自定义代币图像(PNG/JPEG/WEBP,最大4MB)
图像上传流程:
- 图像通过
/api/skill/image上传(返回imageUrl) - 返回的
imageUrl传递给代币创建API - 如果图像上传失败,代币创建将失败(图像是必需的)
反机器人保护和购买:
- 代理不能购买任何当前激活反机器人保护的代币(在创建后的10分钟窗口内)
- 这适用于所有代币,不仅仅是代理创建的代币
- 客户端和后端都执行此操作 — 后端将拒绝为受保护的代币发行交换签名
- 等待保护窗口到期后再购买
代理将:
- 通过
/api/skill/image上传代币图像(返回imageUrl) - 从
/api/skill/token/create获取创建签名(包括imageUrl) - 显示代币详情以供确认
- 通过Safe + Roles(ZodiacHelpers delegatecall)执行
- 创建后,分享代币页面URL:
https://trenches.bid/tokens/[address]
代理将:
- 解决代币符号(带诈骗保护)
- 从CoW Protocol获取报价
- 显示交换详情以供确认:
- 代币符号(例如,ETH → USDC)
- 代币地址(验证的Base Mainnet合约)
- 输入金额(您要出售的)
- 输出金额(您将收到的估计金额)
- 费用细分
- ETH包装金额(如适用)
- 要求用户明确确认
- 通过Safe + Roles执行
脚本
| 脚本 | 描述 |
|---|---|
initialize.js |
部署Safe + Roles,注册CNS名称 |
swap.js |
通过CoW Protocol(MEV保护)交换代币 |
balance.js |
检查ETH和代币余额 |
trenches.js |
在Trenches绑定曲线上创建代币和交易 |
示例
# 初始化(名称是可选的,如果提供则在CNS上注册)
node scripts/initialize.js --owner 0x123...
node scripts/initialize.js --owner 0x123... --name MYAGENT
# 检查余额
node scripts/balance.js
node scripts/balance.js --token USDC
# 交换代币(CoW Protocol,MEV保护)
node scripts/swap.js --from ETH --to USDC --amount 0.1
node scripts/swap.js --from USDC --to WETH --amount 100 --execute
node scripts/swap.js --from USDC --to DAI --amount 50 --execute --timeout 600
# 带自定义滑点(0-0.5范围,例如,0.05 = 5%)
node scripts/swap.js --from ETH --to USDC --amount 0.1 --slippage 0.03 --execute
# Trenches:创建代币(默认BID基础代币,反机器人ON)
node scripts/trenches.js create --name "My Token" --symbol MTK --description "A cool token"
node scripts/trenches.js create --name "My Token" --symbol MTK --description "desc" --base-token ETH
node scripts/trenches.js create --name "My Token" --symbol MTK --description "desc" --no-antibot --initial-buy 0.01
node scripts/trenches.js create --name "My Token" --symbol MTK --description "desc" --image ./logo.png
# Trenches:买卖代币
node scripts/trenches.js buy --token MTK --amount 0.01
node scripts/trenches.js sell --token MTK --amount 1000
node scripts/trenches.js sell --token MTK --all
# Trenches:代币信息和发现
node scripts/trenches.js info MTK
node scripts/trenches.js trending
node scripts/trenches.js trending --window 1h --limit 5
node scripts/trenches.js new
node scripts/trenches.js top-volume
node scripts/trenches.js gainers
node scripts/trenches.js losers
配置
脚本从config/wallet.json读取(为Base Mainnet配置):
{
"chainId": 8453,
"owner": "0x...",
"agent": "0x...",
"safe": "0x...",
"roles": "0x...",
"roleKey": "0x...",
"name": "MYAGENT",
"cnsTokenId": 1
}
环境变量
| 变量 | 默认 | 描述 |
|---|---|---|
BASE_RPC_URL |
https://mainnet.base.org |
Base Mainnet RPC端点 |
WALLET_CONFIG_DIR |
config |
配置目录 |
TRENCHES_API_URL |
https://trenches.bid |
Trenches API端点 |
合约(Base Mainnet)
| 合约 | 地址 | 描述 |
|---|---|---|
| Safe Singleton | 0x3E5c63644E683549055b9Be8653de26E0B4CD36E |
Safe L2 impl |
| CoW Settlement | 0x9008D19f58AAbD9eD0D60971565AA8510560ab41 |
CoW Protocol结算 |
| CoW Vault Relayer | 0xC92E8bdf79f0507f65a392b0ab4667716BFE0110 |
CoW代币授权目标 |
| ZodiacHelpers | 0xb34a6210013977FC7D6082287e03915a66249799 |
批准,CoW预签名,WETH包装/解包,Trenches工厂包装器通过delegatecall |
| AgentKeyFactoryV3 | 0x2EA0010c18fa7239CAD047eb2596F8d8B7Cf2988 |
Trenches代币创建和绑定曲线交易 |
| Safe Factory | 0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2 |
Safe部署者 |
| Roles Singleton | 0x9646fDAD06d3e24444381f44362a3B0eB343D337 |
Zodiac Roles |
| Module Factory | 0x000000000000aDdB49795b0f9bA5BC298cDda236 |
模块部署者 |
| CNS | 0x299319e0BC8d67e11AD8b17D4d5002033874De3a |
Clawlett名称服务(唯一代理名称) |
更新
当用户说**“update to latest”**时,按照以下程序操作:
git fetch --tags origin在clawlett仓库中- 从
scripts/package.json读取当前版本 - 确定最新的git标签(例如,
git tag -l --sort=-v:refname | head -1) - 阅读**MIGRATION_GUIDE.md**以了解当前和最新版本之间的迁移路径
- 向用户显示:当前版本,新版本,更改摘要,以及是否需要链上步骤
- 询问用户:“您是否要继续此更新?” —— 未经明确确认,不要继续
- 如果确认:
git checkout <tag>,然后与用户一起经历每个迁移步骤
有些更新仅是代码(只需检查新标签)。其他需要Safe所有者签名的链上交易(例如,为新的ZodiacHelpers合约更新Roles权限)。迁移指南指定了哪些。
安全模型
- Safe持有所有资金 - 代理钱包只有汽油费
- Zodiac Roles限制操作:
- 只能与ZodiacHelpers交互
- ZodiacHelpers用
allowTarget(发送+DelegateCall)范围限定 - 只能批准代币给CoW Vault Relayer
- 无转移/提款 - 代理不能移动资金
- 诈骗保护 - 常见代币解析为验证地址
- MEV保护 - CoW Protocol批量订单,防止夹心攻击和其他MEV提取