90%合并,10%难度炸弹?
正如在上一篇更新里承诺的,这篇更新会深入介绍合并后的以太坊客户端架构。随着Amphora互操作性活动取得的进展,合并的规范现在已经接近最终敲定?
在我们深入合并的内容之前,先简单介绍一下难度炸弹的最新情况!
ArrowGlacier??
在第124次的核心开发者会议里(视频、推文),我们对难度炸弹的两个时间达成共识:升级在2021年12月进行,推迟到2022年6月。为此,我们需要一次网络升级——ArrowGlacier,它将仅包括关于推迟难度炸弹的EIP-4345。
ArrowGlacier计划在区块13,773,000激活,预计时间会在2021年12月8日。
在核心开发者会议上,我们对冰河时期推迟的多个选项进行了讨论。之所以选择6月,是因为我们有信心“合并”能在此前实现,而且我们想避免在此前再组织一次难度炸弹推迟。
当然,合并和难度炸弹是分开的:它需要单独的一次网络升级,且是基于PoWtotaldifficulty的临界值来激活的。这意味着我们不需要“等待”难度炸弹爆炸才能把以太坊过渡到权益证明。同样地,如果我们在过渡上遇到问题,我们可以决定再次推迟难度炸弹。
Tim Beiko:最新一次以太坊核心开发者执行会议决定将推迟发布Devnet #8:8月4日消息,以太坊核心开发者 Tim Beiko 在 Discord 中总结最新一次以太坊核心开发者执行会议。其中,开发者同意继续使用带有系统写入交易的常规合约,而非预编译。在周一的测试调用之前,开发者将尝试:(1)商定部署方案(作为分叉的一部分或在分叉前手动部署);(2)商定第一个要使用的合约实现;(3)向 4788 规范提交一份反映此情况的 PR。一旦开发者就合约达成一致,将启动审计 / 正式验证流程。
本次会议决定将推迟发布 Devnet #8,直到实现了新的 4788 规范。关于 EIP-6780,将继续合并添加对 EIP-6780 的说明。关于 Engine API,同意将 blobGasUsed 与 blobGasPrice 添加到 4844 交易的收据中。开发者还将修改该 PR,提及 Dencun 升级必须使用 forkChoiceUpdateV3,然后将其合并到「澄清早期 API 对 Cancun payloads 的处理;重新排序检查 #426」中。关于大型验证器测试网,EF 开发团队启动了一个拥有 210 万个验证器的开发网,客户端分布与主网类似,将与客户端团队合作,在 Holesky 启动前检查并修复关于最终确认(finalization)与区块 Gossip 问题。Holesky 计划拥有约 150 万个验证器。
此外,开发者还介绍并讨论了两个账户抽象 EIP 提案,即 EIP 5806 与 7377。Guillaume Ballet 与 josh rudolf 介绍了关于 Verkle 的最新情况。[2023/8/4 16:17:55]
希望ArrowGlacir将是PoW以太坊??到合并之前最后一次网络升级!
USDC以太坊链上发行量突破410亿美元 创历史新高:金色财经报道,1 月 21 日,据最新数据显示,USDC以太坊链上发行量已突破410亿美元,本文撰写时为41,086,368,952.8美元。当前USDC总发行量约为463.3亿美元,除了以太坊之外,Solana链上USDC发行量排名第二,约为4,136,608,844.5美元.[2022/1/21 9:03:28]
合并后的架构?
合并的架构利用了以太坊用于执行链(Eth1)和信标链(Eth2)久经实战的客户端。由于它们已经存在了,继续使用它们是合理的。
概括来说,在合并过程中,客户端将从根据PoW链转为根据PoS链来决定以太坊的最新有效区块。此外,客户端大多数的功能,以及更重要的EVM、它的状态,和它是如何执行交易的,都保持不变。
合并后,现在的Eth1和Eth2客户端分别变成以太坊的执行层和共识层(或叫做引擎)。这意味着Eth1或信标链客户端的节点运行者将需要运行堆栈的“另一半”,以拥有一个完整的验证节点。DannyRyan制作了非常好的图表对其进行说明。它们都已经被铸造成NFT了,所有的收益都将用于奖励合并工作的工程师和研究员。
以太坊开发人员:DeFi的下一阶段应摆脱集中式SaaS:Rotki投资组合追踪器创始人、以太坊开发人员Lefteris Karapetsas提到了DeFi的局限性和矛盾。6月1日,追踪DeFi进程的Defiant社区发布了一份关于基于以太坊的DEX的情况报告。Karapetsas认为,DEX不应该伴随着集中化的投资组合管理。他表示,在交易过程中把集中和去中心化工具结合起来是没有意义的,只有当整个系统没有一点集中化的情况下才能被认为是去中心化的:“交易所只是需要修复的一部分。我们还需要摆脱提供投资组合跟踪和会计服务的集中式SaaS。”
对他来说,在DEX上把数据从去中心化的应用程序传播到集中化的应用程序是一种倒退。因此,当在DEX进行交易时,只应该使用去中心化的投资组合管理系统。(U.Today)[2020/6/2]
合并后的客户端架构。NFT艺术家:DannyRyan
上图展示了合并后一个完整的以太坊客户端的样子。让我们以此为起点,深入到每个组件。
信标节点?
现在,信标节点是对空区块(从终端用户角度来看)达成共识的。这些区块包括与共识相关的信息,称为操作(Operations),比如证明(attestations)、存款合约根和验证者的罚没/退出,但不包括Eth1意义上的交易信息(例如,发送ETH或与智能合约交互)。合并将改变这个情况。
V神:以太坊可能是将全球社会凝聚在一起的粘合剂:金色财经报道,以太坊创始人V神今日在Ethereal峰会谈到了加密货币在冠状病后的世界中的作用。V神称,以太坊可能是将支离破碎的全球社会凝聚在一起的粘合剂。不过,他目前并未预测全球会有大量资金涌入加密货币市场。当被问及他是否认为当前的量化宽松和大型技术审查浪潮会吸引更多的人使用加密货币时,V神同意这些因素有一定的影响,但强调了现在和12年前的金融差异。他表示,关于审查、隐私和制度的担忧都是非常真实的。Tor、Bittotorrent等确实存在着较早的对审查制度的抵制。到2020年,我们肯定会看到(与2008年)相同的一些主题,但在金融方面将较少。[2020/5/7]
在合并发生时,信标节点将监测当前的PoW链,并等待它触达预设定的totaldifficulty(总难度)阈值,被称为TERMINAL_TOTAL_DIFFICULTY(终结总难度)。一旦出了一个区块的totaldifficulty>=TERMINAL_TOTAL_DIFFICULTY,该区块将会被视为最后的PoW区块。随后的区块都开始由信标链上的验证者构建和证明。
要做到以上内容,信标节点将需要与它们的执行引擎(以前的Eth1客户端)通信,并请求它生成或验证ExecutionPayloads(执行数据)。这些数据是Eth1区块合并后的等同物。它们包含这些信息:父块的哈希值(parent'shash)、状态根(stateroot)、基本费用(basefee)、需要执行交易列表。一旦这些信息都被生成或验证了,信标节点将在p2p网络与其他节点分享。
动态 | 以太坊对比特币汇率创年内新低 主流交易所相关交易量增量明显:据 TokenGazer 数据分析显示,截止至 9?月 3 日 11 时,以太坊价格为$177.7,总市值为$19,120.64M,主流交易所交易量约为$136.23M,环比昨日暴涨82.15%;以太坊对比特币汇率再创两年以来新低;基本面方面,以太坊链上交易量、算力有一定抬头,链上DApp交易量保持稳定,新增地址数增速逐渐放缓;以太坊 30 天开发者指数约为 2.28;与 BTC 180 天关联度持续下滑,目前约为0.79;以太坊 30 天 ROI 近期表现不佳;ERC20 代币总市值约为以太坊总市值的 70.29%,保持稳定。[2019/9/3]
合并后的区块:共识层(即信标节点)验证所有现在属于信标链区块的栏位。当它在网络上收到ExecutionPayloads时,它会将其传送到执行层进行验证。
为了在共识层和执行层建立通信,会引入一组新的JSONRPC端点:EngineAPI(引擎应用程序接口)。
EngineAPI??
EngineAPI是共识层和执行层间的通信接口。它不在执行层的公共JSONRPCAPI,而在一个独立的端口。为了简单,对API的调用总是由共识层发起,而API只引入三个方法:engine_executePayload、engine_forkchoiceUpdated和engine_getPayload。让我们逐个看看它们是做什么的:
engine_executePayload(引擎执行数据)要求执行层验证ExecutionPayload是否符合所有协议规则。
在通过这个调用接收到数据后,执行层将返回VALID/INVALID(有效/无效)或,如果它还没同步完链头,则返回SYNCING(同步中)。因为一个区块的有效性是取决于它的父块有效性的,如果执行层缺乏历史数据来评估数据的有效性,它将从网络上获取这些数据。
engine_forkchoiceUpdated(引擎分叉选择更新)?是共识层在网络上告知执行层新的链头和最终敲定的区块的方式。如果共识层需要执行层在最新的链头区块上生成一个新的ExecutionPayload,它会和这个调用一起传送一个payloadAttributes?栏位。
payloadAttributes栏位包含与执行引擎生成一个ExecutionPayload的相关信息,特别是timestamp(时间戳),random(乱数)和feeRecipient(相当于以前的coinbase)的值。在接收到这个调用时,执行层将更新它的链头,根据需要进行同步,以及,如果有需要的话,开始用payloadAttributes的数值构建一个ExecutionPayload。
engine_getPayload(引擎获取数据)请求执行层返回它的最佳ExecutionPayload,它的构建过程已在之前对engine_forkChoiceUpdated的相关调用时启动了。
这就是当验证者必须出块时,它从它的执行引擎获取一个有效区块的方式。其他节点在从p2p层接收到该区块后将调用engine_executePayload来评估其有效性。
......就是这样!有了这三个新的端点,共识层和执行层可以就链的状态和交易数据进行通信。现在,让我们深入了解执行引擎的工作原理。
执行引擎?
如上文所述,执行引擎就是合并后的Eth1客户端。在这点上,任何与共识相关的内容都从它们的权限中移除了。它们的主要重点变成状态管理、区块构建和验证,这些都稍有修改。大部分的修改都写在了EIP-3675。
第一,合并将需要对区块格式进行一些修改。有些仅与PoW而非PoS相关的栏位会被设为0(或它们的数据结构的等同物)。这些栏位不是与挖矿(difficulty,mixHash,nonce)就是与ommers(ommers,ommersHash)有关,它们在PoS上都是不存在的。主网上extraData的长度也将被限制在32个字节上。
第二,由于合并后代币增发仅会在信标链上发生,执行层将不再处理区块和叔块奖励。也就是说。执行引擎将仍然负责处理交易费。事实上,当它创建ExecutionPayload时,执行引擎会确保所有交易发送者至少可以支付当前的baseFeePerGas(每单位gas的基本费用),且任何额外费用都会被发送到feeReceipient(费用接收者)。请注意,feeReceipient指的是“传统”的以太坊地址,而不是信标链验证者。
第三,当PoS取代了PoW,执行引擎将不再广播区块。这意味着将弃用在p2p网络上的NewBlockHashes(0x01)和NewBlock(0x07)的处理程序。同样,执行层将仍然负责同步网络状态,广播交易和维持它的交易池。
下图同样由DannyRyan制作,它展示了当合并发生时执行层弃用PoW转而依赖信标链的过程。
PoW区块不再生成,而信标链区块在合并后开始包含ExecutionPayloads。
PoW区块不再生成,而信标链区块在合并后开始包含ExecutionPayloads。
我们现在已经介绍了客户端如何处理区块以及合并后进行内部通信的核心组件了。现在,让我们简单谈谈系统的的各种相对“边缘”的组件。
P2P网络、用户API和同步?
如本文第一张图表所示,合并后,执行和信标链层都在p2p网络里。除了执行层上区块广播被弃用外,p2p网络上的所有东西保持不变:在它们各自独立的p2p网络上,信标节点将广播证明、罚没等,而执行层将分享交易、同步状态等。
同样,信标链和执行层上的用户API都将保持独立,除了新创建的EngineAPI。
有一个组件是跨越两个层的,就是同步。我们正在为合并前和合并后各种可能的边缘情况开发各种同步策略。它们仍在完善和测试中,并可能成为未来的深入研究主题?
后续工作?
Amphora工作坊后,工作重心一直放在规范的完善和开发测试网的测试中。在未来几周内,预计规范将确定下来,即我们预期不会再有大修改的地步。
同时,Pithos测试网构建并运行起来了,有多个客户端组合每天在上面做测试,计划下周有一个社区会议,让基础设施和工具提供商快速了解合并。到时见??
在Pithos测试网上运行的各种客户端组合
来源:https://pithos-explorer.ethdevops.io/charts
来源|?AllCoreDevUpdates
作者|?TimBeiko
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。