RChain 建造正确的共识协议

RChain Cooperative (China)
RChain Cooperative (China)
6 min readJun 4, 2018

前言

下面这张图正是第三代区块链平台RChain目前的共识模型进行程序模拟的结果:

看起来很迷人,但这个图片是关于什么的? 它显示了在RChain平台上使用Casper共识算法的过程。 在这里,我们讨论一下“建造正确的Casper”的一点背景知识,它如何应用于RChain,以及如何解释上面的图片。 本文是为那些熟悉分布式共识的人撰写的,因为它适用于区块链; 一些不太熟悉这项工作的读者可以在下面的链接资料中找到有用的信息:

有了上述的一些知识背景,我们可以开始继续探索。

正确的建设(CBC)卡斯帕介绍

正确的设计理念遵循以下步骤:

  • 为您想要创建的事物提供一个抽象(数学)框架;
  • 证明在该框架之后的所有事例都具有某些理想的特性(即证明它是正确的);
  • 在经过验证的正确框架内创建一个具体的东西,与您的用例相匹配。

这种方法的主要优点是确保结果具有需要的属性。 而且,在抽象背景下工作意味着步骤1和步骤2如果具有足够的相似性,可以一次解决许多问题。 例如,抽象共识框架不一定需要参考我们正在寻求共识的具体内容; 因此,单一框架可以为许多不同的区块链系统(不管架构)或事实上我们可能希望多方商定的许多不同的区块链系统生成经过验证的正确协议。

CBC流程前两步的大部分工作已经在分布式,异步,不可靠的共识算法的情况下完成了(细节已经上传到GitHub)。 这项工作是由Vlad Zamfir与Vitalik Buterin,Greg Meredith等人在一个由以太坊基金会发起的研究小组合作完成的。 简而言之,抽象框架将协议本身表示为一种类别,其中对象是协议状态,态射是协议执行,并且定义称为“估计器”的功能,其将协议状态映射到关于共识的可满足的逻辑命题。

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

Vlad和其他人也做了一些工作,将他们的框架应用于我们希望区块链达成共识的情况下(论文上传到GitHub)。该工作的一个关键洞察是,如果需要“证明”作为协议的一部分,则可以很容易地检测到某些拜占庭故障(非协议行为),从而为协议提供进一步的安全性。从这个角度来看,这项工作的主要成果是指定一个非常低消息传递开销的异步和拜占庭容错协议。本文还利用最初由Aviv Zohar和Yonatan Sompolinsky开发的“贪婪最重观察子树”(GHOST)分岔选择规则(这是一个100%有目的的双关语)。 GHOST告诉验证者如何根据他们到目前为止收到的信息来决定建立链条的哪个分支。 GHOST本身的细节可以在弗拉德的论文中找到,但这些细节对于本文不是严格必要的。主要思想是根据与验证器相关的一些“权重”计算链条顶部每个块的“分数”,得分最高的块是被选为新块的父块。

RChain 的 CBC Casper

RChain合作社的开发团队正在以上两个重要和相关的方式构建上述基础性工作:

  • 一致性正在发生在一个块的有向无环图(blockDAG)上,而不是区块链;
  • 通过区块确认和政治资本(PC)引入验证人的代理机构。

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

第二点,验证机构,是以前CBC Casper工作的关键。验证器在块上花费的PC数量对应于GHOST分支选择规则中的权重。因此,拥有更多PC的块更可能仍然是主块DAG的一部分。验证者选择附加到块的PC数量可以被认为是该块成功的“下注”。验证机构的另一方面是确认块的能力。确认声明与新建区块提议不同,不受GHOST分支选择规则的约束,因此验证程序对继续使用哪个blockDAG的分支有更多影响。对块的确认既可以作为支持的表决,也可以作为赢得PC的唯一机制。仅通过确认获得PC是非常重要的,因为这意味着对附加大量PC的新块进行贡献的唯一方式(因此将更有可能保留为主DAG的一部分)是参与共识延长一段时间。

有关协议的更详细描述可以在RChain的wiki上找到。

了解代理的影响

一旦机构被允许进入协议,它基本上变成了一种游戏。 对于诸如RChain之类的股权证明分布式计算平台上的验证器,该游戏的目标是最大化运行智能合约赚取的费用。 这个游戏存在无限多的策略,并不是所有的策略都适合这个网络。 因此,试图确保只有体现所需行为的策略是成功的才是至关重要的。 为此,RChain的Casper模拟引擎已经被编写,以允许尝试不同的策略。 最后,坏角色必须被识别并从网络中解脱出来,但重要的是要首先系统地抑制这种行为,以便为每个人提供更安全的网络。 模拟的目的是帮助我们确保与改善网络的行为相比,不良行为确实是不利的。

模拟得到的数据使我们能够得出关于协议促进行为的结论。 定量数据可以将数字放在陈述之后,就像某种策略是有利的,告诉我们它可能比其他策略好多少。 另一方面,可视化可以提供定量数据的直觉和更深层的解释 — 两者都很重要。 事实证明,RChain的Casper实现看起来非常酷!

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

随着仿真和其他基础工作的继续,像这样的未来图片将有助于理解,并因此有助于确保我们开发RChain作为第三代区块链平台的最安全,最高效的(技术上和功耗方面)一致性算法:正式验证, 快速和可扩展。

要深入了解RChain的CBC Casper方法,请访问开发人员wiki并通过member.rchain.coop以会员身份加入。

*特别感谢RChain合作社成员为本文的编辑和编辑作出贡献(Vlad Zamfir,Greg Meredith,Lawrence Lerner,Leah McKelvie和Patrick Maguire。)

--

--