# 通过动态网络费用改善网络属性 ## 概述 随着我们启动 SSV 的 Shifu V2 测试网并接近后续的候选版本,网络的细节开始固化。但此时此刻,在所有这一切都为主网启动做准备之前,我们有机会增强项目的代币经济学,以改善网络的属性,支持 SSV 社区,并更好地服务于更大的以太坊生态系统。本文说明了我们如何寻求实现这种效果,并提供了一些示例解决方案供我们考虑,包括: - 通过为小型运营商提供优势来鼓励分散化 - 通过激励用户持有更多 SSV 来提高网络和市场稳定性 - 创建一种方法来“质押”SSV 并获得回报,而无需 DAO 铸造新的代币来支付它 - 通过激励定期投票增加 DAO 治理参与 但请不要将其视为详尽的清单。相反,这样做的目的是解释我们的目标如何转化为有形的特征,我想传达的主要概念是:**如果我们可以定义目标,并且如果我们可以根据可衡量的指标来制定这些目标, 然后我们可以设计数学机制来鼓励那些期望的属性。** 因此,让我们讨论一下我们的目标应该是什么,然后努力设计支持这些目标的相应机制。 您会看到我在这里深入研究了数学,**但如果您不是技术人员,请不要担心。** 我们有很多人可以倾听您的想法并处理数学问题,我鼓励社区中的每个人分享他们的想法和想法。 话虽如此,我试图证明我认为我们应该如何处理设计过程,包括调整这些功能并确保它们有界保证安全。 ## 现有代币经济学框架概述 [有关完整代币组学设计的描述,请参阅文档](https://ssv.network/tokenomics/). 但是,为了总结相关概念,让我们使用上面文档中的一个图: ![](https://i.imgur.com/KeAUYrO.png) 从这张图中,我们可以看到网络上的 **ETH 质押者向运营商支付费用(以 SSV 代币计)来运行他们的验证器。 还向质押者 收取少量额外的“网络费用”**,该费用将进入 DAO 国库,以资助进一步的生态系统发展和 DAO 批准的其他活动。 为确保网络保持偿付能力并确保运营商始终获得工作报酬,**每个验证者必须保持 SSV 的最低余额,称为“清算抵押品”**。 如果用户余额低于此最低金额,他们的余额将被清算,他们选择的运营商将停止为其验证人履行职责。 因此,为了以数学方式表示它,让每个验证者的费用定义为: \begin{equation} \tag{1} F_v = \sum_{i} (O_i + N_i) \end{equation} 其中 $F_v$ 表示验证人所欠的总费用,$O_i$ 是其 $i^{th}$ 运营商的运营商费用,$N_i$ 是在其 $i^{th}$ 运营商上运行的验证人的网络费用,$\Sigma$ 是所选运营商的总和。因此,验证者为其 $i^{th}$ 运营商支付的费用是运营商费用 $O_i$(由该运营商设置的常数)和网络费用 $N_i$ 的总和。 ## 目标:通过有利于许多小型运营商而不是少数大型运营商来增加去中心化 **通过随着验证者数量的增加而增加运营商的网络费用,我们可以通过激励质押者选择较小的运营商来阻止中心化。** 我们可以通过将网络费用定义为, \begin{equation} \tag{2} N_i = B + P_i \end{equation} 其中 $B$ 是恒定的基础网络费用,$P_i$ 是验证者的 $i^{th}$ 运营商的集中化惩罚。**这种惩罚会随着在该算子上运行的验证器数量的增加而增加。** 在我看来,每个后续添加的验证器都应该比之前的验证器带来更大的惩罚,所以我选择在这里使用“超线性”函数来获取该属性。例如,我们可以使用指数值较小的指数函数: \begin{equation} \tag{3} P_i = \alpha V_i^{\beta} \end{equation} 其中 $V_i$ 是 $i^{th}$ 运算符上的验证器数量,$\alpha$ 和 $\beta$ 是选择用来调整函数陡度和曲率的常数。通过一些示例参数选择(让我们使用 $B$ = 0.1、$\alpha$ = 0.0000025 和 $\beta$ = 1.5 来说明),这给出了以下图: | ![](https://i.imgur.com/9qlpXJU.png) | |:--:| | *惩罚功能,随着运营商规模的增加而增加网络费用。* | 请注意,根据等式 (2),将此图中的 $P_i$ 添加到基础网络费用 $B$ 以获得网络费用 $N_i$。例如,按照惩罚的定义,拥有 200 个验证者的运营商的网络费用将比拥有 0 个验证者的运营商高 7%(0.1 + 0.007 = 0.107),拥有 1000 个验证者的运营商的费用将高出 79%,并且 2000 个验证者的费用高出 224%。我们有能力自定义和调整上述功能,但其想法是 **较小的验证器现在将比大型验证器具有优势。** **函数调优和边界:** 这个函数有两个参数需要调整:$\alpha$ 和 $\beta$。$\alpha$ 是一个简单的系数,用于缩放值,$\beta$ 会影响曲率。如果您希望整体惩罚更高,请增加 $\alpha$。 如果您希望较大的操作员比较小的操作员受到更大程度的惩罚,请增加 $\beta$。 我们对这个函数没有任何边界问题,因为 $V_i \ge 0$ 总是正确的,并且指数形状给了我们一个“软边界”,惩罚会变得如此之大以至于它有效地限制了 $V_i$。在选择这些值时,我们应该考虑诸如“我们希望在多大的运营商规模下使运营商的成本无法维持?以及什么样的惩罚会导致无法维持的成本?”这样的问题。 [您可以使用此绘图工具试验不同的值](https://www.desmos.com/calculator/w4poahxzgu). **额外的考虑:** 我们可能没有可靠的方法来衡量运营商的总规模,因为他们可能会启动许多节点并试图让每个节点保持较小。 如果不对此进行任何缓解,上述仍然是部分解决方案,但评估算子大小的更稳健的方法将是有用的。 ## 目标:通过激励用户持有更多 SSV 来提高网络和市场稳定性 **我们可以通过减少验证者所支付的网络费用来激励用户持有 SSV,因为他们持有的 SSV 数量增加。** 这可以通过定义网络费用 $N_i$ 来实现,以包含如下折扣因子: \begin{equation} \tag{4} N_i = BD_{SSV} \end{equation} 其中 $B$ 是固定的基础网络费用,$D_{SSV}$ 定义了给予用户持有更多 SSV 的折扣。在我看来,持有更多 SSV 应该会带来收益递减,因此我选择了一个“次线性”函数来管理折扣: \begin{equation} \tag{5} D_{SSV} = 1 - \frac{(S-L)}{(S-L) + \gamma} \end{equation} 其中 $S$ 是用户持有的 SSV 代币数量,$L$ 是清算抵押品(为避免清算而必须持有的最小代币数量),$\gamma$ 是一个常数,用于调整函数的 陡度。这来自对数形状的廉价有界函数:$y=x/(x+a)$。 我们可以通过多种方式配置它,但这里有一个示例来说明:让 SSV 的数量根据验证者可以支付的时间长度来定义(可能使用一些平均成本)。因此,如果我们使用月作为时间单位并让 $L$ = 12 个月,那么所有验证者都必须有足够的 SSV 才能让自己运行 12 个月。并任意令 $\gamma$ = 20。这给出了: | ![](https://i.imgur.com/LIq3uO3.png) | |:--:| | *随着用户持有的 SSV 数量的增加,网络费用减少的折扣功能。* | 使用这些示例值,在持有 SSV 的最低金额($S$ = $L$ = 12 个月)时,$D_{SSV}$ = 1,并且不提供折扣。以所需金额的两倍($S$ = 24 个月),$D_{SSV}$ = 0.625,给予 37.5% 的折扣。在 $S$ = 48 个月时,$D_{SSV}$ = 0.357(64.3% 折扣)。 在 $S$ = 120 个月时,$D_{SSV}$ = 0.156(84.4% 折扣)。 观察到,最初持有额外 SSV 的效果非常高,随着添加更多 SSV,效果会逐渐降低,逐渐接近完全取消网络费用($D_{SSV}$ = 0)。 **函数调优和边界:** 这个函数有一个主要参数需要调整:$\gamma$。 清算抵押品 $L$ 也是一个参数,但不应使用它来调整此功能。无论如何,它只是简单地向左和向右移动函数,并且不会影响曲线的形状。 $\gamma$ 影响曲线的陡度(即获得折扣的速度)。 如果我们希望折扣更容易获得,则减少 $\gamma$,反之亦然。 但是,如果您缩小此函数的绘图,您会看到我们只使用了它的特定区域(并且需要留在那里)。 所以我们在设置 $\gamma$ 时有一些限制,以防止它进入其他数学不是我们想要的区域。换句话说,我们被限制在$D_{SSV}$ > 0 的区域,当$L$ < $\gamma$ 时,所有$S$ > 0 都是如此。 另请注意,当 $S$ = 0 时,当 $L$ = $\gamma$ 时,$D_{SSV}$ 趋于无穷大。 所以基本上...只要确保$\gamma$ 大于$L$,我们都很好。 [您可以使用此绘图工具试验不同的值](https://www.desmos.com/calculator/ownmqjsjyi). ## 组合机制:中心化惩罚+持有者折扣 重要的是要注意**上述机制可以独立实现或组合实现**。 我将通过将等式(2)和(4)放在一起来说明我们如何将它们组合起来,将网络费用定义为, \begin{equation} \tag{6} N_i = (B + P_i)D_{SSV} \end{equation} **现在 $N_i$ 的值通过两种方式调整:它随着运营商规模的增加而增加,并且随着用户持有的 SSV 数量的增加而减少。** 另请注意,我选择将折扣机制包装在惩罚机制周围,这使得折扣可以减轻惩罚以及基本费用。 我们可以通过绘制网络费用 $N_i$ 来显示结果: | ![](https://i.imgur.com/OKYqdCj.png) | |:--:| | *将持有 SSV 的折扣与选择大型运营商的集中化惩罚相结合的函数。* | 常数设置为与上述相同的值($B$ = 0.1,$L$ = 12,$\alpha$ = 0.0000025,$\beta$ = 1.5,$\gamma$ = 20)。 计算绘图每个角的值: - 对于具有最低 SSV($S$ = $L$ = 12 个月)并使用具有 0 个验证者的运营商的用户,他们的网络费用是 **100% 的基础网络费用。[新运营商,不减费]** - 对于拥有 120 个月 SSV 的用户和拥有 0 个验证人的运营商,网络费用为基**础网络费用的 15%。[最佳案例:新运营商,高额费用缓解]** - 对于具有最低 SSV 并使用拥有 2000 个验证者的运营商的用户,网络费用为基**础网络费用的 320%。[最坏的情况:大型运营商,没有减费]** - 对于拥有 120 个月 SSV 的用户和拥有 2000 个验证者的运营商,网络费用为 **50% 基础网络费用。[大型运营商,高费用缓解]** ## 目标:创造一种在不依赖通货膨胀的情况下通过 SSV 代币赚取收入的方法(无需铸造新代币) 此功能是一个例外,因为它不是从目标到机制的直接映射(尽管这可能是可能的)。 相反,这是通过上述费用折扣机制的次要特征来实现的。 费用折扣创造了一种动态,即质押者可以通过拥有更多 SSV 代币来节省资金。 我们可以进一步扩展这一点,并观察到如果他们能够以低于节省的成本借入这些额外的代币,他们也会被激励借入。另一方面,SSV 的持有者将被激励将其代币借给该质押者,因为他们可以通过分享质押者的储蓄来获得回报。换句话说,**质押者和贷方可以合作从费用折扣机制中提取价值,然后分享。** 举个例子,假设质押者每年支付 1 SSV 的网络费用,如果他们有更多的 SSV,折扣将减少到每年 0.5 SSV,给他们 0.5 SSV 的储蓄。另一位希望从其代币中获得回报的 SSV 持有者提出以 0.25 SSV 的价格将这些代币借给质押者。 质押者接受该交易并向贷方支付 0.25 SSV 的价格,因此贷方以 0.25 SSV 利润离开。质押者使用这些代币节省 0.5 SSV,在向贷方付款后,他们还有 0.25 SSV 剩余作为利润。 质押者和贷方都从这笔交易中赚取了 0.25 SSV。 这种价值提取可用于创建一种方法来质押 SSV 并获得这些代币的回报。 但是,有几种方法可以实现这一点。 最简单的方法是获取质押的 SSV 并将其应用于所有验证者的折扣,从而降低每个人的网络费用。但我们也可以让这个更有针对性,用户可以将他们质押的 SSV 分配给特定的验证者或验证者组。 例如,他们可以决定降低在某些运营商(例如小型运营商、运行不同软件客户端的运营商等)上运行的验证器的成本,以赋予它们竞争优势并对生态系统产生利他效应。或者,可以将质押的 SSV 动态分配给折扣最大的验证者,从而最大化 SSV 质押者的回报。 你认为我们的目标应该是什么? ## 目标:提高治理参与度 **我怀疑这种设计可能过于复杂而无法在主网 SSV 上稳健地实施** 但无论如何,我在这里展示它是因为这是一个很好的机会来进一步说明这种一般方法。 而且我们仍然可以选择将它用于未来的激励性测试网计划,在这些计划中增加复杂性带来的成本要低得多。 SSV 社区的一大难题是我们对 DAO 提案的选民参与率低。 我们可以尝试通过在网络费用 $N_i$ 上增加奖励或惩罚来激励用户参与来解决这个问题。 一种方法是简单地**对 DAO 提案的投票给予小幅折扣,用户投票越多,他们的折扣就越大。** 我们可以通过再次修改网络费用来实现这一点, \begin{equation} \tag{7} N_i = B - D_{vote} \end{equation} 其中 $B$ 是恒定的基础网络费用,$D_{vote}$ 是选民折扣函数。 在为 $D_{vote}$ 选择函数时,我们有很多选择,所以让我们通过一个示例设计过程来说明。 从一个简单的解决方案开始,我们可以让折扣与用户的投票数成正比,如下所示: \begin{equation} \tag{8} D_{vote} = \alpha\frac{P_{voted}}{P_{total}} \end{equation} 其中 $P_{voted}$ 是该用户投票的提案数量,$P_{total}$ 是未投票的数量,$\alpha$ 被重新用作给出折扣幅度的常数缩放系数 . 然而,这很容易被滥用,因为用户可以提交大量提案来提高他们的参与分数。 **为了减轻这种可能的滥用,我们可以稍微改变我们的方法,让 $D_{vote}$ 衡量用户参与的时间,而不是投票的绝对数量。** 这可以通过给每个用户一个月度分数来完成,该分数定义为每个月的投票参与率 ($P_{voted}/P_{total}$)。 将等式 (8) 更改为现在在每个月 $j$ 中按时间向后迭代,直到过去的总月数 $M$,我们得到, \begin{equation} \tag{9} D_{vote} = \frac{\alpha}{M} \sum_{j = 1}^{M}\frac{P_{voted_j}}{P_{missed_j}} \end{equation} 其中 $\alpha$ 再次是选择用于缩放折扣幅度的常数,$\Sigma$ 是前几个月的求和运算符。 让我们任意设置 $\alpha = 1.0$,以便我们可以评估数学。 请注意,因为我们将这些值相加,我们还必须除以 $M$ 以使折扣标准化(即,保持最大值一致,无论相加的月数如何)。 我们可以模拟这个设计,看看 $D_{vote}$ 将如何计算一个没有先前投票(12 个月未投票)但从现在开始将参与每一个投票的新用户。 绘制网络费用 $N_i$,随着用户投票而减少: | ![](https://i.imgur.com/rfoPi1V.png) | |:--:| | *网络费用随着用户投票参与的增加而减少。* | **观察网络费用随着用户投票时间的推移而减少** 因此,这应该有效地奖励参与,而不会允许严重滥用。 但是,**我们可以进一步完善这一点,所以让我们问自己一些问题:** 我们是否更重视持续的长期参与而不是短期参与? 我们是否希望新的忠实用户能够获得与从一开始就参与的用户一样的折扣? 新用户应该多快获得此折扣? 它应该过期吗? 有了这些问题的答案,我们就可以做出调整。 **为了更重视长期参与,**我们可以使用另一个功能来对用户的早期投票给予较小的权重,并在他们继续时给予更多的权重。 我将使用 ["logistic" 功能](https://en.wikipedia.org/wiki/Logistic_function) 来控制这里的权重。 我之所以选择它,是因为它实际上是一个“开关”,并且我希望在用户充分参与时“打开”折扣。 类似的功能还有很多,实现一个切换的效果 (例如 ["step" 功能](https://en.wikipedia.org/wiki/Heaviside_step_function), ["clamp" 功能](https://en.wikipedia.org/wiki/Clamping_(graphics)), ["smoothstep" 功能](https://en.wikipedia.org/wiki/Smoothstep))), 但我想要一些连续和平滑的东西,并且逻辑函数对于这个应用程序有一个很好的形状,同时评估起来相当简单。 写出来是这样的 \begin{equation} \tag{10} y = \frac{1}{1 + e^{-x}} \end{equation} 我们可以通过包装我们的求和比率将其整合到等式(9)中,使用参数 $\beta$ 和 $\gamma$ 来调整形状, \begin{equation} \tag{11} D_{vote} = \alpha\left(\frac{1}{1+e^{-\beta(R+\gamma)}}\right) \end{equation} 其中 \begin{equation} \tag{12} R = \sum_{m=1}^{M}\left[\left(\frac{P_{voted}}{P_{missed}}\right)\right] \end{equation} 为常数选择任意值,$\alpha$ = 1, $\beta$ = 1 和 $\gamma$ = -5,我们可以再次模拟 $D_{vote}$ 将如何为没有事先投票的新用户演变 (12 个月的失误)和对未来的完美参与。 绘制网络费用 $N_i$,随着用户投票而减少: | ![](https://i.imgur.com/yxtv22o.png) | |:--:| | *Network fee that decreases as a user votes for several months.* | 观察逻辑函数产生一个属性,其中**用户必须在折扣显着增长之前投票几个月**。 此功能的另一个特点是右侧的平坦部分,费用停止减少。 这给了折扣一个有效的上限,这样超过某个阈值的参与就不会产生额外的折扣,这**限制了老用户相对于新用户的优势**。 现在,如果我们继续这样做,我们会注意到使用等式 (11) 和 (12) 中的函数,用户可以投票一年左右然后停止,他们仍然会保留折扣。 如果我们想鼓励继续参与,**我们可以修改功能以使折扣过期或衰减**。 还有几个选项可以实现这一点,但我将再次使用“logistic”功能,因为它可以“关闭”折扣,就像打开折扣一样。 我们可以使用此函数根据过去的月数对每个参与率进行加权,这将导致旧票在一段时间后失去其价值。 以这种方式修改等式(12),我们得到, \begin{equation} \tag{13} R = \sum_{m=1}^{M}\left[\left(\frac{1}{1+e^{-\delta(R+\epsilon)}}\right)\left(\frac{P_{voted}}{P_{missed}}\right)\right] \end{equation} 其中$\delta$ 和$\epsilon$ 是调整形状的参数,类似于$\beta$ 和$\gamma$。 选择 $\alpha$ = 1、$\beta$ = 1、$\gamma$ = -5、$\delta$ = -2 和 $\epsilon$ = -14 的任意值,我们可以模拟这种折扣衰减机制 对于投票 12 个月然后停止的用户。 | ![](https://i.imgur.com/vijohHO.png) | |:--:| | *网络费用随着用户投票数月而减少,并在他们停止投票后恢复。* | 观察**衰减功能要求用户继续参与以维持他们的折扣**,如果他们停止,折扣会随着时间的推移而丢失。 如果我们把所有东西放在一起,**我们已经创建了一个机制(方程(7)、(11)和(13)),具有以下目标和相应的特征**: - 对参与 DAO 治理的用户给予网络费用折扣。 - 投票频率更高且时间更长的用户会获得更大的折扣。 - 滥用提交大量提案的情况得到缓解。 - 老用户相对于新用户的优势是有限的。 - 用户必须继续参与才能维持他们的折扣。 让我们通过考虑我们刚刚做了什么来结束。 我们**从一些目标开始**,并展示了如何设计实现这些目标的机制。 构建设计的方法有很多,本文旨在说明一个过程,而不是提出具体的计划。 因此,请不要过于关注上面的细节。 我们有设计和调整所有这些的自由。 相反,**让我们问自己以下问题:** - 这些是我们的目标吗?这些是我们想要的功能吗? 如果不是,它们是什么? - 这些功能开发和执行是否实用? - 增加的复杂性和计算成本是否值得? - 我们是否确保所有机制都是安全的并且没有被滥用的风险? 我们是否需要为任何东西添加界限? 感谢阅读,[请访问 SSV Discord](https://discord.com/channels/723834989506068561) 与社区讨论这些话题 :slightly_smiling_face: