大神给你介绍以太坊2.0是什么?分成几个阶段?
编者按:近日,“以太坊君士坦丁堡分叉”成为区块链领域热门话题,而作为以太坊的计划替代方案,真正的“硬菜”——ETH2.0也将逐渐揭开面目。抛开对于枯燥术语定义的解读, James Prestwich讨论下当前的以太坊路线图。同时,他脑洞大开,在这些具体讨论中设想关于以太坊后期阶段可能方向。文章来自Medium,以下为编译全文。
ETH2.0 是什么?
如今,ETH2.0 初始客户端已经上线测试,并预计在三个月内(2019 年第一季度)推出轻量级 ETH2.0 测试网络。首先,ETH2.0 会让以太坊链中的以太币映射过去,但 ETH2.0 设计者最终计划通过将 ETH2.0 成为主链,而 Ethereum 1.X 则是其管理下的分支链来改变这种局面。
对工程师意味着什么?
为了推动这项工作,我打算讨论下当前的路线图,并介绍一些工程上的影响。
分阶段推出
目前,分片路线图(ETH2.0 路线图的两倍)列出了七个阶段。只有阶段 0 有明确的规范,并定期更新。阶段 1 规范的严格性、准确性要低很多,且可能处于消极的开发状态。从阶段 1 后,路线图转变为目标列表,而不再是技术文档。
举个例子,在阶段 2 中,路线图链接到 ethresear.ch 的次数是链接到 Github 的三倍。由于未来的任何一步都更像是推测,而不是工程,因此我们的具体讨论仅限于阶段0、1、2。同时,在这些具体讨论中也涉及几个关于后期阶段可能方向的粗略轮廓概述。
阶段 0: 信标链( The Beacon Chain)
BETH:新的以太币
作为一种新资产类型,Beacon ETH(BETH)仅由信标链上的 Stakers(持币者或用户)使用。BETH 能够以下两种方式创建。
任何 ETH1.X 用户可以通过 ETH1.X 合约购买 1 个 ETH 的 BETH,合约将其称为“存款/充值“(Deposit)。
因此,在 ETH 发送给验证注册合约不久,用户便会收到信标链发布的对应数量的 BETH。这一过程中,可以对充值进行临时审查,但根据 Casper 协议规定,不能对其进行永久性审查。
0 阶段+:入股(staking)
细心的读者会发现 FFG 在分片路线图的“以太坊 3.0”部分的表兄弟 Casper CBC。虽然对 FFG(当然还有 CBC)的细致解读已超出本文的讨论范围。若是感兴趣,可以阅读以太坊创始人 V 神(Vitalik Buterin)关于混合 PoW / FFG 的说明,以及其关于最小化削减条件和 FFG 论文。
用户(stakers)需做些什么?
分片目的在于节点之间分割(Split)分片的状态信息,而无需要求任何节点都同时具备网络的全部图景。基于此,验证者不会验证所有分片。相反,信标链将协调其他分片的验证,所有验证者将进行信标链的验证。
经过一个固定时期(64 个块或约 6.4 分钟),信标链将对验证者进行“洗牌”,并将其随机分配给分片。分配给分片的一组验证者被称为委员会(Committee),其中包括 128 名委员。在阶段 0 中,委员会机制意味着信标链大约每隔 6 分钟就需要选择可用的验证者,随后在接下来的 6 分钟内组成一个完整的委员会;在阶段 1 中,信标链将 1024 个分片指定一个验证者委员会。指定的过程是极其复杂的,涉及多阶段随机数生成过程以及可验证的延迟函数,从而能够阻止试图操纵委员会遴选的过程。
从所有的验证池中随机选择验证者,可以做大限度地减少委员会作为一个整体撒谎或欺骗的可能性。委员会的轮换也能够降低糟糕的委员会可能造成的伤害。换句话说,对于目的不纯或者试图利益最大化的验证者很难将委员会作为攻击网络任何部分的工具。退一步讲,假如验证者获得对分片委员会的控制权,其能够控制的区块也不会超过 64 个。
PoS证明的影响有哪些?
虽然,ETH1.X 的工作量证明(Proof of Work)与 ETH2.0 权益证明(Proof-of-Stake)之间的哲学差异记录是一个持续过程,但值得注意的是,一些 PoW/PoS 特性的差异确实会直接影响到工程师。例如,PoW 链支持无状态简化支付验证(SPV)和工作量证明的非交互式证明(NIPoPoW)远程状态跟踪,但 PoS 则禁止任何低状态通信。主观性阻碍轻状态(State-light)查看证明(Attestations)。
阶段 1:分片
通过一个称为交联(Crosslinking)的过程,分片验证者可以验证分片的内容及状态。简单来说,委员会必须在信标链中包含关于分片(例如根哈希)的可验证信息。在阶段 2 甚至更高阶段,交联将支持跨分片通信(Cross-Shard Communication)。信标链从多个委员会收到给定交联的准确性证据后,信标链就可以相信交联是分片的真实表示,而无需验证整个分片。如果委员会对交联的有效性存在分歧,即很明显其中一个委员会是错误的,验证者应该予以罚没。
这是所有分片的安全根源,即其验证者的不当行为最终会被信标链发现并受到惩罚。
阶段 2:智能合约
最终,阶段 2 会带来一个与我们所熟悉的以太坊相似的系统。随着阶段 2 发布,分片链从简单的数据容器过渡至结构化的链状态。此时,新的以太币 BETH 可实现转让,并且将重新引入智能合约。每个分片将基于 eWASM(我们称之为“EVM2”)管理一个虚拟机。
状态租赁(State Rent)或包含在阶段 2,这也对当前 Solidity 编程语言工程师们提出一些有意思的挑战。状态租赁并不是无限期地存储代码和数据,而是要求合约开发者以及用户在一段时间内为 EVM2 存储付费。通过确保未使用的信息随着时间的推移而脱离状态来防止状态膨胀,最终实现其目标——让用户而不是让整个节点来支付状态成本。人们为此提出不同的模式,“百家争鸣”,但仍没有明确的定论。
随着一些以太坊升级计划推进,以及著名以太坊核心开发者极力举荐,状态租赁可能是不同路线图中唯一重叠的部分。因此,我强烈建议计划在当前部署的合约上对状态租赁的支持,并设计模型,以便未来将状态租赁转移至用户。虽然我们还不曾参透状态租赁的精确设计,但当下能做的是应该为成本制定具体计划。
阶段 3:链下状态存储
阶段 4:分片智能合约
根本性权衡:同步或是扩展
紧密耦合会使得等待处于优先级。在分片通信之前,交易不会执行任何操作。相反,我们可以通过现在执行部分以及稍后执行部分来松散地进行耦合交易。交易在本地分片上执行,然后在跨分片通信之后在远程分片上执行。
关于 ETH2.0 通信模型的信息少之又少。我们知道,该模型必须在牺牲几乎所有扩展优势的情况下提供跨分片合约调用。如果你在这里停止阅读,我不会责怪你,因为阶段 4 只存在思维导图和一些模糊的链接。这种情况的一个不明显的结果就是,ETH2.0 在阶段 4 之前并不会为复杂的智能合约系统提供显著的扩容优势。在此之前,希望与其他合约交互的智能合约必须与一个分片共存,并且局限于该分片的速度和扩容效果。与 ETH1.X 相比,分片可能最多只能获得一个小常数因子的加速量。这意味着在阶段 4 发布之前(2025 年前后),由于其优势不大,没有理由将智能合约代码或用户进行迁移。
基本模型:收据(Receipt)和证明(Proof)
具体收据(Concrete Receipts):分片之间的代币迁移
Yanking(拉拽)
收据是跨分片进行信息传递的一种通用方式。我们可以在收据中放置任何链上信息,甚至包括整个智能合约。Yanking 是一种通过将合同的代码存储包含在收据中,从而实现跨分片合同迁移的提议。合约将从分片 A 中删除(Yanked),然后在收据到达之后在分片 B 上重新部署。合约一旦进入分片 B,其可以直接与分片 B 合约进行通信,并且与分片 B 的状态进行交互。同时,该合约甚至可以被 Yank 回至分片 A。
分片配对(Shard Pairings)
收据旨在使异步(松散耦合)通信成为可能。但我们也可能需要同步通信。为此,我们必须更有创意。通过一个简单设计,分片配对可以实现在紧密耦合执行的同时,尽可能地将麻烦最小化。
分片区域(Shard Zones)
产权负担(Encumbrances)
跨分片(和跨链)通信的一个不明显的特性是,用户可以比所涉及的链更快地获得对消息的信任。Alice 从分片 A 向分片 B 发送 5 BETH,其知道这些资产会在发送后立即到达。Bob 看到交易发送,知道一旦发送至分片 A 上进行确认后,BETH 将到达分片 B。然而,分片 B 及其合约必须等待几分钟,才能使信标链对分片 A 的确认进行最终确认。这意味着资金在分片 A 上花费以后,一个钱包能够很快在分片 B 上进行接收和花费这些资金。换句话说,由于 Bob 很有信心 Alice 已发送足够的 ETH,其将从分片 B 上 Alice 的钱包中获得可执行的 IOU(欠条)。如果分片 B 存在足够多的用户愿意观察分片 A 并接受标准化的 IOU,则分片 A 上的 ETH 可能会在发送之后很快在分片 B 上花费。
共识和状态分离
更复杂和更让人感兴趣的一种方案是将共识过程与状态更新过程分离。
只有在执行区块中包含的所有状态更新后,以太坊矿工和完整节点才接受区块。事实并非如此。相反,其可以先接受区块,而后进行状态更新。在这种情况下,我们不会像在以太坊中那样就系统状态达成共识,而是会对所有分片中所有交易的总历史(或“总顺序”)达成共识。
小结
最重要的是要密切关注研发过程。ETH2.0 是一个复杂且不断发展的系统,所有 DApp 工程师都需要清楚地了解 ETH2.0 计划和进度。