以太坊2.0:如何实现最终性?

前言

如果你在了解有关以太坊2.0的过程中遇到过justification(证明)和fnalization(最终性)这两个术语,但却不知道它们是什么意思,希望本文能给你一些启示。

首先,我们试着来理解什么是

?finality(最终性)。

你一定已经注意到,加密货币平台和Dapps(去中心化应用)通常都会等待几个区块被敲定之后才会将你的交易视为“confirmed(已确认)”状态。

这是一种确保某笔交易已经是“近乎”确定的,或者说该笔交易“几乎”是不可逆转的方式,也就是说,这笔交易已经被“finalized(敲定了)”。

以太坊2.0能够提供finality(最终性)的保证,这是以太坊区块链奉为神圣的客观事实,而不是一种“近乎”的状态。这是非常重要的,因为这能够带来更快的链上通信,即如果某个区块刚刚被敲定了,那该区块将无需等待多次确认。

也就是说,

基于工作量证明的区块链(比如比特币)从未包含让交易真正实现最终性的特性;

而以太坊2.0链旨在提供比工作量证明更强大的最终性保证。

我们来更加具体地加以说明。首先来看几个定义:

LMDGHOST是以太坊2.0使用的分叉选择规则(即用于决定哪条链是“权威链”的规则),全称是“LastMessageDrivenGreediestHeaviestObservedSubTree(由最新消息驱动的GHOST)”

以太坊核心开发者共识会议:将为 Deneb 升级纳入与测试 EIP-4788、EIP-6987:5月7日消息,Galaxy 研究副总裁 Christine Kim 发文总结第 108 次以太坊核心开发者共识会议。其中,开发者同意考虑将 EIP-4788、EIP-6987 纳入 Deneb 进行测试。EIP-4788 将启用执行层上的共识层状态证明,以通过智能合约进行无信任验证。此前 PR #3175 正处在格式化为 EIP 的过程中,将改为 EIP-6987,即出于安全考虑,防止罚没(slashed)验证节点被选为区块提议者。开发者讨论了在 Deneb 规范中引入一个额外的变量与常量,以允许执行层具有更大的弹性,以独立于共识层调整每个区块的最大 blob 交易数。以太坊核心开发者 Tim Beiko 提醒共识层客户端团队,通过 EIP-4844 引入的新 SSZ 类型应在多大程度上与即将到来的 SSZ 升级兼容或针对当前 RLP 标准进行优化,仍然不确定。Ryan 表示,目前在 EIP-4844 中使用「flat hash」的 SSZ 类型是两头吃亏的,因为它没有为 RLP 格式化,但也没有利用完整的 SSZ 序列化的优势。开发者将在下周的 ACDE 电话会议上继续讨论这一问题。此外,信标链证明子网(attnet)的改造已于 5 月 4 日推出。开发者还在信标链 API Github 存储库上讨论了 PR #317。

考虑到最近的 MEV-Boost 漏洞攻击,中继现在在通过 gossip 上广播前会验证区块内容。该功能需要 Lighthouse 与 Prysm 客户端的自定义分叉。Lighthouse 客户端开发者 Michael Sproul 提出了一个标准查询参数,用于在所有共识层客户端中启用相同的功能。Prysm 客户端开发者 Terence Tsao 表示,在某些方面引入次功能会增加对 MEV-Boost 的依赖性,MEV-Boost 是一种用于在以太坊上赚取 MEV 的临时软件,应该弃用它以支持 PBS。[2023/5/7 14:48:23]

CasperFFG是以太坊2.0使用的权益证明(PoS)机制,全称是“CaspertheFriendlyFinalityGadget(Casper友好的最终性小工具)”

数据:Tether在以太坊网络增发5亿枚USDT:据欧科云链OKLink数据显示,北京时间2021年04月28日21:41,Tether在以太坊网络增发5亿亿枚USDT。

交易哈希为:0x7afacbd62b55be71e12b487907547d4364e540bcf6565ad6c0883e50e8556c34。[2021/4/28 21:08:40]

在以太坊2.0链中,每生成64个区块(大约需要6.4分钟)称为一个epoch;

在以太坊2.0系统中,slot是生成一个新区块所需的时间,即一个新区块被提议及证明其正确性所需的时间。每个slot被设定为6秒,但不是每个Slot期间都会产生新的区块。每个epoch期间的最后一个slot被称为checkpoint(检查点)。

Committee(委员会)是由信标链在每个slot期间随机选择的验证者集合(每个委员会的目标验证者数量是128名),每个委员会中第一名被随机选择的验证者将有机会在该slot期间提议新区块,该委员会的其他验证者将对这个被提议的区块进行证明(attest)。

