文档
代理端口与抽水钱包 API
RustMinerSystem 代理端口创建、编辑、启停、导入、无损抽水、矿池连通性、抽水钱包及钱包与矿工名热替换接口。
代理端口与抽水钱包 API
端口和钱包接口会直接改变挖矿代理行为。创建、修改、删除或批量调用前应备份配置,并把 X-ACCESS-TOKEN 视为高权限凭据。
本章字段来自已完成的前端表单模型,并使用当前实例的只读响应做过结构核对。真实响应中的钱包、矿池地址和标识不会写入文档。
端口接口与返回值
| 方法 | 路径 | 成功响应 |
|---|---|---|
| GET | /api/ports |
PortRecord[],每项包含 server、wallets、stat、setting。 |
| 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–65535;0 表示不限制。 |
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_address 和 pool_protocol 必须与主矿池的 server.pool_address 和 connect_mode 一致;addr、device 和 ratio 不受此限制。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 小数。钱包 id 和 server_id 均来自端口详情响应。
对 mode=2 的端口,热更新仍可新增、删除或修改钱包,并可调整 addr、device 和 ratio。pool_address 与 pool_protocol 必须继续跟随主矿池,不允许通过钱包热更新单独切换;如需更换主矿池或无损矿池平台,应编辑完整端口。
钱包与矿工名热替换
热替换规则属于一个已经创建的代理端口,因此所有接口中的 server_id 都必须使用 server.id,不能使用监听端口号。规则命中后,服务端会强制断开对应矿机;替换内容不会修改当前连接,而是在矿机下次接入时生效。
Web 后台的完整操作流程见钱包与矿工名热替换。
当前接口只支持 t=2 的钱包与矿工名组合规则;t=0 和 t=1 已废弃,不应继续提交。pat 与 target 都必须使用 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 | 是 | 固定为 2;0 和 1 已废弃。 |
address |
string | 否 | 命中规则后改用的矿池地址,例如 host:port。不需要重定向矿池时省略。 |
c |
number | 与 address 成对 |
重定向矿池的连接协议:0 TCP、1 TLS/SSL。 |
address 和 c 是一组可选字段:需要同时重定向矿池时必须成对提交;只需要替换身份时,应同时省略这两个字段,而不是提交空 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 时可能为空或省略。 |
对象响应使用表中同名字段。调用方应把 address 和 c 作为一组处理;address 为空或不存在时,矿机继续使用当前端口配置的矿池,不应仅凭 c 推断已启用重定向。
删除规则
向 POST /api/ht 提交规则的 id 和所属端口的 server_id:
{
"id": "8ZLG",
"server_id": "cEdmA.46"
}
创建或删除成功后,应重新调用 GET /api/ht/{server_id},不要只依赖 Ok 文本推断最终规则状态。矿工列表中的 wd 返回命中的组合规则 ID,它对应规则元组下标 0 的 id;hw 和 hd 已废弃。详见矿工响应字段。
