name: trade description: 在Base网络上交换或交易代币。当您或用户想要交易、交换、兑换、购买、出售或转换代币(如USDC、ETH和WETH)时使用。涵盖诸如“购买ETH”、“将ETH兑换为USDC”、“将USDC转换为ETH”、“获取一些ETH”等短语。 user-invocable: true disable-model-invocation: false allowed-tools: [“Bash(npx awal@latest status*)”, “Bash(npx awal@latest trade )", "Bash(npx awal@latest balance)”]
交易代币
使用 npx awal@latest trade 命令通过CDP Swap API在Base网络上交换代币。您必须经过身份验证才能进行交易。
确认钱包已初始化并授权
npx awal@latest status
如果钱包未经过身份验证,请参考 authenticate-wallet 技能。
命令语法
npx awal@latest trade <数量> <来源代币> <目标代币> [选项]
参数
| 参数 | 描述 |
|---|---|
数量 |
要交换的数量(参见下面的数量格式) |
来源代币 |
源代币:别名(usdc, eth, weth)或合约地址(0x…) |
目标代币 |
目标代币:别名(usdc, eth, weth)或合约地址(0x…) |
数量格式
数量可以通过多种格式指定:
| 格式 | 示例 | 描述 |
|---|---|---|
| 美元前缀 | '$1.00', '$0.50' |
美元表示法(小数位数基于代币) |
| 十进制 | 1.0, 0.50, 0.001 |
带小数点的人类可读格式 |
| 整数 | 5, 100 |
解释为整数个代币 |
| 原子单位 | 500000 |
大整数被视为原子单位 |
自动检测:没有小数点的大整数被视为原子单位。例如,对于USDC(6位小数),500000 = $0.50。
小数位数:对于已知代币(usdc=6, eth=18, weth=18),小数位数是自动的。对于任意合约地址,小数位数从代币合约中读取。
选项
| 选项 | 描述 |
|---|---|
-c, --chain <名称> |
区块链网络(默认:base) |
-s, --slippage <n> |
滑点容差,以基点为单位(100 = 1%) |
--json |
以JSON格式输出结果 |
代币别名
| 别名 | 代币 | 小数位数 | 地址 |
|---|---|---|---|
| usdc | USDC | 6 | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
| eth | ETH | 18 | 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE |
| weth | WETH | 18 | 0x4200000000000000000000000000000000000006 |
重要提示:始终对使用 $ 的数量使用单引号,以防止bash变量扩展(例如,使用 '$1.00' 而不是 $1.00)。
示例
# 将1美元USDC兑换为ETH(美元前缀 — 注意单引号)
npx awal@latest trade '$1' usdc eth
# 将0.50 USDC兑换为ETH(十进制格式)
npx awal@latest trade 0.50 usdc eth
# 将500000个原子单位的USDC兑换为ETH
npx awal@latest trade 500000 usdc eth
# 将0.01 ETH兑换为USDC
npx awal@latest trade 0.01 eth usdc
# 使用自定义滑点(2%)进行交换
npx awal@latest trade '$5' usdc eth --slippage 200
# 使用合约地址进行交换(小数位数从链上读取)
npx awal@latest trade 100 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 0x4200000000000000000000000000000000000006
# 获取JSON输出
npx awal@latest trade '$1' usdc eth --json
先决条件
- 必须经过身份验证(使用
awal status检查) - 钱包必须拥有足够的源代币余额
错误处理
常见错误:
- “未认证” - 首先运行
awal auth login <邮箱> - “无效代币” - 使用有效的别名(usdc, eth, weth)或0x地址
- “无法将代币交换给自己” - 来源和目标必须不同
- “交换失败:TRANSFER_FROM_FAILED” - 余额不足或批准问题
- “无流动性” - 尝试较小的金额或不同的代币对
- “数量有X位小数但代币仅支持Y位” - 小数位数过多