区块链网站|NFTS BTC教学指南 以太坊漫游指南

以太坊漫游指南

广告位

以太坊漫游指南

第一部分:丹克斯哈丁之路。详情请参考——以太坊漫游指南(第一部分)和以太坊漫游指南(第二部分)。

第二部分-历史和国家管理

以下是一些基础知识的快速回顾:

历史链条中发生的一切——。历史不需要快速访问,可以放在硬盘上。从长远来看,历史是n个诚实假设之一。状态——所有往来账户余额、智能合约等的快照。完整的节点(目前)需要掌握状态以验证事务。状态对RAM太大,硬盘太慢(状态放SSD里)。高吞吐量区块链的状态正在扩展,其增长率远远超过了我们日常笔记本电脑上可以保存的数据量。如果日常用户无法维护这些状态,就无法充分验证,这与去中心化背道而驰。简而言之,状态非常大,所以如果让节点持有状态,运行一个节点会非常困难。如果跑一个节点太难,我们普通人是不会去做的,所以需要确保不会出现这种情况。

呼叫数据气体和总呼叫数据限制的成本降低(EIP-4488)

Proto-danksharding是向danksharding的一个很好的过渡,它满足了很多最终需求。在一个合理的时间范围内实现原型danksharding,可以提前Danksharding到来的时间线。

一个更简单的应急方案是EIP-4488。虽然没那么优雅,但是解决了燃费的燃眉之急。不幸的是,EIP-4488没有意识到到达丹克斯哈丁所需要的中间步骤,所有不可避免的变化在未来仍然需要做出。如果我们认为Proto-danccharding比我们预期的要慢,我们可以通过EIP-4488快速解决拥塞问题(只需要修改几行代码),然后在六个月后使用Proto-danccharding(时间可能会有变化)。

EIP-4488有两个主要部件:

将calldata的开销从每字节16 gas降低到每字节3 gas,每个块增加1MB的calldata限制,每个事务量增加300字节(理论上约1.4MB)的目的是为了防止最坏的情况发生。——一个块的calldata会达到18 MB,远远超出以太坊的容量。虽然EIP-4488提高了以太网的平均数据容量,但由于其calldata的限制,以太网的突发数据容量实际上会略有下降(每calldata字节3000万gas/16 gas=1.875 MB)。

由于EIP-4488的呼叫数据和一个月后可被删除的数据块,EIP-4488的持续负载远高于Proto-danksharding。当使用EIP-4488时,历史数据的增长将明显加快,这将成为运行节点的瓶颈。即使EIP-4444和EIP-4488同步实现,执行负载历史也只会在一年后被删除,所以很明显,Proto-danksharding较低的持久负载更可取。

在执行客户机中约束历史数据(EIP-4444)

EIP-4444允许客户端在本地删除一年以上的历史数据(块头、块体和收据),这迫使客户端停止在p2p层提供此类已删除的历史数据。删除历史数据允许客户端减少用户的磁盘存储需求(目前为数百GB,并且还在增加)。

删除历史数据是非常重要的,但如果EIP-4488被实施,它将是强制性的,因为EIP-4488的实施将显著增加历史数据。无论如何,我希望这能在较短的时间内完成。最终会需要某种形式的历史数据,所以现在是处理它的好时机。

链的完全同步需要历史记录,但验证新块不需要(只需要状态)。因此,一旦客户端同步到链的顶端,只有在JSON-RPC上被显式请求时,或者当对等体试图同步链时,才会检索历史数据。随着EIP-4444的实施,我们需要找到替代解决方案。

客户端将无法像现在一样使用devp2p进行“完全同步”。——它们将从被视为创建块的弱主观检查点执行“检查点同步”。

请注意,弱主体性是在转向PoS的过程中诞生的,不是新的假设。我们需要使用一个有效的弱主观检查点来同步,以防止远程攻击的可能性。这里假设客户不会从无效或旧的弱主观检查点进行同步。这个检查点必须在我们开始删除历史数据的时间段内(也就是一年内)存在,否则p2p层将无法提供所需的数据。

随着越来越多的客户端采用轻量级同步策略,网络的带宽使用率也会降低。

恢复历史数据

EIP-4444在一年后删除历史数据,而Proto-danksharding删除blob更快,大约一个月后删除。我们肯定需要这些,因为我们不能要求节点存储所有这些数据并保持分散状态:

