首页 > IPFS > 正文

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

分类:观点IPFS布道者FilCloud 2019-12-17 18:00

  Filecoin的 Lotus 测试网于12月11日启动了,瞬间唤起了中国社区的热情。然而让很多朋友略失望的是,大型矿工牢牢占据了有效存储排行榜的前几位,小白用户发现利用家庭 PC 或笔记本,基本上不可能短时间内成为真正意义上的出块矿工。

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

  Filecoin当初宣称的利用闲置存储和带宽挖矿,基本上在这个测试网上目前是实现不了的。还有声称找到测试网分叉攻击漏洞的,可以用和自己的有效存储不成正比的概率生成更多的区块,这对于 Lotus 来说是好事,方便官方尽早修复漏洞。

  不过不用“太神话”,一方面找漏洞比修复漏洞容易得多,另一方面漏洞总会被修复,对于只想挖矿的矿工来说,找漏洞是否值得投入大量精力,那就见仁见智了。

  FilCloud 团队跟踪 Filecoin 的 go-filecoin 和 Lotus 客户端代码已经有大半年了,知道开发这样一个大型区块链和去中心化存储项目的难度,其中涉及很多技术上的权衡利弊。目前 Filecoin 团队把挖矿的计算门槛提到如此之高,其实是有再三考虑的。

  最重要的是保证足够的安全性,为了这个目的,目前采取的折衷办法是提高计算性能要求。我们乐观地认为,官方后续的设计改进或优化,是有可能在不丧失安全性的前提下,大大降低硬件门槛,让 Filecoin 再次成为闲置存储/带宽挖矿的标杆性去中心化落地项目。毕竟还有3个月左右时间才主网上线呢,对吧,稍安勿躁。

微信图片_20191203115731.jpg

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

  再说回目前的测试网,大家可以看到前几名的“实力”还是很强的,和小矿工拉开了很大的差距。当然啦,这些团队或公司投入了比较大额的资金,部署大量服务器,集体挖一个矿工,得到比较好的结果,也是无可厚非的。

  然而个人比较反感这些大矿工的宣传手段,好像搞得就他们能挖一样。其实大家都明白,如果只有头部几个矿工就可以霸占整个Filecoin网络,那么Filecoin这一项目一定做不起来的。比特币和以太坊上的挖矿经验告诉我们,去中心化项目最重要的群众“共识”基础,必须体现在挖矿矿工的多样性和分散性上。

  如果在项目极早期就出现大矿工中心化垄断,那么这个项目肯定是走向死胡同的。我相信目前这些头部“大矿工”自己也清楚,不考虑硬件投入成本的情况下去追求所谓的排名,其实从经济效益上来说不一定是最佳的。

  举个不太恰当的例子,假设(纯粹假设,别真的套用数据)你用100台机器和100个硬盘做到第一名大矿工的有效存储 100 TB,我用 10 台机器和 10 个硬盘(规格均一致)做到没排名的矿工的有效存储 20TB,请问谁的投入产出比高?答案不言自明。更何况大量机器组成大型矿工,对于交换机有更多要求,众所周知,带宽和高的交换机价格是贵了好多好多。

  我们不希望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 中,然后每次需要新的扇区时,就做个软链接,就省去了拷贝的功夫。

  继续优化,我们注意到偶尔失败的扇区任务,可能留下残留文件,会占用大量存储空间,可以加一个自动周期检测清理的实现,清理冗余残留文件。

  更进一步优化,上述 precommit 和commit 阶段之间的 cache 目录中,有几个 commit 阶段完了之后会删除的文件(大概是扇区大小的 10 倍左右),那么这些中间文件是否没必要写入 Ceph?比如写入 worker 的本地磁盘,就可以减小Ceph 的压力以及内网带宽的占用。

  如果想实现这个,就必须把precommit和commit 放到一个 worker 连续做,因为涉及上链交易的来回通信,这里面涉及要更改 miner 和 worker 的代码,把调度改一下,稍微复杂一点。然而这个优化可能对于整个系统的吞吐量有巨大改善。

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

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

  如果对 Ceph 本身的吞吐不满意,那还有更变态的优化思路,就是每个 worker 只管计算和存储分配到的扇区,miner 需要做时空证明的时候,抽到哪个扇区,就去访问相应的 worker 边读取边做时空证明。这样子就直接去掉了 Ceph 这一层,充分发挥每个 worker 自己的资源作用,非常适合目前测试网刷榜,不过有个缺点是容灾问题,某个 worker 出问题了,其上的扇区就访问不了了。而且这个需要更改的代码更多。

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

  其实还有很多优化思路,但目前官方的 worker 还是比较粗糙的,比如不能自动重连 miner、做成功的任务若提交失败不会自动重试等。

  我们在10月份的时候针对go-filecoin 就做过分布式挖矿的原型,效果是比目前 Lotus 的 worker 要可靠稳健得多,后续我们会考虑移植到 Lotus 上来,当然不会很快,因为我们目前重心不在 Lotus 测试网。大家都关注提供存储挖矿,那谁来考虑存储需求方,把 Filecoin 提供的存储用出去?欢迎感兴趣的朋友来交流。

  我们还希望后续有精力投入的时候,推出开源的家庭式矿机软件方案,让 Filecoin 挖矿重回家庭,充分利用闲置带宽,减免托管费和运维费,而且不低于托管式挖矿的经济效益。所以还是那句话,散户矿工们不用急,主网上线还有好几个月,一切皆有可能。


文章为作者投稿,不代表本网立场,亦不构成任何投资建议;
我们出于普及IPFS而分享此文章,由于时间关系未能联系作者,如果您是作者可以联系编辑添加上您的大名,如果您不希望分享本文可联系编辑删除。
本文标签:Filecoin Lotus 测试网 问题

上一篇:Filecoin的终极指南:深挖Filecoin白皮书(一)

下一篇:程序猿眼中的“Filecoin测试网”

猜您喜欢
关于我们联系我们作者投稿APP下载