查看原文
科技

[Filecoin] 存储提供商的福利:你可能很快就可以为集群设置一个维护窗口期

胡飞瞳 胡飞瞳 2023-09-23

Filecoin 的存储服务商,经常可能头疼一件事情,那就是如果需要机房或者网络调整,掉算力怎么办?如果Filecoin网络能够设置一个维护窗口就好了。好消息是,由 Venus 团队牵头,这个功能很可能在下一个版本里实现。


FIP-0070: Allow SPs to move partitions between deadlines 目前处于 Last Call,也就是最后的公示阶段,如果没有反对,就会成为Accept(接受)状态,并将把实现在下一个版本中合并进主网代码。


本提案是有Venus 团队主导,与核心开发者Alex,Nicola共同讨论并提出的。本提案的实现由 Venus 团队的开发者 Alan(也是Filecoin 的核心开发者)实现。


FIP-0070 的目标是允许 Filecoin 的存储提供商在 Deadline 之间移动 Partitions(分区),也就是说,存储提供商可以调整扇区的时空证明(PoSt)时间了。这样一来,这样一来,SP们就有了调节证明时间的灵活性,从而能够最大限度地避免惩罚。当然还有不少其他好处。下面比较详细地分析一下。


注:提案的具体内容可以点击此文左下的“阅读原文”获得。




为什么需要这个提案



当Filecoin网络的存储提供者(SP)维护网络存储时,他们经常会面临各种挑战,如系统性能下降、网络问题、设施维护,甚至数据中心位置的更改。在处理这些挑战的同时,SP需要更大的灵活性来控制证明数据完整性的时间段,同时仍然遵守每24小时对每个扇区证明一次的规则。


这个提案通过允许移动Partition的证明时间,来达成如下好处:

  • 创建用户定义的维护窗口:SP可以创建指定的维护活动时间段,即把所有Partitions移除这个时间段,则无需担心此维护窗口断电断网导致的掉算力的风险。

  • 为SP基础设施维护人员设置运营时间:SP可以把所有WindowPoSts(窗口证明)安排在运营时间内,以优化维护操作资源/值班时间表。

  • 大型SP在WindowPoSt硬件上节省成本:通过平衡分布在各个deadline(截止日期)的分区数量,大型SP可以优化其硬件使用,并降低WindowPoSt硬件成本。

  • 减轻存储节点的访问压力:在分布式存储系统中,存在大量分区需要在短时间内完成WindowedPoSt,而这些分区位于特定存储节点上。这一时期的大量读取请求可能会使节点超载并降低其性能。将一些分区移到其他deadline有助于实现工作负载的更均衡分配。

  • 增加分区压缩的可能性:通过将不同deadline的分区合并到单个deadline中,可以实现本来分散在多个截止日期的分区的压缩,从而长期节省Gas费用。

总的来说,这一提案旨在使Filecoin网络对SP更加灵活和包容,使他们能够更好地应对运营挑战。



移动的规则和约束


Filecoin 是一个具有严格证明的分布式存储系统。Partitions(分区)的移动不能破坏原有的规则。其中最重要的一条就是,每一个扇区必须每24小时证明一次,否则其对应的算力就会丢失。在当前的设计中,每个扇区会每24小时循环证明一次,移动的方法就是把一个Partition的所有扇区的下一次证明提前,从而做到不破坏这个规则。

除了上述规则,要成功移动 Sectors,还要满足如下条件:

  1. 包含有故障或未经证明的扇区的 Partitions 不能被移动。

  2. Partition只能作为一个整体被移动。

  3. 在移动之后,源截止日期会留下一个空的分区。这确保了分区索引不会发生变化。




实现的挑战



在最初提出此提案时,感觉提案本身和实现上都不复杂,同时能够为SP提供灵活性,是一个比较不错的简单的提案,工作量不大。但是,真的讨论起来和开始代码实现,发现问题远比想象中复杂。


