Vitalik:以太坊 Serenity 设计依据综述区块链
今天我们为大家分享Vitalik撰文阐述以太坊Serenity阶段的设计依据,希望读者们在阅读本文之后,能够更进一步了解以太坊Serenity背后的开发者们是如何来设计这个全新的PoS区块链网络
2. 为什么选择“最终化 保证金 罚款”模型呢?
不具备最终化特性的共识算法无法实现这些属性。
● 验证者在线率超过50%
Serenity 的分片使用了一种机制,即如果随机抽样的验证者委员会中有2/3的成员对来自某个分片中的区块进行签名,那么我们就认为该区块已被接受。这种机制本身要求平均有大于或等于2/3的验证者在线以接受任何分片区块。但如果有超过50%的验证者在线,那么我们就可以得知:除非网络中存在显然会违反协议规则的验证者,否则我们将得到某种程度的保证,即区块不会被回滚。因此,我们没有理由不添加这么一个特性。
● 解决验证者的困境
所有区块链都存在一个共同的问题,即验证者没有足够的动力去实际验证他们正在构建的区块。因为在这个均衡中,如果(几乎)每个人都是诚实的,那么对于验证者来说,这些交易根本不值得他们浪费计算资源去校验。
而在分片链中,这些问题被进一步放大了。我们可以通过(利用保管证明 Proofs of Custody)对签署无效或不可用数据的行为实施大额罚款来缓解这些问题。但是,在实际执行中,实施罚款不仅需要验证者缴纳安全保证金,还要求锁定期限足够长,以允许其他用户校验验证者所声明的数据,并在数据出现错误时对其发起质询。
3. Casper激励机制中的每个参数的设定标准是什么?
在不同的情况中,实际奖励的计算方式如下:如果 ? 是最大奖励值,并且 ? 是执行所需操作的验证者所占的比例,那么任何执行所需操作的验证者都将获得奖励 ?*?。此外,任何未执行所需操作的验证者将遭受罚款-?。制定这种“集体奖励(即“如果有人表现得更好,那么每个人都会表现得更好”)”方案的目的是设定破坏因子的界限(想了解破坏因子的定义及重要性,请参阅:
https://github.com/ethereum/research/raw/master/papers/discouragement/discouragement.pdf)
需要注意的是,我们还要进一步解决两个难题:
1. 如果该证明被包含在区块链内的时间延迟了,那么奖励将减少。这是为了激励验证者及时发布证明。
2. 提议者将获得他们所包含的任意证明的奖励的1/8。这是为了鼓励提议者充分监听消息,并尽可能多地接受这些消息。
● 验证者静止漏洞
如果链条在 ???(time since finality,即达到最终化以后所经历的时间。其中,??? > 4 个时期内未能保持最终化状态,那么参与这个过程的验证者的奖励将降为零,并且第二个惩罚机制将被载入,该惩罚与 ??? 成比例。这确保了如果超过1/3的验证者陷入静止状态,那么不在线的验证者将会受到更严重的惩罚,并且惩罚随着时间的推移呈二次方递增。
► 如果你的离线行为将阻碍区块的最终化进程的话,那么你将会因为离线这一行为遭受更严重的惩罚
► 确保一旦发生超过1/3验证者离线的情况,由于离线验证者的保证金在不断减少,最终验证者的在线率会回升到2/3。
在当前的参数化条件下,如果区块无法被最终敲定,那么验证者在2.6天后将损失1%的保证金,在8.4天后损失10%,在21天后损失50%,以此类推。这意味着,如果发生50%验证者离线的情况,那么区块将在21天后重启最终化进程。
● 罚没和反相关惩罚
如果某个验证者被指证刻意违反 Casper FFG 的罚没条件,那么该验证者所承担的罚款会是在与他们大致相同的时间内受到惩罚的验证者的三倍。这么做是出于以下几个理由:
► 单个验证者作恶只会对网络造成不良影响,但如果他们选择与其他验证者同流合污,那么这些随波逐流的验证者有必要接受严厉的教训
►这一机制会对实际的攻击行为实施严厉惩罚,但对那些可能是诚实的单个孤立故障节点只实施非常轻微的惩罚
►这一机制确保较小的验证者所承担的风险要比较大的验证者的风险更少(在正常情况下,大型验证者发生故障所造成的影响相当于一堆小型验证者同时宕机的结果)
►这一机制能够有效阻止验证者“跟大队走”
● 罚没和反相关惩罚
如果某个验证者被指证刻意违反 Casper FFG 的罚没条件,那么该验证者所承担的罚款会是在与他们大致相同的时间内受到惩罚的验证者的三倍。这么做是出于以下几个理由:
► 单个验证者作恶只会对网络造成不良影响,但如果他们选择与其他验证者同流合污,那么这些随波逐流的验证者有必要接受严厉的教训
► 这一机制会对实际的攻击行为实施严厉惩罚,但对那些可能是诚实的单个孤立故障节点只实施非常轻微的惩罚
► 这一机制确保较小的验证者所承担的风险要比较大的验证者的风险更少(在正常情况下,大型验证者发生故障所造成的影响相当于一堆小型验证者同时宕机的结果)
► 这一机制能够有效阻止验证者“跟大队走”
● 保管证明
当验证者需要对某个数据为?,根为?的分片区块进行证明时,验证者需要计算出?'(其中,?'[?] =???(?[?], ????))以及新数据?'的根?'。然后,验证者将发布一部分?'作为他们所签署的内容的一部分,并通过发布 ℎ??ℎ(????) 的形式来提交种子。在一定时限内,网络中的其它节点可以对这些信息进行质询,并要求验证者提供他们的????参数、完整的?′值以及 ? 和 ?' 的特定分支,以证明这些数据被正确构造。如果验证者在质询期开始之前提前发布????参数,那么他们将受到罚没惩罚。
构建这种机制是为了缓解验证者的双重困境。在该困境中,验证者可能会出于懒惰而拒绝验证数据,并假设所有其他验证者都是诚实的。如果大多数验证者都这么想的话,那么很可能会导致公地悲剧,最终导致链条接受无效的区块。而在这一机制中,如果验证者试图提交没有经过他们亲自处理的数据的话,那么他们将无法计算出?'(如果他们尝试外包给别人处理,那么外包方可能会背叛他们,并导致他们遭受罚没惩罚)。一旦这时有其它节点提出质询,那么这些验证节点将无法正确回应质询。出于效率原因,验证者首先只提交一部分?'。一旦验证者发布了他们的????参数,那么任何人都可以重做并检验他们的计算结果。如果该?'值不正确,那么检验者将会发动一系列质询来炮轰该数据为?′且计算不正确的区块。
4. 为什么规模是32个ETH验证者?
5. 随机抽样?
6. LMD GHOST 分叉选择规则
7. 信标链/分片链结构
1.TMT观察网遵循行业规范,任何转载的稿件都会明确标注作者和来源;
2.TMT观察网的原创文章,请转载时务必注明文章作者和"来源:TMT观察网",不尊重原创的行为TMT观察网或将追究责任;
3.作者投稿可能会经TMT观察网编辑修改或补充。