基于上面这些信息,我们继续探讨Justification(证明)和Finalization(最终性)。

CasperFFG

Casper是一种用于证明和敲定区块?(不管是一般的区块链平台还是以太坊2.0链中的epoch期间产生的区块)?

数据:以太坊交易量在过去24小时内显著增加:1月4日消息,在过去的24小时内,ETH价格飙升了30%,自2018年1月以来的三年内首次突破1000美元。从2020年3月的价格暴跌开始,ETH的价格已经翻了10倍。随着CME下个月将推出以太坊期货,投资者对即将到来的机构投资者浪潮更加兴奋。此外,ETH日交易量刚刚超过500亿美元,之后价格便开始飙升。Glassnode数据显示,以太坊交易量(1d MA)在过去24小时内显著增加。当前值为220396.130 ETH(比105789.214 ETH上涨108.3%)。(CoinGape)[2021/1/4 16:23:44]

的方式。Casper是一种通用的“小工具”,可以添加到任何需要实现最终性的区块链中,但Casper在PoS区块链中最为有用。

以太坊2.0中的最终性是这样一种概念,即

系统确定将不会存在两个相互竞争的、敲定的检查点(checkpoints),而当这种情况发生时,至少三分之一的活跃验证者将被被罚没(slashing)。我们称之为经济最终性(economicfinality)。

你也许想问,为何是三分之一的验证者将被罚没?我们知道,

在以太坊2.0系统中,必须保证有三分之二的验证者是诚实验证者来参与验证(也即进行投票),因此如果系统出现两个相互竞争的、敲定的检查点,则意味着有三分之二的验证者对其中一个检查点进行投票,同时也有三分之二的验证者对另一个检查点见投票,也就是说,至少有三分之一的验证者对这两个检查点都进行了投票,这部分验证者就会被系统认为是恶意验证者,因此会受到罚没惩罚。

以太坊扩容项目 Matter Labs 为 Curve 推出首个 zkSync 二层智能合约测试网:以太坊扩容项目 Matter Labs 为稳定币兑换平台 Curve 推出首个 zkSync 二层智能合约测试网「Zinc Alef」。Matter Labs 现已引入 Zinc 编程语言和对 SNARK 友好的 Zinc VM (虚拟机),并为以太坊实施了递归 PLONK 证明验证。目前,必须使用 Zinc 编程语言来编写 Zinc VM 智能合约。zkSync 二层网络中的所有合约都将能够以与以太坊主网上完全相同的方式互相调用。目前,测试网功能齐全,用户可编写智能合约并将其部署至测试网,然后对此进行本地测试,并生成智能合约执行的零知识证明。每笔交易都将导致 zkSync 测试网上的真实代币发生转移,也会反映至区块浏览器和钱包中。不过,Zinc VM 尚未集成至 zkSync core 中,Zinc 编程语言中的一些重要功能也可能会丢失。Matter Labs 将根据社区的要求优先开发该功能。另外,Matter Labs 正在与其他团队合作开发通用的以太坊二层签名标准,这将提升围绕二层合约进行交互的用户体验。此前报道,今年 6 月份,Matter Labs 在以太坊主网部署了 Layer 2 扩展工具 zkSync。[2020/10/10]

对于验证者来说,最大的利益来源于正确地对信标状态进行敲定,而不是进行不当的恶意操作。

那么“敲定的检查点”中的“敲定”是什么意思呢?在对此进行解释之前,我们需要解释一下什么是“justification(证明)”。

现场丨以太坊基金会总法律顾问:区块链要从传统金融行业学习:金色财经7月17日现场报道,在新加坡“世界区块链峰会暨第二届国际区块链游戏论坛” 之“区块链的下一站”圆桌论坛上,以太坊基金会总法律顾问Tju Liang表示,目前来讲区块链行业较为新兴,用户、企业的规则如何制定都有待探讨。应该为行业提供更多空间去解释、理解相关的指导原则。区块链要从传统金融行业学习,避免曾经发生的错误。Tju Liang同时指出,区块链是一种通讯的技术,改变了人和人之间的关系,而这种改变正如互联网带给人们的变革一样,目前的还无法想象其巨大的能量。[2018/7/17]

证明就是验证者通过对检查点进行投票,从而决定哪个检查点才是信标链的顶端区块。如果三分之二的验证者(也即绝大多数验证者)对两个连续的epoch达成共识,这样

这两个连续的epoch被证明了(justified),前一个epoch就被认为是敲定了(finalized)。

注意:上述定义在很大程度上进行简化了,目的是为了方便理解。一些其他的因素也会参与其中,但这超出了本文的范围。

