Install
openclaw skills install niuma-bountyInteract with the Niuma Bounty on-chain task platform on XLayer testnet: query, create, join, submit, review, bid, approve, reject, and manage tasks and bala...
openclaw skills install niuma-bountyNiuma 赏金平台(task.niuma.works)的完整操作技能,支持普通任务和竞标任务的全流程。
建议配合 OKX Agentic Wallet 使用本技能。 OKX Agentic Wallet 专为 AI Agent 设计,支持:
build-tx 命令配合:Agent 构造未签名交易 → 钱包签名 → 广播https://xlayertestrpc.okx.com(公共节点,频繁限速,每次操作之间建议间隔 3-5 秒)scripts/niuma.jsNIUMA_WALLET_SECRET=<私钥> 用于签名交易cd /path/to/niuma-bounty
# 查看所有任务分类(发任务前必须查,categoryId 必须有效且 enabled=true)
node scripts/niuma.js categories
# 查看支持的 token(发任务前查,tokenAddress 必须是 enabled 的 token)
node scripts/niuma.js tokens
# 查看我的账户信息(余额、信用分、押金、冷却时间、绑定)
NIUMA_WALLET_SECRET=<pk> node scripts/niuma.js profile
# 查看活跃任务列表
node scripts/niuma.js list
# 接单前先检查资格
node scripts/niuma.js check-participate <taskId>
| 命令 | 说明 |
|---|---|
contracts | 所有合约地址 |
count | 活跃任务数量 |
categories | 所有任务分类(含 id、名称、限制) |
tokens | 所有支持的代币 |
task <id> | 任务详情 |
status <id> | 任务状态 |
list [offset] [limit] | 活跃任务列表 |
pending | 审核中的任务 |
by-status <0-7> | 按状态查询 |
user-tasks <address> | 某地址的任务 |
bids <taskId> | 竞标任务的所有投标 |
balance <address> [token] | 余额查询 |
stake-info [address] | 押金信息 |
profile [address] | 用户完整信息(信用分、押金、冷却时间、绑定状态) |
referral-info [address] | 邀请统计(邀请人、被邀请人、奖励记录、邀请链接) |
check-participate <taskId> [addr] | 接单前置检查 |
check-create '<json>' | 发任务前置检查 |
| 命令 | 说明 |
|---|---|
my-tasks | 我参与的任务列表 |
my-created | 我发布的任务列表 |
# 1. 发布任务
NIUMA_WALLET_SECRET=<pk> node scripts/niuma.js create '{"title":"任务名","description":"描述","bountyPerUser":"100","maxParticipants":5,"categoryId":1,"requirements":"截图证明","tokenAddress":"0x49ABB6BFFEce92EAd9E71BCA930Ac877ef71939D"}'
# 2. 接单(hunter)
NIUMA_WALLET_SECRET=<pk> node scripts/niuma.js participate <taskId>
# 3. 提交工作证明(hunter)
NIUMA_WALLET_SECRET=<pk> node scripts/niuma.js submit <taskId> <proofHash> '<metadata_json>'
# proofHash 说明:
# - 文字凭证:直接写描述内容
# - 单张图片:填图片 URL,如 https://imgur.com/xxx.png
# - 多张图片:多个 URL 以英文逗号分隔,如 https://img1.png,https://img2.png
# - IPFS:填 IPFS Hash,如 QmXxx...
#
# metadata_json 说明(可选):
# {"note":"补充说明", "images":["https://img1.png","https://img2.png"]}
#
# ⚠️ Agent 交互规范:
# 当用户说「提交凭证」时,Agent 必须先收集以下信息再执行:
# 1. 凭证内容(文字描述 或 图片URL,多张以逗号分隔)
# 2. 补充说明(可选)
# 示例提问:「请提供凭证内容,可以是文字描述或图片链接(多张图片请用逗号分隔)」
# 4a. 审核通过(creator)
NIUMA_WALLET_SECRET=<pk> node scripts/niuma.js approve-submission <taskId> <hunterAddress>
# 4b. 审核拒绝(creator)
NIUMA_WALLET_SECRET=<pk> node scripts/niuma.js reject-submission <taskId> <hunterAddress> '拒绝原因'
# ⚠️ Agent 交互规范(雇主审核):
# 当用户说「审核」或「查看提交」时,Agent 应:
# 1. 先用 task-participants <taskId> 展示所有参与者的提交内容
# 2. 询问用户:「请问您要审核通过还是拒绝?如果拒绝请提供拒绝原因」
# 3. 根据用户选择执行 approve-submission 或 reject-submission
# 注意:approve 后赏金立即打给 hunter,reject 后 hunter 可发起裁决,操作不可逆
# 5. 申请裁决(hunter,被拒绝后)
NIUMA_WALLET_SECRET=<pk> node scripts/niuma.js create-dispute <taskId> '理由' <evidenceHash>
# 1. 发布竞标任务(taskType=1,注意:maxParticipants 必须传 1)
NIUMA_WALLET_SECRET=<pk> node scripts/niuma.js create '{"title":"任务名","description":"描述","taskType":1,"bountyPerUser":"100","maxParticipants":1,"categoryId":1,"requirements":"提交方案"}'
# 2. 投标(hunter)—— 需等任务 startTime 过后才能投标
NIUMA_WALLET_SECRET=<pk> node scripts/niuma.js submit-bid <taskId> <bidAmount> '<proposal>' '<contactInfo>'
# 3. 查看所有投标
node scripts/niuma.js bids <taskId>
# 4. 取消投标(hunter,未被选中前可取消)
NIUMA_WALLET_SECRET=<pk> node scripts/niuma.js cancel-bid <taskId>
# 5. 选中投标人(creator)
NIUMA_WALLET_SECRET=<pk> node scripts/niuma.js select-bidder <taskId> <bidderAddress>
# 6. 提交工作 + 审核(同普通任务)
# 充值押金(接单前必须有足够押金)
NIUMA_WALLET_SECRET=<pk> node scripts/niuma.js stake <amount>
# 提取未锁定押金
NIUMA_WALLET_SECRET=<pk> node scripts/niuma.js unstake <amount>
# 查看押金状态
node scripts/niuma.js stake-info <address>
# 绑定 Telegram(链上操作,可修改)
NIUMA_WALLET_SECRET=<pk> node scripts/niuma.js bind-telegram '@your_handle'
# 绑定 Twitter
NIUMA_WALLET_SECRET=<pk> node scripts/niuma.js bind-twitter '@your_handle'
# 绑定邮箱
NIUMA_WALLET_SECRET=<pk> node scripts/niuma.js bind-email 'your@email.com'
# 查看邀请统计(邀请人、被邀请人、奖励记录、邀请链接)
node scripts/niuma.js referral-info <address>
# 绑定邀请人(链上操作,绑定后不可修改!)
NIUMA_WALLET_SECRET=<pk> node scripts/niuma.js bind-inviter <inviterAddress>
| 状态码 | 名称 | 说明 |
|---|---|---|
| 0 | Pending | 等待平台审核(autoApprove=false 时) |
| 1 | Open | 可接单 |
| 2 | InProgress | 竞标任务已选中 hunter |
| 3 | UnderReview | 审核中(竞标任务提交后) |
| 4 | Completed | 已完成 |
| 5 | Disputed | 裁决中 |
| 6 | Cancelled | 已取消 |
| 7 | Rejected | 已拒绝 |
sleep 5 间隔getLogs 最多查 100 个区块范围exceeded maximum retry limit 时等待 15-30 秒重试estimateGas,加 130% buffer 后发交易createTask 实际消耗约 750k-800k gas,必须用 estimateGascategoryId 必须先用 categories 命令查询有效值tokenAddress 必须先用 tokens 命令查询支持的 tokenstartTime 默认为 now+120 秒,竞标任务在 startTime 前不能投标endTime 默认为 now+86400(1天),最长不超过 30 天autoApprove=false,任务创建后可能是 Pending 状态需要管理员审核stake 命令充值)check-participate 命令预检,会明确显示失败原因profile 命令的 cooldown.canAcceptNow 字段显示当前是否可接单maxParticipants 必须传 1(竞标任务固定单人)create-dispute)resolveDisputebind-inviter 绑定后不可修改,操作前务必确认地址正确{
hunter 在被拒绝后才能发起裁决(create-dispute)
- 裁决后等待平台仲裁员调用 resolveDispute
- 裁决期间押金锁定,不能提取
### 邀请系统注意
- bind-inviter 绑定后不可修改,操作前务必确认地址正确
- 邀请人和被邀请人都必须是 EOA(非合约地址)
- 不能循环邀请(A邀请B,B不能再邀请A)
## 合约地址(XLayer Testnet)
- core: 0x3E7765a23AEE412bfc36760Ec8Abb495fb5c6370
- bidding: 0xC917e6426608E1A7d0267b9346C9c70F97Cdb65B
- helper: 0xA7e63aC45FAd693f69be23F2B2072CBA4345881e
- userProfileCredit: 0x6CcDefaa116E17f19AC3A28d24f4b0C4a83C7B45
- categoryManager: 0xA63C1aBAe66a1687b80Da9573203DDcB9B19D47C
- tokenManager: 0xd1915fAdB020B6E5410fA480F415e287b32B4612
- referralSystem: 0x775f51F3A197793041f0C57EdC47Ee17aB6F48fF
- niumaToken: 0x49ABB6BFFEce92EAd9E71BCA930Ac877ef71939D
## build-tx(钱包插件签名模式)
给不想在服务端暴露私钥的场景用,返回未签名交易让前端钱包签名:
node scripts/niuma.js build-tx createTask ...
node scripts/niuma.js build-tx participateTask ...
node scripts/niuma.js build-tx submitTask ...
node scripts/niuma.js build-tx approveSubmission ...
node scripts/niuma.js build-tx rejectSubmission ...
node scripts/niuma.js build-tx cancelTask ...
node scripts/niuma.js build-tx createDispute ...
node scripts/niuma.js build-tx resolveDispute ...
node scripts/niuma.js build-tx submitBid ...
node scripts/niuma.js build-tx cancelBid ...
node scripts/niuma.js build-tx selectBidder ...