首先第一个问题就是,一个Partition到底能够移动到哪些 deadline 的问题,前面已经提到了,必须保证其下一次证明不能够拖延,这必须检查其下一次证明的时间以及移动到目的 deadline 的下一次证明时间来进行计算。这个由于deadline对每个矿工deadline序号对应的时间点都不同,处理起来比较繁琐。在实际实现中采用了一个简单的方案,直接比较当前deadline 的序号和源与目的deadline的序号来实现。


另一个问题是哪些 Partition 是可以移动的,这个就非常复杂了。因为 Filecoin WindowedPoSt是采用乐观验证,并允许挑战惩罚的方式来保证证明的正确性的。那就是处于挑战期的 Partitions 要接受挑战。但是如果处于挑战期的 Partitions不允许移动的话,能够移动的Partitions所占的 deadline就只有1/3了,范围非常有限。实现中采用的办法是:如果原deadline在其乐观的WindowPoSt挑战窗口期内,那么在执行MovePartitions方法时,之前提交的WindowPoSt数据要被验证一遍,确认证明无误。这样的好处是,移动不再受挑战期的限制了,如果移动成功,说用他们的证明本身就是正确的,后续的挑战本身就会失败,因此移走也没有关系。


还有一个问题就是关于扇区过期时间的计算,由于原系统计算扇区过期的机制,这种移动可能导致扇区过期时间延长。这也是一个必须解决的问题,一些方案被提了出来,尽管找到一个优雅的方案并非易事,但问题总是能够解决的。


这些问题也带给我们一些思考,由于Filecoin设计的复杂性,在没有虚拟机实现之前,许多模块的依赖性交织在一起,使得一些改动非常困难。试想,如果deal 的处理与Sector 完全是分开的,如果 Sector 没有过期之说,而Deal是独立处理的,那么问题会少很多。所以整体架构设计是一个非常重要的问题,Filecoin的核心协议的简化以及设计的分层也是非常必要的。这个部分我在简化 Filecoin 的核心协议势在必行已经有所阐述。




其他考虑和担心


关于此提案的顾虑主要体现在两个方面:

  1. 如果大家都能够移动 Partitions,自己定义证明时间,是否会让证明消息分布不均衡,从而导致网络承接应用的资源能力出现波动,或者由每一区可能导致太拥挤从而证明消息不能按时上链;

  2. 当前的设计实际上是一种强制让SP 的sector证明分布在一天中比较均匀,从而促进SP一天中始终在线。而这个提案导致SP可以有一个维护窗口,那么是否和降低SP的在线率,从而影响数据服务?

针对第一个问题,这个提案有利有弊。首先WindowedPoSt 占用网络总资源并不高,大致10%,在去中心化的情况下,比较难出现集中的情况。但即使出现WindowedPoSt扎堆的情况,无论是什么原因,这个提案恰恰给了网络一个解决方案,因为SP 为了降低Gas 成本,会主动移动 Partitions 来实现网络均衡。

第二个问题有一定道理,但是我们考虑以下因素:

  • WinningPoSt要求数据在线:SP维护网络的收入来自区块奖励,而出块需要WinningPoSt,也需要数据在线,因此SP没有故意不在线的动机,除非是必须要维护的情况。

  • 数据服务并不在链上进行:在大多数情况下,SPs提供的服务,尤其是检索服务,并不是来自于密封数据,而是来自于与 Filecoin证明没有直接关系的原数据。这些数据存储在快速检索服务器、IPFS、Saturn、Webe.Storage或其他Web服务系统中;因此不参与证明并不一定影响数据服务。

  • 数据存储的冗余性:在Filecoin网络中,真实数据通常存在于不同SP的存储中的多个副本中。这种冗余性确保了数据的可用性,即使一个SP暂时不可用,其他SP同样可以提供服务。


基于此,此提案认为,这些担忧有一定道理,但并不真正影响Filecoin的安全和服务,给SP提供更大的灵活性更有必要。这会为SP提供更多保障,从而提升SP的积极性,这更为重要。




我的相关文章



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存