Filecoin的存储单元称为扇区(Sector)。对传统硬盘结构理解的小伙伴,对这个术语应该比较亲切,传统硬盘的最小存储单元就叫Sector。为了证明Sector的存储,Filecoin进行了一系列的处理,传说中的P1/P2/C1/C2。在处理过程中,一个Sector的计算会生成若干文件,最终会生成replica。相关文件是如何组织的?Cache都是由哪些文件组成,分别是多大?本文就从存储的角度看看这些过程和逻辑。
利用Groth16计算证明之前,需要计算出H。目前,普遍采用的是FFT算法。
Sector计算的部分分为Precommit1和Precommit2两部分。两部分合在一起,称为SDR算法。
Sector的状态管理基于状态机。通用状态机的实现是通过go-statemachine实现。状态的存储通过go-statestore实现。在这些模块的基础上,storage-fsm实现了Sector的状态定义以及状态处理函数。
Lotus的PoSt包括两部分:winningPoSt和windowPoSt。winningPoSt是在获取出块权时,需要提供的PoSt证明。从所有有效的Sector中,抽取一个Sector,并抽查该Sector上的66个叶子。
Snark as a Service是个比较有意思的服务,在Filecoin生态中专门提供零知识证明的计算服务。在Sector大小为32G的情况下,证明需要的数据量在8M左右。
PoREP的电路验证了Sector的计算过程,从Labeling,Encoding到Column Hash。注意的是,在Sector大小为32G的情况下,电路包括144个挑战节点的计算。电路相应的公开输入除了comm_d和comm_r外,还有各个Merkle树的路径信息。
Lotus代码更新的频度变的快了,每天都有不少代码merge进来。目前零知识证明的CRS,已经从V20更新到V24版本。目前测试网络也进入了testnet3阶段。在之前的V20的版本基础上,V24版本对Sector处理也有些变化。
19年底360安全发布的一篇有关零知识证明安全的文章。这篇文章是Zhiniang Peng在PacSec2019大会发言的总结。文章框架性地介绍零知识证明zk-SNARK的知识,并给出了一些安全提示和思考。
AMA的形式还是比较正式的,社区提出的问题,会经过删选确认。Filecoin的创始人胡安回答了差不多100个问题。代码的演变也反应了filecoin团队的思考。整个sector的处理更模块化,更合理。更高兴的是filecoin团队对bellman零知识证明的部分也在积极的优化。