合并:从工作量证明到权益证明

以太坊即将从工作量证明 (PoW) 过渡到权益证明 (PoS) ,这是多年研究和开发的结晶。虽然 PoS 带来了许多潜在的优势,但这也意味着以太坊正在放弃中本聪最"长情"的协议——当然也是最简单、最优雅的共识协议之一,并且已经过去中心化区块链的实战考验。

以太坊 PoS 共识协议中,一个众所周知的脆弱组件已被证明是“LMD GHOST”选择分叉规则,最近发生了多次攻击和打补丁,其安全性仍未得到证明。

在题为“PoS 以太坊不再被攻击 ?”的文章中,我们提出了 Goldfish,它是 PoS 以太坊中 LMD GHOST 选择分叉规则可证明的、安全的替代品。我们认为这只是朝着更严格的协议设计和分析迈出的第一步,目的是加强以太坊的安全性。

以太坊的权益证明协议

以太坊的权益证明 (PoS) 共识协议比 PoW 复杂得多。

它实际上是两种不同共识协议的组合:一个“finality gadget”(称为 Casper FFG),在 6.4 分钟长的 epoch 后最终确定区块,以及在每个 epoch 内管理链的选择分叉规则 fork-choice rule(称为“Greedy Heaviest Observed Subtree”,简称LMD GHOST)。这两个组件以复杂的方式相互交互,下面用框图进行描述:

具体来说,LMD GHOST 指导区块生产过程,并以 12 秒的时间Slot和验证者的子抽样组合运行。因此,它可以被认为是在 PoS 以太坊区块奖励前负责较弱的“短期共识”。一旦就交易账本达成短期共识,它就会被移交给 Casper FFG 进行额外的加固,它在包含 32 个插槽(slots) = 6.4 分钟的时间尺度上运行,并涉及完整的验证器集。因此,Casper FFG 负责提供更强大的“长期共识”,提供最终性和负责任的安全性。

不幸的是,这种复杂性伴随着挑战。特别是,LMD GHOST 组件,以及 LMD GHOST 和 Casper FFG 之间的交互,都存在反反复复的攻击、打补丁。目前为 Merge 采用的协议既没有公开的攻击,也没有正式的安全分析/证明。

缺乏安全证明是令人担忧的原因,但并不是因为简单学术模型中的证明必然完美地表明现实世界的安全性。相反,即使在简化模型中,我们也无法最终解释为什么这个协议是安全的,这表明我们实际上并不了解协议,或者它们的后果和交互的全部范围。

Goldfish

在题为“PoS 以太坊不再被攻击 ?”的文章中,我们提供了 PoS 以太坊的 LMD GHOST 分叉选择规则的替代品。该协议称为 Goldfish,类似于 LMD GHOST(因此不需要对当前客户端实现进行大修),但带有安全证明。

为了更好地理解Goldfish,让我们先预览下 LMD GHOST 的大致工作原理:

假设我们的简化网络模型中消息引起的最大延迟为已知值 A(如上图中的△)。在 LMD GHOST 中,相似步骤得到的值为 2A 。对于每个间隙,从完整的验证者集中随机选择一个提议者和一个小的验证者委员会。在每个slot开始时,slot的提议者运行 LMD GHOST 分叉选择规则(有两个修改,“提议者提升”和“模棱两可的折扣”,它们是响应两个早期攻击的补丁)以确定规范的区块链奖励和提出一个新的区块。

在slot进行到一半时,slot的委员会成员还使用相同的分叉选择规则确定规范的区块奖励,并投票支持该奖励。 LMD GHOST 没有指定确认规则,而是让用户来决定区块树的哪些区块拥有“足够”的票数以确信他们不会离开规范链。

Goldfish 紧密遵循这个一般结构,但为验证者引入了一个额外的阶段,以同步他们对投票计数的看法,并确认区块:

在每个slot的开始,slot的提议者根据前一个 slot 的投票运行简单的 GHOST 分叉选择规则,以确定在哪里提议一个块。进入slot的三分之一时,该时段的委员会成员使用相同的分叉选择规则,该规则基于前一个时段的投票和提议者转发的投票,来确定在哪里投票。 最后,在进入slot的三分之二时,所有验证者都运行一个明确定义的 T 深度确认规则。

