http://www.tzrhsk.com

以太坊 2.0 :合理化与确定性

译者注:提前说明以下信息,也许可以帮助读者更好地理解本文的内容以及我们在翻译用词上的选择:在以太坊 2.0 中,验证者的职责之一是提交 attestation,可以理解为投票;但在一条 attestation 中,验证者投票的内容却有三项,而不是一项:一个是对信标链区块的投票,用于 LMD Ghost 算法,选择出主链;一个是对 epoch(时段)的投票,用于 Casper FFG 算法,敲定检查点;检查点以前的区块将不可逆转,而检查点也会成为新一轮 LMD Ghost 算法的起点(可以想象成不断刷新的创世状态);还有一个是对分片链状态(crosslink)的投票,用于确定分片链的最新状态。虽然都属投票,但不同类型的投票指向的具体内容不同,为整个系统贡献的属性也不同。本文所讲的内容,即是与 Casper FFG 相关的投票,关键概念是 justification 和 finalization。虽然文章后面也谈到了 LMD Ghost,但应当把 LMD Ghost 和 Casper FFG 当成相互独立但可互补的两个东西。

有鉴于此,虽然有译者将 attestation 翻译为 “证明”,但我们决定对上述所有概念都采取与其字面意义更接近的翻译、不将任何一个概念翻译为 “证明” 或是 “投票”,以免造成更大的混淆。

如果你对以太坊 2.0 中辩护(justification)与确定化(finalization)等术语感到一头雾水,你绝对不是唯一搞不清楚的人;让我们通俗地解释这两个词究竟是什么意思。

我们先聊聊,确定性(finality)到底指的是什么?你一定已经注意到,不论是使用密码学货币平台或 dApp ,都要等到数个区块产生后交易才能被确认(confirmed)。这是个相对?可靠的办法(但并不是 100% 的保证),让你确定交易的状态且交易不会被逆转,也就是所谓的确定性。

以太坊 2.0 提供了一种确定性保障——将上链交易变成一个记录在区块链上的客观事实,而不仅仅是 “该交易可能会保留在最长链上” 而已。这很重要,如果区块能够及时确认,那么链上的交互行为就能进行得更快更完备。

我们再搞清楚一点,先从一些定义开始。

注意:后面的内容涉及比较多底层技术,不过仍会像 2.0?系列?的其他文章一样简单易懂。如果发现任何需要添加的内容,请联系我。

在谈论细节之前,我们先理清楚几个定义:

LMD GHOST:最新消息驱动型 GHOST 算法( Last Message Driven Greediest Heaviest Observed SubTree),以太坊 2.0 的分叉选择规则。

Casper FFG:Casper FFG 协议( Casper, the Friendly Finality Gadget),以太坊 2.0 用于提供确定性保障的协议。

分叉选择规则:一种机制,给定整条区块链,可以输出从创世块到区块 S 的区块链路径,并让 S 所在的链可以被认为是权威链(也称 “主链”、“根链”)。

epoch:在以太坊 2.0 中,指的是时长 6.4 分钟的时间单位,每个 epoch (时段)包含 64 个 slot(时隙,每个时隙为 6 秒 )。

不一定每个时隙都能产生区块,而 epoch 中最后一个 slot 称为边界时隙(boundary slot),或称为检查点(checkpoint)。

所谓委员会(committee),就是随机选出的一个验证者集合;每个委员会都会被分配到一个具体的时隙中,委员会中第一位验证者负责出块(propose block),其他验证者则来见证(attest)该区块。

有了这些概念,接下来让我们开始讨论辩护(justification)与确定化(finalization)。

Casper FFG

Casper 是一种用于合理化(justifying)及敲定时间段的方法(既适用于一般的区块链网络中的区块,也适用于以太坊 2.0 中的 epoch)。它是一种通用的 “小工具”, 能够被添加到任何区块链中;不过在 PoS 区块链上才能发挥 Casper 的最大用处。

确定性(Finality)是一种概念,即两个相互冲突的检查点不可能都被确定下来(不可逆转);亦可称作经济确定性,因为一旦两个相互冲突的检查点都被敲定,则系统中至少有 1/3 的验证者会被罚没押金。你可能会有疑问,为什么 1/3 的验证者会被罚没押金?一旦出现两个相互冲突的检查点,意味这两个检查点各自收到 2/3 以上的验证者投票;因为最终只有一个检查点能成立,所以至少会有 1/3 的人重复投票。这 1/3 重复投票的验证者会被认为是恶意参与者而被罚没押金。为了避免这样的无效操作,验证者最好的办法就是在每一轮投票前确认信标链的状态,然后给合适的检查点投票。那么如何理解 “检查点确定成立” 中的?“确定”?呢?我们得先聊聊合理化(justification,上文称为 “辩护”)。合理化(Justification)指的是验证者对检查点进行投票、并决议出哪个检查点要置于当前信标链的最前端的操作。只要超过 2/3 的验证者(即绝对多数)对一对 epoch?(例如 source epoch S -> Target epoch T,即来源时段和目标时段)达成共识,我们会说这两个 epoch 被合理化了( justified );不论这两个 epoch 当中有没有被跳过的 epoch ,只要同一列中的两个 epoch 被合理化了,则我们称前一个 epoch 被敲定了(finalized)。注意:为了方便理解,上述是大幅简化过后的定义;还有其他影响因素,但不在本文讨论范围中。所以说,一个 “已确定(finalized)” 的 epoch 肯定经过合理化(justified);反之,一个 “合理化(justified)” 的 epoch 则不一定确定了,还存在反转的可能。一旦 epoch 达到 “最终” 状态,就难以被更改。提醒一下,当我们说验证者在进行证明/确定时,并不是指验证者对 epoch 本身投票——这听起来好像某些人在用投票来决定当时是什么时间一样(我们都知道当前是哪个时间,根本没必要投票)。验证者其实是对这些 epoch 中的内容——它们各自最后时隙(边界时隙)的根状态,进行投票。因此验证者通过对 epoch 投票进行 证明/确定,来选择区块链的最新有效状态(译者注:原文如此。但这么说也有点引人误解)。复联 4 的终局之战,奇异博士看到了平行世界中的 1400 万种可能。在这些平行世界中,时间呈线性进行,每一天、每一小时都在所有世界中同时发生;但在所有这些世界中,只会产生一个可取的结果——其它结果都是分叉。LMD GHOST

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