Casper机制的历史起源-第五篇

月亮🌛   |     |   631 次阅读


Casper机制的历史起源-第一篇
Casper机制的历史起源-第二篇
Casper机制的历史起源-第三篇
Casper机制的历史起源-第四篇


在这一章节中,我将以Aviv Zohar和Jonatan Sompolinsky设计的GHOST(Greedy Heaviest-Observed Sub-Tree,又称幽灵协议)原理在权益证明中的应用来重新叙述Casper机制诞生的故事。

我称它为“友好的Ghost”(编者按:参见动画片《鬼马小精灵》的原文片名),正是因为设计的一系列激励因素是为了保证对抗寡头垄断者的屏蔽的抵抗力,该激励机制能够强迫卡特尔(垄断联盟)对那些非卡特尔验证器更加地友好。

对卡特尔模型中屏蔽的抵抗力

2015年2月--友好的激励

在看到寡头垄断的情况后(按:见Casper机制的历史起源——第四篇),我开始探寻一条设计权益证明协议的道路,能在形成卡特尔后仍稳健发展的权益证明协议。而且必须实现的是,在这个新的协议中,卡特尔没有屏蔽那些不在卡特尔中的验证者的动机。

我意识到,当进行工作量证明共识的卡特尔分析时,一个占有51%矿工的卡特尔有动机去屏蔽那些不在卡特尔中的矿工。这些51%的矿工会立刻得到更多酬金的奖励,并最终会得到更多的区块奖励(在区块难度再调整之后)。

我已经知道了权益证明优于工作量证明的长处了,权益证明协议可以访问“能防女巫攻击的资金(存款保证金)”;反之,工作量证明区块链并不能直接控制挖矿算力。

所以我意识到,工作量证明协议是无法检测出屏蔽的存在的,毕竟因为工作量证明是存在于协议之外的。此外,就我而言,这引导我得出了一个Casper的永久特性:

卡特尔不能隐藏那些已经被屏蔽的验证者的缺席。

【作者按:说明一下,这也就是说,卡特尔并不能掩盖一个关于“已经被屏蔽的验证者的缺失”这一事实。】

所以我清醒地意识到,构建一个卡特尔没有动机去屏蔽其他验证者的协议还是有可能的。而且,这还是挺简单的。在这样一个协议中,当验证器出现缺失的(被屏蔽)情况时,卡特尔就必须被惩罚。而且惩罚得程度上足够严重,时间上足够长久,从而使它不再为了自身利益而去屏蔽那些非卡特尔成员。

我开始兴奋起来。这显示了权益证明从根本上比工作量证明有更强的屏蔽抵抗力,藉此也帮助我肯定了之前关于“安全存款保证金是最重要的”这一直觉判断。

而且我们还能看到这种协议是怎么执行实施的:如果一个验证者不能将区块纳入到链中的话,那么所有那些成功将区块纳入到链中的验证者都会被惩罚。这同时也明确地告诉我们,在卡特尔模型中的屏蔽抵抗力的成本是“一个验证者故意脱机以导致其他线上验证者损失金钱”。

而因为对于协议来说,它是很难清楚得知验证着到底是被屏蔽了,还是出于其自身利益而故意脱机离线,因此,惩罚相关的离线验证者也是必需的。

之后,我便马上建议Jae Kwon和Ethan Buchman他们的Tendermint应该采取我所描述的上述规则。然而他们拒绝了我,因为他们觉得为了某些验证者离线,而去惩罚所有的验证者是不能接受的。Jae同时还指出,屏蔽不是什么问题,因为将会被社区发现,而这个社区也能够迅速地对卡特尔的行为作出抵抗,并停止使用该区块链。

我半推半就地同意了Jae这个观点,但是我并不认为这可以成为不作出一切有可能的尝试以保证卡特尔不会屏蔽其他非卡特尔成员的理由。

去中心化的定义

2015年2月或3月

在三月初的某一时候(或者是二月?),Matthew Wampler-Doty提出了一个关于去中心化的有趣的定义:

判断一个协议是不是去中心化的,是看这个协议能不能在全部节点都永久性删除后,仅依靠一个节点仍然能够恢复过来正常运作。

这一项定义是深受生物学所启发的,就如同菌丝体借助一个单细胞就能恢复过来一样。这个观点十分的有意思,因为它引导我们注意到Tendermint是不如传统的区块链协议(比如说工作量证明协议、或者是PPC亦或是NXT中的权益证明协议)那么去中心化的。

如果在网络中没有三分之二的权益加权验证者去有效地签署区块的话,那么Tendermint并不能在没有硬分叉的情况下实现恢复。相反,Bitcoin、PPC以及NXT在只有一个矿工或者权益所有者保持在线的情况下,是能够实现恢复的(尽管这会花他们很多的时间去创建区块)。