Goldfish 基于两种关键技术,投票缓冲和投票到期,以仔细同步诚实验证者的观点:

  • 投票缓冲(也称为view merge,最早出现在新的共识协议 Highway 上)。简而言之,缓冲从网络收到的选票,以及在每个验证者的本地视图中精心定时包含这些选票,保证了在具有诚实提议者的slot中,所有诚实的验证者都投票支持提议者的提议。这导致了重组弹性:诚实的提议者的提议保证保留在规范链中。随之而来的是安全性(即输出账本的安全性和活跃性)。

  • 投票到期(也称为临时投票)意味着在每个slot内,只有前一个slot的投票会影响协议的行为(类似于“健忘”的金鱼,Goldfish 协议名称源于此)。投票到期使投票集很小,这可能会影响诚实验证者的短期未来行动。因此,在任何时间点,只有少数协议消息需要在诚实验证者的视图中进行缓冲和合并。因此,投票到期是投票缓冲效率/可行性的先决条件。投票到期对于支持波动的验证者参与水平以及支持在每个slot较小的子样本选民委员会中运行协议,而不是在整个验证者集中运行协议也至关重要。

最后,Goldfish 的确认规则会确认区块是否在创建后的一段时间内仍在规范链上。分析表明,由此产生的确认翻转概率在出块和区块确认之间的延迟中呈指数级降低。

Goldfish 面临的挑战:异步(Asynchrony)

Goldfish 很简单,可以接受严格的安全证明。这一分析立即取得了成果:请记住,我们一开始就假设我们的简化模型中的网络延迟上限为 A (上图中的△表示) 。在证明安全性的过程中,我们必须明确这一假设和其他假设。

如果违反了这个界限,即如果网络暂时异步,会发生什么?我们可以追踪安全论证的步骤,看看在没有假设的情况下会出现什么问题。我们看到,如果实际网络延迟大于 2A(即当前 PoS 以太坊中的 8 秒),那么 Goldfish 将无法及时获得slot (t-1)的决定性选票以在slot t 的基础上进行构建,该协议可能会受到重组的影响。

这样的重组是不好的。但至少由于严格的安全论点,我们可以更好地了解我们系统的安全性关键依赖于哪些条件,以及为什么以及如何。我们可以做出更明智的决定,以确保满足这些先决条件。例如,虽然在当前的点对点网络协议中,攻击者可能更容易引起一些网络延迟,但最近(也由于与网络相关的数据可用性采样挑战)对强化的点对点协议重新产生了兴趣,这些协议重新启用共识层的权益分配来指导对等点的选择。这样的协议更加抗攻击,并且可以合理地缓解延迟问题。此外,确定性/问责制小工具(最终可能会通过“单槽确定性”进一步加速)为任何重组提供了支持。

还需要做什么

我们提出了 Goldfish 共识协议,旨在作为 PoS 以太坊信标链中 LMD GHOST 的替代品。我们对 Goldfish 本身进行了严格的安全分析,并结合了终局/问责制小工具(基于另一个共识协议,例如 HotStuff)。其他 PoS 以太坊共识安全挑战仍然存在,例如,来自分叉选择和 finality gadget 的交互,我们期待在未来看到 PoS 以太坊在这些方面的进一步共识安全改进。

