建构修正版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

【转】建构修正版 Casper 协议相关推荐

  1. 快车 FlashGet 3.1 修正版(1057)

    快车 FlashGet 3.1 修正版(1057) SM发布于 2009-06-25 23:43:23| 2326 次阅读 字体:大 小 打印预览 感谢VxuE的投递 快车(FlashGet)是互联网 ...

  2. PHP ADODB1.99版手册 (修正版)

    PHP ADODB 1.99版手册中文翻译 <修正版> 感谢 记事 PHP ADODB 1.99版手册中文翻译 <修正版> 感谢 记事 PHP ADODB 1.99版手册中文翻 ...

  3. 计算机aoa综合题word,AOA-word综合题操作步骤(修正版)

    <AOA-word综合题操作步骤(修正版)>由会员分享,可在线阅读,更多相关<AOA-word综合题操作步骤(修正版)(7页珍藏版)>请在人人文库网上搜索. 1.AOA-WOR ...

  4. Jquery.LazyLoad.js修正版下载,实现图片延迟加载插件

    之前一直有关注过Jquery.LazyLoad.js这个特效,但一直没有用,这几天研究了一下,并应用于实际中,对网站SEO方面没有什么帮助,不过可以节省一些流量,对于大网站来说显的尤为重要,至于节省了 ...

  5. 刷新系统托盘(清除死掉的图标)修正版

    刷新系统托盘(清除死掉的图标)修正版 2009-08-06 18:50:06|  分类: Delphi |  标签: |字号大中小 订阅 type  TOSVersion = (osUnknown, ...

  6. 通用客户端表单验证函数修正版

    转载:PHPSOHO 通用客户端表单验证函数修正版 主要内容: 一.用法简介: 二.类型定义: 三.程序文件: 历史: 2005.2.25 修改为通用客户端表单验证函数修正版 2004.12.21  ...

  7. 蓝桥杯-c++_ch04_02_修正版(java)

    算法提高 c++_ch04_02_修正版 时间限制:1.0s 内存限制:256.0MB[题目描述]实现一个时间类Time.将小时,分钟和秒存储为int型成员变量.要求该类中包含一个构造函数,访问用 ...

  8. 漫画:什么是二叉堆?(修正版)

    转载自  漫画:什么是二叉堆?(修正版) 什么是二叉堆? 二叉堆本质上是一种完全二叉树,它分为两个类型: 1.最大堆 2.最小堆 什么是最大堆呢?最大堆任何一个父节点的值,都大于等于它左右孩子节点的值 ...

  9. python123九宫格输入法_《啊哈C语言-2016最新修正版》.pdf

    <啊哈C语言-2016最新修正版>.pdf | 啊哈C语言| 后续内容还请关注 [ ] [ ] [[ 网站首页 ]] [ ] [ ] [[ 网站问答 ]] /qa [ ] [ ] [[ 新 ...

最新文章

  1. ML基础 : 训练集,验证集,测试集关系及划分 Relation and Devision among training set, validation set and testing set...
  2. mysql-8.0.17解压版安装步骤及MySQL服务无法启动问题的解决办法
  3. 短 URL 服务,怎么设计与实现?
  4. 更新pip到指定版本
  5. Python老司机给上路新手的3点忠告
  6. 一个简易的反射类库NMSReflector
  7. oracle 对象的审计,初识!聊聊ORACLE的审计功能
  8. pytorch torch.ones
  9. SharePoint 2013 入门教程--系列文章
  10. Sharepoint2010 表单认证常见问题
  11. c 获取char*的长度_C/C++编程笔记:C语言字符串比较函数,超详细,值得收藏!...
  12. AI一周热闻:华为年收入突破千亿美元;英伟达发布城市监控数据集
  13. 百度云 java私塾_JAVA私塾-百度云
  14. 软件测试工程师工作必备模板五件套
  15. 纪念第一次2019河南省第十二届ACM大赛之旅
  16. Python爬虫爬取LOL所有英雄皮肤
  17. Linux下移动硬盘,创建windows,ntfs分区并挂载
  18. 生活中的收支明细该如何记录
  19. Ant Design vue 改变表格背景颜色
  20. python 抛出异常记录

热门文章

  1. js制作秒表计时器代码怎么写
  2. Cookie保存登录状态
  3. QT 中 QCustomplot的用法
  4. 自媒体账号的流量推荐减少了很多?
  5. 使用Picgo自动上传本地图片教程(typora+gitee图床)
  6. linux r语言画图,R语言︱画图
  7. win7计算机服务打不开怎么办,Win7系统localhost打不开如何解决?
  8. exit(0)与exit(1),return三者区别(详解)
  9. 手眼标定详述(坐标系介绍,二维、三维的手眼标定方法@九点法、AX=XB)
  10. Android 清理缓存、优化内存空间