参数化Casper:去中心化/最终确定时间/开销权衡

本文探讨了Casper协议中关于去中心化、最终确认时间和开销之间的权衡,介绍了经济最终确认性的定义,并通过数学模型分析了三者之间的关系。文章还提出了四种可能的解决方案,并讨论了验证者池与非确定性阈值签名的作用。

随着 Casper 不断趋向于更加稳定的形式,对将在协议中设置的各种参数的兴趣也在增加,包括利率、费用、提款周期、速度、质押所需的最低 ETH 数量等。本文将是系列文章中的第一篇,试图描述涉及的各种权衡,并将重点关注具有经济最终性属性的协议中的去中心化和效率。

首先,我们将简要定义经济最终性(我们假设 2/3 的阈值;Vlad Zamfir 会快速指出,我们实际上希望节点能够设置自己的阈值)。

经济最终性,第 1 版:状态 H 是经济上最终的,如果至少 2/3 的验证者签署了一条证明 H 的消息,并且在任何不包含 H 的历史记录中,他们将失去全部押金。

经济最终性,第 2 版:状态 H1 是经济上最终的,如果足够多的验证者签署了一条证明 H1 的消息,并且如果 H1 和一个冲突的 H2 都被最终确定,则有证据可以证明至少 1/3 的验证者是恶意的,因此销毁他们的全部押金。

目前,我和 Vlad 都在致力于支持第 2 版的协议。但无论如何,请注意经济最终性的两个版本都要求(i)至少 2/3 的验证者签署某条消息,以及(ii)网络验证这些消息*(关于后者,巨大的星号因为实际上有绕过此限制的方法,但这些基本上是分片的形式,因此我认为它们不适用于"最大简化"的 Casper 版本)。

这现在意味着,为了使状态 H 被最终确定,网络必须验证来自至少 2/3 验证者池的消息。从这个简单的事实中,我们得到了三者之间的深层权衡:

  • 最终时间: H 提出的多少秒后被最终确定?
  • 去中心化 - 在这里定义为验证者池的大小,例如一个区块链可能有空间容纳 1000 个活动验证者。请注意,这直接对应于 可获取性 - 成为验证者所需的最低 ETH 数量,但稍后会详细说明。
  • 开销:完全节点(包括验证者)每秒需要验证多少消息?

理想情况下,我们希望最小化最终时间,最大化去中心化,并最小化开销。但不幸的是,我们不能同时做到这三点。具体来说,从上面关于验证者消息的事实中,我们得到这个数学公式:

f o ≥ d 2/3

其中 f 是以秒为单位的最终时间,o 是开销,d 是验证者池的大小(去中心化)。这是物理学中著名定律“速度 = 距离 / 时间”的简单翻译:如果你需要在 f 秒内处理 d 2/3 消息(“距离”),那么每秒的消息数量(“速度”)是 d 2/3 / f。请注意,实际上,一致性协议需要多轮消息传递,因此 f o ≥ d 2 是可能的,通常情况下,会有超过 2/3 的节点上线。因此,为方便起见,我们就用:

f * o ≥ d

现在,让我们在这个公式中插入一些参数以说明这一点。考虑一种类似 PBFT 的机制,其中区块 n 在开始区块 n+1 之前总是被最终确定,并假设区块时间为 10 秒。假设你想支持 500 个验证者。那么,10 * o ≥ 500,因此开销至少为每秒 50 条消息。

现在,考虑一个基于链的权益证明,具有 5 秒的区块时间,因此 o = 1/5,并假设有 10000 个验证者。那么,f / 5 ≥ 10000,因此 f ≥ 50000(即 14 小时)。一种中间路线是选择 1000 个验证者,每秒 1 条消息的开销,最终时间为 1000 秒(约 15 分钟)。你可以随意将自己的数字插入这个公式中,看看哪些配置是可行的,哪些不可行。重要的结论再次是,我们不能完全同时拥有这三样好东西

因此,有四条前进的路径:

  • 追求 高去中心化和低开销,最终时间很长。交易所习惯于超过一小时的最终时间,所以告诉他们情况还是这样。
  • 追求 高去中心化和低最终时间,但要求节点处理较高的开销。告诉完全节点的操作员忍耐并接受这一点,努力改善轻客户端协议。
  • 追求 低开销和低最终时间,使验证变得不那么可获取。努力改善去中心化的质押池软件,作为基础层去中心化的第二选择。
  • 放弃经济最终性的目标。

请注意,在类型 1 经济最终性的背景下,你可以尝试获得“部分”经济最终性(例如,获得 3.33% 的验证者押金签署一条消息,这仍然是一大笔钱,且仅需 1/20 的时间以获取 67% 的验证者押金),但在类型 2 经济最终性的背景下,你无法做到这一点,因为只有超过 50% 的验证者签署某个状态时,你才会获得经济最终性。此外,在任一情况下,我们可以找到在三者之间妥协的方法。

针对质押池的确定性阈值签名