Paradigm 介绍 Goldfish:PoS 以太坊中 LMD GHOST 分叉规则的安全替代品相关推荐

  1. 以太坊合并后的第一天,让我们来回顾一下 PoS 以太坊的设

    能源消耗 合并后的能源消耗会减少 99.8%.这是可以公开验证的,而排除一切合理的质疑后,可以说使用/运行以太坊不会对环境造成影响.没有,没有,一点都没有.这就少了一个问题,可以说服新手尝试.采用和使 ...

  2. [以太坊源代码分析] IV. 椭圆曲线密码学和以太坊中的椭圆曲线数字签名算法应用

    数字签名算法在Ethereum中的应用不少,目前已知至少有两处:一是在生成每个交易(Transaction, tx)对象时,对整个tx对象进行数字签名:二是在共识算法的Clique算法实现中,在针对新 ...

  3. ftl有三种映射地址_浅谈以太坊中的三种“树”

    无论是比特币还是以太坊,它们都是完全由代码创造出来的,它们的几乎所有一切都是程序执行的结果.对计算机程序有些了解的朋友应该都知道,计算机程序离不开数据结构和算法. 顺便提一下,有部分人不认为比特币和以 ...

  4. 以太坊中metamask、imtoken等钱包签名的php验证

    以太坊中metamask.imtoken等钱包签名的php验证 之前开发Dapp,需要用到以太坊钱包登陆dapp,找了很久没有这方面的库,加密算法倒是有很多,直接重新写了一个库,https://git ...

  5. 以太坊中的nonce

    以太坊创建每个账户时初始nonce=0,以后每次交易nonce+1,防止以太坊中的replay attack. 参考:https://www.bilibili.com/video/BV1Vt411X7 ...

  6. 以太坊中的账户、交易、Gas和区块Gas Limit等基本概念

    本篇文章作为科普文章,汇总整理了以太坊中的账户.交易.Gas和区块Gas Limit等相关概念,以便大家在实践中更好的与具体业务相结合. 什么是账户 以太坊账户与我们所知的账户概念有一定相似之处,却又 ...

  7. 区块链学习笔记16——以太坊中的交易树和收据树

    十六.以太坊中的交易树和收据树 每次发布一个交易的时候,那些交易会组织成一个交易树,也是一颗Merkle tree跟比特币中的情况是类似的,同时以太坊还增加了一个收据树,每个交易执行完之后会形成一个收 ...

  8. 区块链开发(十五)以太坊中的Events和Logs解析及用途

    以太坊中的事件(Events)和日志(Logs)是个特别让人困惑的概念,本文帮大家梳理. 因为上篇文章,我们讨论过以太坊go-ethereum客户端查询交易列表的一些办法,这篇文章,我们具体实现一种f ...

  9. 04.区块链的那些事儿-以太坊中的 Patricia Tree

    本节主要讨论以太坊中存储的 Patricia Tree 比特币只有1棵Merkle树,而以太坊的每一个区块头,并非只包含1棵Merkle Tree,而是包含了3棵Merkle Tree,分别对应了三种 ...

最新文章

  1. ThreadLocal源码分析
  2. 深入浅出谈以太坊智能合约
  3. [android笔记]常用的Uri例子
  4. 冒泡排序(Bubble_Sort)
  5. 【小代码讲解】独热编码(One-Hot编码)
  6. 数据库表扩展字段设计思路
  7. 【oracle】oracle jdbc驱动与c3p0的一个兼容问题
  8. CentOS查看和修改PATH环境变量的方法
  9. U-Boot如何向内核传递Flash的分区信息
  10. ExtJs的Reader
  11. Python爬虫从入门到放弃(二十)之 Scrapy分布式原理
  12. 推荐一些vue.js热门好用的框架组件
  13. 【luogu P2939 [USACO09FEB]改造路Revamping Trails】 题解
  14. java二进制八进制十六进制写法,java 二进制,八进制,十进制,十六进制间相互转换的步骤...
  15. x64技术之SSDT_Hook
  16. oracle sql 拆分字符串,oracle 拆分字符串
  17. c++ 远程监控软件
  18. udl 连mysql_几种常见的数据库连接方法
  19. PTX ISA 7.4 参考手册翻译
  20. 数据大屏适配解决方案

热门文章

  1. 转载(悟透JavaScript )
  2. d盾web查杀 linux,D盾扫描_D盾_Web查杀 [webshell查杀]
  3. 玩转2023国际无人机应用及防控大会 四大吸睛亮点揭密
  4. 菜鸟入门之火狐浏览器扩展和插件使用指南
  5. 物联网Lora模块从入门到精通(五)光照与温湿度传感器
  6. 【2019.07.23 Python每日一题】答案—— 企业发放的奖金根据利润提成
  7. 盒马鲜生To C,美菜网To B:生鲜独角兽的不同成长之路
  8. CCSP评估测试你能考多少分?(文末有答案)
  9. 将Visio文件(.vsdx)导出为更清楚/高质量的图片(.jpg);Visio画完图,保存清晰图片;论文工具Visio 2013
  10. 为什么不用红外图片做人脸识别