WEB-DL

Chia多机集群挖矿教程

Chia允许你在每台矿机上只运行一个收割机(harvester)程序连接到集中的一个全节点钱包(重钱包full node)上进行挖矿,而不必在每台机器上都运行完整的重钱包。采用这种模式可以让你的系统更简单,使用更少的带宽、空间、CPU,也让你的钱包秘钥更安全。全节点钱包通过UPNP或手动NAT指向(8444端口)打通外网可以连接到更多的其他钱包节点,在挖矿时,它会让你的整体农场更快、更高效。

整个农场(矿场)的架构是由一台运行全节点钱包(重钱包full node)的主机和其他只运行收割机(harvester)的机器组成。其中只有你的全节点钱包主机器会连接到Chia网络,而其他运行收割机的矿机只需要连接你的全节点钱包即可。

为了保证你的收割机和主机之间的通信安全,使用了TLS加密技术,全节点钱包主机将是签署所有证书的私人认证机构(CA)。每个收割机都必须有自己的签名证书,才能与你的全节点钱包正常通信。

一、打通主机和收割机通道

1、首先需要从全节点钱包安装目录中将收割机(harvester)相关程序拷贝出来,通常在windows下安装的chia钱包路径为 %LocalAppData%\chia-blockchain,其中我们需要将%LocalAppData%\chia-blockchain\app-1.0.5\resources\app.asar.unpacked\daemon文件夹整体复制到U盘中 (注意:app-1.0.5为你当前安装的chia版本号,不同版本改路径需要自行修改)

2、将全节点钱包配置目录中的CA证书(%USERPROFILE%\.chia\mainnet\config\ssl\ca 文件夹)复制到U盘中

3、将U盘中的daemon、ca两个文件夹复制到收割机的C盘中。

4、cmd界面定位到daemon目录,并执行chia init命令进行初始化,然后执行chia init -c C:\Chia\ca命令进行CA证书授权,这样可以为不同的收割机授权唯一的通信证书来确保收割机和全节点钱包之间的通讯安全。

5、执行 chia configure –set-farmer-peer 192.168.3.2:8447 命令为收割机配置全节点钱包主机的IP地址及端口,其中192.168.3.2需要修改为你全节点钱包的实际IP地址。当然你也可以通过修改%USERPROFILE%\.chia\mainnet\config\config.yaml配置文件中的harvester->farmer_peer->host参数进行修改(不同版本配置文件格式可能略有不同,请仔细查找)

6、执行 chia plots add -d D:\plots\  命令添加农田文件所在目录 D:\plots\ 如有多个硬盘路径,可以根据自己矿机实际情况修改D:\plots\后多次运行本命令

7、执行 chia start harvester 命令启动收割机程序

8、其他收割机只需要重复以上2-7步操作即可。

9、在如果需要重启或者关闭收割机程序,可以在daemon目录cmd下执行 chia stop harvester 命令,或者执行 chia stop all -d 命令可以关闭本台收割机上运行的所有chia相关程序

注意:

1、你的路由器开启UPNP或者手动NAT指向(8444端口)确保外网可以正常访问,这样可以让全节点钱包连接到更多的其他chia节点

2、需要确保全节点钱包的8447端口可以被其他机器正常访问(windows防火墙需要开启该端口)

3、不能将全节点钱包的config/ssl文件夹整个复制到每个收割机上,这样可能会出现意外的错误,而且非常的不安全。每个收割机只能通过第4步命令来获得不同的授权

4、目前的版本全网节点钱包界面上无法查看当前收割机的运行状况,但是你可以先关闭全节点钱包,然后在config.yaml中设置你的日志级别为info,再重新启动全节点钱包。这样你就可以在%USERPROFILE%\.chia\mainnet\log\debug.log日志中查看是否有如下消息:

[time stamp] farmer farmer_server : INFO -> new_signage_point to peer [harvester IP address] [peer id - 64 char hexadecimal] 
[time stamp] farmer farmer_server : INFO <- new_proof_of_space from peer [peer id - 64 char hexadecimal] [harvester IP address]

new_signage_point消息表示节点钱包的农场模块向你的收割机发出了挖矿任务。new_proof_of_space消息表示收割机找到了有效的证明。你会收到很多的new_signage_point消息,但new_proof_of_space消息可能不会是多条。

二、命令行耕地

第一部分已经实现了主机和收割机之间的信息传递,因为chia可以不联网生产农田(Plot),而GUI程序打开之后又会请求联网以及打开其他没必要的服务,所以我们在收割机里直接用命令行生产农田是最划算的。