请注意,我们在 椭圆曲线配对预编译 上的工作是重要的,因为,结合 zk-SNARKs,这种原语可以用来实现确定性阈值签名。因此,我们可以拥有一个系统,在基础层面上有大约 100 个验证者,但希望这些“验证者”中有许多将是池。 这些验证者的验证代码将是阈值签名的验证器(可以在常量时间内计算),而阈值签名证明至少 2/3 的池参与者批准了给定的哈希。每个池本身可能有数十名甚至数百名参与者。

为什么我们不能在顶层使用确定性阈值签名?首先,它们并不透露 参与了,只是足够多人参与了,因此我们不知道该奖励谁,处罚谁。其次,它们与加密抽象的目标相悖,我们希望协议的每个用户,包括验证者,都能够使用他们想要的任何加密方式。

从理论上讲,这些池可以以多种不同方式进行管理。两种最明显的范式是:

  • 完全开放:有一个合同,任何人都可以加入。
  • 封闭:该池是由一群相互认识的朋友之间组成。

完全开放的池是有风险的,因为攻击者可以用许多身份加入池,并实质上以 51% 进行攻击;因此,完全开放池的参与者有失去资金的风险,而这并非他们所做的错。然而,攻击者损失的钱大约与他们的受害者一样多(即,干扰因子约为 ~0.5–2)。封闭池更安全,但当然,它们依赖于人们有互相信任的不合谋的朋友。可以说,这种类型的池允许在现实中具有相当可接受的去中心化水平,只要基础验证者集中有足够的“插槽”,以便可以创建许多不同的池。

还有另一种类型的质押池,它使用受信任的硬件而不是确定性阈值签名;有关更多信息,请参阅 Loi Luu 最近的博客文章。请再次注意,这种设计并不要求整个网络信任某一个特定品牌的受信任硬件;相反,它只要求该特定池的参与者这样做,实际使用这种方案的强大网络可能会包括许多不同的池,以及许多不同的受信任硬件解决方案,此外还有用户更喜欢确定性阈值签名或单独操作。

除了效率外,质押池还有另一个优势:它减轻了单个参与者的负担,以 (i) 100% 上线,并且 (ii) 不被黑客攻击。

从验证者数量到最小质押 ETH

给定一个验证者的数量(例如 d = 1000),下一个问题是:这如何转换为对用户个人非常重要的另一个变量 - 他们需要多少 ETH 才能成为(基础层)验证者?对这一点有几个公式:

  • 设置一些最低存款规模 (例如 500 ETH),让质押 ETH 的数量以及验证者的总数(因此最终时间或开销)浮动
  • 设置最大验证者数量,并随着当前活动验证者数量接近最大值,逐步增加最低存款规模到无穷大
  • 两者之间的某种中间政策,例如,一个人可能考虑将最低存款规模设置为当前正在质押的验证者数量

为了检查 最坏情况 ,我们得到一个简单的数学公式:

total_deposited_ether = min_deposit_size * number_of_validators

原因希望是显而易见且不具争议的。现在我们可以允许目标高于最低存款规模的人进行更大存款,并计入这笔存款。如果发生这种情况,实际上我们将得到优于最坏情况的结果。假设 齐夫律 是正确的,即在给定存款规模下,愿意成为验证者的数量与该规模成反比,因此,例如,在 1000 ETH 的情况下有 10 倍的愿意验证者,而在 10000 ETH 时则少得多。假设存在一个愿意成为规模为 largest_validator_size/n 的验证者,其中 n ≥ 1 是任意整数,largest_validator_size 本身则是模型的输出。

现在,固定一些 number_of_validators。最大的 k 个验证者所存入的总 ETH 数量,即为 largest_validator_size/n 在 1 ≤ n ≤ k 的求和,可以近似为 largest_validator_size * (ln(k) + 0.5)(其中 ln 是自然对数),因此我们得到以下方程:

number_of_validators = largest_validator_size / minimum_depositor_size

total_deposited_ether = largest_validator_size * (ln(number_of_validators) + 0.5)

如果我们固定任意两个变量,则可以求解其他两个变量。假设我们将最低存款设置为 500 ETH,并假设存入了 1000 万 ETH。那么,我们可以解方程,得到的结果是:

  • 2412 个验证者
  • 最大的验证者存款为 1206000 ETH

如果我们将最低存款降低到 50 ETH,那么我们得到 19291 个验证者;如果将其增至 1500 ETH,则得到 911 个验证者。或者,我们可以反过来计算:如果我们想目标为 1000 个验证者,那么最低存款将在均衡状态下约为 1350 ETH。请注意,这一切假设如果你想加入更多的存款是可以的;如果没有这一属性,那么权衡将按 ~log(n) 的因子恶化,作为存款较大的验证者时,他们必须将自己的存款拆分到多个账户中,并在每次状态被最终确定时执行多次签名。因此,支持高于最低的可变存款规模被认为是一件好事。

  • 原文链接: medium.com/@VitalikButer...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Vitalik Buterin
Vitalik Buterin
https://vitalik.ca/