“友好GHOST”的诞生

2015年3月--GHOST遇上权益证明

Vitalik和Gavin Wood定了在三月中旬的时候来伦敦见我,而那时我也应该能够向他们详述一种权益证明协议方案,然而我却远远没有准备好。

于是我绝望地第一次潜进有关传统拜占庭容错共识机制的文献之中。然而我并没有学到什么。然而,我明确了一点:文献几乎完全关注于仅仅制定“安全决策”(大概指的是“只构建所有遵循协议的节点都能最终达成共识的确定区块”)的共识协议。而这些共识协议,就像Tendermint一样,永远不存在任何分叉。

我发现传统的拜占庭容错共识协议需要一个可用的“Byzantine Quorum”(编者按:拜占庭节点集,在Quorum拜占庭系统中使用。Quorum 系统是指共享数据存储在一组服务器上,通过访问服务器的一个大小恒定的子集(quorum)来提供读/写操作。这类协议都含有一个特性:规定访问的子集大小后,任何一个这样的子集都包含最新的数据,并且一定可以读出来。Quorum 拜占庭系统则是在此基础上保证在服务器出现拜占庭错误时,系统的一致性语义仍然成立。)来让协议进行决策制定。而藉此,这也就意味着它并不符合Matthew Wampler-Doty关于去中心化的定义。顺便说一下,这个拜占庭节点集,是指有一个节点集足够大到它包含的大部分节点是正确节点(这个定义在故障计数中是参数化的;我们在之后的章节中还会更多地提到它)。

因此我决定我需要一个可用性偏好的共识协议,而非只是一味制定“安全决策”的协议(相容性偏好)。我需要一个可以积极构建区块的协议,从而即使是在一个验证者工作的情况下,这个验证者还能够构建一条区块链。

通过使用拜占庭节点集(如果可用的话)在区块被创建后做出决策,还是可以实现最终确定性的(无论在传统协议上是否可行)。

Vitalik和Gavin已经到我家门口了,我在有些许困惑和绝望的情况下,做出了一下一个决定:我将调整GHOST使其适用于权益证明。我已经了解并且酷爱GHOST,因为它影响了以太坊工作量证明的一部分明细规范。

我坚信,验证者将会制造一个区块和“验证签名“(区块上的电子签名,这个签名将证明它们有效性和共识权重)的DAG(有向无环图,英文维基百科,中文维基百科)。在这个GHOST中,将有一个函数能够接收任何类似的DAG并返还一个“最简洁的”交易定序。一个包括所有共识行为的记录将会在DAG中被保存,并用作于激励因素。

当然,如果有任何的验证者经常性地没有将它们的区块放入最简洁的定序的话,那么每一个验证者都会被惩罚。

尽管这个协议并非完全可行,亦并非详尽,但它依旧足够全面。我有足够的信心能够令它发挥作用。

以下是含有具体这些性质的协议模型:

  • 如果必要的话,一个验证者便能构建区块。

  • DAG能够捕捉到所有某一验证者可能发现的对于协议激励机制有用的信息。

  • 卡特尔的屏蔽会被惩罚。

我将我所做的工作一一细说给了Vitalik和Gavin听。尽管他们都没有太受触动(毕竟他们之前期待着一个详尽的协议叙述),但是他们都能看到我做了足够多的工作以对得起我所挣的钱(所以我灰常开森!)。

Casper诞生时只是简单的“友好GHOST”,经过改进以适应权益证明,完工于能够激励卡特尔对非卡特尔验证者“友好”的激励机制。

从“友好GHOST”发展为“Casper:友好GHOST”的历程

早在John Dilley在圣弗朗西斯科于Jeremy Gardner的“Crypto Castle(加密城堡)”派对上说服我将这个协议称为“Casper”之前,有几个人已经告诉我让我将这个“友好GHOST”命名为“Casper”了(可惜的是,我不能确凿地记得是谁提的了)。

在这个派对上,我对Andrew Poelstra关于安全存款保证金解决无利害关系和远程问题这个观点,做了点吹毛求疵的行为。(不要担心,亲爱的读者们,在之后的时间里,我和他在一块儿聊得很好很投机。)

在接下来的篇章中,Casper历史将会提到……

在接下来的几个篇章中,我将叙述我在定义Casper DAGs的“标准定序”功能上做出的努力。其中将会包括“随区块共识”的探索(发生在前面说的那个帮助我命名Casper的派对之前)。最后,这篇长篇博文将止于2015年7月柏林,在那时的柏林,Vitalik和我终于找到了如何令Casper整合实现最终确定性。


原文链接: https://medium.com/@Vlad_Zamfir/the-history-of-casper-chapter-5-8652959cef58
作者: Vlad Zamfir
翻译&校对: Lola & Elisa

 
0 人喜欢