跳转到主要内容

概览

Task 是在矿机上执行的操作。Nonce 使用基于 Task Batch 的系统,多个 Task 可以分组并一起执行。

Task vs Task Batch

概念描述
Task在单个矿机上执行的单个操作
Task Batch一组一起创建的 Task,共享相同的 Task 名称和基础参数
当您通过 API 创建 Task 时,您始终创建的是 Task Batch。系统会自动为每个目标矿机创建单独的 Task。

Task 名称

Task 按其目标和用途进行分类。Task Batch 创建请求包含:
{
  "task_name": "miner.power_mode.update",
  "miner_ids": ["miner-id-1", "miner-id-2"],
  "params": {
    "mode": "low"
  }
}
字段类型必填描述
task_namestring要执行的 Task 类型(见下表)
miner_idsstring[]条件性目标矿机 ID 数组(矿机级别的 Task 必填)
paramsobjectTask 特定参数(见 Task 参数

Agent 级别 Task

Agent 级别的 Task 不需要 miner_ids 参数。
在 Agent 本身上运行的操作。
Task 名称描述
agent.scan.create扫描网络以发现矿机
agent.self.update更新 Agent

矿机级别 Task

通过 Agent 发起矿机的某个任务操作。
需要 miner_ids 参数来指定目标矿机。
Task 名称描述
miner.system.reboot重启矿机设备
miner.log.get从矿机收集诊断日志
miner.light.update切换矿机的 LED 指示灯
miner.power_mode.update更改挖矿功耗模式
miner.pool.update更新矿池配置
miner.firmware.update更新矿机固件

矿机事件 Task

更新矿机资产元数据的特殊 Task。
需要 miner_ids 参数来指定目标矿机。
Task 名称描述
miner.asset.update更新矿机资产状态(例如,标记为维护中)
miner.asset.delete将矿机资产标记为已删除

Task 参数

每种 Task 类型需要特定的参数。

miner.system.reboot

重启矿机设备。
参数类型必填描述
forceboolean即使矿机正在挖矿也强制重启(默认:false)

miner.log.get

从矿机收集诊断日志。无需额外参数。

miner.light.update

切换矿机的 LED 指示灯。
参数类型必填描述
actionstring灯光模式:onoff

miner.power_mode.update

更改挖矿功耗模式。
参数类型必填描述
modestring挖矿模式(见下方挖矿模式

miner.pool.update

更新矿池配置。
参数类型必填描述
poolsarray矿池配置数组
pools[].urlstring矿池 URL(例如 stratum+tcp://pool.example.com:3333
pools[].userstring矿池用户名/矿工名

miner.firmware.update

更新矿机固件。
参数类型必填描述
firmware_urlstring固件文件的下载 URL

agent.scan.create

扫描网络以发现矿机。
参数类型必填描述
ip_rangestring要扫描的 IP 范围(例如 192.168.1.0/24

miner.asset.update

更新矿机资产状态。
参数类型必填描述
statusstring可用的资产状态:onlineon_rackoff_racktransitmaintenanceretiredarchived
commentstring资产状态更新的可选备注

miner.asset.delete

将矿机资产标记为已删除。无必填参数。
参数类型必填描述
commentstring删除操作的可选备注

Task 状态

Task 在其生命周期中会经历不同的状态。
状态描述
createdTask 已创建,等待加入队列
queuingTask 已加入队列,等待 Agent 处理
pendingTask 正在由 Agent 执行
succeedTask 执行成功
failedTask 执行失败
timed_outTask 执行超过超时限制
cancelledTask 在完成前被取消

Task 生命周期

Batch 状态

Task Batch 基于其包含的单个 Task 有汇总状态。
Batch 状态描述
pending部分 Task 仍在运行
succeed所有 Task 执行成功
failed所有 Task 执行失败
partial_succeed部分 Task 成功,部分失败

挖矿模式

挖矿功耗模式因制造商而异。并非所有模式都被所有设备支持。

各制造商支持的模式

制造商支持的模式
AntMinersleeplownormal
WhatsMinerlownormalhigh
未来更新可能会添加更多制造商和模式。

模式说明

模式功耗描述
sleep~5%待机模式,最低功耗(仅限 AntMiner)
low~75%降低算力,节能模式
normal~100%标准运行,平衡性能
high~125%最大算力,高功耗(仅限 WhatsMiner)
尝试为矿机设置其制造商不支持的模式将导致验证错误。

示例:创建 Task Batch

curl -X POST "https://api.nonce.app/private-api/v1/{workspace_id}/farms/{farm_id}/tasks/batches" \
  -H "Authorization: Bearer {api_key}" \
  -H "Content-Type: application/json" \
  -d '{
    "task_name": "miner.power_mode.update",
    "miner_ids": ["miner-id-1", "miner-id-2"],
    "params": {
      "mode": "low"
    }
  }'
这将创建一个 Task Batch,为指定的矿机将挖矿模式更改为 low

响应格式

API 响应包含一个 meta 字段,提供 Task 创建摘要。
meta 字段提供信息提示,帮助您了解 Task 创建过程中发生了什么。它指示哪些 Task 实际被创建,哪些被跳过,以及跳过的原因。这对于调试和了解为什么某些矿机没有收到 Task 特别有用。
{
  "success": true,
  "data": { ... },
  "error": null,
  "meta": {
    "summary": {
      "created_count": 1,
      "skipped_count": 1
    },
    "skipped": [
      {
        "reason": "no_change",
        "message": "Task skipped: miner already in requested mode",
        "miner_ids": ["miner-id-2"]
      }
    ]
  }
}

Meta 摘要

字段类型描述
created_countnumber成功创建的 Task 数量
skipped_countnumber被跳过的 Task 数量

跳过原因

当部分矿机被跳过时,skipped 数组提供详细信息:
字段类型描述
reasonstring跳过原因代码(见下表)
messagestring人类可读的解释
miner_idsstring[]受影响的矿机 ID 数组
原因描述
no_change矿机已处于请求的状态
unsupported_mode请求的模式不被该矿机的制造商支持
miner_not_found矿机 ID 不存在或无法访问