chia plots create -n 10 -k 32 -b 4096 -r 4 -f farmer_public_key -p pool_public_key -t D:\Temp -d F:\ChiaPlotFiles

上面是我在用的命令,详细说明如下:

-f [farmer 公钥]: 这是你的 “农民公钥”. 当你想在其他机器上创建P盘文件时,如果你不想给chia账户完整的访问权限,就可以使用这个密钥。要找到你的 Chia 农民公钥,请使用以下命令: chia keys show

-p [pool 公钥]。这是你的 “池公钥”. 当你想在其他机器上创建P盘文件时,如果你不想给chia账户完整的访问权限时,就可以使用它。要找到你的 Chia Pool 公钥,请使用下面的命令: chia keys show

-a [fingerprint]。这是用来选择农夫公钥和池子公钥的指纹。当你想从钥匙链中的多个钥匙中选择一个时,请使用这个命令。要找到你的 Chia 密钥指纹,请使用以下命令: chia keys show

-n [绘图数量]。按顺序进行的绘图数量。一旦一个绘图完成,它将被移动到最终位置-d,然后再开始下一个绘图序列。

-k [size]。定义绘图的大小。不同系统上的k大小和创建时间列表请查看:k大小对应的P盘文件规格

-b [内存缓冲区大小MiB]。定义内存/RAM使用量。默认值是2048 (2GiB)。更多的内存将略微提高绘图的速度。请记住,这只是分配给绘图算法的内存。运行钱包等将需要你的系统提供额外的内存。

-r [线程数]: 2线程通常是最佳的。多线程目前只在P盘第一阶段使用。

-u [buckets数量]。更多的数据包可以减少对内存的需求,但需要更多的随机磁盘搜索。对于机械磁盘,你需要设置更少的buckets,而对于NVMe固态硬盘,你可以设置更多的buckets。一般来说,你可以设置32、64或128(默认)

-s [stripe size]。这是在第一阶段进行并行工作负载时,交给每个线程的数据量。默认的64K似乎是整体的最佳选择。32K往往是小损失,128K也是小损失。

-e [bitfield plotting]。使用-e标志将禁用bitfield P盘算法,并恢复到旧的b17的P盘格式。它降低了对内存的要求,但在P盘时时也会多写12%的数据。它通常被认为是一个更快的选项,适用于更快的驱动器,如SSD。但是我本人多次测试,使用-e参数反而生产农田变慢,原因还没找到,有待进一步研究。

-t [tmp dir]。定义P盘时的临时目录。这里是P盘的第一阶段和第二阶段需要使用。-t 路径需要最大的工作空间:通常是最终plot文件大小的 4 倍左右。

-2 [tmp dir 2]: 定义一个次要的临时目录,用于存放P盘临时文件。这是绘图阶段3(压缩)和阶段4(检查)发生的地方。根据您的操作系统,-2可能默认为-t或-d的相同路径。因此,如果-t或-d的空间不足,建议手动设置-2。-2 路径需要的工作空间与绘图的最终大小相等。本人实测使用-2参数可以提高整体速度,详细说明看下文分析。

-d [final dir]: 定义存储plot文件的最终位置。当然,-d 应该有足够的可用空间作为Plot文件的最终大小。这个目录会自动添加到 %USERPROFILE%\.chia\版本号\config\config.yaml 文件中。你可以使用 chia plots remove -d 从配置中删除一个最终目录。

额外说明

在绘图过程中,第1阶段(正向传播)和第3阶段(压缩)往往花费的时间最多。因此,为了最大限度地提高绘图速度,-t和-2应该放在最快的硬盘上,而-d可以放在慢速硬盘上。

目前,绘图只使用1个CPU线程。因此,大多数Chia用户认为同时运行多个P盘程序可以显著提升效率。

在SSD固态硬盘上P盘比在机械硬盘上更快,这是客观存在的。然而,SSD的寿命明显有限,而且早期的Chia测试似乎表明,在SSD上P盘很快就会耗尽固态的最大读写量。因此,许多Chia用户决定在多个机械硬盘上同时并行P盘更 “绿色”。

P盘模式的设计是为了尽可能提高工作效率。然而,为了防止无休止算力攻击,农民不应该能够在平均爆块间隔内P好一个P盘文件。这就是为什么在主网上最小的k-size是k32。

示例一

本人使用的电脑是6700k+芝奇DDR4 2666 16G(8*2)+海康C2000(256G)+2个西数10T机械盘,P盘参数如下:

