主页 > imtoken客户端app > 意见 | 以太坊的路线图应该改变吗?

意见 | 以太坊的路线图应该改变吗?

imtoken客户端app 2023-11-03 05:07:55

PoS 的幽灵在以太坊上回荡。 -- 铭文

自《A rollup-centric ethereum roadmap》一文发表以来,整个社区都对以太坊(尤其是以太坊 2.0)的路线图提出了质疑。

2020年11月18日,在以太坊基金会Eth2.0研究团队的第五次AMA活动()中,Vitalik明确表示路线图发生了变化:(1)暂时不再强调Phase2的重要性Phase 1 committed实现用于汇总的数据分片(分片数据); (2)信标链将具备执行功能,即Eth1-Eth2合并后,信标链区块将直接包含交易; (3) ) Phase 0实施后,轻客户端支持、数据分片、合并三大任务并行推进,任何模块一准备就上线。

为最初的三阶段路线图辩护不是本文的目的。 相反,这篇文章想论证三阶段路线图是虚无缥缈的,新的路线图是鸡肋的,没有任何与 Eth2.0 相关的路线图值得以太坊放弃目前的运行模式,转而采用基于 PoS 的系统。

以太坊经典和以太坊_以太坊国外支持转换吗_国外以太坊崩盘

在这里,我先说明一下最初的三阶段路线图的论证思路和技术难点; 然后分析新路线图的可扩展性。 最后证明,新路线图的可扩展性优势不足以让以太坊冒险进入 PoS。

Eth2.0 的三阶段路线图

以太坊经典和以太坊_国外以太坊崩盘_以太坊国外支持转换吗

在过去的两年里,广为流传的 Eth2.0 路线图规划了三个顺序组成部分:

从这张路线图中可以清楚地看出,以太坊2.0最初的目标是打造一个“分片执行”系统,也就是说:每个分片都有自己的状态,这些状态又分为每个分片的状态转换规则是改变了; 改变的状态由信标链最终确定; 因此,以太坊 2.0 成为一个系统,其中多个分片可以并行处理交易。 这也意味着以太坊2.0是一个“共识”和“交易处理(验证)”的解耦系统。 分配给每个分片的验证者负责验证交易和状态的正确性; 但是这些状态的终结依赖于信标链的epoch终结机制,这两个过程并不是完全同步的。 这种“PoS 信标链+多分片”的架构似乎也很好地利用了 PoS 算法本身的特点:为了解决 No-thing-at-stake 问题(PoS 区块不需要支付计算,所以他们有资格出块的账户会尝试同时在不同的分叉上出块,导致系统崩溃),以太坊 2.0 中使用的 Casper 算法要求用户先存入一部分保证金才有资格对于区块生产,如果验证者滥用区块生产资格(例如同时支持两个分叉),将被罚款; 因此,像Casper这样的算法实际上在区块链上创造了两种可以相互通信但又相互独立变化的状态:一种是普通状态,一种是用户的状态,一种是验证者的区块权重状态; 共识过程基于区块权重状态,达成共识也会改变区块权重状态; 因此,共识过程本质上独立于用户交易的验证,可以解决耦合; 对于任意交易批次和结果状态,共识过程可以抽象为“finality终结机制”,逻辑上多分片并行执行成为可能。

以太坊国外支持转换吗_以太坊经典和以太坊_国外以太坊崩盘

至于其可扩展性,以太坊分片技术“二次分片(Quadratic sharding)”的名称就揭示了端倪:假设分片上交易的执行复杂度可以降低到与区块头验证相同的难度,那么分片执行架构可以使得整个系统的处理能力随着参与节点处理能力的线性增长而呈二次方增长。 通俗地说,如果参与网络的节点(平均)可以在一段时间内验证 4 个区块头,则意味着在参与一个分片时,节点可以同时验证 4 个交易。 系统总处理能力为4个分片×4笔交易/分片=16笔交易; 如果节点的处理能力变成8(2倍),那么处理能力就会变成64笔交易(4倍)。 听起来不错,但这种“平方级扩展”的说法包含以下假设: (1) 有一种技术可以将分片交易的验证简化到与验证区块头一样的难度; (2) 不存在跨分片交易,即各个分片中的交易完全不会相互依赖。 跨分片交易需要占用多个分片的处理能力,同时还要占用信标链的处理能力,会大大降低可扩展性。 关于(1),这个假设很可能得到满足。 无状态就是这样一种技术。 它的思想是在传播交易(或传播区块)时,有一个交易所访问状态的证明(witness),这样交易的验证者就可以验证交易的有效性,而不必持有状态数据在事务执行的时间。

