命令行工具
QuipNetwork/quip-miner avatar
QuipNetwork/quip-miner

quip-miner v0.2:把量子退火矿机接到 Substrate 链上的实验性 Python 栈

quip 网络挖掘堆栈。其中包括一名协调员并链接所有官方 quip 网络矿工。

11,597 个 Star162 个 ForkPythonAGPL-3.0

秒懂

它是什么?
quip-miner 是一个面向 quip-protocol-rs Substrate 链的 Python 挖矿栈,驱动 CPU、GPU 与 D-Wave QPU 矿机。它把 v0.1 里自带的共识和 P2P 层全部删掉,只保留链上交互,本文从架构、运行方式到适用边界做一次评估。
适合谁用?
quip-miner 适合两类人:想在本地快速验证 QuantumPow 挖矿流程的开发者,以及愿意接受实验性代码风险、并已有 D-Wave 账号的量子计算研究者。不适合把稳定性和安全放在第一位的人,因为 keystore 明文保存种子、AGPL-3.0 许可证、以及依赖外部测试仓库这几个点都意味着生产环境使用需要额外的工程投入。
能商用吗?
可以,但条件严格。AGPL-3.0 是网络 copyleft 许可证:如果别人通过网络使用你修改过的版本(例如作为托管服务),你必须以同一许可证向他们提供源代码。
还在维护吗?
在维护。仓库最近一次提交在 1 天前。
用什么语言写的?
主要是 Python(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决什么问题,给谁用

quip-miner 解决的问题很具体:让矿工能够针对 quip-protocol-rs 这条 Substrate 链上的 QuantumPow pallet 提交有效的 Ising 解。链在每个新区块产生时提供挖矿快照,矿工需要快速搜索满足条件的 Ising 模型,然后把证明作为 extrinsic 提交上去。这个栈把从订阅链头、获取快照、调度矿工、到提交证明的整个流程封装成一套 Python 代码。主要使用者是参与 quip 网络测试的开发者,或者对量子退火挖矿机制感兴趣的研究者。它不面向一般用户,因为你需要自己启动一条链,还要有 D-Wave 的 API key 才能跑 QPU 模式。README 开头就写明这是实验性软件,没有生产保证,这个定位决定了它的受众范围。

v0.2 的架构取舍:砍掉共识,只留矿工

v0.1 里这个代码库自带共识、P2P(基于 QUIC)、区块存储、REST API 和 SPHINCS+ 签名器。v0.2 把这些全部移除,理由是链本身成为唯一事实来源,矿工只负责附着。这是一个清晰的设计决策:与其维护一套自己的 P2P 网络,不如直接依赖 Substrate 链的 RPC。架构图显示 SubstrateClient 通过 ws://localhost:9944 连接链,负责 get_mining_snapshot、subscribe_new_heads 和 submit_extrinsic。控制器 miner_controller.py 订阅链头,获取快照,然后分发给 miner_core.py 里的持久化 MinerHandle 工作进程。每个 worker 跑 base_miner.py 里的 mine_work_item 循环,这个循环是协议无关的,所以 CPU、GPU、QPU 可以共用同一套调度逻辑。这个设计让矿工变得很薄,但也意味着链的可用性直接决定矿工的命运,链一断,矿工就停。

从安装到跑起来的真实命令

安装过程是标准的 Python 项目流程:创建虚拟环境,pip install -e . 即可。依赖里有 substrate-interface、dwave-ocean-sdk、aiohttp、click、blake3 这些。注意 D-Wave 的 SDK 版本被限制在 >=9.0.0,<10,这个范围需要确认是否与你的 Python 版本兼容。启动前你需要先跑起 quip-protocol-rs 链,README 给出的命令是 docker compose up -d,然后确认节点在出块。矿工账户引导使用 quip-miner bootstrap,它可以自动生成 keystore、从 faucet 要钱、并提交 register_miner。如果要初始化一条新链,加上 --seed-chain 参数,它会用 sudo 权限设置 Difficulty 和 DefaultTopology。运行 CPU 矿工的命令是 quip-miner cpu --node-url ws://localhost:9944 --num-cpus 4 --topology zephyr:9,2 --rest-port 8086。这个 --topology 参数不是随便填的,CLI 会用与链相同的 blake2_256(SCALE(...)) 配方哈希拓扑,哈希不匹配就拒绝启动。这是防止矿工在错误拓扑上浪费算力的一个硬约束。

拓扑绑定与 Ising 模型生成机制

矿工的核心工作流程在 quantum_proof_of_work.py 里:derive_nonce 用 blake3 从 nonce 派生数据,generate_ising_model_from_nonce 把 nonce 映射成 Ising 模型,evaluate_sampleset 评估采样结果。这个流程和传统 PoW 的差异在于,矿工不是单纯计算哈希,而是要在一个给定的拓扑(默认 zephyr:9,2)上寻找低能态。拓扑绑定是启动时的强制检查,防止矿工用错误的图结构去采样。这里有一个值得注意的细节:CLI 用 blake2_256 对排序后的节点和规范边做 SCALE 编码再哈希,与链上注册的拓扑哈希对比。这意味着如果链上注册的拓扑和本地配置不一致,矿工根本不会启动。这种设计减少了无效提交,但也让调试变得更难,因为错误信息可能不够直观。对于想试验不同拓扑的用户,你需要先确保链上已经注册了对应的拓扑,否则 bootstrap 里的 --seed-topology 参数是唯一的入口。

Telemetry API 与运维观察点

矿工自带一个 HTTP REST 服务,默认端口 8086,提供 /health、/api/v1/status、/api/v1/system、/api/v1/stats、/api/v1/block/{n} 等端点。响应格式统一为 {"success": bool, "data": ..., "error": ..., "timestamp": int}。这比直接解析 Substrate RPC 输出要方便,适合用 curl 或脚本做健康检查。但要注意,v0.2 删除了很多旧端点,比如 /api/v1/peers、/api/v1/gossip、/api/v1/heartbeat,这些是 v0.1 里 P2P 模式的遗留。README 明确说这些路径没有对应的 substrate 等价物,消费者应该改用链上事件和 Prometheus(http://localhost:9615/metrics)。如果你之前依赖这些端点做监控,升级到 v0.2 后需要重写监控逻辑。另外,POST /api/v1/solve 在 v0.2 里被禁用,它曾经是直接调用 D-Wave 采样的接口,现在只能通过矿工主循环触发。

安全与密钥管理的硬伤

keystore 的设计是当前版本最明显的短板。keygen 命令生成的 JSON 文件权限是 0o600,但种子以明文保存。README 自己承认,加密 keystore 要等到 Phase 7 才提供。这意味着任何能读取该文件的进程或用户都能拿到私钥。在测试链上这可能无所谓,但如果你把这个矿工部署到共享服务器上,风险就很大。bootstrap 命令会自动从 faucet 请求资金,这要求 faucet 是可访问的,而 faucet 本身在另一个仓库(gitlab.com/quip.network/faucet),本地网络的搭建还需要依赖 nodes.quip.network 测试仓库。这意味着整个开发环境不是单仓库能搞定的,你需要同时维护多个外部依赖。对于追求可复现部署的团队,这是一个实际障碍。

许可证与升级路径

项目采用 AGPL-3.0 许可证。这意味着如果你修改了代码并对外提供网络服务,你有义务公开修改后的源代码。对于内部使用可能影响不大,但如果计划基于此构建商业服务,需要谨慎评估。升级方面,README 提到 Phase 7 会引入 HybridSigner(sr25519 + ML-DSA-44),这会改变签名机制,可能影响与链的兼容性。目前没有发布版本号,也没有 release 记录,这意味着你只能依赖默认分支的代码,无法锁定某个稳定版本。在依赖管理上,pyproject.toml 里指定了 substrate-interface>=1.7.4 和 scalecodec>=1.2,这些库的 API 变化可能会在未来的升级中引入不兼容。考虑到项目明确标注为实验性,任何升级都应该先在测试链上验证。

替代方案与适用边界

要找到直接替代品并不容易,因为 quip-miner 是专门为 quip 链设计的。但如果你只是想做量子退火采样,D-Wave 官方的 dwave-ocean-sdk 本身就是一个更成熟的替代方案,它不依赖任何区块链。区别在于,dwave-ocean-sdk 只负责采样,不处理链上交互,你需要自己写提交逻辑。另一个方向是使用 Substrate 生态里通用的 PoW 矿工,比如为其他链设计的 CPU 矿工,但那些矿工不识别 QuantumPow pallet,也没有 Ising 模型生成逻辑。quip-miner 的价值在于它把这两件事绑在一起:从链上拿快照、生成 Ising 模型、采样、提交证明。如果你只需要其中一部分,完全可以拆开来用,但那样你就失去了拓扑绑定和自动提交这些便利。对于只想研究 Ising 模型求解的人,直接用 dwave-ocean-sdk 更简单,不需要搭一条链。

编辑结论

quip-miner 适合两类人:想在本地快速验证 QuantumPow 挖矿流程的开发者,以及愿意接受实验性代码风险、并已有 D-Wave 账号的量子计算研究者。不适合把稳定性和安全放在第一位的人,因为 keystore 明文保存种子、AGPL-3.0 许可证、以及依赖外部测试仓库这几个点都意味着生产环境使用需要额外的工程投入。在决定采用之前,先确认三件事:第一,quip-protocol-rs 链的 docker compose 能否在目标机器上稳定出块;第二,你能否接受 Phase 7 之前没有加密 keystore 的现实;第三,D-Wave 的 API key 是否在你的预算范围内。如果这三项都通过,再考虑把它接入监控体系。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
社区笔记

社区笔记