Niuma Bounty Platform skill — 操作 task.niuma.works 链上赏金任务平台(XLayer 测试网)。
支持:查询任务、发布任务、接单、提交工作、审核、招标竞价、余额查询、构建未签名交易。
ethers@^6(已包含在 package.json)NIUMA_WALLET_SECRET 环境变量首次使用安装依赖:
bash
cd SKILL_DIR && npm install
参数值链XLayer 测试网Chain ID1952RPChttps://xlayertestrpc.okx.com浏览器https://www.oklink.com/xlayer-testCore0x3E7765a23AEE412bfc36760Ec8Abb495fb5c6370Bidding0xC917e6426608E1A7d0267b9346C9c70F97Cdb65BQueryHelper0x45f390AC7459ab31a23f14513dEbE9a59Dc06826NIUMA Token0x49ABB6BFFEce92EAd9E71BCA930Ac877ef71939DRegistry0x5d48C3c8F2D8854d444C9E94e09696c28748cfe8
完整地址见 references/contracts.json。
值状态含义0Pending待审核1Open开放接单2InProgress进行中3UnderReview待审核提交4Completed已完成5Disputed争议中6Cancelled已取消7Rejected已拒绝
值类型说明0Normal普通任务,先到先得1Bidding招标任务,创建者选标
SKILL_DIR = 本 SKILL.md 所在目录。
bash
# 查单个任务
node SKILL_DIR/scripts/niuma.js task <taskId>
# 活跃任务列表
node SKILL_DIR/scripts/niuma.js list [offset] [limit]
# 所有任务分页(含已结束)
node SKILL_DIR/scripts/niuma.js paginated [offset] [limit]
# 待审核任务
node SKILL_DIR/scripts/niuma.js pending [offset] [limit]
# 按状态查询 (status: 0-7)
node SKILL_DIR/scripts/niuma.js by-status <status> [offset] [limit]
# 按分类查询
node SKILL_DIR/scripts/niuma.js by-category <categoryId> [offset] [limit]
# 活跃任务数量
node SKILL_DIR/scripts/niuma.js count
# 用户任务
node SKILL_DIR/scripts/niuma.js user-tasks <walletAddress>
# 招标任务的所有竞价
node SKILL_DIR/scripts/niuma.js bids <taskId>
# 钱包余额
node SKILL_DIR/scripts/niuma.js balance <address> # OKB
node SKILL_DIR/scripts/niuma.js balance <address> <tokenAddress> # ERC20
bash
export NIUMA_WALLET_SECRET=0x你的私钥
bash
node SKILL_DIR/scripts/niuma.js create '<json>'
JSON 字段:
json
{
"title": "任务标题",
"description": "任务描述",
"requirements": "完成要求",
"taskType": 0,
"bountyPerUser": "100",
"maxParticipants": 5,
"startTime": 1711900800,
"endTime": 1712505600,
"tokenAddress": "0x49ABB6BFFEce92EAd9E71BCA930Ac877ef71939D",
"categoryId": 1
}
taskType: 0=普通,1=招标tokenAddress: ERC20 地址;OKB 原生填 "0x0000000000000000000000000000000000000000" 或不填bash
node SKILL_DIR/scripts/niuma.js join <taskId>
# 别名: participate
bash
node SKILL_DIR/scripts/niuma.js submit <taskId> <proofHash> [metadata]
# proofHash: 工作证明链接或 IPFS hash
# metadata: 附加说明(可选)
bash
node SKILL_DIR/scripts/niuma.js approve <taskId> <participantAddress>
bash
node SKILL_DIR/scripts/niuma.js batch-approve <taskId> '["0xaddr1","0xaddr2"]'
bash
node SKILL_DIR/scripts/niuma.js reject <taskId> <participantAddress> "拒绝原因"
bash
node SKILL_DIR/scripts/niuma.js cancel <taskId>
bash
node SKILL_DIR/scripts/niuma.js submit-bid <taskId> <bidAmount> "<proposal>" [contactInfo]
# bidAmount 单位 ether
bash
node SKILL_DIR/scripts/niuma.js cancel-bid <taskId>
bash
node SKILL_DIR/scripts/niuma.js select-bidder <taskId> <bidderAddress>
bash
node SKILL_DIR/scripts/niuma.js approve-token <tokenAddress> <amount>
bash
node SKILL_DIR/scripts/niuma.js build-tx <command> '<json args>'
支持命令:
createTask — 发布任务participateTask — 接单submitTask — 提交工作approveSubmission — 审核通过rejectSubmission — 审核拒绝cancelTask — 取消任务submitBid — 提交竞价selectBidder — 选标approveToken — ERC20 授权示例:
bash
# 构建接单交易(给外部钱包签名)
node SKILL_DIR/scripts/niuma.js build-tx participateTask '{"taskId": 3, "from": "0x你的地址"}'
# 构建提交工作交易
node SKILL_DIR/scripts/niuma.js build-tx submitTask '{"taskId": 3, "proofHash": "https://github.com/xxx/pr/1", "metadata": ""}'
返回: {unsignedTx: {to, data, chainId, gasPrice, nonce}}
build-tx 构造 unsignedTxhttps://www.oklink.com/xlayer-test/tx/<txHash>错误原因解决NIUMA_WALLET_SECRET required未设私钥export NIUMA_WALLET_SECRET=0x...``insufficient allowanceERC20 未授权先 approve-token``Task does not existtaskId 不存在检查 idNot task creator非创建者操作换正确钱包Task not open状态不对先 task <id> 查状态API rate limit exceededRPC 限速稍等几秒重试,或设 NIUMA_RPC 换节点