这是非常关键的。 如果没有无状态,参与分片验证的验证者必须保存分片的状态,因为验证者会不断分配到不同的分片链上,这意味着他们必须保存所有分片。 实际上,这意味着他们必须不断地下载所有分片的块并处理交易,从而使整个系统崩溃成一个大块系统(例如:投入可以处理 16 个交易的资源,处理 16 个交易)。 遗憾的是,到目前为止,以太坊 1.0 还没有开发出足够轻量级的无状态方法。 关于(2),那就不多说了。 如果不能实现跨分片交易,分片执行的系统就没有意义,因为每个分片各干各的。 必须有一种方式让ETH存在于每个分片上,这样这个系统仍然可以以ETH为主体。 并且直到今天,还没有不增加信标链处理能力的跨分片交易方案。 原因也很简单。 对于任何一个A分片,因为并行处理,不知道任何一个B分片上发生了什么交易,是否需要重写这个分片的状态。 因此,必须有一个通信层,它可以被信任地证明在 B 分片上发生了试图重写 A 分片状态的交易。 一旦信标链需要能够处理交易,方级扩容的效果就会被打破。 (顺带一提,满足这个可信通信层需求的链成为事实上的Layer-1,而其他分片成为事实上的Layer-2,很像“Layer-1 + Layer-2”。

以太坊国外支持转换吗_国外以太坊崩盘_以太坊经典和以太坊

) 除了可疑的可扩展性之外,分片执行还带来了许多经济上有趣的问题。 例如,如果跨分片交易的处理时间超过分片内交易的处理时间(这是不可避免的),这意味着 ETH 在不同分片上的价值将不相同。 就好像美国境内的美元与美国境外的美元实际上不是一回事。 不管有多少个分片,都会有至少两个ETH价格,一个是金融应用最丰富的分片(即Eth1分片)上的ETH价格; 另一个是ETH在其他分片上的价格,后者必须要交一定的手续费,交一定的时间才能兑换前者,所以前者肯定有一定的优惠。 同理,即使每个分片上都有uniswap,不同分片上市场的交易滑点一定是不一样的。 最终大家会汇聚在一个分片上,因为大家在一起的时候,流动性是最充裕的,资金效率也是最高的。 . 在某种程度上,可以认为几乎不需要跨分片交易——但这也意味着其他分片上闲置的交易处理能力根本没有意义。 分片执行系统的技术难点在此不再赘述。 有兴趣的可以想想分片执行系统是怎么支付手续费的。 但是我这里要说的是,分片执行系统的设计理念是有悖于大家的实际需求的,也有悖于事物发展的规律。 全局状态(可组合性)不是问题,而是每个人都需要的; 正是因为以太坊让所有金融应用瞬间结合,创造了一个价值可以零摩擦流通的空间,而以太坊具有改变世界的潜力; 在协议层为价值流通制造摩擦是弄巧成拙的。

当你有了一个好的基础层,你应该想办法维护这个基础层,剩下的让用户自己选择,让生态自己进化——不要以为设计就能设计出生态,过度设计只会增加成本在每个人身上。 碎片化执行(Phase 2)的搁置证明了它的难度——在可预见的未来,这条路不会产生令人满意的结果。 即便如此,我认为 Eth2.0 的研究人员并没有完全放弃三阶段路线图。 Vitalik 还强调,改变后的路线图也完全兼容 Phase 2,但 Phase 2 不再具有优先权。 但实际上,放弃分片执行才是以太坊应该选择的路径。 可执行的信标链路线图 在以太坊 2.0 的新路线图中,最引人注目的一点是信标链区块将包含合并后的 Eth1 分片的交易,即信标链具有执行功能。 其他分片只有保存数据的功能。 事实上,“数据分片”在新路线图中的定位是“数据可用性(data availability)layer for rollup”。 没有可执行分片,二次缩放是不可能的。 那么,这种“PoS Layer-1 + rollup + rollup 数据不占用主链区块空间”架构的可扩展性如何呢? 要回答这个问题,我们先来看看rollup方案与主链的交互方式。

国外以太坊崩盘_以太坊国外支持转换吗_以太坊经典和以太坊

首先,你可以将 Rollup 系统理解为无状态合约。 这个合约的内部状态(哪个用户有多少钱)对外界是不可见的; 但是,合约中发生的所有交易的数据都会定期公开出来并公布在主链上,这样任何第三方都可以在获取这些数据后重构合约的内部状态。 使用有效性证明的rollup(如zkRollup)的特点是:每次合约披露交易数据时,都附带一个“计算完整性证明”,证明这些交易已被正确执行,因此新的状态根应该是XXX; 如果证明可以通过合约的验证,合约将更新状态根; 如果证明不能通过验证,合约将拒绝更新。 使用防错的rollup(如Optimistic Rollup)方案恰恰相反:任何人每次公开合约的交易数据,都必须存入保证金,并断言合约的新状态根为YYY; 一段时间后,其他任何人都可以存入保证金并出具虚假证明来质疑该断言; 虚假证明证明该批交易存在缺陷,或者交易处理后的新状态根本不是YYY; 如果挑战成功,发出虚假断言的人将损失保证金; 如果一段时间内无人挑战,则合约更新状态根为YYY。 这两种方案都必须在链上发布数据,所以会占用链上空间; 而且,链上空间的大小决定了rollup系统单位时间内的处理能力(即TPS)。