因此,一个“敲定了的”epoch实际上就是一个已经被“证明了的”epoch,但其中存在一个关键的区别——当某件事被“证明了”,你仍然可以把时间倒流回去重新证明;但当你“敲定了”某件事,那重写历史就变得非常困难。

也就是说,

某件事“敲定了”就一定意味着这件事已经被“证明了”,而某件事被“证明了”不一定意味着这件事已经“敲定了”。

应该注意的是,当验证者对epoch进行证明或敲定时,并不是说验证者正在对epoch本身进行投票,而应该说验证者正在对epoch期间的“内容”进行投票/验证,这个“内容”就是每个epoch期间的最后一个slot(即检查点)的状态根(stateroot)。

因此,

验证者是通过投票的方式来对epoch进行证明/敲定,这就是验证者对以太坊区块链的最新已知有效状态进行投票的方式。

LMDGHOST

这就是分叉选择规则发挥作用的地方。

GHOST实际上是一种在PoW(工作量证明)和其他区块链平台非常受欢迎的协议。GHOST协议遵循“最重的”子树(the“heaviest”subtree),也就是最长的那条链。

在比特币区块链中,“最重的”分支就是那条在其区块中投入了最多算力的链,这条链也就是最长的链。显然最长的链就是我们所说的“权威链(canonicalchain)”,但这条链依旧有可能切换为另一条分叉链(虽然可能性很小),因此

最长链的最终性是概率性的。

LMD让“消息(messages)”发挥了作用,即以太坊2.0链上的最终性是“由最新消息驱动的”。消息就是证明(attestation),所有这一切归结起来就是,

拥有最多投票的分叉链将被认为是“权威链”。

上图中体现了由最新消息驱动的分叉选择规则:绿色区块表示经由LMDGHOST分叉选择规则证明了的区块,笑脸符号表示最新的验证者证明(attestations),某个区块中的证明总量(笑脸总数)就是该区块的权重,用区块中的数字表示。

在上图中,尽管位于上方的那条分叉链是最长的链,但

下方的那条由绿色区块组成的链才是“权威链”

,因为绿色区块包含了最多的证明,也就是拥有最多的验证者投票。

Gasper

在以太坊2.0链中,Casper和LMDGHOST一起就构成了驱动以太坊2.0系统的共识协议。

让我们看看这张来自以太坊研究者JustinDrake在EthCC会议上演讲有关Eth2.0时使用的幻灯片。

幻灯片1

上图中,两个虚线框展现了在分叉选择中的非法情况。上方靠左的虚线框展现的是,如果在同一时间投票给两个不同的状态根,那就是非法的投票,也就是说,

你不可以在同一时间投票给两个包含不同内容(状态根)的epoch?。

上方靠右的虚线框展现的是,

你不可以跳过某些epoch而对之后的epoch进行投票,换句话说,你在投票给当前的候选epoch之前,不可以投片给将来的epoch。

上图的下方部分展现的是两条被敲定了的分叉链。第一个和第二个以红色圆点表示的epoch是已经被敲定了的“权威链”,因为这两个epoch之后紧跟了第三个和第四个(以红色圆点表示的)epoch。但是,第三个和第四个epoch在两条平行的分叉链中都存在,那

这两条分叉链哪条才是属于“权威链”呢?

我们看第二张幻灯片。

幻灯片2

根据上文所述,在同一时间投票给两个包含不同内容的epoch是非法的。在幻灯片2中的下半部分包含两条分叉链的情况下,上面的分叉链中的两个epoch(红色圆点)已经被敲定了(finalized),因此似乎上面的这条分叉链是有效的;但位于下面的那条分叉链也包含了两个已经被敲定的epoch,

但这两个epoch被敲定的时间更晚一些!

幻灯片3

这就意味着位于下面的分叉链是无效的分叉,因为如果跟随下方那两个被敲定的epoch继续进行投票,这将意味着一个最新被投票的epoch将跟随一个来自于另一条分叉链的epoch。这是非法的,因为

敲定的检查点是必须按时间顺序排列的。如果发生了这种情况,那大量的验证者将受到很严重的惩罚,因为大多数的验证者把票投给了一条“非法链”上的epoch。因此,这些验证者必须被惩罚。

就是这样了!如果你是验证者,请确保每个slot期间只投一次票,并且确保你投的是也是其他人正在投的。要避免被罚没!(别担心,这些都将内置到你使用的以太坊2.0客户端中)

希望本文能让你更加清楚地了解justification?和finalization。如果你还有不清楚的对方,请告知我(推特@bitfalls)!非常感谢DustinBrody、MamyRatsimbazafy、JustinDrake以及DannyRyan对撰写本文的帮助!

作者:Bruno?kvorc

编译:Summer

来源:Unitimes

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

银河链

[0:15ms0-1:866ms