支付商大厂放大招:Alchemy新发布的模块化账户会为Web3引流吗?
原文来自 Alchemy 的《Hello, Modular Account》,由 Odaily 星球日报 jk 编译。
Alchemy 宣布推出模块化账户,这是一个全新的、从零开始的合约账户实现,为 ERC-4337 和 ERC-6900 兼容性而设计。模块化账户为在以太坊L2上构建的开发者提供企业级安全性、业内最佳成本以及强大的账户可扩展性。
立即开始使用模块化账户,并继续阅读以了解更多信息。
想象一下这样的世界,你必须要为你在商店购买的每个物品签名,失去你的银行卡密码意味着你失去所有的账户资金,以及你购买任何东西以后都永久无法撤销。
幸运的是,我们有一个解决方案来解开行业内糟糕用户体验所造成的困惑——账户抽象化。账户抽象化侧重于使用智能合约账户(或通俗地称为智能账户),而不是外部拥有的账户(EOA),将交易和活动管理在区块链上转移到一个更加适应性强的地方。
一旦多个账户开始使用多个插件——如 ERC-6900 所定义——就减少了对链上账户实现的供应商锁定。用户被保护免受单点故障的影响,如果需要或希望,可以将他们的账户更新到不同的实现,同时通过安装在账户上的插件,保持他们现有功能的大部分。
在这两大支柱——可重用性和互操作性上,开发者可以利用模块化账户和插件的开放生态系统,通过在账户功能和链上用户体验上的累积进展,加速开发。
一个突出展示模块化账户提供的强大用户体验和安全特性的例子是我们构建的游戏——言之有物。言之有物(Worth of Words)是一款“Wordle Battle Royale”风格的词语游戏,玩家相互竞争,猜测他们的秘密词语。这款游戏利用以下特点,提供类似Web2的游戏体验:
在这里了解更多关于言之有物的信息。
注:言之有物是 Odaily 编者的翻译,并非官方译名。
基础账户支持核心账户抽象化功能,包括 Gas 抽象和批量执行。其特性包括支持:
- ERC-4337 ,用于抗审查的账户抽象化。
- ERC-165 ,用于标准接口检测。
- UUPSUpgradeable,用于账户可升级性,配合 ERC-7201 实现安全存储冲突抗性升级。
- 由插件触发执行,当调用源自允许的插件时,按照账户的上下文执行逻辑。
- 安装和卸载任何兼容 ERC-6900 的插件,不仅限于 Alchemy 的。
- 查看函数,以获取账户的插件配置,包括已安装的执行函数、验证函数和钩子。
- 插件执行的强顺序保证。
- 接收 ERC-721、ERC-777 和 ERC-1155 代币。如果没有代币接收器实现,合约账户不能通过 OpenZeppelin 标准化的`safeTransfer`方法接收数字资产。
账户工厂
生成新模块化账户实例的账户工厂合约。这些参数可以由用户指定,并用于提供一个确定性地址。使用 CREATE 2 通过组合提供的盐和账户指定的所有者,为用户生成反事实地址。
在生产中,我们预计某些用户将被分配用于在反事实部署到其分配地址之前接收资产的地址。
账户插件
初始发布包括两个兼容 ERC-6900 的插件:
多所有者插件
多所有者插件支持一个或多个 EOA 账户或符合 ERC-1271 标准的合约作为账户的所有者。该插件:
- 支持 ECDSA 签名验证(标准 EOA 签名验证)。
- 支持 ERC-1271 签名验证(标准合约所有者签名验证)。
- 支持多个平等所有者,这些所有者对账户有相同的根访问权限。
- 实现 EIP-712 ,允许客户端以结构化和可读的格式签名提示。
- 向模块化账户的原生函数添加用户操作和运行时验证功能,包括:
- installPlugin 和 uninstallPlugin
- upgradeToAndCall
- execute 和 executeBatch
会话密钥插件
会话密钥插件允许添加会话密钥,代表账户在预设规则下进行各种有限的操作。它们在提供链上安全防护的同时,改善用户体验,实现如无交易体验和账户自动化等行为。会话密钥仅在 UserOperation 上下文中使用。该插件支持:
- 密钥轮换,可以在保持权限不变的情况下更新密钥。
- 有效期/时间范围规则,限制会话密钥访问的指定时间范围。
- 外部合约地址限制,限制会话密钥能够调用的外部合约地址。这种限制可能是允许列表、拒绝列表或两者都不是。
- 外部合约方法限制,限制会话密钥能够调用的外部合约方法。
- ERC-20 支出限制(对于一个密钥的总额,或按间隔刷新)。
- ETH/原生代币支出限制(对于一个密钥的总额,或按间隔刷新)。
- Gas 支出限制(对于一个密钥的总额,或按间隔刷新)。默认情况下,不设置限制,有权限进行任何操作的会话密钥可以消耗无限量的 Gas。
- ERC-721 权限,可以通过合约方法限制(例如,允许 safeTransferFrom(address, address, uint 256))以及地址限制来实现。
- 默认内部调用仅限定位。如果会话密钥权限插件安装时没有初始指定外部调用限制,所有外部调用将默认被禁止。
- 需要支付主规则,会话密钥只能在使用特定支付主地址时用于验证用户操作。这是防止会话密钥在 Gas 上消费您的原生代币的另一种方式,而不是 Gas 限制。
账户库
账户库支持通过实现特定功能的可重用代码来实现模块化账户和插件。
数据结构
类型和转换工具
-
感谢 EIP-7201 初始化存储模式的使用,在升级到模块化账户以及从模块化账户升级时,不存在存储冲突的风险。
-
模块化账户的次要版本更改将使用继承的存储模式来防止存储冲突,而模块化账户的主要版本发布将使用不同的存储槽。
模块化账户在以太坊卷积(Rollups)上为最终用户提供了业内最佳的成本,包括 Arbitrum、Base 和 Optimism。随着我们继续推动引导主流用户上链所需的三个核心转变,模块化账户旨在为以 rollup 为中心的未来提供一个经过优化的基础原语。
具体来说,它经常牺牲调用数据使用量以增加执行成本,以便为最终用户提供更便宜的体验。此外,作为一个持久的用户账户,模块化账户包含了无需许可的互操作使用的安全措施,超越了当今流行的每个应用内嵌账户范式,以帮助推动一个无形和互操作的未来。该账户针对日常使用进行了大量优化,某些安全特性在部署时增加了一些执行开销。
为了测量成本,我们为智能合约账户构建了一个全面的测试套件,用于准确的基于交易的费用测量和费用计算。您可以在这里找到仓库、完整方法论和完整结果。以下结果是在 2024 年 2 月 18 日在 Optimism 上进行的基准测试。
*LightAccount 不是模块化账户,添加它是为了参考业内最佳的智能账户。
**ERC-6900 会话密钥插件相比其他产品提供了更加强大的安全控制。
请注意,在针对 rollup 的优化与针对第一层以太坊和侧链的优化之间存在反向权衡。这些基准测试捕捉了在 rollup 生态系统中测量的性能。
此外,此次发布还包括 PluginGen,它可以自动生成用于使用和利用插件的客户端类,从插件清单中获取任何 ERC-6900 插件的信息。这使得基于用户账户状态的客户端编程用户体验成为可能。
使用 PluginGen 工具就像在 aa-sdk 中添加描述你的插件的 PluginGenConfig,然后运行`yarn generate`一样简单:
我们期待继续与 ERC-6900 社区合作,开发一个健壮的无需许可的插件和账户生态系统。我们兴奋地追求一些更广泛的想法,包括:
- 基于安全模型构建,创建应用级权限概念作为插件级权限的组合。类比到web2,当安装像 WhatsApp 这样的应用程序时,操作系统会请求一组权限,这组权限是应用程序,如 WhatsApp,为了正确执行所需的特权,例如位置、相机、麦克风、联系人等。
鉴于现有围绕插件基的权限的安全模型,我们想探索这如何扩展到应用级权限集。
- 继续迭代,朝着最大程度硬化、最大程度优化的账户实现前进。我们兴奋地探索简化和优化操作的技术,并迭代数据模型以提高理解并降低最终用户成本。
- 与团队合作开发一个加速的互操作插件生态系统。我们已经看到几个开发团队开始工作,我们期待看到生态系统能够提出什么用例。
通过设计良好的插件,可以在用户体验和用户安全性上实现巨大的解锁,这些都可以加到现有账户上。
- 为下一波挑战贡献研发力量。需要落实很多汇聚的线索,以便能够安全地将 10 亿用户引入链上。我们期待看到的账户空间的两个方面是跨链互操作性和用户隐私。这些进步很大程度上基于推动零知识工程的极限,并将这些原语纳入解决方案,如密钥存储链,以帮助管理跨多个链部署的账户配置。
我们听到的关于智能账户最常见的批评之一是成本。随着智能账户生态系统的发展,我们很高兴能够与社区合作,证明实际上,智能账户比今天的 EOA 为最终用户提供了更便宜的交易。
已经有几种研究方法来降低这些成本,但我们在 2024 年密切关注的一些方法包括:
数据调用压缩(Calldata compression)
如上所述,L2的交易成本主要是L1数据可用性成本,而不是L2执行成本。因此,如果能通过增加执行成本来减少数据调用大小,通常可以降低总体成本。以太坊基金会的 WAX 小组研究并原型化了 UserOperation 压缩,并取得了一些相当引人注目的结果,我们很高兴看到这种技术被采纳以提高操作效率。
签名聚合(Signature aggregation)
实践中,签名聚合是一种通过将一束签名聚合为单一固定开销来降低数据可用性成本的类似技术。这里的大多数讨论都集中在 BLS 签名上,但实际上,这可以通过零知识证明扩展到其他签名方案。我们很高兴看到一些 ERC-6900 插件支持 BLS 签名以及像 zk-R 1 或 zk-K 1 聚合的功能,以在非聚合椭圆曲线上获得类似的结果。
Proto-Danksharding
随着备受期待的 EIP-4844 作为 Dencun 硬叉的一部分落地,L2网络将能够使用 blob 空间发布L2数据调用,而不是将其存储为L1数据调用。尽管估计各不相同,proto-Danksharding 预计将大幅降低L2s上的交易成本。
模块化账户的工作远远超出了 Alchemy 的范畴。首先,我们要感谢数十位在 ERC-6900 上工作和贡献的开发者,他们推动了迭代,使开发者能够安全地将 10 亿用户引入链上。
特别感谢以太坊基金会账户抽象化团队的 Yoav Weiss 和 Dror Tirosh,Circle 的可编程钱包团队的 Huawei Gu、Daniel Lim、Zhiyu Zhang 和 Alokik Bhasin,以及 Decipher Global 的 Seungmin Jeon、Sangyeup Kim、Brynn Park 以及其他人员,他们在推进规范方面做出了非常有意义的努力。
此外,我们要感谢我们出色的审计团队。安全是处理合约账户时的基本条件。Spearbit 的 Gerard Persoon、Riley Holterhus、Blockdev 和 Christos Pap 以及 Quantstamp 的 Nikita Belenkov、Alejandro Padilla、Shih-Hung Wang 和 Ruben Koch 在评估和改进模块化账户的实施和架构方面非常勤勉。
我们还要感谢a16z crypto 的工程团队,特别是 Daejun Park 和 Matt Gleason,对智能账户的早期形式验证会议以及使用模块化账户迭代作为 Halmos 测试标准——进一步改善了安全姿态和围绕安全智能账户的开发思维。
最后,我们要感谢整个模块化账户生态系统支持讨论和讨论,推动空间的发展。在与更广泛社区合作时,经历了许多早期迭代和架构提案,我们想特别提及 Safe、Biconomy、ZeroDev 和 Rhinestone 的人们,他们经常提出极好的观点和建议。