RustMinerSystem

文档

代理端口与抽水钱包 API

RustMinerSystem 代理端口创建、编辑、启停、导入、无损抽水、矿池连通性、抽水钱包及钱包与矿工名热替换接口。

代理端口与抽水钱包 API

端口和钱包接口会直接改变挖矿代理行为。创建、修改、删除或批量调用前应备份配置,并把 X-ACCESS-TOKEN 视为高权限凭据。

本章字段来自已完成的前端表单模型,并使用当前实例的只读响应做过结构核对。真实响应中的钱包、矿池地址和标识不会写入文档。

端口接口与返回值

方法 路径 成功响应
GET /api/ports PortRecord[],每项包含 serverwalletsstatsetting
GET /api/port/{id} 单个 PortRecord
GET /api/port/{id}/lossless/ok { "is_ok": boolean },检查当前端口配置是否可使用无损模式。
POST /api/port/new 新端口 ID;不支持币种时当前前端识别数值 -1
POST /api/port/{id} 已保存端口的 ID 或成功标量;保存后重新 GET 获取规范化结果。
POST /api/port/{id}/start HTTP 200 表示已接受启动请求;随后查询 server.status
POST /api/port/{id}/stop HTTP 200 表示已接受停止请求;随后查询 server.status
DELETE /api/port/{id} HTTP 200 表示删除成功。
POST /api/ports/import 数组,每项对应一个导入失败结果;空数组表示没有报告错误。
POST /api/ping HTTP 200 表示连通性测试通过;非 200 表示测试失败。
GET /api/lossless/pools 当前服务端返回的无损模式矿池平台列表。

{id}server.id,可能是字符串,也不等于监听端口 server.port。只有 /api/stat/port/{id} 使用实际监听端口号,详见图表标识说明

PortRecord 完整结构

{
  "server": {},
  "wallets": [],
  "stat": {},
  "setting": {}
}

server 字段

字段 类型 请求 说明
id string 编辑路径参数 端口记录 ID,由服务端生成。
port number 必填 本地监听端口,整数 1–65534
name string 可选 端口显示名称。
currency string 必填 币种代码;取自/api/currency/config对象键或条目的 name
category string 必填 算法类别;使用同一币种条目的 category,不要自行猜测。
protocol number 必填 监听协议:0 TCP、1 TLS/SSL、2 RMS、3 TTS、5 RMS2、6 RMS3、8 RMS3 ZSTD、9 纯转发。
limit_connections number 必填 最大连接数,0–655350 表示不限制。
pool_address string 必填 主矿池 host:port
pool_address2 string/null 可选 备用矿池;空字符串或 null 表示不使用。
connect_mode number 必填 主矿池连接协议:0 TCP、1 TLS/SSL。读取旧配置时还可能看到 5 RMS2、6 RMS3。
connect_mode2 number 必填 备用矿池连接协议,枚举同 connect_mode
mode number 必填 0 传统高效模式、1 兼容模式、2 无损抽水模式。
proxy_addr string/null 兼容字段 旧版统一钱包或子账号字段;无损模式不要求填写,编辑时保留 GET 值。
proxy_device string/null 兼容字段 旧版统一矿工名字段;无损模式不要求填写,编辑时保留 GET 值。
pattern_addr string 兼容字段 旧版钱包替换的匹配列表;当前前端固定提交空字符串,新配置请使用本章的热替换规则接口。
replace_addr string 兼容字段 旧版钱包替换目标;当前前端固定提交空字符串。
nc number 必填 E9 等兼容标志,前端使用 0/1
status number 仅响应 端口运行状态枚举;操作后应以重新查询结果为准。
error string 仅响应 最近的端口错误;空字符串表示未报告错误。
created_at / updated_at string 仅响应 创建和更新时间。

KENC 和 SOCKS5 不通过额外的 protocol 数值区分:KENC 使用 protocol=1, setting.et_mode=1,SOCKS5 使用 protocol=0, setting.et_mode=2

wallets[] 字段

