【转】建构修正版 Casper 协议

建构修正版Casper协议| 区块链共识的可视化未来

第三代区块链平台 Rchain 目前的共识模式,看起来长这样:

这个动画看起来十分吸引人,但它到底讲的是什么呢?这个动画展示的是 RChain 使用的 Casper 共识算法发展的进程。在这里我们将讨论一些建构修正版 Casper 协议(编者按:也就是 Vald 版的 Casper)的背景——它是如何被实施在 RChain 上的以及如何阐释上图。本文针对对应用于区块链的分布式共识有一定了解的人;对于这方面背景不是特别熟悉的读者可以考虑查看以下链接:

  • Vlas Zamfir 所写的介绍:Casper the Friendly GHOST(Casper 友善的小精灵);
  • RChain 开发者之间的讨论:Casper at RChain developer’s retreat;
  • RChain 系列:简介,作者是来自 Coinfund 的Alex B。

就这样,让我们开始吧!


建构修正版Casper协议简介

使用建构修正设计理念遵从一下步骤:

  1. 为你想创造的东西设计一个抽象(数学)的框架
  2. 证明该框架下的所有实例都具有一些必备的属性(即证明它是正确的)
  3. 在验证正确的框架内创造一个具体的,与用例匹配的实例。

这种方法主要的优点是可以确定该结果具有你所需要的属性。而且在一个抽象的背景下工作意味着一旦步骤1,2有足够的相似度,那么实际上可以解决许多问题。例如,抽象的共识框架不一定需要参考我们寻求共识的具体内容;因此,一个框架可以为许多不同的类区块链系统(不论其架构)或者任何我们希望多方达成一致的系统产生验证正确的协议。

CBC 协议的前两个步骤的大部分工作已经完成,主要用于分布式的异步且无需信任的共识算法(已经上传到了 Github)。这项工作是由 Vlad Zamfir 与Vitalik Buterin, Greg Meredith 以及以太坊基金会成立的研究小组的其他人共同完成的。简而言之,抽象框架将协议本身表示为一类,其中对象是协议状态,态射(编者注:这里有态射的维基链接)是协议执行,并且定义了一个被称为“估计器”的功能,其将协议状态映射到关于共识的可满足的逻辑命题。

该框架所具有的一个特性就是“共识安全性”。这意味着只要两个协议状态有相同的未来状态(即,有一对协议执行使两个状态会转变成同一状态),那么任何命题的每个状态都不能相互矛盾。换句话说,共识总是可以达到的。

Vlad 和其他人也完成了将他们的框架应用于区块链共识实例的工作(论文已经上传到GitHub)。该工作的关键点是,如果需要“理由”作为协议的一部分,那么特定的某些拜占庭故障(非协议行为)可以很容易检测到,从而为协议提供进一步的安全保证。由此,这项工作的主要成果是使用极低的消息传递开销指定异步且拜占庭容错的协议。该论文使用了最初由 Aviv Zohar 和 Yonatan Sompolinsky 开发的贪婪最重观察子树(GHOST)分支选择规则(这是一个100%的双关语)。GHOST 告诉验证者如何根据他们目前收到的信息来决定继续挖矿的分支。GHOST 本身的细节可以在Vlad的论文中找到,但是这些细节对于本文来说并不是必须的。GHOST的主要思想是根据验证者相关“权重”计算区块链每个分支末端区块的“分数”。得分最高的区块被选为新区块的父块。


RChain的CBC Casper协议

RChain合作社的开发团队正通过两个重要且相关的方法进行上述基础工作:

  1. 发生在区块有向无环图(blockDAG)而非区块链上的共识;
  2. 通过区块确认以及政治资本(Political capital,下文缩写为PC)引入验证者代理。

第一点意味着一个区块可能有多个父区块以及多子区块。DAG结构允许对多个区块进行确认(按照第二点)。这反过来又起到了“加入”的作用,使得相互独立的分支可以合并成一个分支,从而减少达成共识所需的时间。

第二点,验证代理,这是与之前的CBC Casper协议最主要的区别。 验证者在区块上花费的 PC 数量与 GHOST 分支选择规则中的权重相对应。因此,拥有更多 PC 的区块更有可能成为主区块 DAG 的一部分。验证者选择的附加到区块上的 PC数量可以被认作对该区块成功的“下注”。验证代理另一方面拥有确认区块的能力。确认区块与提出新区块不同,其不受 GHOST 分支选择规则的约束,因此验证者对区块 DAG 分支的选择上有更大影响。区块的确认服务既是对所支持区块的投票,也是获得 PC 的唯一机制。仅通过确认区块赚取 PC 是非常重要的,因为这意味着对附加了大量 PC 的新块进行贡献的唯一方式(这样该区块将更有可能被保留成为为主DAG的一部分)是更长时间地参与共识。

有关该协议更详细的描述可以访问RChain的wiki。


对代理产生的影响的理解

一旦代理被允许加入协议,它就变成了一个游戏。对于在像 RChain 这样的权益证明分布式计算平台上的验证者来说,游戏的目标是最大化运行智能合约所赚取的费用。这个游戏存在着无数的策略,但并不是所有策略都是对网络有益的。因此,关键是确保只有表现出所期望的行为的策略是成功的。为此,RChain的Casper模拟引擎被开发出来以允许尝试不同的策略。最后,恶意角色必然会被识别出来,并被逐出网络,但在这之前系统化地抑制这种行为是十分重要的,这样可以使得网络更加安全。仿真模拟的目的是帮助我们确认不良行为与改善网络的行为相比确实是不利的。

仿真模拟的结果实际上就是它产生的数据。后仿真数据可以让我们对该协议所促成的行为得出结论。产生的数据是定量数据时可以把数字放在某些句子后面,例如某种策略是有利的,这样可以清晰的告诉我们该策略究竟可能比其他策略好多少。另一方面,可视化可以为定量数据提供直观且更深入的解释——这两者都是十分重要的。事实证明,RChain 上的 Casper 实现看起来非常酷!

本文开始处的图像是由仿真生成的,其显示了与三个验证者一起工作的 Casper。节点(圆圈)对应于 DAG 中的区块,并根据创建它们的验证者进行着色。起始处的单个橙色节点是创世区块。节点的大小与在该块中运行的合约的数量成比例(最小的节点没有合约但是被确认了)。箭头是父区块指针。红色箭头对应于主 DAG 中的连接,由 GHOST 分支选择规则确定,黑色箭头则是已经被丢弃了的分支或者尚未确认的分支。

随着仿真和其他基础工作的继续开展,像这样的图片将有助于理解并能帮助我们确保为作为第三代区块链平台的RChain开发了最安全,最高效(技术上以及能耗方面)的共识算法:可形式化验证的,快速的,可扩展的共识算法。

 


链接: https://medium.com/rchain-cooperative/a-visualization-for-the-future-of-blockchain-consensus-b6710b2f50d6

你可能感兴趣的:(区块链,共识算法)