核心要点:
以太坊是唯一一个主要协议,意在建立可扩展的统一的结算和数据可用性层
在利用以太坊的安全性的同时,rollup扩大了计算量
所有的道路都通向中心化区块生产、去中心化的无需信任区块验证和抗审查这一终局。
诸如发起者—建设者分离和弱无状态等创新,带来了权力分离,可以在实现可扩展性的同时,不牺牲安全性或去中心化目标
MEV现在是前沿和中心——许多设计都是为了减轻其危害和防止其中心化倾向而计划的
Danksharding结合了前沿研究的多种途径,为以太坊以rollup为中心的路线图提供所需的可扩展基础层
我确实期待Danksharding在我们的有生之年得到实施
目录
第1部分通往Danksharding之路
原始的数据分片设计——独立分片提议
数据可用性抽样
KZG承诺
KZG承诺vs.欺诈证明
协议内的发起者和建设者分离
审查抵抗列表
2DKZG策略
Danksharding
Danksharding——诚实多数验证
Danksharding——重建
Danksharding——私人随机抽样的恶意多数安全
Danksharding——关键总结
Danksharding——在区块链扩展上的制约
原生的danksharding
多维度的EIP-1559
第2部分历史和状态管理
Calldatagas成本缩减及calldata总量限制
在执行客户中限定历史数据
恢复历史数据
弱无状态性
VerkleTries
状态过期
第3部分一切都是MEV的锅
如今的MEV供应链
MEV-Boost
委员会驱动的MEVSmoothing
单槽拍板
单一秘密领袖选择
第4部分合并的秘密
合并后的客户端
总结时刻
简介
自从Vitalik说今天出生的人有50-75%的机会活到公元3000年,而他希望能长生不老,我就一直对合并的时机持相当怀疑的态度。但是,管他呢,还不许找乐子吗,借此机会,我们进一步透视一下以太坊雄心勃勃的路线图。
这篇文章不能速食。如果你想对以太坊雄心勃勃的路线图有一个广泛而细致的了解,请给我一个小时,我将为你节省几个月的工作。
以太坊的研究有很多需要跟踪的地方,但一切最终都交织成一个总体目标——在不牺牲去中心化验证的情况下扩大计算量。
Vitalik有一个著名的“终局”说,不知道你有没有听过。他承认以太坊扩展需要一些中心化成份。在区块链中,代表中心化的C字母是可怕的,但又是一个现实。我们只是需要用去中心化和无需信任的验证来控制这种权力。这里并没有妥协。
专业人士将为L1及其之上添砖加瓦。以太坊通过简单的去中心化验证保持了令人难以置信的安全性,而rollup则从L1继承其安全性。然后,以太坊提供结算和数据的可用性,使rollup的规模得以扩大。这里所有的研究最终都是为了优化这两个角色,同时,使区块链的完全验证比以往更加容易。
下面的术语大概会重复出现个七八五十九次:
DA–DataAvailability数据可用性
DAS–DataAvailabilitySampling数据可用性抽样
PBS–Proposer-builderSeparation发起者和建设者分离
PDS–Proto-danksharding原生的danksharding
DS–Danksharding一个以太坊的分片设计
PoW–ProofofWork工作量证明
PoS–ProofofStake质押证明
第1部分通往Danksharding之路
希望你已经听说,以太坊已经转向以rollup为中心的路线图。不再有更多的执行分片——以太坊将转而优化对数据要求较高的rollup。这是通过数据分片或更大的区块实现的。
共识层不解释分片的数据。它只有一项工作——确保数据是可用的。
我将假设你熟悉一些基本概念,如rollup,欺诈和ZK证明,以及为什么DA很重要。如果你不熟悉或者只是需要复习一下,可以看Can最近的Celestia报告。
原始的数据分片设计——独立分片提议
这里描述的设计已经被废止了,但作为背景值得了解一下。为了简单起见,我把它称为“分片1.0”。
64个分片区中的每一个都有单独的提案和委员会从验证者集合中轮流通过。他们单独验证他们的分片的数据是否可用。最初不会是DAS——它依赖于每个分片的验证者集里诚实的多数来完全下载数据。
这种设计引入了不必要的复杂性、更糟糕的用户体验,以及攻击的载体。在分片之间重组验证者可能带来风险。
除非你引入非常严格的同步假设,否则也很难保证投票将在单个槽内完成。Beacon区块提议需要收集所有个别委员会的投票,而这可能会有延迟。
DS则完全不同。验证者进行DAS,确认所有的数据都是可用的。一个专门的建设者用Beacon区块和所有分片的数据一起创建一个大区块,并进行确认。因此,PBS对于DS保持去中心化是必要的。
数据可用性抽样
Rollups会发布大量的数据,但我们不想增加节点负担来下载所有的数据。这将意味着高资源配置,从而损害了去中心化。
相反,DAS允许节点轻松、安全地验证所有的数据是否可用,而不需要下载所有的数据。
天真的解决方案——只是从区块中检查随机的一部分。如果没问题,就签字完事。但是,如果你错过了某一笔交易,而这笔交易将掏空你所有的ETH给某个坏人呢?这能安全吗。
聪明的解决方案——首先对数据进行擦除编码。使用Reed-Solomon码对数据进行扩展。这意味着数据被插值为多项式,然后我们可以在其他地方来对它评估。这有点复杂,我们来分解一下。
别担心你的数学,这里是速成班。(我保证这里的数学不那么可怕——我不得不看一些可汗学院的视频来写这些部分,但现在连我都明白了)。
多项式是由有限数量的?形式的式子相加的表达式。项数代表最高的那个指数。例如,+?+?-4是一个三次的多项式。你可以从位于该多项式上的任何?个坐标来重构任何?次的多项式。
现在来看一个具体的例子。下面我们有四个数据块。这些数据块可以被映射到给定点的多项式?的值上。例如,=。然后你找到满足这些数值的最小次数的多项式。由于这是四个数据块,我们可以找到三次的多项式。然后,我们可以扩展这个数据,增加四个数值,这些数值位于同一个多项式上。
记住那个关键的多项式属性——我们可以从任何四个点重建它,而不仅仅是我们最初的四个数据块。
回到我们的DAS。现在我们只需要确定任何50%的擦除编码数据是可用的。由此,我们可以重建整个数据块。
因此,攻击者必须隐藏超过50%的数据块,才能成功地DAS节点,使其认为数据是可用的。
在多次成功的随机采样之后,<50%的数据可用的概率是非常小的。如果我们成功地对擦除编码的数据进行了30次采样,那么<50%可用的概率是。
KZG承诺
好的,所以我们做了一堆随机样本,而且都是可用的。但是我们还有一个问题——数据擦除的编码是否正确?否则,也许区块制作者在扩展区块时只是添加了50%的垃圾,而我们的采样是白忙活。在这种情况下,我们实际上将无法重建数据。
通常,我们只是通过使用默克尔根来承诺大量的数据。这对于证明在一个集合内包含一些数据是有效的。
然而,我们还需要知道,所有的原始数据和扩展数据都位于同一个低次多项式上。默克尔根不能证明这一点。因此,如果你采用这个方案,你还需要欺诈证明,以防止可能的纰漏。
开发者可以从两个方向解决这个问题:
Celestia正在走欺诈证明的路线。这个方案需要有人观察,如果区块被错误地擦除编码,他们会提交一个欺诈证明来提醒大家。这需要标准的诚实少数假设和同步假设。
以太坊和PolygonAvail正在走一条新路——KZG承诺。这免去诚实少数假设和同步假设,以保证欺诈证明的安全。
其他方案不是没有,但较少人追捧。例如,你可以使用ZK-proofs。不幸的是,它们在计算上是不切实际的。然而,它们有望在未来几年内得到改善,所以以太坊很可能会在未来转向STARKs,因为KZG承诺不具有量子抗性。
回到KZG承诺——这些是一种多项式承诺方案。
承诺方案只是一种加密方式,可以使对一些数值的承诺可证。最好的比喻是,把一封信放在一个上了锁的盒子里,然后把它递给别人。这封信一旦放进去就不能改变,但可以用钥匙打开并证明。你承诺这封信,而钥匙就是证明。
在我们的案例中,我们将所有的原始数据和扩展数据映射到一个X,Y网格上,然后找到符合它们的最小次数的多项式。这个多项式就是证明人要承诺的。
几个关键点:
首先有一个多项式
证明人对这个多项式的承诺形成
这有赖于椭圆曲线加密法的可信设置。至于如何起作用,可以参考一个来自Bartek的很棒的串推。
对于这个多项式的任意值?,证明人可以计算一个证据
说人话:证明人将这些片段交给任何验证者,那么验证者可以确认某个点的数值正确地位于被提交的多项式上。
这证明我们对原始数据的扩展是正确的,因为所有的数值都位于同一个多项式上
注意:验证者并不需要用到多项式
重要属性——符合?的承诺大小,的证明大小,以及?的验证时间。即使对证明人来说,承诺和证明的生成也只有?的复杂度,其中?是多项式的次数。
说人话:即使增加——承诺和证明的大小保持不变,验证需要的工作量是恒定的。
承诺?和证明?都只是配对友好曲线上的一个椭圆曲线元素。在这种情况下,它们每个只有48个字节。
因此,证明人对大量原始和扩展数据的承诺仍然只有48个字节,而证明也将只有48个字节
更简单的说法:扩展性相当好
这里,KZG根就类似于Merkle根。
原始数据是多项式?在?到?位置的值,然后我们通过在?到?评估多项式来扩展它。所有的点?到?都保证是在同一个多项式上。
一句话总结:DAS允许我们检查擦除编码的数据是否可用。KZG承诺向我们证明原始数据被正确扩展,并承诺所有的数据。
好了,所有的代数到此为止了。
KZG承诺vs.欺诈证明
了解了KZG的工作原理,让我们回过头来比较一下这两种方法。
KZG的缺点在于,它不会是后量子安全的,而且它需要一个可信的初始化。这并不令人担忧。STARKs提供了一个后量子替代方案,而可信初始化只需要一个诚实的参与者。
KZG的优势在于,相比欺诈证明设置,它延迟更低,而且它确保了适当的编码擦除,而无需引入欺诈证明中固有的同步性和诚实少数假设。
然而,考虑到以太坊仍然会在区块重建中重新引入这些假设,所以你实际上并没有移除它们。DA层总是需要假设区块最初可用,但随后节点需要相互通信以将其重新组合起来。这种重建需要两个假设:
你有足够多的节点对数据进行采样,这样他们就有足够的能力将数据组合起来。这是一个相当弱的、不可避免的诚实少数假设,无需过多担心。
重新引入了同步性假设——节点需要在一定时间内进行通信,才能把它重新组合起来。
以太坊验证者在PDS中完全下载分片数据,而对于DS,他们只会进行DAS。Celestia将要求验证者下载整个区块。
请注意,在这两种情况下,我们都需要同步假设来进行重建。在区块只有部分可用的情况下,完整的节点必须与其他节点进行通信以将其组合起来。
如果Celestia想从要求验证者下载整个数据转变为只进行DAS,那么KZG的延迟优势就会显现出来。然后,他们也需要实现KZG承诺——等待欺诈证明意味着大大增加区块间隔,而且验证者为错误编码的区块投票的危险性也会很高。
我推荐阅读以下文章来深入了解KZG承诺的原理:
椭圆曲线密码学的基础知识
探索椭圆曲线配对byVitalik
KZG多项式承诺byDankrad
可信初始化的原理byVitalik
协议内的发起者和建设者分离
今天的共识节点和合并后的共识节点分任不同角色。他们建立实际的区块,然后将其提交给其他共识节点,由其进行验证。矿工通过在上一个区块之上进行“投票”,而在合并后验证者将直接对区块进行有效或无效的投票。
PBS将这些分割开来——它明确地创建了一个新的协议内建设者角色。专门的建设者将把区块放在一起,并为发起者选择他们的区块而出价。这可以对抗MEV的中心化力量。
回顾Vitalik的“终局”——所有的道路都通向中心化的区块生产,并进行无需信任和去中心化的验证。PBS对此发扬光大。我们需要一个诚实的建设者来服务于网络的有效性和审查阻力,但验证者组需要诚实多数。PBS使发起者的角色尽可能简单,以支持验证者的去中心化。
建设者收到优先费提示,加上他们可以提取的任何MEV。在一个有效的市场中,有竞争力的建造者会出价到他们能从区块中提取的全部价值。所有的价值都会渗透到去中心化的验证者组中——这正是我们想要的。
具体的PBS实现仍在讨论中,但双槽PBS可能是这样的:
建设者在出价的同时对区块标头作出承诺
信标区块发起者选择获胜的区块头和投标。发起者无条件地得到中标的报酬,即使建设者未能制造区块主体。
证人委员会确认中标的区块头
建设者披露中标的主体
不同的证人委员会选出中标的主体。
使用标准的RANDAO机制从验证者组中选择发起者。然后,我们使用一个承诺—披露策略,在区块头被委员会确认之前,完整的主体不会被披露。
承诺—披露的方式更有效率,而且它还能防止MEV的窃取。如果建设者提交他们的完整区块,另一个建设者可以看到它,找出其策略,将其纳入,并迅速发布一个更好的区块。此外,复杂的发起者可以检测到所使用的MEV策略,在不补偿建设者的情况下复制它。如果这种偷窃MEV的行为成为一股均衡力量,就会激励建设者和发起者的合并,所以我们用承诺—披露策略来避免这种情况。
在发起者选择了获胜的区块头后,委员会进行确认,并将其固化在分叉选择规则中。然后,获胜的建设者公布他们获胜的完整“建设者区块”主体。如果及时公布,下一个委员会将对其进行证明。如果他们未能及时公布,他们仍需向发起者支付全额报酬。这种无条件的支付,使得发起者无需对建设者信任。
这种“双槽”设计的缺点是延迟。合并后的区块将是固定的12秒,所以在没有引入任何新的假设时,我们需要24秒作为完整区块时间。8秒一个槽似乎是一个安全的妥协,不过研究还在进行。
审查抵抗列表
不幸的是,PBS给了建设者很大的审查交易的能力。也许建设者只是不喜欢你,所以他们忽略了你的交易。也许他们的工作能力很强,以至于其他建设者都放弃了,也可能他们会因为真的不喜欢你而为区块制定高价。
crLists可以防止这种情况。具体的实现方式又是一个开放的设计空间,但“混合PBS”似乎是最受欢迎的。建设者指定一个他们在mempool中看到的所有符合条件的交易的列表,建设者将被迫接受一揽子交易。
发起者公布crList和crList摘要,当中有所有符合条件的交易。
建设者创建一个拟议的区块主体,然后提交一个投标,其中包括crList摘要的哈希值,以证明他们已经看过。
发起者接受中标者的出价和区块头。
建设者发布他们的区块,包括证明他们已经包括了crList中的所有交易,或者区块已满。否则,该区块将不会被分叉选择规则所接受。
证人检查已发布的主体的有效性
这里仍有一些重要的问题需要解决。例如,有一种主导经济策略是发起者提交一份空名单。这样一来,只要出价最高,即使是本该被审查的建设者也能赢得拍卖。有一些方法可以解决这个问题,我只是强调这里的设计并不是坚如磐石。
2DKZG策略
我们看到了KZG承诺是如何让我们承诺数据并证明它被正确扩展的。然而,这是对以太坊实际操作的简化。它不会在一个KZG承诺中承诺所有的数据——一个区块将使用许多KZG承诺。
我们已经有了专门的建设者,那么为什么不直接让他们创建一个巨大的KZG承诺?问题是,这需要一个强大的超级节点来重构。我们可以接受初始建设的超级节点要求,但我们需要避免对重建作出假设。我们需要普通实体能够处理重建,所以将KZG承诺分成多份就好了。考虑到手头的数据量,重建甚至可能是相当普遍的,或者说是本设计中的基本假设。
为了使重建更容易,每个区块将包括编码进m个KZG承诺中的m个分片数据。如果不聪明点这样做会导致大量的采样——你会在每个分片数据块上进行DAS,才能确保可用。
所以,以太坊将使用一个2DKZG策略。我们再次使用Reed-Solomon代码,将m个承诺扩展到2m个承诺。
我们通过扩展额外的KZG承诺使其成为一个2D策略,这些承诺位于与0-255相同的多项式上。现在我们只需在上面的表格上进行DAS,以确保所有分片数据的可用性。
2D采样要求75%的数据是可用的,这意味着我们需要抽取一个更多的固定数量的样本。前面简单版的1D策略需要30个样本,这里将需要75个样本,以确保重建一个可用区块的概率一致。
分片1.0只需要30个样本,但你需要对64个片进行采样,完整的检查需要1920个样本。每个样本是512B,所以就是:
(512Bx64片区x30样本)/16秒=60KB/s带宽
现实中,验证者会随机选择,而不是一个人检查所有片区。
采用2DKZG策略的合并块使得完整的DA验证变得异常轻松。只需要从单一合并后的区块选出75个样本:
(512Bx1区块x75样本)/16秒=2.5KB/s带宽
Danksharding
PBSwasinitiallydesignedtobluntthecentralizingforcesofMEVonthevalidatorset.However,Dankradrecentlytookadvantageofthatdesignrealizingthatitunlockedafarbettershardingconstruct–DS.
DSleveragesthespecializedbuildertocreateatighterintegrationoftheBeaconChainexecutionblockandshards.Wenowhaveonebuildercreatingtheentireblocktogether,oneproposer,andonecommitteevotingonitatatime.DSwouldbeinfeasiblewithoutPBS–regularvalidatorscouldn’thandlethemassivebandwidthofablockfullofrollups’datablobs:
PBS最初是设计来对冲MEV在验证者组的中心化力量。然而,Dankrad最近吸取了这种设计的优势,并想出一个更好的分片方案——DS。
DS利用专门的建设者来实现信标链执行区块和分片之间更紧密的整合。我们现在有一个建设者,他可以创建整个区块;一个提议者;以及一个进行投票的委员会。如果没有PBS,DS是不可行的——普通的建设者无法拥有巨大带宽,以满足包含无数rollup数据块的区块。
分片1.0包括64个独立的委员会和发起人,可以允许每个分片单独出问题。通过更紧密的整合使我们能够一次性地确保完整的数据可用。数据在黑盒中仍然是“分片”的,但从实用的角度来看,分片开始感觉起来更像是大块的数据,这简直太好了。
Danksharding——诚实多数验证
我们来看看验证者是如何证明数据可信的:
这需要依靠占多数的诚实验证者——作为单一的验证者,我的列和行可用,不足以给我统计上的信心,证明整个区块可用。我们需要诚实的大多数人,才能下这个结论。去中心化的验证很重要。
注意这与我们之前讨论的75个随机样本不同。私人随机抽样是指低配置的个体将能够轻松地检查可用性。然而,验证者将继续使用行和列的方法来检查可用性和引导区块重建。
Danksharding——重建
只要一个单独的行或列的50%是可用的,那么它就很容易被采样验证者完全重建。当他们重建某行/列中缺失的任何块时,他们将这些块重新分配到正交线上。这有助于其他验证者根据需要从他们相交的行和列中重建任何丢失的块。
这里重建一个可用区块的安全假设是:
有足够多的节点执行抽样请求,以便它们共同拥有足够的数据来重建该区块
正在广播他们各自的区块碎片的节点之间的同步性假设
那么,多少个节点才够呢?粗略估计需要64,000个单独的实例。这也是一个非常保守的计算,它假设同一验证者运行的节点没有交叉。如果你的采样超过2行和2列,你就会因为交叉而增加集体检索的几率。这开始呈二次方扩展——如果验证者正在运行,比如说10个或100个验证器,64,000的要求可能会下降几个数量级。
如果在线验证者的数量开始变得非常低,DS可以被设置为自动减少分片数据块的数量。因此,安全假设将被降低到一个安全的水平。
Danksharding——私人随机抽样的恶意多数安全
我们看到,DS的验证是依靠诚实的多数来证明区块。我作为一个个体,不能通过下载几个行列来证明一个区块是可用的。然而,私人随机抽样可以在不信任任何人的情况下,给这个保证。这就是前面讨论的节点检查75个随机样本的情形。
DS最初不会包括私人随机抽样,因为这是在网络方面非常难解决的问题。
注意”私有”是很重要的,因为如果攻击者对你进行了去匿名化处理,他们就能少量的采样节点。他们可以只返回你所要求的确切的数据块,而隐瞒其他的。所以你不会仅从自己的采样中知道所有的数据都被提供了。
Danksharding——关键总结
DS非常令人兴奋,不仅仅是名字起的好。它最终实现了以太坊对统一的结算和DA层的愿景。信标区块和分片的这种紧密耦合,能达到以假乱真的不分片效果。
事实上,让我们定义一下为什么它甚至被认为是“分片”的。这里唯一的分片,只是体现在验证者不负责下载所有数据这一事实。没有其他了。
所以,如果你现在质疑这是否是真正的分片,你并没有疯。这就是为什么PDS不被认为是“分片”。PDS要求每个验证者完全下载所有的分块,以证明其可用性。然后,DS引入了抽样,所以个别验证者只下载其中的某些片段。
最小化的分片意味着比分片1.0更简单的设计。简化内容包括:
与分片1.0规范相比,DS规范可能少了数百行代码。
没有更多的分片委员会作为基础设施,委员会只需要对主链进行投票
不需要跟踪单独的分片数据块确认,现在它们都在主链中得到确认,或者不被确认。
这样做的一个很好结果是——数据的合并收费市场。分片1.0由不同的发起者做出不同的区块,会使这一切变得支离破碎。
取消分片委员会也有力地抵制了贿赂现象。DS验证者在每个纪元对整个区块投票一次,所以数据会立即得到整个验证者组的1/32的确认。分片1.0验证者也是每纪元投票一次,但每个片区都有自己的委员会需要重组。因此,每个片区只由1/2048个验证者组确认。
正如所讨论的那样,与2DKZG承诺方案相结合的区块也使DAS的效率大大提高。分片1.0需要60KB/s的带宽来检查所有分片的全部DA,DS只需要2.5KB/s。
DS还有一种令人兴奋的可能性存在——ZK-rollup和L1以太坊执行之间的同步调用。来自分片数据块的交易可以立即确认并写入L1,因为一切都在同一个信标链区块中产生。分片1.0会因为单独的分片确认而消除这种可能性。这就有了令人兴奋的设计空间,对共享流动性等事情来说可能是非常有价值的。
Danksharding——在区块链扩展上的制约
模块化的层可以优雅地扩展——更多的去中心化带来更多的扩展。这与我们今天看到的情况有根本的不同。向DA层添加更多的节点,可以安全地增加数据吞吐量。
区块链的可扩展性仍有限制,但相比今天,我们可以提高好几个数量级。安全和可扩展的基础层允许执行被快速扩展。数据存储和带宽的改进也将随着时间的推移提高数据吞吐量。
超过本文所设想的DA吞吐量肯定是有可能的,但是很难说这个最大值会落在哪里。我们没有一个明确的红线,但可以列举支持某些假设开始变得困难的区间。
数据存储——这与DA与数据可检索性有关。共识层的作用不是保证数据可以无限期地被检索,它的作用是让数据在足够长的时间内可用,任何愿意下载它的人都可以满足我们的安全假设。然后,它被转存到任何地方——这很舒服,因为历史是N个信任假设中的1个,而且我们实际上并不是在谈论那么多的数据,那样大的计划。不过,随着吞吐量的增加,可能会进入令人不舒服的区间。
验证者——DAS需要足够的节点来共同重建区块。否则,攻击者可以在周围等待,只对他们收到的查询作出回应。如果提供的这些查询不足以重建区块,攻击者可以扣留其余的查询,我们就没戏了。为了安全地提高吞吐量,我们需要增加更多的DAS节点或增加它们的数据带宽要求。对于这里讨论的吞吐量来说,这并不是一个问题。不过,如果吞吐量在这个设计的基础上再增加几个数量级,这可能会让人感到不舒服。
注意建设者不是瓶颈。你需要为32MB的数据快速生成KZG证明,所以会希望有一个GPU或相当强大的CPU加上至少2.5GBit/s的带宽。无论如何,这是一个专门的角色,对他们来说,这是一个可以忽略不计的业务成本。
原生的danksharding
DS很棒,但我们必须要有耐心。PDS是来帮我们渡过难关的——它在一个紧凑的时间表上实现了必要的向前兼容的步骤,以便在过渡期间提供数量级的扩展。然而,它实际上还没有实现数据分片。
今天的rollup使用L1calldata进行存储,它可以在链上永存。不过,rollup只需要在一些较短的时间段内使用DA,因此,任何感兴趣的人都有足够的时间来下载它。
EIP-4844介绍了新的携带blob的交易格式,其中rollup将用于未来的数据存储。Blob携带大量的数据,它们比类似数量的calldata便宜得多。数据块在一个月后将从节点上修剪掉,这就降低了存储需求。使得有足够的时间来满足我们的DA安全假设。
对于扩展的背景,目前的以太坊区块一般是平均约90KB。PDS为blob释放了更多的DA带宽,因为它们在一个月后会被修剪掉。它们并不会一直给节点造成负担。
一个blob是一个由4096个字段元素组成的矢量,每个字段元素32个字节。PDS允许每个区块最多有16个blob,而DS会将其提高到256个。
PDSDA带宽=4096x32x16=2MiB每区块,目标是1MiB
DSDA带宽=4096x32x256=32MiB每区块,目标是16MiB
每一步都是数量级的扩展。PDS仍然需要共识节点来完全下载数据,所以它比较保守。DS在验证者之间分配了存储和传播数据的负载。
以下是EIP-4844在通往DS的道路上引入的一些好玩意儿:
携带blob的交易格式数据
对blob的KZG承诺
DS所需的所有执行层逻辑
DS所需的所有执行/共识交叉验证逻辑
信标区块验证和DASblob之间的层分离
DS所需的大部分信标区块逻辑
为blob提供的自我调整的独立gas价格
DS未来还会加入:
PBS
DAS
2DKZG策略
托管证明或着类似的协议内要求,使每个验证者验证每个区块特定部分分片数据可用性
请注意,这些数据块是作为执行链上的一个新交易类型被引入的,但它们不会给执行方带来额外的负担。EVM只查看附着在数据块上的承诺。由EIP-4844带来的执行层变化也与DS同样向前兼容,在这头不需要更多的改变。从PDS到DS的升级只需要改变共识层。
在PDS中,数据块完全由共识客户端下载。数据块现在被引用,但不是完全编码在信标区块主体中。与其将全部内容嵌入到主体中,不如将blob的内容作为“sidecar”单独传播。每个区块有一个blobsidecar,在PDS中被完全下载,然后DS验证者对其进行DAS。
我们在前面讨论了如何使用KZG多项式承诺对blob进行承诺。然而,EIP-4844没有直接使用KZG,而是实现了我们实际使用的东西——它的版本化哈希。这是一个单一的0x01字节,后面是KZG的SHA256哈希值的最后31字节。
我们这样做是为了方便EVM的兼容性和向前兼容:
EVM兼容性——KZG承诺是48字节,而EVM更自然地使用32字节的值
前向兼容性——如果我们从KZG转换到其他,承诺可以继续保持32字节
多维度的EIP-1559
PDS最终创造了一个量身定做的数据层——数据块将获得自己独特的收费市场,有独立的浮动gas价格和限制。因此,即使一些NFT项目在L1上出售一堆猴子土地,你的rollup数据成本也不会上升。这显示了今天任何rollup项目的主要成本是将其数据发布到L1。
Gas费市场没有变化,而数据块作为一个新的市场加入:
Blob费用是在gas里收取的,但它是一个可变的金额,根据其自身的EIP-1559机制进行调整。每个区块的长期平均blob数量应该等于所定目标。
这里实际上有两个并行的拍卖——一个用于计算,一个用于DA。这是高效资源定价的一个巨大进步。
可以看到一些有趣的设计。例如,将目前的gas和blob定价机制从线性EIP-1559改为新的指数EIP-1559机制可能是合理的。目前的实施并没有平均到我们的目标区块大小。现今的基本费用稳定性很差,导致观察到的每个区块的gas使用量平均超过目标值约3%。
第2部分历史和状态管理
快速回顾一下基础概念:
历史——链上曾经发生过的一切。你可以直接把它放在硬盘上,因为它不需要快速访问。这是长期的N个诚实假设中的1个。
状态——所有当前账户余额、智能合约等的快照。完整的节点都需要有这个数据,以验证交易。它对内存来说太大了,而硬盘又太慢了——它很适合固态硬盘里。高吞吐量的区块链让这个状态迅速膨胀,增长速度远远超过我们常人在笔记本电脑上能保持的。如果日常用户不能保有该状态,他们就不能完全验证,去中心化也就无从谈起。
简而言之,这些东西会变得非常大,所以你很难运行一个节点,如果要求节点必须保持这些数据。如果运行一个节点太难,我们普通人就不会去做。这很糟糕,所以我们需要确保这不会发生。
Calldatagas成本缩减及calldata总量限制
PDS是迈向DS的一个很好的铺垫,它满足了许多最终的要求。在一个合理的时间范围内实施PDS,就可以将DS的时间表提前。
一个更容易实施的修补是EIP-4488。它不太优雅,但它还是解决了当前费用的紧急情况。不幸的是,它没有给出通往DS的步骤,所以不可避免地日后还是补上。如果开始觉得PDS比我们希望的要慢一些,那么快速通过EIP-4488,然后再在六个月后进入PDS,可能是有意义的。我们可以自由把握时机。
EIP-4488有两个主要组成部分:
将calldata成本从每字节16个gas降低到每字节3个gas
增加每个区块1MB的Calldata限制,加上每个交易的额外300字节
需要增加限制以防止最坏的情况发生——一个充满calldata的区块将达到18MB,这远远超出了以太坊可以处理的范围。EIP-4488增加了以太坊的平均数据容量,但由于这个calldata限制,其突发数据容量实际上会略有下降。
EIP-4488的持续负载要比PDS高得多,因为这仍然是calldatavs.数据块。有了EIP-4488,增速将有意义地上升,但也会带来运行节点的瓶颈。即使EIP-4444与EIP-4488同步实施,也只是在一年后减少运行有效负载历史。PDS的较低的持续负载显然是更可取的。
在执行客户中限定历史数据
EIP-4444允许客户选择本地修剪超过一年的历史数据。它规定客户端停止在p2p层提供这种修剪后的历史数据。修剪历史数据使客户可以减少用户的磁盘存储需求。
这件事本来就很重要,但如果EIP-4488被实施,这基本上是强制性的。我们希望这能在相对较短的时间内完成。最终某种形式的历史过期是需要的,所以现在是处理它的一个好时机。
链的完全同步需要历史记录,但是对于验证新的区块是不需要的。因此,一旦客户端同步到链的顶端,历史数据只有在通过JSON-RPC明确请求或某个点试图同步链的时候才会被检索。随着EIP-4444的实施,我们需要为这些找到替代的解决方案。
客户端将无法像今天一样使用devp2p进行“完全同步”——而是从一个弱主观检查点进行“检查点同步”,他们将把这个检查点视为创世区块。
请注意,弱主观性不会是一个额外的假设——这是转向PoS必然会有的。由于存在远程攻击的可能性,这就要求使用有效的弱主观性检查点来进行同步。这里的假设是,客户不会从一个无效的或旧的弱主观性检查点进行同步。这个检查点必须在我们开始修剪历史数据的时期内,否则p2p层将无法提供所需的数据。
随着越来越多的客户采用轻量级同步策略,这也将减少网络的带宽使用。
恢复历史数据
EIP-4444将在一年后修剪历史数据听起来不错,而PDS修剪blob的速度更快。这些都是必要动作,因为我们不能要求节点存储所有数据并保持去中心化。
EIP-4488——长期可能需要约1MB每个插槽,每年增加约2.5TB存储量
PDS——目标是每个插槽约1MB,每年增加约2.5TB的存储空间
DS——目标是每个插槽约16MB,每年增加约40TB的存储空间
但这些数据去哪里了?难道我们还需要它们吗?是的,但请注意,丢失历史数据对协议来说不是一个风险——只是对个别应用程序来说是。所以以太坊核心协议的工作,不应该包括永久维护所有这些达成共识的数据。
那么,谁来储存这些数据呢?这里有一些潜在的贡献者:
个人和机构志愿者
区块浏览器、API供应商和其他数据服务
第三方索引协议可以创建激励性的市场,客户向服务器付费以获得带有Merkle证明的历史数据
门户网络中的客户可以存储链历史的随机部分,而门户网络会自动将数据请求引导到拥有这些数据的节点上
BitTorrent,例如,自动生成并分发一个7GB的文件,其中包含每天的区块的blob数据
特定的应用程序协议可以要求其节点存储与他们的应用程序相关的历史部分
长期数据存储问题是一个相对容易的问题,因为它是N个信任假设之一,正如我们之前讨论的那样。这个问题距离成为区块链可扩展性的最终限制还有很多年。
弱无状态性
好了,我们已经很好地掌握了管理历史的方法,但是状态呢?这实际上是目前提高以太坊TPS的主要瓶颈。
完整的节点取前状态根,执行一个区块中的所有交易,并检查后状态根是否与他们在区块中提供的内容相符。为了知道这些交易是否有效,他们目前需要对手上的状态进行验证。
进入无状态性——不需要手头的状态来发挥它的角色作用。以太坊正朝着“弱无状态”努力,这意味着验证区块不需要状态,但构建区块时需要。验证成为一个纯粹的功能——给我一个完全隔离的区块,我可以告诉你它是否有效。基本上像这样:
由于PBS的原因,建设者仍然需要状态,这是可以接受的——反正他们会是更中心化的高配置实体。我们的重点放在验证者的去中心化上。弱无状态性给建设者带来了稍多一点的工作,而验证者的工作少了非常多。非常划算。
我们用见证者来实现这种神奇的无状态执行。见证者是正确状态访问的证明,建设者将开始在每个区块中包括这些证明。验证一个区块实际上不需要整个状态——你只需要该区块中的交易所读取或影响的状态。建设者将开始在一个给定的区块中包括受交易影响的状态片段,他们将用证人来证明他们正确地访问了这些状态。
让我们来举个例子。Alice想向Bob发送1个ETH。为了验证这个交易的区块,我需要知道:
在交易之前-Alice有1个ETH
Alice的公钥-所以我可以知道签名是正确的
Alice的nonce码-所以我可以知道交易是按照正确的顺序发送的
执行交易后,Bob多了1个ETH,Alice少了1个ETH
在一个弱无状态的世界里,建设者将上述见证数据添加到区块中并证明其准确性。验证者收到区块,执行它,并决定它是否有效。这就ok了。
从验证者的角度来看,这里有一些影响:
保持状态所需的巨大的SSD需求消失了——这是目前扩展的关键瓶颈。
带宽要求会增加一些,因为你现在也在下载见证数据和证明。这是Merkle-Patricia树的一个瓶颈,但问题不大,不是VerkleTries遇到的那种瓶颈。
你仍然执行交易来完全验证。无状态承认了一个事实,那就是目前这并不是扩展以太坊的瓶颈。
弱无状态也允许以太坊放松对其执行吞吐量的自我限制,状态膨胀不再是一个紧迫的问题。将gas限制提高到3倍可能是合理的。
在这一点上,大多数用户的执行将在L2上进行,但更高的L1吞吐量即使对他们来说也是有益的。Rollup依靠以太坊进行DA和结算。随着以太坊扩展其DA层,发布证明的摊销成本可能占据rollup成本的更大份额。
VerkleTries
我们有意跳过了这些证人如何工作。以太坊目前使用Merkle-Patricia树来存储状态,但所需的Merkle证明对这些证人来说太大,并不可行。
以太坊将转向Verkletries来存储状态。Verkle证明的效率要高得多,所以它们可以作为可行的证人来实现弱无状态。
首先让我们回顾一下Merkle树是什么样子的。每笔交易开始时都有哈希值——底部的这些哈希值被称为“叶子”。所有的哈希值都被称为“节点”,它们是下面两个子节点的哈希值。最终产生的哈希值是”Merkle根”。
这个数据结构非常有帮助,它可以证明交易的完整性,而不需要下载整个树。例如,如果你想验证交易H4被包含,你需要Merkle证明中的H12、H3和H5678。我们有来自区块头的H12345678。因此,一个轻量级的客户端可以向一个完整的节点索取这些哈希值,然后根据树中的路线将它们散列在一起。如果结果是H12345678,那么我们就成功证明了H4在树上。
不过树越深,到底部的路线就越长,因此你需要更多的项目来证明。因此,浅而宽的树会更适合做高效的证明。
问题是,如果你想通过在每个节点下添加更多的子节点来使Merkle树变得更宽,那将是非常低效的。你需要把所有同级节点的哈希值散列在一起,才能摸到整颗树,所以你需要为Merkle证明接收更多的同级节点的哈希值。这将使证明的规模变得巨大。
这就是高效向量承诺的作用。请注意,Merkle树中使用的哈希值实际上是向量承诺——它们只是一些糟糕的承诺,只能有效地承诺两个元素。所以我们想要向量承诺,我们不需要接收所有的同级节点来验证它。一旦我们有了这一点,我们就可以使树更宽,并减少其深度。这就是我们如何获得有效率的证明大小——减少需要提供的信息量。
Verkletrie类似于Merkle树,但是它使用高效的向量承诺而不是简单的哈希来承诺其子代。因此,基本的想法是,每个节点可以拥有许多子节点,但我不需要所有的子节点来验证证明。无论宽度如何,这都是一个恒定大小的证明。
实际上,我们之前已经介绍了这个可能性的一个很好的例子——KZG承诺也可以作为向量承诺使用。事实上,这就是以太坊开发者最初计划在这里使用的东西。他们后来转向了Pedersen承诺,以完成类似的作用。它将基于一个椭圆曲线,承诺256个值。
那么,为什么不建立一个深度为1的树,而且要尽可能宽?这对验证者来说是件好事,因为他现在有了一个超级紧凑的证明。但是有一个实际的权衡,即验证者需要能够计算这个证明,而它越宽就越难。因此,Verkletries将位于1~256个值宽度的两个极端之间。
状态过期
弱无状态从验证者中移除状态膨胀约束,但状态并不会神奇地消失。交易的成本是有上限的,但它们通过增加状态给网络带来了永久的税收。状态的增长仍然是对网络的一种永久性拖累。我们需要做些什么来解决这个根本问题。
这就是我们需要状态过期的原因。长期不活动的状态会被砍掉,即使是区块建设者本来应包括的东西。活跃的用户不会注意到任何事情变化,而我们可以丢弃不再需要的沉重状态。
如果你需要恢复过期的状态,你只需要出示一个证明并重新激活它。这又回到了N个存储假设之一。只要有人仍然拥有完整的历史,你就可以从他们那里得到你需要的东西。
弱无状态性将削弱基础层对状态过期的直接需求,但从长远来看,特别是随着L1吞吐量的增加,这是很好的。对于高吞吐量的rollup,这将是一个更有用的工具。L2状态将以更高的速度增长,以至于它甚至会拖累高配置建设者。
第3部分一切都是MEV的锅
PBS是安全实现DS的必要条件,但请记住它最初的设计其实是为了对抗MEV的中心化力量。你会注意到今天以太坊研究中反复出现的一个趋势——MEV现在是加密货币经济学的前沿和中心。
在设计区块链时,考虑到MEV是维护安全和去中心化的关键。基本的协议层面的方法是:
尽可能地减轻有害的MEV,单一秘密领袖选择)
将其余部分民主化
剩余的部分必须很容易被捕获并在验证者中传播。否则,由于无法与复杂的搜索者竞争,它将使验证者组走向中心化。合并后,MEV占验证者奖励的比例会高得多,这就加剧了这种情况。这一点是不能忽视的。
如今的MEV供应链
今天的事件顺序长这个样子:
矿池在这里发挥了建设者的作用。MEV搜索者通过Flashbots将一捆捆交易转交给矿池。矿池运营者汇总出一个完整的区块,并将区块头传递给各个矿工。矿工用PoW来证明区块,在分叉选择规则中给予其权重。
Flashbots的出现是为了防止整个堆栈的垂直整合-这将为审查和其他讨厌的外部因素打开大门。当Flashbots诞生时,矿池已经开始与交易公司达成独家交易,以提取MEV。但是,Flashbots给了他们一个简单的方法来聚合MEV竞价,避免垂直整合。
在合并之后,矿池会消失。我们让普通的家庭验证者也能够相对容易地参与。这需要有人承担专业的建设者角色。家庭验证者可能并不像拥有高额工资的对冲基金那样擅长捕捉MEV。如果不加以控制,普通人无法在竞争中存活,这将使验证者组走向中心化。如果结构合理,该协议可以将MEV收入转用于日常验证者的质押收益。
MEV-Boost
不幸的是,协议内的PBS在合并时根本没有准备好。Flashbots再次提供了一个救急解决方案——MEV-Boost。
合并后的验证者默认直接从公共mempool接收交易到他们的执行客户端。他们可以将这些交易打包,交给共识客户端,并将其广播到网络上。(如果你需要复习一下以太坊的共识和执行客户端是如何一起工作的,我在第四部分有过介绍)。
但是你的妈妈和大众验证者不知道如何提取MEV,就像我们讨论的那样,所以Flashbots正在提供一个替代方案。MEV-boost将接入你的共识客户端,允许你外包专门的区块建造。重要的是,你仍然保留了使用你自己的执行客户端的权利。
MEV搜索者将继续发挥它们今天的作用。他们将运行特定的策略,并为他们的打包块出价,使其被包括在内。然后建设者将他们看到的所有打包块以及任何私人订单流汇总到最佳的完整块中。建设者通过运行在MEV-Boost上的中继,只把区块头传递给验证者。Flashbots打算运行中继器和建设者,并计划随着时间的推移进行去中心化,但对其他建设者发放白名单的过程可能会很慢。
MEV-Boost要求验证者信任中继,也就是共识客户端收到头部信息、签署它,之后区块主体才会显现。中继的目的是向发起者证明主体是有效的和存在的,这样验证者就不必直接信任建设者。
当协议内的PBS准备好了,它就会把MEV-Boost在这期间提供的东西汇总起来。PBS提供了同样的权力分离,使建设者更容易去中心化,并使发起者人无需信任任何人。
委员会驱动的MEVSmoothing
PBS还使得一个很酷的想法成为可能——委员会驱动的MEVSmoothing。
我们看到提取MEV的能力是对验证者组的一股中心化力量,但分配也是如此。每个区块的MEV奖励的高变异性鼓励验证者的组队,以便随着时间的推移使回报平滑。
默认情况是实际的区块发起者获得来自建设者的全部付款。而MEV平滑化将从这笔钱中拿一部分给许多验证者。一个验证者委员会将检查提交的区块,并证明这确实是出价最高的区块。如果一切正常,该区块进入流程,奖励将在委员会和发起者之间分配。
这也解决了另一个问题——带外的贿赂。发起人可能会被激励提交一个次优的区块,并接受直接的带外贿赂,以隐藏他们从某人那收到的付款。这种证明使发起人受到制约。
协议内PBS是实现MEV平滑的先决条件。你需要对建设者市场和正在提交的明确的出价有一个认识。这里面有几个开放的研究问题,但不妨碍这是一个令人兴奋的提议,对确保去中心化的验证者非常关键。
单槽拍板
快速得到最终结果是很好的。等待15分钟对于用户体验或跨链沟通来说并不理想。更重要的是,这是一个MEV重组问题。
后以太坊合并时代,会出现比现在更强大的确认——数以千计的验证者证明每个区块,而不是现在这样,矿工互相竞争,并可能在同一区块高度挖矿,而不投票。这将使重组变得相当困难。然而,这仍然不是真正的最终拍板结果。如果最后一个区块有一些诱人的MEV,可能会诱使验证者试图重新组链,并吃下奖励。
单槽拍板消除了这种威胁。逆转一个已完成的区块需要至少三分之一的验证者,而且他们的股份会立即被削减。
我不会在这里对潜在的机制进行过多的讨论。单槽拍板在以太坊的路线图中是非常遥远的部分,它是一个开放的设计空间。
在今天的共识协议中,以太坊只需要1/32的验证者来证明每个槽。在单槽中用BLS签名聚合将这种投票扩展到全部验证者组,需要更多的工作。这会把数十万张投票压缩到一个验证中。
Vitalik列出了一些有趣的解决方案,这里查看。
单一秘密领袖选择
SSLE旨在修补合并后我们将面临的另一个MEV攻击载体。
信标链验证者名单和即将到来的领袖选择名单是公开的,而且相当容易对他们进行去匿名化处理并映射其IP地址。你应该很容易发现这里的问题。
更复杂的验证者可以使用一些技巧来更好地隐藏自己,但普通验证者将特别容易被挖出,随后被DDOSd。这很容易被MEV所利用。
假设你是n区的发起者,而我是n+1区的发起者。如果我知道你的IP地址,我可以很容易对你进行DDOS,使你因超时而无法生成你的区块。现在我就可以捕获两个区块的MEV,获得双倍的回报。EIP-1559的弹性区块大小加剧了这种情况,所以我可以把本应是两个区块的交易塞进我的单个区块,而这个区块现在是两倍长。
简而言之,家庭验证者可以直接放弃验证,因为他们会被攻击。SSLE将使得除了发起者之外没有人知道什么时候轮到他们,从而防止了这种攻击。这不会在合并时就生效,但希望它能尽早实施。
第4部分合并的秘密
好吧,其实上面我一直在开玩笑。我真的认为合并相对很快就会来到。
这么令人激动的事情,我觉得我得站出来喊两句。你的以太坊速成课程到此结束。
合并后的客户端
今天,你运行一个单体客户端来处理一切。具体来说,全节点做以下两件事:
执行——执行区块中的每个交易,以确保有效性。使用前状态根,执行各个操作,并检查产生的后状态根是否正确
共识——验证你在最长的链上,完成了最多的工作。
两者是不可分割的,因为完整的节点不仅遵循最长链,还要遵循最长的有效链。这就是为什么他们是全节点而不是轻节点。即使在51%的攻击下,全节点也不会接受无效的交易。
信标链目前只运行共识,给PoS进行试运行,但没有执行。最终,终端总难度将被决定,届时,目前的以太坊执行区块将合并到信标链区块中,合并成一条链:
然而,完整的节点将在黑盒下运行两个独立的客户端,并进行互操作。
执行客户端——当前Eth1.0客户端继续处理执行。他们处理区块,维护mempools,并管理和同步状态。PoW则被弃用。
共识客户端——当前的信标链客户端继续处理PoS共识。他们跟踪链头,对区块进行通信和证明,并接收验证者的奖励。
客户端收到信标链的区块,执行客户端运行交易,然后共识客户端将遵循该链,如果一切检查无误。你将能够混合和匹配你所选择的执行和共识客户端,所有的客户端都支持互操作。一个新的引擎API将被引入,用于客户端之间的通信:
或者像这样:
合并后的共识
今天的中本聪共识很简单。矿工创建新的区块,并将其添加到观察到的最长的有效链上。
合并后的以太坊转向GASPER——结合CasperFFG加上LMDGHOST来达成共识。一句话——这是一个偏向活跃度的共识,而不是偏向安全性的。
区别在于,支持安全的共识算法在无法获得必要的票数时就会停止。支持活跃度的链无论如何都会继续建立一个乐观的账本,但如果没有足够的票数,它们就无法完成拍板。今天的比特币和以太坊永远不会达到最终拍板——你只是假设在足够多的区块之后,重构不会再次发生。
然而,以太坊也会在有足够票数的情况下通过定期检查点来实现最终拍板。每个32个ETH的实例都是一个独立的验证者,目前已经有超过38万个信标链验证者。总的纪元由32个槽组成,所有验证者被分割开来,在一个给定的纪元内对一个槽进行验证。分叉选择规则LMDGhost随后根据这些证明来确定当前链头。一个新的区块在每个槽之后被添加,所以总的纪元是6.4分钟。一般在两个纪元后,最终结果会以必要的票数实现。
总结时刻
所有的道路都通向中心化区块生产、去中心化的无需信任区块验证和抗审查这一终局。以太坊的路线图突出了这一愿景。
以太坊的目标是成为终极的统一化DA和结算层——大规模的去中心化和安全性为基础,上面是可扩展的计算。这是将密码学假设浓缩到一个强大的层。一个统一的模块化的、包括执行的基础层,同时能捕捉到整个L1设计的最高价值——导致货币溢价和经济安全,正如我最近报道的。
我希望你对以太坊的研究是如何交织在一起的有了更清晰的认识。这是非常前沿的,所有的部件都在变化当中,要最终弄清楚这一宏大蓝图并不容易。你需要时刻跟进。
最终,这一切都回到了那个单一的愿景。以太坊为我们提供了一条通往大规模可扩展的令人信服的道路,同时又坚守了我们在这个领域非常关心的那些价值。
特别感谢DankradFeist的审阅和见解。
参考文献
终局:https://vitalik.ca/general/2021/12/06/endgame.html
Can:https://twitter.com/CannnGurel
Celestia:https://members.delphidigital.io/reports/pay-attention-to-celestia
很棒的串推:https://twitter.com/bkiepuszewski/status/1518163771788824576
椭圆曲线密码学的基础知识:https://blog.cloudflare.com/a-relatively-easy-to-understand-primer-on-elliptic-curve-cryptography/
探索椭圆曲线配对:https://vitalik.ca/general/2017/01/14/exploring_ecp.html
KZG多项式承诺:https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html
可信初始化的原理:https://vitalik.ca/general/2022/03/14/trustedsetup.html
区块链的可扩展性仍有限制:https://vitalik.ca/general/2021/05/23/scaling.html
多维度EIP-1559:https://ethresear.ch/t/multidimensional-eip-1559/11651
指数定价规则:https://ethresear.ch/t/make-eip-1559-more-like-an-amm-curve/9082
托管证明:https://dankradfeist.de/ethereum/2021/09/30/proofs-of-custody.html
资源定价:https://www.youtube.com/watch?v=YoWMLoeQGeI
指数EIP-1559机制:https://dankradfeist.de/ethereum/2022/03/16/exponential-eip1559.html
devp2p:https://github.com/ethereum/devp2p
weaksubjectivity:https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/
nonce:https://www.investopedia.com/terms/n/nonce.asp
MEV-Boost:https://ethresear.ch/t/mev-boost-merge-ready-flashbots-architecture/11177
GASPER:https://arxiv.org/abs/2003.03052
DankradFeist:https://twitter.com/dankrad
http://disaggregated
https://members.delphidigital.io/reports/valuing-layer-1s-memes-money-or-more
来源:金色财经
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。