EIP-4488 ——的长期运行可能包括每个插槽约1MB,每年增加约2.5TB的存储空间。Proto-danksharding ——的目标是每个插槽大约1MB,每年增加大约2.5TB的存储空间。Danksharding 3354的目标是每个插槽大约16MB,每年增加大约40TB的存储空间。但是这些被删除的史料在哪里呢?难道我们还不需要他们吗?是的,我们仍然需要它。但是请注意,历史数据的丢失只会对个别应用造成风险,而不会对协议造成风险,所以以太坊核心协议的工作不应该是永久维护所有这些约定的数据。

那么,谁来存储这些数据呢?以下是一些潜在的贡献者:

个人和机构志愿者、块探索者(如etherscan.io)、API提供商和其他数据服务提供商以及第三方索引协议(如TheGraph)可以创造一个令人兴奋的市场。客户可以向服务器支付历史数据和Merkle证书。门户网的客户端(目前正在开发中)可以随机存储部分链历史,门户网会自动将数据请求定向到BitTorrent等节点,每天自动生成并分发一个包含block blob数据的7GB文件。特定于应用程序的协议,如rollup,可能要求其节点存储与其应用程序相关的历史部分。长期数据存储是一个相对容易解决的问题,因为正如前面所讨论的,它是一个n分之一的信任假设,我们距离它成为区块链可伸缩性的最终极限还有许多年。

弱无状态

现在我们很好地掌握了管理历史的方法,但如何处理国家呢?这其实是目前以太坊提升TPS的主要瓶颈。

所有节点都使用前一个状态根来执行块中的所有事务,并检查后一个状态根是否与块中提供的事务匹配。为了知道这些事务是否有效,需要掌握当前的状态,也就是验证是有状态的。

进入无国籍状态意味着你不需要用你已经掌握的状态去做一些事情。以太坊正在努力实现‘弱无状态’,这意味着验证块不需要状态,但在构建块时需要。验证变成了一个纯粹的功能。给我一个完全隔离的块,我可以告诉你它是否有效。基本上是这样的:

基于PBS,blockpackers仍然需要状态,这是可以接受的。无论如何,它们是更集中的高资源实体。专注于分散的验证者,弱无状态给阻塞打包者带来了多一点的工作,同时让验证者做了少很多的工作,这是一个很好的权衡。

您将通过验证实现这种神奇的无状态执行,块打包程序将在每个块中包含正确状态访问的证明。验证块实际上并不需要完整的状态,而只需要块中正在被读取或受事务影响的状态。块打包程序将在给定的块中包含受事务影响的状态片段,并通过验证程序证明他们已经正确访问了这些状态。

例如,Alice想给Bob发送一个ETH。为了验证包含该事务的块,我需要知道:

在交易之前,—— Alice有一个ETHAlice的公钥——,从中可以知道签名是正确的,还有Alice的随机数——,从中可以知道交易是以正确的顺序发送的。事务执行后,—— Bob多了一个ETH,Alice少了一个ETH。在弱无状态世界中,块打包程序将上述见证数据及其对应的准确性证书添加到块中。验证者接收块,执行它,并决定它是否有效。就是这样!

以下是从验证者的角度得出的一些结论:

维持状态的巨大SSD需求已经消失,这是今天扩容面临的关键瓶颈。带宽需求会增加一点,因为见证数据和证书还是要下载的。这是Merkle-Patricia树的一个小瓶颈,但不是Verkle尝试的瓶颈。您仍然执行事务来完全验证它。无国籍不是目前拓展以太坊的瓶颈。因为状态膨胀已经不是一个迫切的问题,而弱无状态也让以太坊放松了对其执行吞吐量的自我限制,所以将气体限制提高三倍是合理的。

此时,大多数用户将在L2上运行,但是更高的L1吞吐量也将使他们受益。Rollups依靠以太坊实现数据可用性(发布到碎片)和结算(需要L1执行)。随着以太坊扩展其数据可用性层,发行证书的摊销成本可能会占汇总成本的更大份额(特别是对于ZK汇总)。

Verkle尝试

我们掩盖了这些证人是如何工作的。以太坊目前使用Merkle-Patricia树来表示状态,但是所需的Merkle证明对于这些证人来说太大,不可行。

以太坊将转向Verkle试图存储状态。Verkle证明的效率要高得多,因此可以作为实现弱无状态的可行见证。

首先,我们来回顾一下什么是Merkle树:每一个事务都是从哈希计算开始的。——底部的哈希称为“叶子”,所有哈希都可以称为“节点”,每个哈希都是其两个“子”节点的哈希。产生的散列是“Merkle根”。

