LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > 教你做Filecoin Lotus测试网的大矿工

教你做Filecoin Lotus测试网的大矿工

2019-12-19 IPFSMINER 来源:区块链网络

640?wx_fmt=png

Filecoin 的 Lotus 测试网于北京时间12月12日凌晨启动了

中国社区矿工的热情被瞬间唤醒。然而大型矿工牢牢占据了有效存储排行榜的前几位,许多用户发现利用家庭 PC 或笔记本,几乎不可能在短时间内成为真正意义上的出块矿工了。

Filecoin Lotus 测试网目前存在的问题

Filecoin 当初宣称的利用闲置存储和带宽挖矿,在这个测试网上基本上不能实现了。还有参与测试的矿工声称找到测试网分叉攻击漏洞的,这是一件好事,说明测试网还是可以发现漏洞等待官方来进行修改的。

开发这样一个大型区块链和去中心化存储项目的难度之大,其中涉及很多技术上的权衡利弊。这也是为什么?Filecoin 团队把挖矿的计算门槛提到如此之高,其实是有深思熟虑的。

但是最重要的是保证足够的安全性,为了这个目的,现阶段采取的折中办法是提高计算性能要求。我们乐观地认为,官方后续的设计改进或优化,是有可能在不丧失安全性的前提下,大大降低硬件门槛,让 Filecoin 再次成为闲置存储/带宽挖矿的标杆性去中心化落地项目。

大矿工是如何霸占排行榜的呢?

继续关注到现在的测试网,可以看到前几名的“实力”还是很强的,和小矿工拉开了很大的差距。当然啦,这些团队或公司壕气十足,部署大量服务器,集体挖一个矿工,肯定能得到很好的结果,也是无可厚非的。

这些大矿工的宣传手段,就像在拼命说全世界就只有我能挖到。其实中心化项目最重要的群众“共识”基础,必须体现在挖矿矿工的多样性和分散性上。光是靠排名前几位的这样的“大矿工”,这就违背了项目的初衷和目的,项目也是无法执行起来的。

如果在项目极早期就出现大矿工中心化垄断,那么这个项目肯定是走向死胡同的。相信目前这些头部“大矿工”自己也清楚,现阶段不计一切硬软件成本、死磕排名的行为,也只是为了给自己公司做一大波的宣传而已,在巨大的经济成本下出来的数据是不是真的适用于单台无集群的普通服务器呢?

我们来举个栗子,假设(仅仅只是假设一下哦)你用 100 台机器和100个硬盘做到第一名大矿工的有效存储 100 TB,我用 10 台机器和 10 个硬盘(所有的规格都是一样)没有达到前面的高排名,但是有效的储存是?10TB,这样的产出比是谁的高呢?答案显而易见。况且大量机器组成大型矿工,对于交换机有更高要求,因此带宽和高的交换机价格肯定也会高出几倍。

小星星不希望 Filecoin 有这样的走向,所以一定要告诉不太明白技术细节的朋友们,其实,你们也可以做大矿工,虽然是需要投入一些价格稍贵的硬件。

成为大矿工的步骤有哪些呢?

首先准备一些机器,其中一台机器同时运行 lotus 全节点程序和 lotus-storage-miner 矿工程序(此机器需要配置多核 CPU 或一块显卡(保证 POST 时空证明的计算能及时完成;注意如果是多核高主频 CPU,那就可以不带显卡!),其他都作为 lotus-seal-worker 复制证明计算程序。全部?worker(lotus-seal-worker)节点都连接到 miner(lotus-storage-miner),这样就能持续获取 lotus-storage-miner 的复制证明任务。内网带宽起码 1Gb/s(100MB/s 左右),有条件的话提高到 10Gb/s(1GB/s 左右)。

稍微修改 lotus-storage-miner 使得进程内自动持续添加扇区,也就是 add piece,这样就会持续产生复制证明任务,worker 们就可以接收到任务然后做计算了。

复制证明任务分两阶段:precommit 和 commit。

precommit 阶段:worker 会自动从 miner 获取任务,并下载 staged sector,进行计算,完成后把 sealed 和 cache 目录/文件又上传给 miner。

commit 阶段:worker 再下载 sealed 和 cache 目录/文件,再次计算,把最终 sealed 文件和证明结果传给 miner。所以 worker 节点越多,并行做复制证明的任务就越多,越有利于快速提升有效存储量。

以上过程只涉及到部署,唯一需要修改代码的地方就是自动持续添加扇区(也可以编写脚本从外部添加扇区)。看到了吗?其实没有什么秘密,不需要太懂技术细节。

好了,以上的方式已经可以很好的“挖矿”了。

大矿工如何成为头部大矿工呢?

如果你想成为头部大矿工,就还需要做一些优化,优化思路很多,不一而足。

这里就介绍几个比较简单容易实现的点,仅供大家参考。

重新审视下上面步骤,我们发现 worker 多了以后,可能 miner 接受的下载和上传任务会很多,将导致 miner 的磁盘读写压力陡增。这会导致 worker 浪费很多时间在网络传输扇区或缓存数据上。而且 miner 的单个磁盘容量最多 8TB 或 16TB,很快会出现存储空间不够的情况。

我们很容易想到可以利用分布式文件系统,把 miner 的存储交给其他服务器。例如可以利用较成熟的 Ceph 在所有 worker 上搭建一个 Ceph 分布式文件系统集群,然后在其上创建一个目录,同时挂载给 miner 和 worker 节点。

对于 miner 和 worker 程序本身不需要做太多改动,因为 miner 和 worker 对于扇区的放置方式几乎一样,也就是说 miner 和 worker 能轻易读取同一个文件,这样就能省掉来回传输扇区的冗余工作(当然 Ceph 也是网络传输的,只是不在一个层面)。只需要修改 worker 代码的一点是:把 pull 和 push 扇区和缓存数据的地方给注释掉。

还有个优化的点,就是把持续生成扇区再改进一下,只生成一次扇区,并把 commP 结果值拿到并存起来,以后就可以省掉 generate piece commitment 和 add piece 的时间了。另外把生成的 staged 扇区只存一份到 Ceph 中,然后每次需要新的扇区时,做个软链接,就省去了拷贝的功夫。

还能优化,因为有些偶尔失败的扇区任务,有可能会留下残留文件,同样也会占用大量存储空间,如果增加一个自动周期检测清理,便能清除残留文件。

硬件配置够好的情况下,建议挖 32GB 扇区,比挖 1GB 扇区更容易快速提升有效存储。

分布式文件系统也不一定就要用 Ceph,还有很多选择,建议实测对比。

好了,介绍到这里,相信有一定开发经验的朋友,也能很容易的按上面的思路,成为“大矿工”甚至“头部大矿工”了。

其实还是有许多优化思路的,但目前官方的 worker 还是比较粗糙的,如不能自动重连 miner、做成功的任务提交失败就不会自动重试等,相信在Testnet中还能发现更多更有意思的问题,也会让Filecoin越来越完善。

IPFS MINER 还希望后续有精力投入并推出家庭式矿机方案,让 Filecoin 挖矿重回家庭,利用闲置带宽,减免托管费和运维费,并且获得不低于托管式挖矿的经济效益。

所以还是那句话,散户矿工们不用急,主网上线还有三个多月,一切皆有可能。

—-

编译者/作者:IPFSMINER

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...