📢 Gate广场 #MBG任务挑战# 发帖赢大奖活动火热开启!
想要瓜分1,000枚MBG?现在就来参与,展示你的洞察与实操,成为MBG推广达人!
💰️ 本期将评选出20位优质发帖用户,每人可轻松获得50枚MBG!
如何参与:
1️⃣ 调研MBG项目
对MBG的基本面、社区治理、发展目标、代币经济模型等方面进行研究,分享你对项目的深度研究。
2️⃣ 参与并分享真实体验
参与MBG相关活动(包括CandyDrop、Launchpool或现货交易),并晒出你的参与截图、收益图或实用教程。可以是收益展示、简明易懂的新手攻略、小窍门,也可以是现货行情点位分析,内容详实优先。
3️⃣ 鼓励带新互动
如果你的帖子吸引到他人参与活动,或者有好友评论“已参与/已交易”,将大幅提升你的获奖概率!
MBG热门活动(帖文需附下列活动链接):
Gate第287期Launchpool:MBG — 质押ETH、MBG即可免费瓜分112,500 MBG,每小时领取奖励!参与攻略见公告:https://www.gate.com/announcements/article/46230
Gate CandyDrop第55期:CandyDrop x MBG — 通过首次交易、交易MBG、邀请好友注册交易即可分187,500 MBG!参与攻略见公告:https://www.gate.com/announcements
以太坊协议升级路线图:EVM改进、账户抽象与1559优化
以太坊协议可能的未来(六):繁荣
在以太坊协议设计中,有许多"细节"对以太坊的成功非常重要。实际上,约一半的内容涉及不同类型的 EVM 改进,其余部分则由各种小众主题构成,这就是"繁荮"的意义所在。
繁荣:关键目标
EVM 改进
解决了什么问题?
目前的 EVM 难以进行静态分析,这使得创建高效实现、正式验证代码和进行进一步扩展变得困难。此外,EVM 的效率较低,难以实现许多形式的高级密码学,除非通过预编译显式支持。
它是什么,如何运作?
当前 EVM 改进路线图的第一步是 EVM 对象格式(EOF),计划在下一个硬分叉中纳入。EOF 是一系列 EIP,指定了一个新的 EVM 代码版本,具有许多独特的特征,最显著的是:
旧式合约将继续存在并可创建,尽管最终可能会逐步弃用旧式合约(甚至可能强制转换为 EOF 代码)。新式合约将受益于 EOF 带来的效率提升——首先是通过子例程特性稍微缩小的字节码,随后则是 EOF 特定的新功能或减少的 gas 成本。
在引入 EOF 后,进一步的升级变得更加容易,目前发展最完善的是EVM 模块算术扩展(EVM-MAX)。EVM-MAX 创建了一组专门针对模运算的新操作,并将其放置在一个无法通过其他操作码访问的新内存空间中,这使得使用诸如 Montgomery 乘法等优化成为可能。
一个较新的想法是将 EVM-MAX 与单指令多数据(SIMD)特性结合,SIMD 作为以太坊的一个理念已经存在很长时间,最早由Greg Colvin 的 EIP-616提出。SIMD 可用于加速许多形式的密码学,包括哈希函数、32 位 STARKs 和基于格的密码学,EVM-MAX 和 SIMD 的结合使得这两种性能导向的扩展成为自然的配对。
一个组合 EIP 的大致设计将以 EIP-6690 为起点,然后:
for i in range(count): mem[z_start + z_skip * count] = op( mem[x_start + x_skip * count], mem[y_start + y_skip * count] )
实际实现中,这将以并行方式处理。
剩下的工作及权衡
目前,EOF 计划在下一个硬分叉中纳入。尽管总是有可能在最后一刻移除它——之前的硬分叉中曾有功能被临时移除,但这样做将面临很大挑战。移除 EOF 意味着未来对 EVM 的任何升级都需在没有 EOF 的情况下进行,虽然可以做到,但可能更困难。
EVM 的主要权衡在于 L1 复杂性与基础设施复杂性,EOF 是需要添加到 EVM 实现中的大量代码,静态代码检查也相对复杂。然而,作为交换,我们可以简化高级语言、简化 EVM 实现以及其他好处。可以说,优先考虑以太坊 L1 持续改进的路线图应包括并建立在 EOF 之上。
需要做的一项重要工作是实现类似 EVM-MAX 加 SIMD 的功能,并对各种加密操作的 gas 消耗进行基准测试。
如何与路线图的其他部分交互?
L1 调整其 EVM 使得 L2 也能更容易地进行相应调整,如果二者不进行同步调整,可能会造成不兼容,带来不利影响。此外,EVM-MAX 和 SIMD 可以降低许多证明系统的 gas 成本,从而使 L2 更加高效。它还使得通过用可以执行相同任务的 EVM 代码替代更多的预编译变得更加容易,可能不会大幅影响效率。
账户抽象
解决了什么问题?
目前,交易只能通过一种方式进行验证:ECDSA 签名。最初,账户抽象旨在超越这一点,允许账户的验证逻辑为任意的 EVM 代码。这可以启用一系列应用:
允许隐私协议在没有中继的情况下工作,显著降低其复杂性,并消除一个关键的中央依赖点
自 2015 年账户抽象提出以来,其目标也扩展到了包括大量"便利目标",例如,某个没有 ETH 但拥有一些 ERC20 的账户能够用 ERC20 支付 gas。
它是什么,如何运作?
账户抽象的核心是简单的:允许智能合约发起交易,而不仅仅是 EOA。整个复杂性来自于以一种对维护去中心化网络友好的方式实现这一点,并防范拒绝服务攻击。
一个典型的关键挑战是多重失效问题:
如果有 1000 个账户的验证函数都依赖于某个单一值 S,并且当前值 S 使得内存池中的交易都是有效的,那么有一个单一交易翻转 S 的值可能会使内存池中的所有其他交易失效。这使得攻击者能够以极低的成本向内存池发送垃圾交易,从而堵塞网络节点的资源。
经过多年的努力,旨在扩展功能的同时限制拒绝服务(DoS)风险,最终得出了实现"理想账户抽象"的解决方案:ERC-4337。
ERC-4337 的工作原理是将用户操作的处理分为两个阶段:验证和执行。所有验证首先被处理,所有执行随后被处理。在内存池中,只有当用户操作的验证阶段只涉及其自身账户并且不读取环境变量时,才会被接受。这可以防止多重失效攻击。此外,对验证步骤也强制实施严格的 gas 限制。
ERC-4337 被设计为一种额外协议标准(ERC),因为在当时以太坊客户端开发者专注于合并(Merge),没有额外的精力来处理其他功能。这就是为什么 ERC-4337 使用了名为用户操作的对象,而不是常规交易。然而,最近我们意识到需要将其中至少部分内容写入协议中。
两个关键原因如下:
此外,ERC-4337 还扩展了两个功能:
剩下的工作及权衡
目前主要需要解决的是如何将账户抽象完全引入协议,最近受到欢迎的写入协议账户抽象 EIP 是EIP-7701,该提案在 EOF 之上实现账户抽象。一个账户可以拥有一个单独的代码部分用于验证,如果账户设置了该代码部分,则该代码将在来自该账户的交易的验证步骤中执行。
这种方法的迷人之处在于,它清晰地表明了本地账户抽象的两种等效视角:
如果我们从对验证期间可执行代码复杂性设定严格界限开始——不允许访问外部状态,甚至在初期设定的 gas 限制也低到对量子抗性或隐私保护应用无效——那么这种方法的安全性就非常明确:只是将 ECDSA 验证替换为需要相似时间的 EVM 代码执行。
然而,随着时间的推移,我们需要放宽这些界限,因为允许隐私保护应用在没有中继的情况下工作,以及量子抗性都是非常重要的。为此,我们需要找到更灵活地解决拒绝服务(DoS)风险的方法,而不要求验证步骤必须极度简约。
主要的权衡似乎是"快速写入一种让较少人满意的方案"与"等待更长时间,可能获得更理想的解决方案",理想的方法可能是某种混合方法。一种混合方法是更快地写入一些用例,并留出更多时间来探索其他用例。另一种方法是在 L2 上首先部署更雄心勃勃的账户抽象版本。然而,这面临的挑战是,L2 团队需要对采用提案的工作充满信心,才能愿意进行实施,尤其是要确保 L1 和 / 或其他 L2 未来能够采用兼容的方案。
我们还需要明确考虑的另一个应用是密钥存储账户,这些账户在 L1 或专用 L2 上存储账户相关状态,但可以在 L1 和任何兼容的 L2 上使用。有效地做到这一点可能要求 L2 支持诸如L1SLOAD或REMOTESTATICCALL的操作码,但这也需要 L2 上的账户抽象实现支持这些操作。
它如何与路线图的其他部分互动?
包含列表需要支持账户抽象交易,在实践中,包含列表的需求与去中心化内存池的需求实际上非常相似,尽管对