查看原文
其他

[Filecoin] 我拿什么来拴住你? - 谈提前终止扇区的惩罚

胡飞瞳 胡飞瞳 2023-09-02




Filecoin 社区最近讨论的话题之一就是调整终止扇区的惩罚计算机制,大致有两派意见,一派认为由于扇区的周期延长,其服务质量的要求更高、获利也更大,应该增加惩罚额度,以与收益相匹配;另一方认为,应该设立一个惩罚上限,这样更有利于生态的发展。本文就此展开一点讨论。





现在回过头来看自己三年前写的文章,顿时感觉自己当时确实还是年轻啊,比如这篇:就这么被拴住了 ?,居然连谈恋爱都写上了。大家可能想知道小匡后来怎么样?这个这个这个,不好说。这个作者没有写,大家自己体会就好了,应该还是若即若离,但估计是谈感情少,谈生意多了。


但是,据观察者称,范家的生意做起来之后,除了小匡外,还有不少人也都加入了,因为大家自由加入,所以人还不少,都接受了当初范小姐制定的条款。由于加入人员众多,曾经一度范家生意如日中天,门庭若市。但不知道是疫情还是咋的,最近离开的人不少。这让范家开始嘀咕了,怎么就拴不住了呢?是该做点改进了吗? 





升还是降,这是一个问题



随着 Filecoin 基础协议的发展和改进,有些东西也是需要相应改变的。扇区提前终止费就是许多人关心的一项。大家看到,有一个提案被提了出来,表示扇区终止费应该调整,这是一方面是因为最近提前终止的算力相较以前有所增加,另一方面是扇区的生命周期可以延长至3.5年,从惩罚与收益相一致的角度考虑,具体参见:https://github.com/filecoin-project/FIPs/discussions/691。 这个讨论提案用了一个比较敏感的题目:Increase Termination(提高终止费用)。尽管文中用了不少的事实和理论推演来说明提高终止费更符合逻辑,但是,从心里上来说,要提高罚款,对于参与者来说,总是不爽的。因此,不少人认为需要慎重。


不久,另一个提案被提了出来,建议为扇区错误惩罚设置一个上限,具体参见:https://github.com/filecoin-project/FIPs/discussions/712。  这个提案背后的理由主要是扇区错误的惩罚的不可预测性导致用户无法预知风险,从而给生态发展和上层应用的实现带来困难,而一个可预测的风险模型会更加简单,容易理解,对生态繁荣更加有利。仔细研究这个提案你会发现,这个提案本身在有些情况下是降低了惩罚的上限。


对于这个问题,两个提案的思考逻辑不太一样,底层思维模型也不同。那么必然是各执一词,可能会相持不下。本文不谈哪一个提案更加合理,首先来看一下,为什么需要扇区终止费,它有哪些用处?




扇区终止费派什么用场?



每个人设计者都值得想一想,为什么需要扇区终止费,甚至是Fault Slashing(错误处罚)。

在 Filecoin 的设计之初,大家的一个简单想法就是:因为 Filecoin是用于存储数据的,因此数据的存储自然需要一定的服务质量保障。在去中心化的场景中,这个服务质量保证就需要通过抵押和罚款来实现。但果真必须如此吗?我们来考虑多个方面:


保证数据存储的服务质量?


这句话初看起来很有道理,但是,我们知道,在 Filecoin 中的Sector是有不同类型的,一种是纯粹的 CC (Committed Capacity)扇区,其中不存储任何数据,而另一种是包含 Deal 的扇区,Deal 中会包含 Piece,而在Piece中存储数据。

那么,基于此,如果要保证数据存储的服务质量,是否应该从 Deal 的角度而不是从 Sector 的角度来实现更加合理呢?也就是说,对于 Sector 的Fault 或终止来看,如果其中有 Deal,那就就扣除相关 Deal 得抵押即可,而不是简单粗暴地考虑 Sector。同时,对于不同的 Deal,是否也应该有灵活的条款约束来满足用户数据的质量要求呢?从这个角度来说,对Deal的处理也是更加合理的,也是可以更加灵活的。

那么我们可以得出结论,扇区终止费可以一定程度上保证存储得服务质量,但有更好的实现方式。


对网络安全有影响吗?


抛开对数据质量的保护不谈,那么是否扇区终止费可能更好地保护网络安全呢?初看起来,算力由于惩罚的负激励,通常会阻止用户提前撤出算力,但是,对于网络安全而言,这个对于正常终止算力对网络的影响是没有区别的。


