人们总是用一生来等待开始新的生活,这是很常见的现象。
等待是思维的一个状态,意味着你需要未来,而你不要现在。
你不要此时此刻,你把希望寄托于未来。丧失对当下时刻的意识,会大大地降低你的生命质量。
-- 埃克哈特·托利《当下的力量》

12月11日 Filecoin 的测试网络上线了,全国各路矿工都在刷数据。看着头部矿工数据蹭蹭的 往上涨,小矿工们坐不住了:为啥他们数据刷的这么快,第一名居然还碾压官方的节点。

答案是因为他们使用了集群。

估计很多同学跟我一样,对 Filecoin 测试网上线的第一印象就是:太特么扯了,这么高的 配置要求,谁玩得起。32 GB 扇区内存的最低配置是 256 GB。据说头部矿工的配置远远高于这个,几乎都是用上百台顶配服务器在刷数据。这简直就是一场矿机的军备竞赛。

而且此次测试网规定,每个矿工必须要刷完成 512 GB 的时空证明(PoSt),才会有算力(Power)。 笔者用一台 i9-9900k 的 CPU + 24GB RAM 的台式机测试过,发现一天下来只完成了 6GB 的 Proving,而且越到后面越慢,想要刷满 512GB 数据,出现在排行榜上,几乎不可能的。 即使能上榜也黄花菜都凉了。但是这已经是我们能拿出最高的配置了。

难道我们这种穷人只能看看吗?答案是否定的。

Lotus 的测试网的源代码编译只有三个文件 lotuslotus-storage-minerlotus-seal-worker。 其中 lotuslotus-storage-miner 分别是区块链节点和矿工节点的启动程序, lotus-seal-worker 是数据密封节点的启动程序。在没有高配机器的情况下,我们可以使用 一台 Miner 节点 + N 台 Worker 节点来实现自己 上排行榜 的需求。

闲话休说,下面我们就看看具体怎么搭建这个集群。

配置方案

配置方案:Master Miner 节点 x 1 + seal-worker 节点 x N
  • Master Miner 节点:使用一台带 GPU 的大容量机器作为 miner 主节点,这机器主要做的工作是 add pieces 和提交 PoSt proving

  • Seal Worker 节点: 多核 CPU 配上高速企业硬盘,以便可以增加 sealing 速度, 如果 CPU 的能力不强,可以使用 GPU 代替,效果更好。

配置步骤

  1. 在 master 矿工初始化之后,也就是在下面的脚本运行之后
lotus-storage-miner init --actor=t01849 --owner=t3v3gwdujm35f6vwrv6x7utimbhu7s64hvto6m327xscsoyraj5dyzxom2bthormfd7e3imqnpabp7hp55tlfq

(1) 修改矿工配置文档 vim .lotusstorage/config.toml

[API]
  ListenAddress = "/ip4/{IP}/tcp/2345/http"
  Timeout = "30s"

这里的 {IP} 是当前 master 节点的 ip 地址,默认是 127.0.0.1 这里你需要把它改成局域网或者公网 IP(如果你有静态 ip 的话), 如果你搞不清你是否需要外网访问,你就配置成 0.0.0.0

如果所有 worker 节点都在一个网络的话,建议使用内网 IP,如果需要大量外网机器同时挖,则需要填写公网 IP

(2) 启动 master 矿工

BELLMAN_CUSTOM_GPU="GeForce RTX 2070 SUPER:2560" lotus-storage-miner run

前面的变量是你 GPU 的配置信息,具体配置详情, 请参考: https://docs.lotu.sh/en+hardware-mining

(3) 拷贝 master 节点的 /var/tmp/filecoin-proof-parameters, .lotusstorage/api.lotusstorage/token 到 worker 节点, 同时拷贝 lotus-seal-worker 到 worker 节点

(4) 运行 worker 节点

nohup ./lotus-seal-worker run > miner.log &

如果你的 worker 有 GPU 的话,则你可以启用 GPU 做复制证明

BELLMAN_CUSTOM_GPU="GeForce RTX 2070 SUPER:2560" nohup ./lotus-seal-worker run > miner.log &

启动成功会看到类似的信息

INFO	main	lotus-seal-worker/sub.go:69	Waiting for new task

这时你在 master 节点运行 lotus-storage-miner info 应该可以看到 remote worker

(5) 接下来按照步骤 (4) 的方法启动 N 个 Worker 节点

到此,整个集群就开始运行了,等你的 Miner 节点准备好密封数据(PreCommit),Worker 就会开始拉取数据计算了,计算完之后会 Push 回 Miner 节点。

这里需要注意的是,Worker 计算完之后会 Push 11GB 数据回去,也就是说复制证明会计算 10 次,Master Miner 节点需要准备的磁盘空间与实际存储数据的 比值是 1:11,所以你得准备足够多的磁盘空间,以免磁盘空间不足导致矿工程序退出。不过这些 cache 数据再你完成 Proving 之后会删除大部分,只保留 2.1GB。

你可能以为,接下来你就等着看数据蹭蹭的往上涨,但是结果可能并不是这样的,还有很多坑需要填,且听下文分解。

插播一条小广告:

接下来的关于 Filecoin 挖矿干货的文章会率先发布在下面的星际鑫航微信公众号,有兴趣的同学可以关注一下:

深圳星际鑫航科技有限公司成立于2018年,总部位于深圳,是一家IPFS-Filecoin的云管理平台及存储服务的一体化综合解决方案提供商。

我司技术团队成员之一被协议实验邀请成为社区核心开发者成员之一,我们开发的Filecoin钱包被官方协议实验室收录, 这也是国内首家被官方认可并收录的产品。

公司围绕核心产品即GAMMAOS系统、数据机房SEDC、Filecoin钱包,公司核心团队来自于清华大学、 中山大学、中科院、亚利桑那州大学等的博士、硕士,以新一代通信协议IPFS和最新云计算架构Serverless为切入点, 为企业提供低成本、高性能、更安全的存储与计算服务。