存储数据在 Filecoin 网络中,数据存储在固定大小的扇区中。一般来说,存储矿工用客户存储的数据填充这些扇区,客户通过交易在特定时间段内签订存储矿工服务合同。然而,存储矿工不会被迫进行交易;如果一家存储矿工发现任何可用的交易提案都不具吸引力,他们也可以做出容量承诺,用任意数据填充扇区。这使得他们能够证明他们在网络上预留了存储空间。如果需要的话,为容量承诺而创建的扇区可以进行「升级」,为未来交易提供合约存储。 复制证明一旦一个扇区被填满,PoRep 会发现存储矿工会对该扇区进行封存——封存是一个计算密集型的过程,它会导致数据的唯一表示(原始表示随后可以通过解封来重建)。一旦数据被密封,存储矿工:生成一个证明;对证据运行 SNARK 以压缩它;最后,将压缩结果提交给区块链,作为存储承诺的证明。通过此过程为网络保留的存储称为有效存储(存力)。 时空证明在 PoRep 完成后,存储矿工必须不断证明他们仍在存储他们承诺存储的数据。这是通过 PoSt 来完成的,在这个过程中,向存储矿工发出一个密码挑战,只有随机访问一个密封扇区才能正确回答这个问题。存储矿工必须在严格的时间限制内应对这一挑战;密封的计算难度确保了存储矿工必须随时进入密封区域并保持其完整性。 在 Filecoin 中,PoSt 表现为两个不同的挑战:WindowPoSt 和 WinningPoSt。 WindowPostWindowPoSt 是一种审计存储矿工所做承诺的机制。它将每个 24 小时划分为一系列窗口。相应地,每个存储矿工的承诺扇区集被划分为子集,每个窗口有一个子集。在给定的窗口内,每个存储矿工必须为其各自子集中的每个扇区提交一个 PoSt。这需要随时访问每个受挑战的扇区,并将经过 SNARK 压缩证明作为块中的消息发布到区块链。通过这种方式,在任何 24 小时内至少审计一次承诺存储的每个部门,并保存一份永久的、可核实的、公开的记录,以证明每个存储采矿者的持续承诺。 Filecoin 网络希望存储的文件保持可用性。未能提交某个扇区的 WindowPoSt 将导致故障,为该扇区提供服务的存储节点的存力将被大幅削减,也就是说,他们的一部分抵押品将被没收,他们的存力(参见下面的 storage power)将减少。在被视为完全放弃了他们的储存承诺之前,存储矿工将有一段有限的时间从故障中恢复。如果需要,存储矿工也将具有抢先发出故障声明的能力,这将减少处罚,但仍必须在合理的时间范围内解决。 WinningPostWinningPoSt 是一种机制,通过这种机制,存储矿工可以因其贡献而获得奖励。在 Filecoin 网络中,时间被切割成一系列的时间段——区块链的高度对应于经过的时间段的数量。在每一个时间段的开始,都会选出一小部分的采矿者来开采新的矿块(Filecoin 利用 tipsets,允许在同一高度开采多个矿块)。每个成功创建块的当选矿工都被授予 Filecoin,并有机会向其他在块中包含消息的节点收取费用。 一个存储矿工被选中的概率与他们的存储能力相对应。在与底层 WindowPoSt 类似的过程中,存储矿工的任务是在 epoch 结束之前提交指定扇区的压缩存储证明。未在必要窗口完成 WinningPoSt 的存储矿工将失去开采区块的机会,但不会因未能完成此操作而受到处罚。 存储能力一个 Filecoin 存储矿工的能力,相当于一个存储矿工被选来开采一个区块的可能性,与他们代表网络封存的存储量大致成正比。为了进一步鼓励在简单的容量承诺基础上存储「有用的」数据,存储矿商有额外的机会竞争经核实的客户提供的特殊交易。这类客户在提供涉及存储有意义数据的交易的意图方面得到了认证,而存储矿工为这些交易获得的权重得到几倍的增长。在计算了这个权重系数后,给定存储矿工的总存力称为质量调整存力。 Filecoin 的实现Filecoin 分布式存储网络是一个开放的规范,有许多实现。 在编写本文时,最成熟的实现,也应该用于访问当前 testnet 的实现是基于 Go 语言的 Lotus。Lotus 客户端能够在 Linux 和 macOS 上运行;关于安装和使用 Lotus 的详细说明可以在其他文档中找到。 目前至少有三个正在开发中的实现。这些包括 GO Filecoin (另一种基于 GO 的实现),RIGON (ChanSeaFieldActudio 开发的 Read 实现)和 FuHon (Soramitsu 的 C++实现)。 硬件注意事项Filecoin 网络的参与者需要确保他们的系统有足够的设备来扮演他们想要扮演的角色。 在不进行挖矿的情况下运行 Lotus 客户端如果您不想挖矿,但仍希望运行 Lotus 客户端以保留钱包或与网络连接,那么一个具有 2-4 个 CPU 内核、8GiB RAM 和足够的 Filecoin 区块链存储空间的系统就足够了(目前的 testnet 链每周增长约 12GiB;减少这一存储需求的改进正在进行中)。 存储挖矿值得注意的是,在当前状态下,Filecoin 存储挖矿需要相当强大的硬件来满足存储和证明要求。这些需求在很大程度上是由 PoRep 和 PoSt 机制所施加的设计约束所驱动的,并需要在可访问性、计算可行性和密码安全性之间取得平衡。 Filecoin 存储挖矿不是工作证明挖矿-密封存储是在网络上获得动力的唯一方法-但需要快速高效的硬件在可接受的时间范围内计算必要的证明。协议实验室目前正在研究放宽这些要求的方法(例如,通过提升证明机制本身的效率,或者通过外包 SNARK 计算来避免对昂贵 GPU 的需求)。然而,与此同时,在对硬件进行大规模投资之前,潜在的存储矿工应仔细考虑并试验其系统的配置,以确保他们能够达到所需的性能。 矿机和基准示例最佳的系统组成将在很大程度上取决于存储矿工的运营模式,包括资本支出和运营成本;因此,协议实验室无法给出任何具体的建议。然而,我们已经发表了一些我们自己的设计,包括目前适合测试和小规模采矿的机器的概要。 我们希望存储矿工能够根据自己的需要调整配置;在 testnet 上使用其他配置进行挖掘是可能的,而且我们希望这些配置中有许多将超过我们自己构建的效率。我们鼓励实验,并要求感兴趣的社区成员在 GitHub 上分享他们自己的基准分数。 一般硬件问题虽然我们不能提出具体的建议,但我们可以提供一些一般性的指导方针。 CPU:根据经验,具有高时钟速率的多核 CPU 将加快密封过程,从而使存储矿工能够更快地将存储设备装载到网络中。Protocol Labs 自己的测试表明,AMD 处理器具有 SHA 扩展,与其他处理器相比具有相当大的优势。 GPU:强大的 gpu 是必要的,以变在限定的时间内完成 SNARK 计算。Lotus 目前的设计只能支持 NVIDIA 制造的芯片;我们预计将来会支持其他品牌的显卡。 RAM:目前的 Filecoin 网络只支持 32GiB 和 64GiB 扇区的密封。在这些较大的扇区上执行必要的计算需要相应地增加内存;建议采矿系统至少配备 128GiB。 Storage:在选择适当的存储解决方案时,需要考虑很多因素,其中最重要的可能是挖矿作业采用的特定收入模型。存储矿工目前需要保证 1 TB 的原始存储(或其质量调整后的同等存储量,主网将增加到 100TIB)才能出块,但还有更多的因素超出这一要求。 首先,也是最重要的一点是,存储矿工应该注意到,如果数据丢失,可能会受到严厉的惩罚;即使是一个翻转的数据位,也可能导致严重的惩罚。因此,存储矿工应该考虑到数据备份的开销。 对于寻求参与检索市场的存储矿工来说,考虑合并额外的存储以准备提供密封数据的「热」拷贝,这也是一种可能。尽管解封扇区以恢复原始数据是可以实现的,但是支持这个用例的 Filecoin 实现将消除这种计算负担(这是目前正在为 Lotus 开发的特性)。 另一个需要考虑的因素是 Filecoin 网络对高可用性的期望。虽然理论上,存储矿工应该能够参与大多数商品硬盘、固态硬盘或其他合适的非冷存储解决方案,但并非所有存储解决方案都能在全天候运行时获得最佳性能。 存储矿工目前也需要足够的空间来存储区块链本身;缩小区块链在磁盘上的占地面积是 Lotus 积极开发的一个特点。Filecoin 实现可能还需要额外的磁盘存储,相当于保证存储的一小部分,用于记账。 最后,协议实验室在测试中发现,在 RAM 量较低(128GiB)的系统中,使用 NVMe 存储作为交换空间可以作为补充;在某些操作中,存储矿工可能会遇到内存不足问题(尤其是密封,需要大量工作内存)。 网络:如果使用分布式 lotusseal worker (请参阅下面的高级挖掘注意事项), (责任编辑:admin1) |