前天,著名分布式存储项目FileCoin放出消息,FileCoin挖矿将来极大可能会使用到GPU。消息一出,存储行业一片哗然。使用GPU挖矿,说明需要大量的计算资源,就像比特币和以太坊的POW挖矿一样。大家一直都认为,存储挖矿主要是要使用硬盘的存储资源,为什么现在需要用到算力资源呢?
前天,著名分布式存储项目FileCoin放出消息,FileCoin挖矿将来极大可能会使用到GPU。消息一出,存储行业一片哗然。使用GPU挖矿,说明需要大量的计算资源,就像比特币和以太坊的POW挖矿一样。大家一直都认为,存储挖矿主要是要使用硬盘的存储资源,为什么现在需要用到算力资源呢?
其实,了解FileCoin的设计,和这个项目的发展路线图,就应该看到,使用GPU是必然趋势。现在我们就这个项目来讨论一下,为什么FileCoin挖矿需要GPU。
首先在FileCoin发布的设计规格书里,算法这一章,时空证明这一节里早就写明了需要用到Election PoSt,即新的节点选举算法在区块生成时,必须提供PoST的证明。这个设计就导致对PoST证明的性能有要求。而GPU是目前加速PoST证明生成的一个可行方案。
4.3.1.2 选举时空证明
为了缩短时空证明的响应时间,被选中的出块矿工必须提交时空证明,所以叫做选举时空证明。当矿工赢得一个区块时,他们需要立即生成时空证明,并将其与被选证明一起提交。 StoragePowerConsenusSubsystem
在区块验证的同时也要检查被选证明和时空证明。当一个块被选中时,会出现一条特殊消息,该消息会去调用SubmitElectionPoSt
,它将以提交SubmitSurprisePoSt
成功的相同的方式处理扇区更新。
简单的说,就是生成区块的时候,要绑定PoST的计算。也就是说,一个节点被选成出块节点,就必须同时提供PoST的计算和证明。
设计文档给出了大致的生成区块的算法:
- 随机数生成(Sample randomness)
从前面一些区块获取一个Ticket,对它进行签名,然后用签名结果作为随机数。
- Partial Ticket的确定
从第一步获取随机数,确定K次挑战的Sector以及相应的数据。然后通过这些数据,再用上一步骤生成的随机数和节点的ID产生一个Partial Ticket。
- 生成PoST证明
如果Partial Ticket的系数小于节点的存储率的话,说明这个节点就被选中为出块节点。但是在生成区块前,必须生成PoST证明。
所以很明显,新的区块生成流程,需要在一个区块时间内,生成PoST证明。生成PoST证明,需要做K次零知识证明(zk-SNARK)计算,所以计算时间较长。通过GPU加速,可以缩短PoST证明的时间。
选举节点的产生代码主要在这个文件里实现:https://github.com/filecoin-project/go-filecoin/blob/master/internal/pkg/mining/worker.go 。笔者发文时,这个文件还没有更新,还是22天前提交的。可使用到GPU的代码,还没有公布。
再简单的讲下为什么GPU比CPU加速更快。
其实不是GPU运算速度比CPU快,而是GPU运算的数据是单一的,是经过CPU运算往后分离出来的单一数据。CPU所需求运算的东西许多,而且不是单一的某种数据。CPU可以运行更复杂的指令。
但如果是做一个简单的数学计算,一个最大16核的CPU最多只能同时跑16个线程,而一个普通的GPU就可以同时跑3000多个线程,所以做简单数学,GPU就比CPU要快几个数量级。而生成区块要做的哈希计算偏偏就是一个很简单的数学题,只是要做很多很多次而已,所以GPU在这里的优势就体现出来了。
最后再通过GPU挖矿来谈一谈FileCoin和FileStorm这两个项目的不同和相同之处。
两个项目都是在IPFS之上加上区块链的奖励机制实现的分布式存储平台。FileCoin的区块链还在开发中。这条区块链将是所有参与矿工奖励发放和存储买卖交易的记账平台。FileCoin最终决定用POW的方式来实现,所以需要用到GPU。用GPU的矿工挖到的是出块奖励。而大部分不参与出块,只提供存储的设备,是不需要GPU,只要有硬盘就能挖矿了。或者说,以后FileCoin的矿机,很可能会发展成支持GPU的算力矿机和不支持GPU的存储矿机两种。而同时支持两种矿机,合理配置并优化性能的矿池将会成为必然。
而FileStorm是在MOAC区块链上实现的分布式存储平台。MOAC本身就是用POW实现的区块链,所以FileStorm的通证FST就是通过GPU挖矿产生。而FileStorm应用链是采用dPOS共识,矿工提供存储矿机就可以挖矿。所以,也同样是支持了GPU的算力矿机和不支持GPU的存储矿机,只不过通过借助一条优秀的多链架构的公链,更高效的实现了存储和记账的功能。并且还可以支持更复杂的经济模型。打造一个更完备的存储生态。