这是一个数据结构,用来证明它包含事务,但不需要下载整个树。例如,您只需要Merkle证书中的H12、H3和H5678来验证交易H4是否包含在内。我们有来自块头的H12345678,所以一个轻型客户端可以从一个完整的节点请求这些散列,然后根据树中的路由将这些值散列在一起。如果结果是H12345678,那么我们已经成功地证明了H4在树上。

但是树越深,到底部的路线越长,所以你需要更多的物品来证明。所以浅而宽的树更有助于高效证明。

问题是,通过在每个节点下添加更多的子节点来扩展Merkle树将是非常低效的,因为所有的兄弟散列需要放在一起才能在树中向上移动,所以需要接收更多的兄弟散列来进行Merkle证明。这将使证明非常大。

这就是高效矢量承诺的用武之地。请注意,Merkle树中使用的hash实际上是一个只能有效承诺两个元素的向量承诺,但我们想要的是一个可以在没有所有兄弟hash进行验证的情况下加宽树并降低其深度的向量承诺,这就是如何获得一个高效的证明大小,即减少需要提供的信息量。

Verkle trie类似于Merkle tree,但它使用高效的向量承诺(因此得名“Verkle”)而不是简单的哈希来承诺其后代。所以基本上每个节点都可以有很多子节点,但不需要所有子节点都验证证明。不考虑宽度,这是大小不变的证明。

事实上,上面提到的KZG承诺也可以作为一个向量承诺,以太坊开发者原本打算在这里使用KZG承诺,但他们后来转向了彼得森承诺来履行类似的角色。这些承诺将基于一条椭圆曲线(在本例中是Bandersnap ),并将承诺256个值(比两个元素好得多!)。

那么,为什么不造一棵尽可能深、尽可能宽的树呢?这对于现在拥有紧凑证明的验证者来说是一件好事。但是有一个权衡是需要实际考虑的,就是证明者需要能够计算证明,但是树越宽,计算的难度越大。因此,这些Verkle尝试将位于两个极端之间,并且具有256个值的宽度。

状态过期

弱无状态消除了验证者的状态扩展约束,但状态不会神奇地消失。交易的成本是有限的,但它们通过提高地位给网络带来了永久的税收。状态增长仍然是网络的一个永久拖累,需要采取一些措施来解决根本问题。

长期(比如一两年)不活跃的状态甚至可能会被隔断掉区块创建者需要携带的东西,而活跃用户是不会注意到这些东西的,所以不需要无用的状态,可以删除。

如果需要恢复过期状态,只需出示证书即可激活,这又回到了N选1存储假设,即只要某人还有完整的历史(block explorer等。),你可以从他们那里得到你需要的东西。

弱无状态会削弱基础层对状态过期的迫切需求,从长远来看是好事,尤其是随着L1吞吐量的增加。对于高吞吐量的汇总,这将是一个更有用的工具,因为L2状态将以更高的指数速度增长,甚至成为高性能创建者的拖累。

第三部分:MEV

PBS对于Danksharding的安全实现是非常必要的,但其最初的设计其实是为了对抗MEV的集权。毕竟以太坊研究中有一个反复出现的趋势,就是MEV是加密货币经济学的前沿和中心。

在区块链的设计中考虑MEV对于维护安全和分散非常重要。协议层的基本方法是:

最小化有害的MEV(例如,单个槽最终确定性,单个秘密领导人选举),并民主化其余的(例如,MEV-Boost,PBS,MEV平滑)。其中,其余的必须容易被捕获并在验证者之间传播,否则,验证者集将被集中化,因为它无法与复杂的搜索者竞争。此外,合并后,MEV将进一步占据更高份额的验证者报酬(质押流通量远低于矿工获得的通货膨胀),因此验证者中心化问题不容忽视。

当前的MEV供应链

当前的事件顺序如下:

矿池在这里起到了封隔器的作用。MEV retrievers通过Flashbots将捆绑的交易(以及各自的出价)转移到矿池。矿池运营商聚集一个完整的区块,并沿区块头交付给每个矿工。矿工通过在PoW的分叉选择规则中赋予其权重来证明这一点。

Flashbots的出现是为了防止跨栈垂直整合,这将为审查和其他不利的外部因素打开大门。Flashbots刚开始的时候,矿池就已经和贸易公司达成了独家协议,提取MEV。相反,Flashbots为他们提供了一种简单的方式来聚合MEV出价,避免垂直整合(通过MEV-geth实现)。

合并后,矿池将消失。家庭验证者通常不像有一群定量分析师的对冲基金那样擅长捕捉MEV。如果不加以约束,这将在普通人无法与之抗衡的情况下,将验证者集的权力集中起来。但是,如果结构合理,协议可以将MEV收入重定向到日常验证者的质押收入。所以我们希望有办法让验房师合理运作,这就需要找到能承担具体施工角色的人。

