terminal
CLI 矿工软件介绍
ABCMint Logo

ABCMint CLI Miner

基于 MQ 抗量子签名算法的高性能命令行挖矿软件

CUDA GPU 加速 Stratum 协议 C++17 Linux GPLv3 开源

支持 CPU 多线程与 NVIDIA CUDA GPU 并行挖矿,采用 Rainbow 算法求解多元二次方程组(MQ),实现后量子密码学挖矿。

向下滚动查看源码 ↓

核心特性

专业的工程化设计,从 GPU 并行到协议实现

bolt

CUDA GPU 并行

自动检测多 GPU 设备,线程均匀分配。CUDA 核函数并行求解 MQ 方程组,单次启动 2^(N-K) 线程。

link

Stratum 协议

完整实现 JSON-RPC over TCP 协议,支持 subscribe / authorize / submit 全流程,断线自动重连。

monitoring

MP/s 实时统计

每 10 秒输出 Million Solves/sec 算力,与 abcscan.io 全网算力单位一致,可直接对比算力占比。

lock

后量子安全

支持 UOV / Rainbow 多变量签名算法(nHeight ≥ 267120 硬分叉后启用),提供抗量子级别的密码学保障。

Stratum 协议流程

矿工与矿池的完整通信链路

mining.subscribe
订阅任务
获取 extranonce1
mining.authorize
认证矿工
绑定钱包地址
mining.notify
推送任务
coinbase + merkle
mining.submit
提交份额
nonce + extranonce2
① subscribe → 矿工订阅,矿池分配 extranonce1(4字节,唯一标识客户端)
② authorize → 首次连接时密码字段填写钱包地址,矿池自动注册并绑定用户名
③ notify → 矿池推送任务(jobId, prevHash, coinbase1/2, merkleBranches, nBits, height)
④ submit → 矿工求解方程组后提交 nonce,矿池验证并记录份额
seedHash = Hash256(prevHash XOR merkleRoot) → MQ 方程组求解

运行效果演示

CLI 矿工启动后的终端输出(模拟)

terminal — abcmint-miner-cuda-v0.1.0

UOV 算法原理

Unbalanced Oil and Vinegar — 后量子多变量签名算法

key核心思想

UOV 由 Patarin 于 1999 年提出,基于 多变量二次多项式方程组(MQ 问题)的难解性。 私钥包含一组特殊结构的油变量(Oil)和醋变量(Vinegar),公钥是混合后的多项式。

function数学结构

公式:P(o, v) = Σ a·oᵢ·oⱼ + Σ b·oᵢ·vⱼ + Σ c·vᵢ·vⱼ + d
签名时随机选 Vinegar 值,解线性方程组求 Oil;验证只需代入公钥多项式检查等式成立。

shield抗量子安全

MQ 问题被公认即使对量子计算机也难以求解。abcmint 在 nHeight ≥ 267120 硬分叉后启用 RainbowPlus API,支持 UOV SL1/SL3/SL5 三个安全等级。

boltUOV vs Rainbow

UOV = 单层 Oil-Vinegar(O2=0),结构更简单、更安全
Rainbow = 多层(O2>0),密钥更小但 2022 年 Ward Beullens 破解了低安全等级参数
abcmint 当前支持两种算法并存,用户可按需选择。

warning 注意:挖矿 PoW 使用 MQ 方程组穷举求解(exfes),与 UOV/Rainbow 签名算法属于不同环节。 UOV/Rainbow 用于交易签名(全节点钱包签名交易时使用)。
src/main.cpp

挖矿核心线程

seedHash 计算 → MQ 方程组求解 → 份额提交

main.cpp — miningThread()
src/gpumining.cu

CUDA GPU 求解

GPU 核函数并行求解 MQ 方程,De Bruijn 位扫描优化

gpumining.cu — check_thread() & GPUSearchSolution()
src/stratum_client.cpp

Stratum 协议实现

JSON-RPC 协议构建与消息解析

stratum_client.cpp — buildJsonRpc()
src/miner_kernel.h

核心API 接口

求解器接口设计与算法分叉支持

miner_kernel.h — SerchSolution() & CheckSolution()
src/main.cpp

程序入口架构

参数解析 → GPU 初始化 → 多线程调度 → 自动重连

main.cpp — main() & GPU 初始化

常见问题

FAQ — 使用过程中可能遇到的问题与解决方案

chevron_right help 连接矿池失败,提示 "Connection refused" 或 "Host unreachable" 怎么办?

1. 检查网络连接是否正常

2. 确认矿池地址和端口正确:主网 mqscan.io:3334,测试网 mqscan.io:3335

3. 检查防火墙是否放行出站连接

4. 矿池维护期间可能暂时不可达,请稍后重试(客户端会自动重连)

chevron_right help 算力显示 0 MP/s 或明显偏低怎么排查?

1. 确认 CUDA 设备被正确识别(日志应显示 [GPU] Device 0: ...

2. 检查 nvidia-smi 是否正常,GPU 温度是否过高(>85°C 会降频)

3. 确认没有其他程序占用 GPU(如显示器、游戏、AI 推理)

4. 等待至少 10 秒,算力统计需要累积足够的求解次数

chevron_right help 如何切换或更新绑定钱包地址?

用户名一旦绑定钱包地址后不可修改,这是为了防止奖励被劫持。

如需更换钱包地址,请使用新的用户名重新连接矿池,旧用户名的历史份额和待支付余额将保留在原地址。

钱包地址必须以 8 开头(主网)或 q/r 开头(测试网)。

chevron_right help 提交份额一直显示 "invalid share" 怎么办?

1. 确认矿工软件版本与矿池兼容(建议使用最新版本)

2. 检查系统时间是否准确(时间偏差过大会导致 nTime 被拒)

3. 可能是 GPU 显存不稳定导致计算错误,尝试降低 GPU 频率或增加散热

4. 如果所有份额都 invalid,可能是 nonce 编码问题,请提交 issue

chevron_right help 为什么我的待支付余额迟迟没有到账?

矿池采用 PPLNS 分配模式,奖励触发需要满足以下条件:

1. 区块成熟(需 120 个确认

2. 矿工待支付余额达到最低提现阈值 50 ABC

3. 矿池有足够的成熟余额可用于下发

4. 全节点签名功能正常(测试网在 height < 267120 时签名算法有限制)

满足所有条件后,矿池会在下一次 payout 周期自动下发。

chevron_right help GPU 版本和 GUI 版本有什么区别?

GPU 版本(CLI):命令行界面,支持 NVIDIA CUDA 并行加速,适合服务器和高级用户。

GUI 版本:图形界面,开箱即用,内置 CPU 多线程挖矿,适合桌面用户和新手。

GPU 版本也可以通过 -cuda off 参数切换到 CPU 模式运行。

下载矿工软件

选择适合你的版本

GPU 版本
CUDA 加速 · v0.1.0

支持 NVIDIA GPU 并行挖矿,多显卡自动分配线程

下载 GPU 版
Linux x86_64 · 需 CUDA Toolkit
GUI 版本
图形界面 · v0.1.0

图形界面挖矿软件,开箱即用,适合新手用户

下载 GUI 版
Windows / Linux · 内置 CPU 挖矿
menu_book源码仓库: GitHub → MQSCAN-abcmint-miner-open-source