wallets 最多配置 10 组。比例为 0 的表单行不会随端口创建/编辑请求提交。

字段 类型 请求 说明
id string 编辑现有钱包时携带 抽水钱包记录 ID;由 GET 响应取得。
server_id string 热更新接口必填 所属端口的 server.id。随端口创建/编辑提交时省略。
addr string 必填 抽水钱包地址或子账号。
device string 必填 抽水矿工名。
pool_address string 必填 抽水使用的矿池地址。兼容模式和无损模式下应与端口主矿池一致。
pool_protocol number 必填 0 TCP、1 TLS/SSL。
ratio number 必填 0–1 小数;0.01 表示 1%。
created_at / updated_at string 仅响应 创建和更新时间。

server_id 必须来自GET /api/port/{id}响应的 server.id,不能使用监听端口号。

setting 字段

字段 类型 默认值 说明
port number server.port 高级设置关联的监听端口。
cp_name string "" 兼容保留字段;当前前端不提供独立输入。
cp_mode number 1 兼容保留模式;自动化编辑时保留 GET 值。
pu_mode number 0 兼容保留模式;自动化编辑时保留 GET 值。
et_mode number 0 扩展传输模式:0 普通、1 KENC、2 SOCKS5。
pth number 视币种而定 算力保护,当前前端使用 0 开启、1 关闭;只对支持的算法显示。
cut number 0 兼容保留开关,当前前端没有独立控件。
fr number 0 强制给矿机返回成功份额:0 开启、1 关闭。
ft number/null 0 成功响应延迟,单位毫秒,范围 0–200。旧响应可能为 null
op number 0 Foundry/OKMiner 优化开关,1 开启;用于部分 BTC/BCH/LTC 场景。
sp number 0 兼容保留开关,当前前端没有独立控件。
sd string "" 旧版矿工名替换的匹配列表;当前前端固定提交空字符串,新配置请使用本章的热替换规则接口。
st string "" 旧版矿工名替换目标;当前前端固定提交空字符串。
ra string/null null 统一替换后的矿机内核信息;不了解用途时保持 null
lj number/null 0 福禄 LTC 固件优化;当前前端使用 1 开启。旧响应可能为 null
li number/null null 无损模式选择的目标矿池平台 ID;mode=2 时提交 /api/lossless/pools 返回的对应 id,其他模式使用 null
cs number/null 币种默认 RMS3 超级压缩:1 开启、0 关闭。旧响应可能为 null
cl number/null 8 RMS3 压缩级别,范围 4–11。旧响应可能为 null

兼容保留字段没有足够的前端语义可安全推断。编辑端口时应先 GET,然后合并修改,避免把未知字段重置。

stat 字段

字段 类型 说明
port number 监听端口号。
online number 在线矿工数。
conn number 当前 TCP 连接数。
offline number 离线矿工数。
thh string/number 原始算力统计。
s_thh string/number 前端用于展示的当前有效算力。
delay number 延迟,单位毫秒。

创建或编辑端口

创建和编辑使用相同主体:

{
  "port": 3333,
  "name": "BTC Proxy",
  "currency": "BTC",
  "category": "sha256",
  "protocol": 0,
  "limit_connections": 60000,
  "pool_address": "stratum.example.com:3333",
  "pool_address2": "backup.example.com:3333",
  "connect_mode": 0,
  "connect_mode2": 0,
  "mode": 0,
  "nc": 1,
  "pattern_addr": "",
  "replace_addr": "",
  "wallets": [
    {
      "addr": "fee-wallet",
      "device": "fee-worker",
      "pool_address": "fee-pool.example.com:3333",
      "pool_protocol": 0,
      "ratio": 0.01
    }
  ],
  "setting": {
    "port": 3333,
    "cp_name": "",
    "cp_mode": 1,
    "pu_mode": 0,
    "et_mode": 0,
    "pth": 1,
    "cut": 0,
    "fr": 0,
    "ft": 0,
    "op": 0,
    "sp": 0,
    "sd": "",
    "st": "",
    "ra": null,
    "lj": 0,
    "li": null,
    "cs": 0,
    "cl": 8
  }
}