兆伏升压

不幸的是,协议中的PBS根本没有为合并做好准备。Flashbots再次提供了一个过度的解决方案:MEV-Boost。

默认情况下,合并的验证器将直接接收公共存储池中的事务到它们的执行客户端。他们可以将这些交易打包,提交给共识客户,并向网络广播。文章的第四部分将介绍以太坊的共识和执行客户端是如何协同工作的。

然而,家长和常见的验证者不知道如何提取我们讨论的MEV,Flashbots提供了一个替代方案,即MEV-boost将被嵌入到您的共识客户端中,允许您外包特定的块构建。重要的是,这个时候,你仍然可以选择使用自己的执行客户端作为备份。

MEV检索器今天将继续扮演他们现有的角色,运行特定的策略(统计套利、原子套利、三明治套利等)。),并对他们需要包含的捆绑包进行投标。然后,块打包器将它们看到的所有包和任何私有订单流(例如,来自Flashbots Protect)聚合到最佳完整块中,并通过运行在MEV-Boost上的中继器将块头传递给验证器。Flashbots将运行继电器和blockpackers,并计划随着时间的推移逐步分散,但为其他blockpackers打开白名单可能会慢得多。

MEV-Boost要求验证者信任中继——一致性客户端接收块头,并在显示块主体之前对其进行签名。中继的目的是向离开者证明该块存在并且有效,这样验证者就不必直接信任块包装者。

当协议中的PBS准备好之后,它将对MEV-Boost在此期间提供的内容进行编码。PBS提供了相同的权力分离,这使得阻止者更容易分散,并且阻止者不需要信任任何人。

委员会驱动的MEV均匀分布

PBS为另一个很酷的想法提供了支持————委员会驱动的MEV平均分配。

我们看到,提取MEV的能力是集中验证者集的一种能力,但它对于分布也是如此。从一个街区到另一个街区的MEV奖励的高度可变性激发了许多验证者平均分配你的奖励(正如我们今天在矿池中看到的,尽管在这里程度较低)。

默认的做法是,块包装商将向实际的块抽屉支付全部金额,MEV smoothing将把这笔付款分配给许多验证者。一个核查委员会将检查拟议区块,并核查该区块是否为出价最高的区块。如果一切顺利,区块将继续生成,奖励将分配给委员会和区块。

这也解决了带外贿赂的问题,即可能会鼓励投标人提交一个次优块,然后直接接受带外贿赂,以隐藏其收到的带外贿赂。而这种认证(验证委员会是否认证该区块是否为出价最高者的行为)可以约束出价者。

协议中的PBS是实现MEV均匀分布的前提。你需要了解一些关于砌块包装市场和提交的投标。尽管这里有几个开放的研究问题需要解决,但这仍然是一个令人兴奋的提议,因为它对于确保验证者的分散化非常重要。

单个插槽的最终确定性

快速终结很棒,等待~15分钟对于用户体验或跨链通信来说是次优选择。更重要的是,快速最终确定性是一个MEV重组问题。

合并后的以太坊将提供比今天更强的确认,33,354,000个验证者对每个区块进行验证,矿工可以在没有投票的情况下在同一区块高度竞争和开采。这使得连锁重组几乎不可能实现,但仍不是真正的最终确定性。如果最后一块有一些报酬丰厚的MEV,您可能会诱使验证者尝试链重组并将其窃取为己有。

单槽最终确定性消除了这种威胁。逆转一个已经完成最终确定性的区块需要至少三分之一的检定者,他们的保证会立即减少(百万ETH)。

这里不太讨论潜在的机制。只知道在以太坊的路线图中,最终确定性的单槽在很长一段时间内都不会被考虑进去,是一个非常开放的设计空间。

在今天的共识协议中(没有最终确定的单个槽位),以太坊只需要1/32个验证者来认证每个槽位(也就是说,目前38万多个验证者中,大约有1.2万个验证者来认证每个槽位)。在单个槽中使用BLS签名聚合来将这种投票扩展到所有验证者需要更多的工作。——,几十万票压缩成一个验证:

Vitalik在下面的链接中详细解释了一些有趣的解决方案[5]。

单一秘密领袖选举

Ssle(单一秘密领袖选举)试图修复合并后我们将面临的另一个MEV攻击向量。

信标链验证者列表和即将到来的领导者选举列表都是公开的,因此很容易对它们进行去匿名化并映射它们的IP地址。