稍微深入思考一下,如果这些交易数据能够被释放到数据约束较少的地方,或者说不占用Layer-1区块的空间,那么处理能力就可以翻倍。 这样的地方多的话,也能起到事半功倍的效果。 这就是“data sharding”和“rollup-centered roadmap”的概念:让rollup scheme把所有的交易数据放到shard block中,有多少shard就可以增加多少倍的处理能力; 目前一个以太坊区块的数据量大约在 20-30 KB,这显然是安全的。 如果我们有 64 块,我们可以每 15 秒提供 64*30 = 1920 KB = 1.9 MB 的数据。 而且,我在用户端提供了这么大的数据吞吐量,但是不会成为整个节点的负担,因为你想下载就下载数据,不下载就不用下载不想下载(也就是“分片”的意思)。 大家,你下载一点,我下载一点,节点的负担还是很轻的——反正验证这些rollup合约的状态不需要我有rollup所有的历史交易数据。 以太坊的状态仍然是安全的。 听上去很有道理,但同一句话过于乐观,假设太多:(1)这种“想下载就下载,不想下载就不下载”的方法根本行不通zk rollup:当zk rollup要更新状态根时,zk rollup合约更新操作的验证者(即Layer-1的全节点)在接受证明时也必须获得证明对应的交易数据,否则验证不会通过。

(不需要提供交易数据,也有一种只通过验证证明来提升合约状态根的解决方案,叫做Validium,不是rollup)。 换句话说,如果只考虑zk rollup,那么“data sharding”方式在带宽上和大块没有区别。 无论数据最初发送给谁以及存储在何处,所有节点都必须下载它。 (2) 对于optimistic rollup,如果你愿意采取更乐观的假设,当然可以。 你根本无法下载交易数据,只保留最新的最终状态根。 只有当发生争议时,下载相关的从全节点来看,不失去验证合约状态的能力; 但从用户的角度来看,情况就完全不同了:你不确定是否可以随时重构你的状态,完成提现。 换句话说,用户将不确定他们使用的是 optimistic rollup 还是 plasma。 本来,optimistic rollup 的解决方案是为了保证所有全节点都有历史交易的备份以太坊国外支持转换吗,这样用户就可以轻松地重建自己的状态,提交状态证明(或断言)来完成取款; 但是如果失去了这个保证,你将不确定我是否可以重建状态。 optimistic rollup 的安全性也会受到影响:它的安全假设是至少有一个获得交易数据的人遵守协议; 在数据分片模式下,你不知道有多少人会去请求这部分交易数据。

总而言之,当“data sharding”模式与zk rollup结合时,无法在带宽方面提供更大的可扩展性,但与扩展区块空间具有相同的效果; 结合optimistic rollup时,与大区块相比,其扩展性优势与挑战频率成反比; 更严重的是,它有将 optimistic rollup 退化为 plasma 的风险(根据定义,optimistic rollup 不再存在,应该用介于 optimistic rollup 和 plasma 之间的另一个名称来指代)。 结论 Rollup 方案实际上是吸取了 Layer-2 开发过程的血淋淋的教训后的凤凰飞出。 其最大的特点是为用户的资金安全提供了充分的保障。 因为任何获得交易数据的人都可以重建状态,而区块链保证了这些交易数据的持续数据可用性,rollup 方案可以提供 layer-2 方案中首屈一指的用户保护。 只有这样的解决方案,用户才敢真正使用。 放弃这个好处,基于最大性能的乐观假设来设计系统,只能设计出用户不敢使用的东西。 只要意识到rollup本质上是一种合约设计模式,“PoS+数据分片+rollup可以提供更大吞吐量”的神话就可以一目了然——rollup可以提供同样的可扩展性,data sharding可以提供更多,只是因为引入了其他安全假设,使得rollup牺牲了安全性来换取吞吐量。 问题是这样的合约在安全性方面比 rollup 弱。 不是说没有出现可扩展性更强的合约,也不是说不能在pow链上设计,只是设计了就没人用了。

自 2017 年以来,以太坊社区一直在努力寻找满足实际需求的安全可扩展性解决方案。 很多人可能认为“PoS+分片”可以提供强大的可扩展性,但那是一个“分片执行系统”,它本身就有一堆问题。 摆在我们面前的“可执行信标链线”无非就是牺牲合约本身的属性来换取吞吐量。 今天以太坊国外支持转换吗,没有证据表明以太坊应该采用 PoS 来实现可扩展性。 归根结底,只有满足用户需求的性能提升才是真正有意义的性能提升。 如果不从用户的实际需求出发,相反,从技术美感或最大性能的假设出发,只能设计空中楼阁。 如果可能,让用户自己做决定。 在协议层担心太多通常会增加摩擦。 以太坊的路线图应该改变吗? 当然,你应该放弃这些不切实际的幻想,回去问问用户他们需要什么。 (结束)