不知不觉,2020年已经快过去一半。我们经历了新冠疫情,经历了全球经济的剧烈波动,现在国内的一切正在缓慢复苏,而Filecoin主网上线之路也如同2020的开年一般坎坷,协议实验室的成员正在为更完美的Filecoin实现而努力,我们作为社区的一份子也在尽自己的力量。
随着上线日期越来越临近,在这关键的时间节点,为大家揭晓其中一项重要的技术创新——星际大陆自主研发的全球首个Filecoin SNARK外包集群方案。
一、什么是zk-SNARK外包集群方案?
zk-SNARK是一种零知识证明方案,可以在不透漏信息的情况下对某些事务生成证明,并且可以公开验证。
在Filecoin挖矿中,zk-SNARK主要用于复制证明(PoRep)和时空证明(Post),复制证明可以证明矿工执行数据复制存储了一个副本,时空证明证明矿工一直存储该副本未删除未损坏,通过这两种证明保证了存储的可靠性,是Filecoin挖矿中的核心组件。
由于zk-SNARK证明简洁,且不需要交互,所以生成的证明很短,上链占用空间小并且容易验证,非交互式证明就是任何人都可以验证它,但是并不需要与证明者进行交互,且其验证时间是固定的。
由于零知识证明生成高度并行,所以官方建议用高速GPU加速过程,但是给每台机器装上GPU似乎成本过高,于是zk-SNARK外包集群方案应运而生。
zk-SNARK外包集群方案并不只是星际大陆一个团队的成果,也是Filecoin官方一直想要达成的目标。
早在2019年12月10日,协议实验室在其博客《Filecoin Testnet Mining》一文中提出,“If you’re a smaller miner worried about the cost of GPUs, rest assured that we’re working to enable miners to securely outsource SNARK computation to third party service providers”.
这段话的中文翻译是,如果您是较小的矿工,担心GPU的成本,请放心,我们正在努力使矿工将SNARK计算安全地外包给第三方服务提供商。
在随后的Slack群讨论中,官方也确认SNARK外包的理论可行性,也就是说,专门提供一种零知识证明的生成服务,这种服务可以帮助普通矿工更快地完成零知识证明的计算。
更早于此的是,星际大陆在2019年11月27日发布的《Filecoin大矿工架构设计标准指南中》曾提出,“大矿工方案里面可以由GPU组完成worker节点和miner节点的SNARK工作”。
现在,星际大陆终于实现了官方的一个小目标,这证明星际大陆始终跟进官方,与协议实验室站在同一阵地。
二、SNARK外包集群——四两拨千斤
Filecoin整个流程主要有二个地方使用SNARK零知识证明计算:
1. 一是在seal的最后一步(seal commit2)阶段,需要对密封的扇区进行零知识证明计算,生成proof;
2. 在每次POST(WinningPOST和WindowedPOST)时需要使用零知识证明生成时空证明。
这二种零知识证明计算都是周期性的,也就是说即使使用GPU,GPU并不像ETH的矿机那样7*24小时都在全力工作,而是间歇性的工作。
上面两种方案都表明,如果给每台机器都安装GPU,势必造成GPU在大多数时候处于闲置状态,因此GPU并没达到最高的使用效率,而且每台机器都装GPU,可能也不会选择太高端的型号。
如果能将零知识证明任务都交给专职机器运行,通过适当的调度,可以让GPU的利用率达到80%以上,而且由于只有少数机器装GPU,我们可以选用运算速度最快的型号,这样来说,SNARK外包集群可以负责一大堆矿机的零知识证明计算,真正起到四两拨千斤的妙用。
所以,通过将零知识证明计算做成一种随时可以获取的资源池服务有以下好处:
(1)将大大提高GPU的使用效率,为矿工节约大量成本;
(2)不同配置的存储服务器,均可以以最优的速度进行数据密封;
(3)Miner机可以不需要配备GPU即可完成时空证明的SNARK计算;
三、如何使用星际大陆的SNARK外包方案?
星际大陆提供二种服务,一种是为大矿工提供SaaS式的外包服务,其他矿工可以与星际大陆合作,可通过多样化付费方案使用星际大陆的SNARK集群;另一种是为其他矿工建立自己的外包集群服务,使大矿工可以独享SNARK资源。