0814-64300514
0814-64300514
时间:2024-11-03 点击数:
本文将总结现有环绕着以太坊 2.0 Phase 2 的研究成果,重点注目中继网络以及手续费机制。每种议案都有其有所不同的权衡权衡,而且被有所不同的平台所使用,因此做到一次合理且全面的汇总,能让新的入门的研究者更慢初学者。
背景在了解辩论中继网络之前,我们再行总结一下以太坊的主要瓶颈之一(or 没之一):状态。在以太坊中,状态所指的是账户余额、合约代码、合约存储内容的子集(在比特币中,状态所指的是 UTXO 的子集)。不论什么时候继续执行交易,都要对状态(大约 45 GB 的不能传输数据)展开读写操作。
早些时候,人们曾对以太坊计算出来模型原生的不可扩展性明确提出过批评;但时至今日,反而是状态的读取沦为继续执行交易的成本瓶颈,磁盘的 I/O 性能出了运营以太坊全节点的制约因素。请注意,为了需要按照 富状态范式(stateful paradigm)继续执行任何的交易,仅有节点必需确保所有状态一直放到可采访的方位(比如内存、互相交换空间)。
如果应用于在单一区块链的场景,也许这还能只得拒绝接受,但是一旦面对分片、面对分片上委员会的重组,这种拒绝是十分不合理的。设想一下,每当检验者被登录到一条分片链,他就得实时该分片上的所有状态;则这种系统就等价于单一区块链,只是此时的区块大小相等分片区块大小 * 分片数量。这就是为什么我们必须无状态客户端。分片及无状态客户端在无状态客户端范式中(原名“storageless”),检验者只必须存储一个经过传输的区块链状态表(一般来说称作累加器 ,accumulator),大幅度减少了继续执行交易的开销。
一般来说累加器的大小是常量(例如:状态的 Merkle 树根值),不过也有可能是对数大小。无状态客户端的本质是,每笔交易都附带当前累加器的 亲眼数据(witness),亲眼数据中包括了所有继续执行该交易所须要的信息。在以太坊中,用于稠密 Merkle 树根( SMT,Sparse Merkle Tree )作为累加器,网卓新闻网,一笔交易所牵涉到的所有状态元素都可以被包括入默克尔树根分支中。
在其他应用于上,无状态客户端可以延长以太坊节点的首度实时时间,这就是 Beam Sync 的原理。栏中:有一些密码学累加器(如 RSA 累加器)比 Merkle 累加器性能更佳,但是这种累加器必须不受信任初始化,或是用于并未检验的前沿密码技术,所以安全性部署到生产系统上还必须点时间。但无状态客户端也有自己的挑战:一旦用于 Merkle 累加器,每当完结一次原始的继续执行后,亲眼就过期了。如果模型拒绝每笔交易都包括分开的亲眼,然后顺序继续执行这些交易,则位列后头的交易的亲眼数据就不会过期,必需需要随着前面每一笔交易完结而改版自己的亲眼。
救下改版这些 Merkle 累加器的亲眼牵涉到零哈希支出方法——如果亲眼数据可以作为附加物加到到“一大包”交易上的话,就不必须改版归属于每笔交易的分开亲眼,或是说道可以统合为多重证明(multiproof)。假如所有用户都确保着全节点,并动态改版亲眼的状态,那么无状态客户端系统是需要立刻被使用的。惜在分片环境下,这意味著拒绝所有用户确保自己所在分片上的所有状态;这样做到不仅不切实际,而且就如我们上面提及的,这就相等于只是创建一条区块体量更大的单一区块链。
为了解决问题,这里引进了 中继者(也称作状态提供者) 的概念。中继者负责管理获取用户所需的亲眼,并以此向用户缴纳服务费。
和用户不一样,中继者可以将服务探讨在单一分片上;但中继者无法预见用户什么时候必须状态,因此必需确保亲眼的及时改版,也就是动态存储状态(所以被称作状态提供者),以供用户提供。中继者的引进也不会惹来一大堆简单的问题,也是以太坊 2.0 的全面部署所面对的最重要的对外开放问题之一。第一点,如果无法很好地均衡中继者和区块提议者(i.e. 检验者)所获得的利益,检验者就不会被鼓舞沦为中继者,则涉及服务的提供成本可能会让一般使用者望而却步。第二点,要让中继者需要从用户和检验者一处缴纳费用(即:手续费机制(fee market)),同时不至于引进过于大的支出,似乎不是件非常简单的事;换言之,检验无状态交易很更容易,但是获取适当的亲眼很艰难。
中继网路及费用市场议案以太坊 2.0 Phase 2 的设计空间相当大,也经常出现了很多对继续执行模式的建议。每种建议都各自阐释了如何通过收费,融合中继网路的机制,将交易更佳地在用户和区块提议者之间展开传送。本章节不会尽量简练而全面地总结有所不同的协议,并侧重分析它们在中继网路及手续费机制上的详。校订者(Collator)议案(已弃用)这是 Phase 2 阶段的早期建议,将分片链的建块分成三个部分:提议者(proposer)、校订者(collator)、执行者(executor)。
一些提议者负责管理搜集交易,包成区块(也叫 collation),一些提议者负责管理递交 collation 到链上(变为区块),最后,执行者根据被建议的 collation 得出一个新的状态根。该议案未曾获得几乎的研究;因此,也没对手续费缴纳机制的研究。除去别的因素,这项议案被弃用还因为,它的激励机制希望用户同时沦为提议者、校订者、执行者,以获得利益最大化。
Phase 1 and DoneCasey Detrio 在其首创先河的博文《Phase 1 and Done:数据可用性引擎——以太坊 2.0》中特别强调:在 phase 1 阶段,可以加到尽可能少的继续执行分片来桥接数据,而不必须做到状态分片。在此方案中,分片可以做两件事:1)对数据展开证书(i.e. 将一系列交易放入如 Merkle 树根等不受接纳的数据结构中);2)继续执行非常简单的无状态操作者,例如检验不受接纳数据的零科学知识证明。可以通过上载 合约 到信标链(beacon chain)来定义一个数据块处理程序(合约未来不会改以“实编译器(precompiles)”,然后沦为“继续执行环境(execution environment)”),合约的形式有可能是客户端可解析的字节码,明确怎么自由选择要从视整个协议的内容而以定。
“Phase 1 and Done”规避了大部分关于费用缴纳机制的问题,因为缴纳机制问题在以往的议案中都不存在,而且也将之后不存在,所以该议案转而企图定义为使 Eth2.0 长年能用而须要做出的大于更改,并且期望能尽早找到答案。还有个建议是通过以太坊 1.x 上的合约来缴纳费用(区块提议者在以太坊 2.0 上获取经过处置的能用数据块,然后我们通过一个 rollup 合约在以太坊1.x上收费给提议者);不过这个可行性令人猜测,因为这不会使得以太坊 2.0 的可用性反感倚赖以太坊 1.x。Phase 2 Proposal 1紧接着 Detrio 的研究,Vitalik Buterin 对 Phase 2 阶段明确提出了明确的新议案:phase 2 proposal 1。在此议案中,继续执行脚本(execution script,最初叫作“信标链合约”)存放在信标链上,以太币可以被现金继续执行脚本(为了缴纳费用),而且意味著会瓦解信标链;每个分片的状态和继续执行都是几乎独立国家的。
请注意,它们的名字可能会有误导性——继续执行脚本乃是定义继续执行交易的虚拟机 的规则,而非我们今天在以太坊看见的智能合约。继续执行脚本必需以客户端可解析、计量、编码的方式(例如 ewasm 代码)定义数据模型及操作码。
为了缴纳费用,每个继续执行脚本本质上都是个 layer-2 系统,检验者无法 “获知” 其内部的收费机制。这不是设计缺失,而是蓄意为之的;如果拒绝分片检验者去解析和计算出来有所不同的费用机制(有可能牵涉到有所不同货币),这毫无疑问不会造成实行可玩性及经济机制复杂性大幅度减少,引进更加多有可能被反击的弱点,甚至显得几乎不能用。
相当大程度上,赞成“经济抽象”的理由也可以用作赞成这种依脚本定义手续费种类的继续执行模式(译者录:“经济抽象” 也被称作 “费用一般化”,在协议层反对用户及检验者自定义用何种代币来缴纳手续费。有人指出这不会使原生代币丧失价值根基)。
因为检验者无法必要从继续执行脚本中缴纳费用,他们必需通过其他方式获得服务费。这里通过一个类似的(即 enshrined 类型的)继续执行脚本已完成;任何人都可以发送到包括以下逻辑的交易:“如果在某分片中的某时隙包了这个用于了某继续执行脚本的数据,则我要向记录这个数据块的人缴纳这笔费用”;这里的操作者都是由中继者(也被称作操作者)已完成:中继者负责管理搜集用户的交易,根据非-enshrined 普通继续执行脚本登录的规则缴纳费用,然后再行向分片中的区块提议者(建块人)根据 enshrined 继续执行脚本缴纳包交易的费用。William Villanueva 的博客 A Journey Through Phase 2 of Ethereum 2.0 对到这里为止的 Phase 2 议案得出了极致的总结。Phase 2 Proposal 2受到 Detrio 前期工作的灵感,V 神再度明确提出 Phase 2 Proposal 2,针对对议案1展开修改,后移除了分片链上状态,转用信标链跟踪随分片各异、随继续执行环境(Execution Environment ,EE,原本叫继续执行脚本)各异的状态根。
这种设计的益处是,有所不同的继续执行环境能自由选择自己的累加器(例如:稠密 Merkle 树根、红黑树根、密码学累加器,等等),而不像之前的议案,必需奉为(enshrine)一种累加器形式。现在,一般交易流程如下:用户创立交易并将其发送给中继者,中继者随用户必须加到亲眼(如果用于 Merkle 累加器,则以 Merkle 分支的形式加到)以取得用户缴纳的费用。
接着中继者将多个交易展开包,一起发送给区块提议者,并通过协议内置的机制向他们缴纳费用,让提议者将该批交易包到下一个(分片)区块中。与议案 1 一样,这里的“协议内置的机制”是指一个更高等的 EE(an enshrined EE),所有检验者都能辨识的 EE。对于检验者来说,此方案一定程度上减低了他们的开销,但是由于以上操作者仍必须一些分片状态,而该议案又没设计用户与中继者的协议内费用缴纳机制,所以还没解决问题中继网络的全部问题。首先,用于协议外手段展开缴纳不会巩固用户的隐私维护;其次,我们不确切要如何创立一个几乎脱链的系统(不依赖另一个外部的区块链)来确保用户和中继者一手交钱一手交货(即交易原子性);第三,用于协议外手段展开缴纳的潜在高风险,以及沦为中继者的高算力拒绝(因为中继者如果想要服务某个EE或分片,就必需存在他们的所有状态,才能需要分解亲眼),可能会造成中心化问题——在最糟的情况下,用户和以太坊 2.0 网络之间有可能只只剩几个 “未尽的” 中继者。
重返交易内存池模式Vitalik 在新的议案中提及,让中继者有条件地向区块提议者收费,必须艰巨的双重允诺方法来确保缴纳的原子性,因此,不如用一个手续费市场 EE 来解决问题所有问题。在该议案中,EE 将具备自己的余额。EE 继续执行一批交易后不会输入一个收据,负责管理缴纳费用的高等 EE(enshrined EE)不会根据这个数据,将以太币从 该 EE 账户 转交区块提议者。
因此,缴纳费用的高等 EE 需要“回看”之前的收据并处置账户。而充值 EE 账户有可能就是中继者(或是其他利益涉及方)的责任了。
这个议案的益处是,不必须通过什么简单的方法来协商中继者和区块提议者之间的缴纳往来,但没说明用户该怎么和中继者展开交互,只是建议用于缴纳地下通道。基于最初的议案,Villanueva 建议重返交易内存池模式。在这种情况下,中继者只需作为 状态提供者,仅有获取亲眼而不必须包交易;区块提议者(或更加普适地说道,分片检验者)确保一个内存池,拆分 所需的亲眼数据来包交易。
有感于每个 EE 可以自由选择有所不同的累加器,因此 EE 必需事前声明一个相同的拆分亲眼的方法,让区块提议者可以统合两个及以上的亲眼,例如将多个 Merkle 分支统合成一个 Merkle 多重证明。因为状态提供者只必须获取亲眼(一般来说以 Merkle 分支的形式),目前有数的很多角色都可以胜任这个任务:如,重客户端服务器。可以用于更加便利的工具和更加较低的成本来鼓舞更好重客户端服务器获取亲眼,这对于高可靠性大有协助。
不过对于用户来说,被迫用于低摩擦力的缴纳渠道收费给状态提供者,依然很令人困惑。Phase 2 另类架构就在旋即之前,V 神明确提出了 Phase 2 另类架构,想几乎去除分片的状态。关键之处在于,在信标链中重新加入了原始的、有状态的、可传达的状态切换引擎(例如 EVM)。
这个引擎作为“调度员”,持续跟踪 EE 的状态根。调度员设计也让多分片事务继续执行沦为有可能:按照既定的顺序检查分片和时隙,以保证准确继续执行了横跨分片到同一个 EE 的多个交易(通过对继续执行前状态和继续执行后状态的状态根展开排序、忽视掉任何违宪或乱序的分片区块)。这个议案的费用缴纳机制与前一个议案比起没什么变化,不过因为调度员具备充足的能力来处置 EE 余额管理和收据消费,因此仍然必须特定的缴纳费用 EE 不存在。
分片链修改议案在 DevCon 5 大会上,V 神公布了关于以太坊 2.0 架构的根本性重构消息,这是灵感自 Near 协议的分片块——夜影(Nightshade)的设计。在新的议案中,不拒绝每个分片链都运营互相独立国家的末端自由选择规则,而是交叠着以更慢的速度分解区块和交联(crosslink);分片中的区块凸随着信标链的区块一起分解,而且所每个分片都与每个信标链区块交叉相连(在长时间情况下)。
该体系结构减少了分片交叉链接的数量,为应付交联数量的减少,分片的数量从1024 增加到 64 个;与此同时每个分片的吞吐量也有所增加,使整个系统的吞吐量维持原本水平。上述思维模式的根本变化,使得费用市场显得更加更为非常简单:由于分片数量大大减少,横跨分片通信更加修改,用户大可必要在每一个分片上都存在 Ether,必要给区块提议者缴纳(又可以通过前面提及的通过 EE 输入收据的议案)。助长了大半的费用市场问题,现在只只剩中继网络(状态提供者)的挑战还仍然不存在。
警告以上关于以太坊 2.0 的中继网路/费用市场的辩论,并非几乎详细的:· 对于用户、中继者、区块提议者来说,大家都必须必要的收费鼓舞及服务。用户可以通过收费获得所需的亲眼,中继者缴纳费用获取亲眼,而区块提议者收费包交易。关于中继者向区块提议者收费(或间接的通过 EE 收费)的方式,可以在协议内声明;但是用户期望一旁要获得亲眼数据,一旁要确保交易被包,其收费的方式就没那么全然了。
· 对于用户来说,好的缴纳方法应当是较低阻力的,便利其切换有所不同的中继者。但是倚赖外部区块链的缴纳地下通道,不存在预先缴纳押金及对外部链活性(liveness)的拒绝;理想的情况还是能在协议内解决问题用户缴纳的问题。· 录上一点,应当让中继者无法审查用户。
惜的是,亲眼来源于于嵌入的采访列表,因此没办法制止中继者设置黑名单。· 检验者不用“解读”每个 EE 内部的缴纳方式,因为这不会十分简单,对部署及创建有效地的市场带给极大的阻力。
· 用户不是非确保仅有节点不能(例如,不必须为了确保自己所需的亲眼而去确保)。我们期望这个议案对于重客户端十分友好关系。
· 最后一点某种程度很关键:抵挡 DoS 反击十分最重要。按照亲眼的拆分/创下方式,很有可能会有向检验者发动的 DoS 反击。切勿要当心有人利用这种漏洞。
总结回顾过去的一整年,环绕着中继网络及费用市场的研究展开了多次递归,致力于给用户和重节点带给较好的用于体验的同时,减少检验者开销,尽量确保免除管理制度性。展望未来,我们期望看见更加多关于 Phase 2 的议案,更进一步改良和完备以太坊 2.0 的各个层面!。
本文来源:必一运动·(B-sports)-www.349094.com