BitMaker-hub/NerdMiner_v2
GitHub: BitMaker-hub/NerdMiner_v2
一个在 ESP32 等微型开发板上实现比特币 Solo 挖矿的开源项目,旨在帮助用户以低成本硬件学习并体验挖矿原理。
Stars: 2740 | Forks: 614
# NerdSoloMiner
**NerdSoloMiner v2**
这是一个**免费且开源的项目**,让你可以尝试用一个小型硬件来挖掘比特币区块。
本项目的主要目的是让你**了解更多关于挖矿的知识**,并在你的桌面上拥有一个漂亮的硬件摆件。
原项目 https://github.com/valerio-vaccaro/HAN

## 要求
- TTGO T-Display S3 或任何受支持的开发板(查看构建教程👇)
- 3D 外壳,请点击[这里](3d_files/)
### 项目描述
**实现 Stratum 协议的 ESP32**,用于在 solo 矿池中挖矿。矿池可以更改,但最初是与 [public-pool.io](https://web.public-pool.io)(支持 NerdMiner 的矿池)配合使用的。
- NerdMiner 屏幕 > NerdMiner 的挖矿数据
- ClockMiner 屏幕 > 时尚风格的矿工时钟
- GlobalStats 屏幕 > 全局挖矿统计及相关数据
**重要提示** 由于其共享难度较低,该矿工无法被所有标准矿池识别。你可以通过下文列出的特定矿池远程查看矿工运行状态,或者通过 UART 查看日志。
**_当前项目仍在开发中,后续将添加更多功能_**
## 构建教程
### 硬件要求
- LILYGO T-Display S3(原版)或任何其他受支持的开发板
- 3D 外壳,请点击[这里](3d_files/)
#### 目前支持的开发板
- LILYGO T-Display S3([速卖通链接*](https://s.click.aliexpress.com/e/_Ddy7739))
- ESP32-WROOM-32, ESP32-Devkit1..([速卖通链接*](https://s.click.aliexpress.com/e/_DCzlUiX))
- LILYGO T-QT pro([速卖通链接*](https://s.click.aliexpress.com/e/_DBQIr43))
- LILYGO T-Display 1.14([速卖通链接*](https://s.click.aliexpress.com/e/_DEqGvSJ))
- LILYGO T-Display S3 AMOLED([速卖通链接*](https://s.click.aliexpress.com/e/_DmOIK6j))
- LILYGO T-Display S3 AMOLED Touch([开发板信息](https://www.lilygo.cc/products/t-display-s3-amoled?variant=43532279939253))
- LILYGO T-Dongle S3([速卖通链接*](https://s.click.aliexpress.com/e/_DmQCPyj))
- ESP32-2432S028R 2.8"([速卖通链接*](https://s.click.aliexpress.com/e/_DdXkvLv) / 开发支持:@nitroxgas / ⚡jadeddonald78@walletofsatoshi.com)
- ESP32-cam([开发板信息](https://lastminuteengineers.com/getting-started-with-esp32-cam/) / 开发支持:@elmo128)
- M5-StampS3([速卖通链接*](https://s.click.aliexpress.com/e/_DevABY3) / 开发支持:@gyengus)
- Wemos Lolin S3 Mini([开发板信息](https://docs.platformio.org/en/latest/boards/espressif32/lolin_s3_mini.html))
- Wemos Lolin S2 Mini([开发板信息](https://docs.platformio.org/en/latest/boards/espressif32/lolin_s2_mini.html))
- Weact S3 Mini([开发板信息](https://github.com/WeActStudio/WeActStudio.ESP32S3-MINI))
- Weact ESP32-D0WD-V3([开发板信息](https://github.com/WeActStudio/WeActStudio.ESP32CoreBoard))
- ESP32-S3 Devkit([开发板信息](https://docs.platformio.org/en/latest/boards/espressif32/esp32-s3-devkitm-1.html))
- ESP32-C3 Devkit([开发板信息](https://docs.platformio.org/en/latest/boards/espressif32/esp32-c3-devkitm-1.html))
- ESP32-C3 Super Mini([开发板信息](https://docs.platformio.org/en/latest/boards/espressif32/seeed_xiao_esp32c3.html))
- Waveshare ESP32-S3-GEEK([开发板信息](https://www.waveshare.com/wiki/ESP32-S3-GEEK))
- LILYGO T-HMI([速卖通链接*](https://s.click.aliexpress.com/e/_oFII4s2) / 开发支持:@cosmicpsyop)
- ESP32-C3 0.42 英寸 OLED([速卖通链接*](https://s.click.aliexpress.com/e/_oDmT4Id) / 开发支持:@mrthiti / ⚡ wallet@thiti.dev)
- ESP32-S3 0.42 英寸 OLED([速卖通链接*](https://s.click.aliexpress.com/e/_oFIMUoh) / 开发支持:@mrthiti / ⚡ wallet@thiti.dev)
\*附属链接
### 烧录固件
#### microMiners 烧录工具 [推荐]
最简单的固件烧录方式。使用以下固件烧录工具制作你自己的矿机:
1. 准备一个 TTGO T-display S3 或任何其他受支持的开发板
2. 访问在线 NM2 烧录工具:https://flasher.bitronics.store/ (建议使用 Google Chrome 无痕模式)
#### 标准工具
使用在线固件烧录工具 **ESPtool** 以及你在 `bin` 文件夹中找到的**二进制文件**之一,来制作你自己的矿机。
如果你愿意,你也可以使用 Arduino、PlatformIO 或 Expressif IDF 编译整个项目。
1. 准备一个 TTGO T-display S3 或任何受支持的开发板
2. 下载本仓库
3. 访问在线 ESPtool:https://espressif.github.io/esptool-js/
4. 使用与你的开发板对应的 `bin` 子文件夹中的二进制文件加载固件。
5. 插入你的开发板,并从子文件夹中选择每个文件(`.bin` 文件)。
### 更新固件
按照相同的烧录步骤更新 NerdMiner 固件,但只需使用 0x10000_firmware.bin 文件。
#### 构建故障排除
1. 在线 [ESP Tool](https://espressif.github.io/esptool-js/) 兼容 chrome、chromium 和 brave 浏览器
2. ESPtool 建议:使用 115200bps
3. 构建错误 > 如果在下载固件期间上传停止,建议让开发板进入 boot 模式。拔下数据线,按住右下角的按钮,然后重新插上数据线。再次尝试烧录。
4. 在极端情况下,你可以使用 ESPtool 上的“Erase all flash”(擦除所有闪存)功能,在上传固件之前清除当前的所有配置。曾有案例表明,如果不执行此操作,会出现 WiFi 故障。
5. 对于 ESP32-WROOM 开发板,可能需要让你的开发板进入 boot 模式。按住 boot 键,按下 reset 键,然后再进行烧录。
## NerdMiner 配置
烧录完成后,你只需要设置你的 WiFi 和 BTC 地址。
注意:如果未提供你所选钱包的 BTC 地址,挖矿将不会启动。
#### WiFi 热点
1. 连接至 NerdMinerAP
- AP: NerdMinerAP
- 密码: MineYourCoins
2. 设置你的 WiFi 网络
3. 添加你的 BTC 地址
4. 如有需要,更改密码
- 如果你使用的是 public-pool.io,并且想为你的矿工设置自定义名称,你可以在地址后附加一个格式为 _.yourworkername_ 的字符串
#### SD 卡(如果可用)
1. 使用 Fat32 格式化一张 SD 卡。
2. 在卡的根目录下创建一个名为“config.json”的文件,包含以下结构。请根据你的需求调整设置:
```
{
"SSID": "myWifiSSID",
"WifiPW": "myWifiPassword",
"PoolUrl": "public-pool.io",
"PoolPort": 3333,
"PoolPassword": "x",
"BtcWallet": "walletID",
"Timezone": 2,
"SaveStats": false
}
```
1. 插入 SD 卡。
2. 如下所述按住“重置配置”按钮,以重置配置和/或在 nvmemory 中没有设置的情况下启动。
3. 断电并拔出 SD 卡。挖矿时不需要它。
#### 矿池选择
推荐的低难度份额矿池:
| 矿池 URL | 端口 | 网站 URL | 状态 |
| ----------------- | ----- | -------------------------- | ------------------------------------------------------------------ |
| public-pool.io | 3333 | https://web.public-pool.io | 开源 Solo 比特币挖矿矿池,支持开源矿工 |
| pool.nerdminers.org | 3333 | https://nerdminers.org | 官方 Nerdminer 矿池网站 - 由 @golden-guy 维护 |
| pool.nerdminer.io | 3333 | https://nerdminer.io | 由 CHMEX 维护 |
| pool.pyblock.xyz | 3333 | https://pool.pyblock.xyz/ | 由 curly60e 维护 |
| pool.sethforprivacy.com | 3333 | https://pool.sethforprivacy.com/ | 由 @sethforprivacy 维护 - public-pool 分支 |
| pool.stompi.de | 3333 | http://web.stompi.de | 由 @odinstar 维护 - public-pool 分支 |
|pool.solomining.de| 3333 | https://pool.solomining.de/ | 由 https://x.com/solo_mining 维护 |
其他不兼容低难度份额的标准矿池:
| 矿池 URL | 端口 | 网站 URL |
| ------------------------ | ---- | ----------------------------------------- |
| solo.ckpool.org | 3333 | https://solo.ckpool.org/ |
| btc.zsolo.bid | 6057 | https://zsolo.bid/en/btc-solo-mining-pool |
| eu.stratum.slushpool.com | 3333 | https://braiins.com/pool |
### 按钮
#### 单按钮设备:
- 单击 > 切换屏幕。
- 双击 > 切换屏幕方向。
- 三击 > 关闭屏幕然后再打开。
- 长按 5 秒 > **重置配置并重启**你的 NerdMiner。
#### 双按钮设备:
在 USB-C 接口朝右的情况下:
**顶部按钮**
- 单击 > 切换屏幕。
- 长按 5 秒 > **重置配置并重启**你的 NerdMiner。
- 长按并通电 > 进入**配置模式**并通过 WiFi 编辑当前配置。你可以更改或验证你的设置。
**底部按钮**
- 单击 > 关闭屏幕然后再打开
- 双击 > 更改方向(默认为 USB-C 接口朝右)
#### 构建视频
[](https://youtu.be/POUT2R_opDs)
## 开发者
### 项目指南
- 当前项目已适配可在 PlatformIO 下运行
- 当前项目兼容 ESP32-S3 和 ESP32-wroom。
- 分区表方案应构建为 Huge App(巨型应用)
- 所需的所有库均已在 platform.ini 中列出
### 已完成工作
- [x] 将项目迁移至 platformIO
- [x] 修复份额达到 100 万时屏幕出现矩形的 Bug
- [x] 修复内存泄漏 Bug
- [x] 修复接收到的 JSON 包含某些 null 值时重启的 Bug
- [x] 实现 midstate sha256
- [x] 修复 Wifi.h 中 Wificlient DNS 无法解析的 Bug
- [x] 代码重构
- [x] 在屏幕上添加区块高度(blockHeight)
- [x] 添加显示当前时间的时钟
- [x] 添加包含全局挖矿统计信息的新屏幕
- [x] 为低难度矿工添加矿池支持
- [x] 在矿工屏幕上添加最佳难度(best difficulty)
- [x] 增加对标准 ESP32 dev-kit / ESP32-WROOM 的支持
- [x] 修改代码以支持添加多种开发板
- [x] 增加对 TTGO T-display 1.14 的支持
- [x] 增加对 Amoled 的支持
### 进行中
标签:Homebrew安装, UML, 客户端加密