用途
该技能让 OpenClaw 能够处理区块链网络上的 NFT 相关任务,包括使用 web3 协议进行铸造、转移、查询和管理 NFT。
适用场景
- 构建需要创建 NFT 的应用时,例如数字艺术市场或收藏品平台。
- 在区块链项目中查询 NFT 所有权或元数据。
- 涉及加密钱包或智能合约、需要转移或验证 NFT 的场景。
- 与 dApp 集成,在以太坊或 Solana 等网络上自动化 NFT 交互。
主要能力
- 在支持的区块链上铸造新 NFT(例如通过 ERC-721 标准在以太坊上)。
- 在钱包地址之间转移 NFT,并估算 gas 费用。
- 检索并显示 NFT 元数据,包括 token URI 和所有者详情。
- 通过区块链查询验证 NFT 的存在和所有权。
- 与智能合约交互以执行高级操作,例如批准转移。
- 通过标志支持不同网络(例如 --network ethereum 用于 EVM 链,--network solana 用于 SPL 代币)。
使用方式
始终先通过设置环境变量 $NFT_API_KEY 进行认证,然后再执行命令。对于脚本,将调用包裹在错误处理块中以管理网络故障。
以编程方式铸造 NFT:
- 导出密钥:export NFT_API_KEY=your_api_key
- 在脚本中使用:claw nft create --network ethereum --wallet 0xYourWalletAddress
查询时,可链式执行命令:先获取元数据,再处理它。自动化示例模式:在循环中使用 claw nft query 进行批量所有权检查,注意速率限制(例如以太坊上 <10 次调用/分钟)。
配置格式:使用 JSON 文件存放元数据,例如 {"name": "MyNFT", "description": "Token description", "image": "ipfs://hash"}。通过 --metadata path/to/file.json 加载。
常用命令/API
CLI 命令:claw nft create --network <chain> --wallet <address> --metadata <file.json> 标志:--network(例如 ethereum、solana)、--gas-limit 210000 用于自定义 gas、--dry-run 用于模拟而不执行。 示例:claw nft create --network ethereum --wallet 0x123abc --metadata nft_data.json(创建并返回 token ID)。
CLI 命令:claw nft transfer --network <chain> --from <sender_address> --to <receiver_address> --tokenId <id> 标志:--approve-first 用于处理批准、--gas-price 20gwei 用于优先级。 示例:claw nft transfer --network ethereum --from 0x123abc --to 0x456def --tokenId 1
API 端点:POST /api/nft/create 请求体:{"network": "ethereum", "wallet": "0x123abc", "metadata": {"name": "ArtPiece"}} 请求头:包含 Authorization: Bearer $NFT_API_KEY。响应:JSON,包含 { "tokenId": "123", "transactionHash": "0xhash" }。
API 端点:GET /api/nft/{tokenId}/metadata 查询参数:?network=ethereum。示例:curl -H "Authorization: Bearer $NFT_API_KEY" https://api.openclaw.com/api/nft/123/metadata
认证:所有操作均需认证;将 $NFT_API_KEY 设置为环境变量。配置可使用 .env 文件:NFT_API_KEY=sk_123abc。
集成说明
- 在 OpenClaw 工作流中导入该技能进行集成,例如在脚本中通过 import skill nft 导入。确保配置区块链 RPC 端点,例如设置 $ETHEREUM_RPC_URL=https://mainnet.infura.io/v3/your_project_id。
- 对于智能合约:在 JSON 配置文件中提供 ABI,例如 {"abi": [{"constant": true, "inputs": [], "name": "ownerOf", "outputs": [{"name": "", "type": "address"}], "type": "function"} ] },并通过 --abi path/to/abi.json 传入。
- 与其他技能组合:与“blockchain”集群技能一起用于钱包管理——例如先调用 claw wallet balance 检查资金,再调用 claw nft create。
- 测试:通过添加 --testnet 标志在测试网环境中运行,该标志会切换到 Goerli(以太坊)等网络。
错误处理
- 始终对命令使用 try-catch 块,例如在 Python 脚本中:try: subprocess.run(['claw', 'nft', 'create', '--network', 'ethereum']) except subprocess.CalledProcessError as e: print(e.output)。
- 常见错误:
- 网络问题:通过验证 $ETHEREUM_RPC_URL 检查“connection refused”,并使用指数退避重试(例如等待 5 秒,然后 10 秒)。
- 无效输入:在执行命令前用正则验证钱包地址(例如 if not re.match(r'^0x[a-fA-F0-9]{40}$', address): raise ValueError)。
- 认证失败:如果缺少 $NFT_API_KEY,命令返回 401;通过提示设置或优雅退出来处理。
- Gas 错误:对于“insufficient funds”,建议先用 claw nft estimate-gas --network ethereum --command create 检查余额。
- 规定:在任何操作之前,运行健康检查:claw nft status --network ethereum 以验证节点连通性。
具体使用示例
在以太坊上铸造 NFT:
- 设置:export NFT_API_KEY=your_key,并在 metadata.json 中准备元数据,如 {"name": "OpenClawArt", "description": "AI-generated piece"}。
- 命令:claw nft create --network ethereum --wallet 0xYourWallet --metadata metadata.json
- 这将铸造 NFT,输出 token ID,并使用你的钱包签名交易。
转移 NFT:
- 前提条件:确保发送者已批准转移。
- 命令:claw nft transfer --network ethereum --from 0xSenderWallet --to 0xReceiverWallet --tokenId 42 --approve-first
- 这将转移指定的 NFT,自动处理 gas,并返回交易哈希以供验证。
图谱关系
- 相关:blockchain 集群(例如与 wallet 和 smart-contract 技能共享依赖)。
- 标签:blockchain、nft、crypto(通过这些标签与其他技能连接以进行组合查询)。
- 连接的技能:wallet(用于资金操作)、smart-contracts(用于自定义 NFT 逻辑)和 web3(用于更广泛的生态集成)。