另一方面,由于提前终止算力导致的惩罚, 矿工增加了风险和机会成本,因此,对于矿工而言,总成本是增加的,考虑总收益是一定的,这个成本的增加对网络而言,就是总算力的减少。总算力的减少,实际上对网路安全是减弱的。


那么,我们可以说,扇区错误惩罚和终止费实际上对网络安全不仅不能起到正向作用,适得其反,其对网络总体安全是有些减弱的。


对流通量的稳定性影响如何?


不得不说,这是一个正向的保护。在发生一些比较极端的情况下, 比如币价突然下跌,矿工不盈利的情况下,由于存在扇区终止费,那么矿工可能更加倾向于维护算力,以等待币价恢复,而不是终止算力。这样,不会有大量的抵押币流入市场,造成流通量突然增加,对币价造成更大的压力。


另一方面,由于目前扇区质押的计算与流通量紧密相关,没有扇区终止费或扇区错误惩罚的保护,可能在币价下跌时,流通量增加, 用户增加算力的抵押也会增加,加大了用户增长算力的成本,可能对生态来说是雪上加霜。


那么,我们可以说,扇区终止费对流通量保护是一个正向的作用。

同时,我们前面提到了,如果大部分质押放到 Deal 里面呢?这个作用的意义就会打折扣,因为 Deal 的抵押和惩罚会保护其所在的 Sector 不容易被提前终止。提前终止的将更多可能是 CC 扇区,这可能在不造成流动性变化过大的情况下给生态一些灵活性。 


稳定Token价格?


这个与上面的流通量的稳定性有关系。也就是说,对稳定币价会起到一个正向的作用。


另外一个方面,有部分人比较看重(Network Revenue),即协议收入,说直白一点,就是网络燃烧的通证的量。一个基本的理论是,网络燃烧的越多,总供应量就减少得越多,这有利于整个市场的通证价格,因为这相当于通缩嘛。但是,我们要想一下,这个燃烧的是某个矿工的资产。也就是说,这个行为实质上是把此矿工的资产分配给所有的Token持有者。总体而言,这是牺牲一方来给其他人福利,对矿工并不有利。




有没有更好的方法?



通过上面关于终止费以及扇区惩罚的用处的讨论,可以看出,其作用不外乎稳定流通量,保障数据存储的服务质量。其中保护数据存储的服务质量可以有更好的办法,那就是直接把这种保护实现在 Deal 上,而不是 Sector 上。这个方法对稳定流通量来说也能起到很好的作用。


同时,我们要看到目前质押计算引入流通量的方式实际上也面临不少困难,因为(1)流通量本身计算变得十分复杂,尤其是在FVM引入后,引用层的TVL无法被计算入系统锁仓里面,使得流通量计算失真;(2)Token丢失无法计算。这样一来,网络计算的流通量必然大于实际流通量,这个实际值和计算值之间的差距会变得越来越大,直到最后不可用。也就是说,抵押的计算方式是需要改变的。


如果这个发生改变,即抵押量的计算与流通量脱钩,这样一来,稳定流通量的意义就变得不那么大了。反而是,更好的灵活性,和更低的成本,从而引入更多的参与者显得更加重要。


因此笔者认为: 

  1. 提升扇区终止费意义不大;

  2. 为扇区终止费和扇区错误罚款设置一个上限是可行的,这并不是要降低服务质量保障,而是在服务质量下降时,强制终止扇区来实行更好的保护;

  3. 一个更好的框架是把用户数据的保护放到 Deal 的处理上,而不是 Sector 的处理上;

  4. 如果把存储服务质量保障通过 Deal 的条款来实现,而 Deal的条款可以由用户和服务商来定义,那么在核心层甚至可以取消扇区终止费以及扇区错误罚款,原因是这些罚款和保障都可以通过 Deal 的条款来实现,而且可以在用户层实现。 




这需要做什么?



很显然,目前的系统实现与笔者认为的还不一致,如果要实现这些,提供更加灵活的系统,就需要一条切实可行的路径,这个路径,就是我们说的 Core Protocol Master Plan。这个Master Plan可以通过渐进式的改进方式,逐步完善系统,达成我们的目标。实现一个精简、容易理解、更加灵活的核心层。同时,现在核心层的一些东西上移,包括 Market,Deal, VerifReg, DataCap 等来提供更大的灵活性和更快发展的可能性。

这也是https://github.com/filecoin-project/FIPs/discussions/725 希望包含的内容。


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

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