参与到Filecoin网络 所有节点在Filecoin网络中扮演两个重要角色: 存储 和 检索 。 存储节点 在Filecoin网络中,节点具有与用户制定合约的能力,可以在约定时间内存储用户数据以获取filecoin代币。 为Filecoin网络提供存储的节点即为 _存储矿工_。这些节点会定期获得使用自己创建的块来扩展Filecoin区块链的能力。当他们创建一个新区块时,存储矿工将获得新生成的区块奖励 ,并可以通过交易费 ,向获取区块内消息的其他节点征收费用 。检索节点 另外,节点也可参与检索合约,为用户提供指定的文档以获取filecoin代币。这激励了具有高吞吐量、高带宽连接、地理位置优越的节点参与网络,从而促进了文档的广泛且快速的传送,尤其是那些有着高需求的文档。 存储挖矿是什么? 存储矿工的作用是代表Filecoin网络存储文档。存储矿工必须以加密方式证明他们兑现了存储文档的承诺——这是通过 复制证明 (PoRep)和 时空证明 (PoSt)机制实现的。质押存储到Filecoin网络上本身需要filecoin代币, 这些filecoin代币作为质押品以确保存储矿工履行了其合约义务。 数据存储 在Filecoin网络,数据被存储在固定大小的 扇区 中。通常,存储矿工把代表用户的数据存储在这些扇区中,用户通过 交易 与存储矿工达成在特定时间段内的存储合约。但存储矿工并不是强行接单。若存储矿工没有找到任何有吸引力的交易提案,则可以选择进行 容量承诺 ,用任意数据填充扇区。这使他们可以证明其正在代表网络保留存储空间。有需要时,可以作为容量承诺的扇区可"升级"到为未来交易提供存储合约服务。 复制证明 扇区被存满后,复制证明就会看到存储矿工对该扇区进行 封装 ——封装是一个计算量很大的过程,它会生成数据的唯一标识码(原始数据可通过 解封 来展示)。一旦数据被封装,存储矿工生成证明,然后对证明进行SNARK压缩,最后将压缩结果提交到链上,成为存储承诺完成的证明。通过此过程被网络保留的存储称为 承诺存储 。 时空证明 复制证明完成之后,存储矿工必须证明其依旧在存储承诺的数据。这部分将通过时空证明完成,时空证明是向存储矿工发出加密挑战的过程,只有直接通过封装扇区才能正确回答。存储矿工必须在严格的时间限制内应对这一挑战,封装的计算难度确保了存储矿工必须保持对封装扇区的随时访问和扇区的完整性。 Filecoin中时空证明的两大挑战是 WindowPoSt 和 _WinningPoSt_。 WindowPoSt WindowPoSt 是一种可以用来审核存储矿工承诺完成情况的机制。它可以看到以24小时为周期每个周期分解成的一系列窗口。相应地,每个存储矿工要保证其承诺存储的扇区被划分成一个个子集,每个子集对应一个窗口。在给定的窗口内,每个存储矿工必须为其各个子集组成的扇区提交时空证明。这要求他们必须立即访问接受挑战的扇区并把SNARK压缩过的证明提交到链上。通过这种方式,每个承诺存储的扇区至少会每24小时被审核一次,并永久保留可验证的公共记录以证明每个存储矿工持续履行了承诺。 Filecoin网络希望存储的文档具有持续可用性。未能为某个扇区提交WindowPoSt将导致 错误 ,并且为该扇区提供存储的存储矿工将受到 处罚 ——也就是其质押品会失去一部分,并且减少其存储算力(请参阅下文的存储算力)。在被认为完全放弃存储承诺之前,存储矿工可以在有限时间内从故障中恢复。如果有需要,存储矿工也可以先发制人将"已宣布故障"提前发布,这样将减少处罚,但其必须在合理的时间内解决故障。 WinningPoSt WinningPoSt 是用于奖励存储矿工所做贡献的机制。在Filecoin网络,时间被分解成一系列纪元(epoch)——区块高度对应着随着时间流逝经过的纪元数。每个纪元开始,都会 选出 少量存储矿工来挖新的区块(Filecoin使用tipsets,它允许在同一高度挖出多个区块)。每个成功创建区块的矿工将获得奖励,并有机会向获取区块内消息的其他节点征收费用。 存储矿工被选出的概率与其存储算力相对应。与WindowPoSt相似的是,存储矿工需要在纪元结束前提交存储扇区的压缩证明。未能在必要的窗口完成WinningPoSt的矿工将失去出块的机会,但也不会因此受到惩罚。 存储算力 一名Filecoin存储矿工的 算力 对应其被选为出块的可能性,与他们代表的网络封装存储量大致呈正比。为了通过简单的容量承诺进一步激励他们存储"有用"的数据,存储矿工有更多机会来竞争 已验证用户 的特殊交易。 此类用户在提供涉及具有存储意义的数据方面获得了认证,并且存储矿工为这些交易提供存储所获得的奖励将乘以一个乘数。考虑到此乘数,一个既定矿工的总算力将被称为 "_质量调整后的算力_" 。