比较成熟的验证者可以使用一些技巧更好的隐藏自己,但是小型的验证者特别容易受到信息泄露和DDOS的攻击,很容易被MEV利用。

假设你是第n块的制块师,我是第n块的制块师。如果我知道你的IP地址,我可以很便宜的对你发起DDOS攻击,可以造成你超时无法出块,这样我就可以得到我们槽点的MEV,回报翻倍。EIP-1559的弹性块的尺寸加剧了这个问题。因为EIP-1559每个区块的最大气体是目标规格的两倍,所以我可以把本来应该是两个区块的交易放到一个属于我的、比原来大一倍的单个区块里。

简而言之,家庭验证者可能放弃验证,因为家庭验证者容易受到攻击,并且可能验证失败。除了阻挡者之外,SSLE没有让任何人知道什么时候轮到他们停止攻击。这在合并时是不可能的,但希望在合并后不久就能实现。

第四部分-合并:如何运作

我认为并希望合并即将到来。

合并不容忽视,没有人会对此置若罔闻。我想我也可以发出一些简单的声音:

合并的客户端

今天,你运行的是一个处理所有交易的单体客户端(比如Go Ethereum,Nethermind等。).具体来说,整个节点做这两件事:

执行:执行块中的每个事务以确保有效性。取前状态根,执行一切,检查生成的后状态根是否正确。共识:确认你是在最重(最高权力)的链条上做了最多的工作,也就是中本聪共识。它们是不可分的,因为所有的节点不仅遵循最重的链,而且遵循最重的有效链。这就是它们是全节点而不是轻节点的原因。即使在51%的攻击下,整个节点也不会接受无效交易。

信标链目前不运行,只运行共识,为PoS提供一个测试运行环境。最后,决定终端总难度的时刻将是以太坊执行块并入信标链块形成链的时刻:

然而,整个节点本质上将运行两个独立的可互操作的客户端:

执行客户端(也称为‘Eth 1.0客户端’):当前的Eth 1.0客户端继续处理执行。它们处理块、维护内存池、管理和同步状态,并且脱离了PoW的基本特征。共识客户端(也称为“Eth 2.0客户端”):当前信标链客户端继续处理PoS共识。他们跟踪链头,广播和认证块,并从验证者那里获得奖励。客户端接收信标链块并执行客户端运行的事务。如果一切顺利的话,客户会跟着链条走。所有客户端都是可互操作的,您可以混合或匹配您选择的执行客户端和共识客户端。将引入用于客户端之间通信的新引擎API:

或者:

合并后的共识

今天,中国和日本的共识很简单:矿商创造新的区块,并把它们添加到观测到的最重有效区块链中。

合并后的以太坊转向GASPER ——,通过结合卡斯珀FFG(最终确定性工具)和LMD幽灵(分叉选择规则)达成共识。简而言之,这是一个关注活动而非安全的共识。

不同的是,支持安全性的共识算法(如Tendermint)在无法获得(验证者集的)必要票数时会停止。支持主动链(如PoW中本聪共识)无论如何都会继续建立一个乐观的账本,但如果没有足够的票数,就无法获得最终的确定性。今天的比特币和以太坊只是假设足够多的区块后不会有重构,永远得不到最终的确定性。

但是,如果有足够的票数,以太坊将分阶段通过检查点实现最终的确定性。每32个ETH实例就是一个独立的验证器,有超过38万个链式验证器。该周期由32个时隙组成,并且所有验证器被分开以在给定周期中认证一个时隙(即,每个时隙具有约12,000个认证)。然后,分叉选择规则LMD幽灵根据这些证明确定链的当前头。每一个时隙(12秒)都会添加一个新块,所以周期是6.4分钟。通常在两个周期后(即每64个时隙,尽管有时可能需要95个时隙),将获得必要的票数以实现最终的确定性。

结论

所有的道路都通向集中的块生成、分散的不可信块验证和反审查。以太坊的路线图已经瞄准了这一愿景。

以太坊的目标是成为统一的数据可用性和结算层,在最大程度去中心化和安全性的基础上实现可扩展计算。

希望你对以太坊的研究是如何盘根错节的有更清晰的认识。有那么多非常短的、发展中的组件,每一个都有一个非常大的场景让你去理解。

从根本上说,这一切都要追溯到那个独特的愿景。以太坊为我们提供了一条令人信服的大规模扩张之路,同时也很珍惜我们在这个领域非常关注的那些价值。

广告位
本文来自网络,不代表区块链网站|NFTS立场,转载请注明出处:https://www.qklwz.com/btb/btbjiaoxue/47671.html

作者: 币圈小哥

上一篇
下一篇

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

返回顶部