currency 为 NGINX,或监听协议为纯转发 protocol=9,当前前端会禁用高级配置、清空 wallets,并把 mode 固定为 0

无损模式请求约束

无损抽水当前仅支持 BTC 和 LTC。创建或编辑无损端口前,先请求 /api/lossless/pools,让用户按主矿池地址实际所属的平台选择一项,然后提交 mode: 2,并把所选项的 id 写入 setting.li

所有 wallets[].pool_addresspool_protocol 必须与主矿池的 server.pool_addressconnect_mode 一致;addrdeviceratio 不受此限制。setting.li 必须直接使用列表返回的 ID,不要自行生成。

后端无法仅根据地址替调用方确认矿池平台,因此客户端必须让用户主动选择。所选平台必须与主矿池地址属于同一矿池;列表中没有目标矿池时应提交 mode=0,不要强行使用无损模式。

无损模式矿池列表与检查

GET /api/lossless/pools 的典型响应:

[
  {
    "id": 1,
    "name": "Pool name",
    "state": 0
  }
]
字段 类型 说明
id number 创建或编辑无损端口时写入 setting.li
name string 展示给用户选择的矿池平台名称。
state number 服务端策略状态,由后端在后续流程中处理。客户端不得仅根据该值过滤或禁用列表项。

列表由服务端动态返回,调用方不应缓存为固定白名单。切换币种或主矿池后,应清空旧选择并让用户重新确认。

GET /api/port/{id}/lossless/ok 返回 { "is_ok": true }{ "is_ok": false },其中 {id} 使用 server.id。该接口只检查已有端口当前配置是否可使用无损模式,不会修改端口,也不能代替用户选择实际矿池平台。

批量导入

POST /api/ports/import
{
  "ports": [
    {
      "server": {},
      "wallets": [],
      "setting": {}
    }
  ]
}

ports[] 应使用本章的端口模型。响应是逐端口错误数组;即使 HTTP 状态为 200,也必须检查数组内容并展示部分失败。

测试矿池地址

POST /api/ping
{
  "address": "stratum.example.com:3333",
  "conn_type": 0
}

address 不带 stratum+tcp:// 等前缀。conn_type=0 表示普通连接,1 表示 TLS/SSL 类连接。此接口只测试连通性,不返回端口对象。

抽水钱包热更新

方法 路径 请求 成功响应
POST /api/wallet/new 完整钱包对象,必须含 server_id HTTP 200;随后 GET 端口取得生成的 id
POST /api/wallet/{id} 完整钱包对象;前端也会在主体中携带 id HTTP 200;随后 GET 端口确认规范化值。
DELETE /api/wallet/{id} 无主体。 HTTP 200。

热更新表单用百分数展示,但请求中的 ratio 仍是 0–1 小数。钱包 idserver_id 均来自端口详情响应

mode=2 的端口,热更新仍可新增、删除或修改钱包,并可调整 addrdeviceratiopool_addresspool_protocol 必须继续跟随主矿池,不允许通过钱包热更新单独切换;如需更换主矿池或无损矿池平台,应编辑完整端口。

钱包与矿工名热替换

热替换规则属于一个已经创建的代理端口,因此所有接口中的 server_id 都必须使用 server.id,不能使用监听端口号。规则命中后,服务端会强制断开对应矿机;替换内容不会修改当前连接,而是在矿机下次接入时生效。

Web 后台的完整操作流程见钱包与矿工名热替换

当前接口只支持 t=2 的钱包与矿工名组合规则;t=0t=1 已废弃,不应继续提交。pattarget 都必须使用 wallet.device 格式,并且只能包含一个用于分隔钱包与矿工名的 .

