用 Mac M4 挖比特币?十分钟配置,十亿分之一概率

2026-07-17

引子

有天刷到一个叫 Public Pool 的比特币矿池——完全开源、非托管、零费用,支持 Solo 和 PPLNS 两种模式。然后冒出一个想法:手边这台 Mac M4 Mini 能不能跑?跑起来又能挖到多少?

这篇文章就是那次探索的完整记录:从生成 BTC 地址到编译 cpuminer,再到算清楚中奖概率后冷静下来。整个过程大概需要十分钟配置,但中奖概率可能比双色球还低。

什么是 Public Pool

Public Pool 是一个开源的比特币矿池项目,核心特点:

  • 非托管:矿池不持有你的私钥,区块奖励直接发到你的 BTC 地址
  • 两种模式:Solo 模式(端口 3333)——找到区块全归你;PPLNS 模式(端口 13333)——按算力分奖励
  • 零费用:没有任何抽水
  • 支持 Stratum V1、V1+TLS、V2

连接方式很简单:

矿机用户名: <你的BTC地址>.<工人名>
密码: x

Mac M4 到底能不能挖比特币?

先说结论:能跑,但本质是在刮彩票。

Apple Silicon 有现成的 cpuminer 适配版本(yanir99/cpuminer-for-Mac-Apple-Silicon-Support),用 NEON 指令集做了优化。在 M4 Mini(10 核 CPU)上预期 SHA256d 算力大约是 500–2,000 MH/s

然后看全网数据:

指标 数值
M4 Mini SHA256d 算力 ~1 GH/s
全网比特币算力 ~600 EH/s(1 EH = 10¹⁸ H)
两者比值 ~10⁻¹²
当前区块奖励 3.125 BTC

换句话说,M4 跑一年挖到一个区块的概率,大概和连中两次双色球差不多。

为什么选 CPU 而不是 GPU?

这是个必然选择,不是权衡。

比特币挖矿用的 SHA256d 算法极度简单重复,从 2013 年起就进入了 ASIC 统治时代。用三种工具比喻:

  • CPU = 瑞士军刀:什么都能干,什么都不极致
  • GPU = 菜刀:专门切菜,也能干点别的
  • ASIC = 罐头开盖器:只干一件事,但干得飞快

蚂蚁矿机 S21 一块 ASIC 芯片就能跑到 200 TH/s,是 M4 CPU 的 20 万倍,功耗反而只多一百多倍。

macOS 上不是不能用 GPU 挖——Metal Performance Shaders 可以做 GPGPU 计算——但需要自己实现 SHA256d 的内核程序,没有现成成熟的方案。而且在这个算力量级上,CPU 还是 GPU 对中奖概率的影响可以忽略不计。选最简单的方案就行。

实操步骤

1. 生成 BTC 地址(纯 Python + OpenSSL)

挖矿需要一个比特币地址作为矿机用户名。不需要第三方库,OpenSSL + Python 标准库就够了:

# 生成 secp256k1 密钥对
openssl ecparam -genkey -name secp256k1 -text -noout > keypair.txt

# 解析私钥和公钥
openssl ec -in keypair.txt -pubout -text -noout

然后用 Python 做剩下的步骤:公钥 → SHA256 → RIPEMD160 → 添加网络前缀(0x00) → 双 SHA256 校验和 → Base58 编码。

生成结果是一个以 1 开头的 P2PKH 地址,比如 1Uib8C9hTrhGysj1u8X4PoEEZRvBj1Nn6

踩坑记录:最开始尝试解析 OpenSSL 的 DER 编码公钥来提取坐标,但 DER 结构中密钥长度标记有短格式和长格式两种情况,导致偏移量计算容易出错。后来改用 openssl ec -text -noout 直接输出文本格式,用正则提取 hex 字符串,更可靠。

2. 编译 cpuminer

首先需要安装编译依赖(需要 Homebrew):

brew install openssl curl automake autoconf pkg-config libtool jansson gmp

然后克隆 Apple Silicon 适配版本:

git clone https://github.com/yanir99/cpuminer-for-Mac-Apple-Silicon-Support.git
cd cpuminer-for-Mac-Apple-Silicon-Support

编译时需要注意 OpenSSL 的路径。Apple Silicon 上 Homebrew 的默认路径是 /opt/homebrew/opt/openssl,而项目自带的 build.sh 里写死的是 /usr/local/opt/openssl,需要手动指定:

./autogen.sh
./nomacro.pl
./configure CFLAGS="-march=armv8.4-a -Ofast" \
  --with-crypto=/opt/homebrew/opt/openssl \
  --with-curl \
  --disable-assembly
make -j$(sysctl -n hw.ncpu)

踩坑记录
- 如果 Mac 上没装 Homebrew,autogen.sh 需要 aclocal(属于 automake),系统不自带
- 网络受限时(比如国内环境无法直连 GitHub),可以先在其他机器上 clone 代码,tar czf 打包后通过 scp 传到 Mac

3. 连接矿池(Solo 模式)

编译完成后,运行:

./cpuminer -a sha256d \
  -o stratum+tcp://public-pool.io:3333 \
  -u 你的BTC地址.自定义工人名 \
  -p x \
  -t $(sysctl -n hw.ncpu)

参数说明:
- -a sha256d:指定算法
- -o:矿池地址,3333 端口是 Solo 模式
- -u:格式为 <BTC地址>.<工人名>
- -p x:密码任意
- -t:线程数,可以用全部 CPU 核心

冷静的预期

先放一个算力对比表,直观感受差距:

设备 SHA256d 算力 功耗 算力/瓦
M4 CPU (10核) ~1 GH/s ~20W 0.05 GH/s/W
RTX 4090 ~120 MH/s 450W 0.27 MH/s/W
蚂蚁 S21 ASIC 200 TH/s 3500W 57 GH/s/W

ASIC 的效率是 M4 CPU 的一千倍以上。

Solo 挖矿的真实概率:以 M4 Mini 的算力,在 Solo 模式下跑一年挖到一个区块的概率是 十亿分之一 级别。

不是「有可能但概率低」,是「可以忽略不计」。

那为什么还要试?

因为 Solo 挖矿的体验成本极低——十分钟配置好 cpuminer,跑起来就能看到自己的 M4 在为比特币网络做贡献。哈希率在矿池仪表板上跳动,虽然大概率永远挖不到区块,但这个过程本身很有趣。就像买彩票——你不是真的指望中奖,但花两块钱买一个期待也挺好。

总结

M4 Mini 跑比特币 Solo 挖矿是可行的,技术上没有什么障碍。BTC 地址生成靠 OpenSSL + 纯 Python 就能搞定,cpuminer 有现成的 Apple Silicon 适配版,编译也不复杂。但算清楚中奖概率后,这更像一个周末实验项目而不是正经的挖矿方案。

如果你有 Mac M1-M4,花十分钟体验一下未尝不可。但如果真想挖矿,要么上 ASIC 矿机,要么选适合 CPU 挖的加密货币(比如 Monero 的 RandomX 算法)。用个人电脑挖比特币这件事,在 2026 年的今天,更多的是一种体验和谈资。