chia plots create -n 1 -k 32 -b 6144 -r 4 -f a60d3019f364c3d143cad483128d5cc0b475604b69e042debfa6dde0d06422b1c29ae474d61207be54bec3b9db73c101 -p 8ea1fcca9afe48b560d9978c42de2cc9db9d3d2600798d4cd8a5a7c8159221082342077193b9497c77d006034cbd1679 -t H:\Temp -2 E:\0 -d F:\ChiaPlotFiles
  • Time for phase 1 = 7185.187 seconds. CPU (200.630%) Sat Apr 24 11:23:03 2021
  • Time for phase 2 = 2878.730 seconds. CPU (96.290%) Sat Apr 24 12:11:02 2021
  • Time for phase 3 = 6968.550 seconds. CPU (91.390%) Sat Apr 24 14:07:11 2021
  • Time for phase 4 = 1340.257 seconds. CPU (38.610%) Sat Apr 24 14:29:31 2021
  • Total time = 18372.741 seconds. CPU (131.030%) Sat Apr 24 14:29:31 2021
  • Copy time = 634.321 seconds. CPU (18.050%) Sat Apr 24 14:40:05 2021

实测P盘时CPU给4线程即可,内存4G,P盘过程1、3速度受固态、cpu、hdd等多重影响,但最低参数就是“-b 4096 -r 4”

P盘文件可用性校验

命令:chia plots check -n [num checks] -l -g [substring] 

首先将在你的config.yaml配置文件中所设置的所有plot目录中查找。你可以用chia plots show检查这些目录。

-g 只检查 [substring] 目录或文件名包含大小写敏感的P盘文件。如果没有指定 -g,那么 config.yaml 中每个目录下的所有图都会被检查。

使用-g的例子

  • 检查一个长目录名内的地块,如/mnt/chia/DriveA,可以使用chia plots check -g DriveA
  • 检查只有k33地块可以使用 chia plots check -g k33
  • 在2020年10月31日创建的检查小区可以使用 chia plots check -g 2020-10-31

-l 允许你通过 ID 查找重复的P盘文件。它检查config.yaml中列出的所有P盘文件保存目录,并列出所有以相同文件名结尾的绘图文件名; *-[64 char plot ID].plot。如果你只想检查重复的文件,你应该使用-l -n 0。

-n代表给出的challenges数量。如果你不包含-n整数,默认为30。例如,如果-n设置30,那么每个P盘文件将被检测30个challenges。challenges数从5(最小)到-n,而且不是随机的。

每个P盘文件都会接受每个挑战:

  • 获取challenges的质量(是否有空间证明?你应该期望每个challenges有1个证明,但也可能有0个或1个以上的证明。)
  • 如果有证明,则获得该challenges的完整证明。
  • 验证完整校样的数量与预期质量校样的数量是否一致。

最后,你会看到一份报告,是最终的真实证明与预期证明的对比。

因此,如果-n是20,你会期望有20个证明,这取决于你的plot文件有多少。

使用 -n 10 或 -n 20 运行该命令对于一个非常小的检查来说是很好的,但实际上并不能给你提供很多信息,让你知道这些地块是否真的是高质量的。

可以考虑使用-n 30来获得更好的统计信息。

更多细节,您可以阅读 chiapos https://github.com/Chia-Network/chiapos/blob/master/src/prover_disk.hpp 中的 DiskProver 命令。

full proofs与expected proofs的比率意味着什么?

  • 如果比率>1,说明你的P盘文件在这次的扫盘中比较幸运。
  • 如果比率<1,你的P盘文件相对幸运值较低。
  • 除非你的比值<0.70,否则你不应该真正关心这个问题。

理论上,比率>1的地块更有可能在区块链上赢得挑战。同样,比率<1的P盘文件获胜的可能性也会降低。然而,在实践中,这其实并不会有明显的影响。”P盘文件数量 “和 “k-size “在赢得爆块的影响因素要比 “每次挑战产生的证明 “大得多。因此,如果你的P盘文件检查比例小于1,不要担心,除非它们明显小于1。

参考链接:

https://github.com/Chia-Network/chia-blockchain/wiki/Farming-on-many-machines

https://github.com/Chia-Network/chia-blockchain/wiki/CLI-Commands-Reference

https://github.com/Chia-Network/chia-blockchain/wiki/k-sizes

https://www.kuangjiwan.com/news/news-2891.html

https://www.kuangjiwan.com/news/news-2886.html

码字很辛苦,转载请注明来自非WEB-DL资源站《Chia多机集群挖矿教程》

评论