pat 左右两侧均支持单个值、逗号分隔的多个值或整侧 *,列表数量不受规则格式限制。普通值只允许英文字母、数字以及 _ @ -。例如 a.* 匹配钱包为 a 的所有矿工,*.b 匹配矿工名为 b 的所有钱包,*.* 匹配所有矿机,a,b,c.**.d,e,f 分别用于多钱包和多矿工名匹配。规则按完整值匹配,不支持正则表达式或把 * 嵌在普通文本中。

target 左右两侧均填写由上述普通字符组成的固定值或保留原值占位符。钱包侧可使用 #{WALLET},矿工名侧可使用 #{DEVICE}。例如 a.#{DEVICE} 只替换钱包,#{WALLET}.b 只替换矿工名,c.d 同时替换两侧。占位符不能放到错误的一侧。

接口速查

方法 路径 请求 成功响应
GET /api/ht/{server_id} 无请求主体。 热替换规则元组数组或对象数组。
POST /api/ht/new { server_id, pat, target, t, address?, c? } HTTP 200,响应文本 Ok
POST /api/ht { id, server_id } HTTP 200,响应文本 Ok

热替换规则创建后不支持编辑。需要修改匹配规则或替换目标时,请先删除旧规则,再创建新规则。

创建规则

POST /api/ht/new
X-ACCESS-TOKEN: <Access Token>
Content-Type: application/json
{
  "server_id": "cEdmA.46",
  "pat": "wallet_a,wallet_b.*",
  "target": "#{WALLET}.worker-new",
  "t": 2,
  "address": "stratum.example.com:3333",
  "c": 0
}
字段 类型 必填 说明
server_id string 已有端口的 server.id
pat string wallet.device 组合匹配;每侧支持单值、逗号分隔多值或整侧 *
target string wallet.device 组合目标;每侧使用固定值或对应的保留原值占位符。
t number 固定为 201 已废弃。
address string 命中规则后改用的矿池地址,例如 host:port。不需要重定向矿池时省略。
c number address 成对 重定向矿池的连接协议:0 TCP、1 TLS/SSL。

addressc 是一组可选字段:需要同时重定向矿池时必须成对提交;只需要替换身份时,应同时省略这两个字段,而不是提交空 address。矿池重定向不会改变组合替换规则,规则命中后会应用钱包与矿工名目标,并让矿机在重新接入时连接到指定矿池。

获取规则

GET /api/ht/cEdmA.46
X-ACCESS-TOKEN: <Access Token>
[
  ["8ZLG", "cEdmA.46", "wallet_a,wallet_b.*", "#{WALLET}.worker-new", 2, "stratum.example.com:3333", 0],
  ["Mirr", "cEdmA.46", "*.worker_a,worker_b", "wallet-new.#{DEVICE}", 2]
]

当前前端也兼容字段含义相同的对象数组:

[
  {
    "id": "8ZLG",
    "server_id": "cEdmA.46",
    "pat": "wallet_a,wallet_b.*",
    "target": "#{WALLET}.worker-new",
    "t": 2,
    "address": "stratum.example.com:3333",
    "c": 0
  }
]
元组索引 字段 类型 说明
0 id string 服务端生成的规则 ID;删除时原样提交。
1 server_id string 所属端口 ID。
2 pat string wallet.device 组合匹配规则。
3 target string wallet.device 组合替换目标。
4 t number 当前固定为 2
5 address string/null 可选的重定向矿池地址;没有配置时可能为空、null 或省略。
6 c number/null 可选的重定向矿池协议:0 TCP、1 TLS/SSL;未配置 address 时可能为空或省略。

对象响应使用表中同名字段。调用方应把 addressc 作为一组处理;address 为空或不存在时,矿机继续使用当前端口配置的矿池,不应仅凭 c 推断已启用重定向。

删除规则

POST /api/ht 提交规则的 id 和所属端口的 server_id

{
  "id": "8ZLG",
  "server_id": "cEdmA.46"
}

创建或删除成功后,应重新调用 GET /api/ht/{server_id},不要只依赖 Ok 文本推断最终规则状态。矿工列表中的 wd 返回命中的组合规则 ID,它对应规则元组下标 0idhwhd 已废弃。详见矿工响应字段