Window PoST是Filecoin用来证明数据存储的重要设计。在Sector数据封存后,需要“持续”在Sector的生命周期证明Sector数据对应的复制数据依然存储,这个也就是Window PoST设计的初衷。Filecoin将所有有效Sector,每2349整理成一个Partition,每个Partition中的Sector进行抽查生成证明。简单的说,每个Sector都需要抽查,并且每2349个Sector就需要在半小时内提交一次证明。Window PoST的设计在有效Sector比较多的情况下,存在如下的一些问题:
a. TPS问题:大矿工在存力大于2.5P左右,每半个小时都需要至少提交一次Window PoST的证明,增加了网络拥堵的可能性。
b. 存力恢复问题:如果一次Window PoST的证明未及时提交,或者证明出错,需要在24小时后才能再次提交,极大的增加了运维人员的负担和网络的可靠性。
本文提出了recursive Window PoST的设计,解决以上的两个问题。先介绍一下recursive Window PoST的核心设计:
1/ 何为recursive Window PoST?
简单的说,recursive Window PoST是将多个Window PoST“聚合”在一起。每2349个Sector生成一个Sector证明,多个Sector证明可以聚合在一起,通过零知识证明技术,生成“Sector聚合证明”。Sector证明不需要提交到链上,只需要将最后聚合生成的“Sector聚合证明”提交上链即可。整体的流程示意如下:
Sector证明也是通过一个个Sector数据抽查的方式,证明多个Sector对应的复制数据正确存储。
2/ recursive Window PoST的提交策略
a. 通过recursive Window PoST设计,不再需要每半个小时提交一次Sector证明,而只需要每天提交一次Sector聚合证明。
b. 其中的任何一个或者多个Sector的数据有误,导致单个Sector证明出错,可以随时更新Sector数据并重新生成聚合证明。
通过recursive Window PoST,提交到链上的数据量大约是Window PoST的1/50,大大提高TPS。
综上所述,recursive Window PoST采用了递归零知识证明,每天只需要提交一次证明,避免了原本Window PoST的TPS问题。即使在部分证明出错的情况下,也能及时纠正,快速恢复存力。