name: paygents description: 在AI代理的对话中接受加密货币支付。生成MetaMask/Trust Wallet的深度链接,链上验证交易,查询余额,开具收据。无需托管服务,无需后端服务器,也无需API密钥。 metadata: openclaw: requires: bins: - node - bash
PayGents
通过您的AI代理接收加密货币支付。生成钱包的深链接(deeplink),在链上验证交易,并生成收据——无需后端服务器,也无需API密钥。
快速入门
在Base链上发送10个USDC:
scripts/evm-payment-link.sh --to 0xRECIPIENT --amount 10 --chain-id 8453
验证支付:
scripts/evm-verify-tx.sh --chain-id 8453 --from 0xSENDER --to 0xRECIPIENT --asset ERC20 --amount 10 --blocks 50
查看钱包余额:
scripts/evm-balance.sh --address 0xADDRESS
就这么简单。无需API密钥,无需后端服务器,也无需托管服务。
工作流程
- 代理收集支付信息(收款人地址、金额、链ID、代币类型)。
- 代理运行链接生成脚本,获取MetaMask的深链接。
- 代理将链接发送给用户。
- 用户点击链接后,MetaMask会自动弹出转账界面,用户只需确认即可。
- 用户确认“发送”后,代理会在链上验证交易。
钱包检测
在生成链接之前,代理需要知道用户使用的是哪种钱包。询问一次后,系统会永久记住用户的偏好。
支持的原生深链接钱包:
| 钱包 | --wallet 参数 |
深链接格式 |
|---|---|---|
| MetaMask | metamask(默认) |
https://link.metamask.io/send/... |
| Trust Wallet | trust |
https://link.trustwallet.com/send?... |
不支持的钱包(无法生成深链接):
- Rabby:仅支持应用内浏览器操作,无法直接发送交易。
- Coinbase Wallet:仅支持DApp浏览器操作,无法直接发送交易。
- Phantom:需要加密握手流程,无法通过简单URL发送交易。
如果用户使用的钱包不被支持,系统将默认使用MetaMask(最常用的钱包),或通知用户更换钱包。
请存储用户的钱包偏好设置,以避免重复询问。代理应将该信息保存在本地会话上下文中(例如内存文件中)。用户可以随时通过代理更改或清除该设置。
必需输入参数
| 参数 | 是否必填 | 说明 |
|---|---|---|
--to |
是 | 收款人地址(格式:0x...) |
--amount |
是 | 人类可读的金额(例如:1.5) |
--chain-id |
否 | 链ID(默认:8453(Base链) |
--asset |
否 | 交易资产(默认:ETH或ERC20) |
--token |
否 | 代币地址(对于USDC,系统会自动检测对应的ERC20合约地址) |
--decimals |
否 | 代币的小数位数(USDC默认为6位,ETH默认为18位) |
--symbol |
否 | 代币符号(用于显示,默认为USDC或ETH) |
--wallet |
否 | 钱包类型(默认:metamask) |
命令
生成支付链接
ERC20(USDC)——使用MetaMask:
scripts/evm-payment-link.sh \
--to 0x1234...5678 \
--amount 10 \
--chain-id 8453
原生ETH——使用Trust Wallet:
scripts/evm-payment-link.sh \
--to 0x1234...5678 \
--amount 0.01 \
--asset ETH \
--chain-id 11155111 \
--wallet trust
输出结果为JSON格式,包含以下内容:
intent:结构化的支付信息deeplink:MetaMask的深链接messageTemplate:可供用户使用的发送提示信息
验证交易
用户确认“发送”后,系统会在链上验证交易:
scripts/evm-verify-tx.sh \
--chain-id 11155111 \
--from 0xSENDER \
--to 0xRECIPIENT \
--asset ETH \
--amount 0.001 \
--blocks 50
如果找到对应的交易记录,将返回交易哈希;否则返回“未找到”。
支持的链
| 链ID | 链名称 | 默认使用的USDC代币 |
|---|---|---|
| Ethereum | 1 | 0xA0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 |
| Base | 8453 | 0x833589fCD6eDb6E08f4c7C32D4f71b54bDa02913 |
| Sepolia | 11155111 | 0x1c7d4b196cb0c7b01d743fbc6116a902379c7238 |
| Base Sepolia | 84532 | 0x036CbD53842c5426634e7929541eC2318f3dCf7e |
用户提示信息
在发送链接时,务必包含以下内容:
- 金额 + 代币类型 + 链ID
- 收款人地址(部分隐藏)
- “点击链接打开MetaMask并确认交易”
- “如果收款人或金额信息有误,请拒绝交易”
查看钱包余额
查询用户所有支持链上的原生钱包及主要ERC20代币的余额:
# All chains at once
scripts/evm-balance.sh --address 0x1234...5678
# Single chain
scripts/evm-balance.sh --address 0x1234...5678 --chain-id 8453
输出结果为JSON格式,包含各链上的原生代币余额以及USDC、USDT、WETH、WBTC、DAI的余额。
无需API密钥,系统直接使用公共RPC接口进行查询。
生成收据
交易验证成功后,系统会生成结构化的收据:
scripts/evm-receipt.sh \
--tx-hash 0xabc123... \
--chain-id 8453 \
--memo "order-42" \
--merchant "Cool Store"
可选参数:
--format json|markdown|both(默认:both)--out <目录>| 将收据文件保存到指定目录(JSON格式和Markdown格式)--memo| 交易订单ID或备注信息--merchant| 商家/收款人名称
收据内容包括:交易状态、金额、代币类型、发送方/接收方地址、Gas费用、区块信息以及交易浏览器链接、时间戳。
收据可以发送给用户作为确认信息,用于记账,或转发给商家。
RPC配置
默认情况下,脚本使用公共RPC接口。您可以根据隐私或可靠性需求进行自定义配置:
选项1:环境变量(优先级最高):
export RPC_1="https://my-private-eth-node.com"
export RPC_8453="https://my-base-rpc.com"
选项2:配置文件(将config.example.json复制到config.json):
{
"rpc": {
"1": "https://my-private-eth-node.com",
"8453": "https://my-base-rpc.com"
}
}
选项3:公共备用接口(默认设置,无需额外配置):
如果未设置环境变量或配置文件,系统会自动使用公共RPC接口。公共接口(如eth.llamarpc.com)可能会显示用户的钱包地址和交易哈希。
**配置优先级:**环境变量 RPC_<chainId> → 配置文件 → 公共备用接口。
安全性与隐私
- 钱包安全由用户自行控制——代理无法强制执行任何操作。
- 系统仅验证链上的实际交易记录,不依赖用户的声明。
- 系统绝不会存储或处理用户的私钥。
- **RPC隐私设置:**如果使用公共备用接口,第三方服务提供商可能会看到用户的钱包地址和交易哈希。请通过环境变量或配置文件设置自定义的RPC接口以保护用户隐私。
- **钱包偏好设置:**代理会记录用户偏好的钱包类型(MetaMask或Trust Wallet),但不会存储用户的私钥或敏感数据。用户可以随时要求代理清除这些信息。