账户抽象目前仍处于早期阶段,采用率较低,许多 Layer 2 尚未支持账户抽象,这些限制增加了用户的学习成本和使用成本。
账户抽象钱包通过引入一层代理机制,旨在弱化个人钱包的准入门槛,同时提供更简单易用的账户体系。它以智能合约作为钱包的载体,并在用户与智能合约之间加入代理方,代理方帮助用户完成与区块链的交互过程。这样,用户可以使用传统的账户体系(如邮件、手机等)进行操作,无需直接接触私钥助记词等复杂概念。
笔者认为,在账户抽象中,安全性是至关重要的。由于区块链交易不可逆和不可篡改的特性,一旦用户的账户被攻击,就可能造成不可挽回的损失。因此,在设计账户抽象钱包时,必须考虑到安全性的方方面面,包括账户的管理和使用、私钥的存储和保护、交易的确认和授权等等。
本期Bing Ventures研究旨在通过分析账户抽象钱包项目的安全逻辑与漏洞,探讨如何平衡用户体验与安全,思考钱包抽象方案的未来发展方向。
账户抽象钱包的安全逻辑
以太坊的账户抽象领域存在着多个技术改进和标准化倡议,如EIP-4337等。这些提案推动了账户抽象钱包项目的发展和统一,为用户提供了更一致和可靠的使用体验。账户抽象的发展主线是通过ERC-4337提供一种不需要共识层协议改变的方法来实现允许顶层以太坊交易由合约而非外部拥有账户(EOA)发起的功能。它通过在更高层的系统中复制交易mempool的功能,实现用户操作的验证和打包,并作为“bundle transaction”包含在以太坊区块中。
ERC-4337的目标是实现钱包的灵活性和可升级性,包括多签和社交恢复等功能,以及更高效和简化的签名算法和后量子安全的签名算法。账户抽象钱包的发展主线还包括对钱包验证逻辑的灵活性,可以添加任意签名和nonce验证逻辑,并支持钱包的升级。具体的安全逻辑包括:
- 验证逻辑:账户抽象钱包通过验证逻辑(如签名和非cesium比较算法)确保用户操作的合法性和安全性。
- 入口点控制:为了保护钱包免受攻击,账户抽象钱包将复杂的智能合约技巧放在入口点合约中,并通过限制只有信任的入口点才能触发钱包的操作和费用支付。
- 独立的验证和执行层:账户抽象钱包的验证和执行分为两个函数,分别处理用户操作的验证和执行步骤,从而提高安全性和灵活性。
- 模拟执行和验证:用户操作的验证可以通过模拟执行来检查其合法性,确保其在实际添加到区块中时具有相同的效果,从而防止潜在的DoS攻击。
账户抽象钱包对于安全性和去中心化的重视是非常值得肯定的。通过采用多重签名、私钥存储和保护等技术手段,这些钱包应用致力于保障用户的资产安全和交易的可信度。然而,这些安全措施并非完全免疫于攻击和漏洞,因此仍需要持续的研究和改进。目前市场的关注焦点仍然是技术范式本身,而非用户体验的真正需求。
抽象钱包的安全隐患
私钥存储是最常见的安全漏洞之一。账户抽象钱包需要确保用户的私钥存储在安全的地方,并采取适当的措施保护私钥不受未经授权的访问。同时,网络攻击也是钱包抽象中的另一个关键问题。攻击者可能会利用钓鱼、恶意软件或其他手段获取用户的私钥,从而窃取用户的数字资产。
钱包通过合约复制内存池对交易进行处理,用户不再直接进行交易。用户通过钱包将UserOperations发送到更高级别的内存池,而矿工或捆绑者负责打包并发送到Entry Point合约,并协调钱包CA的执行,确保适当的交易费用补偿。这种方案通过限制只相信特定网关(Entry Point)发起的交易来保证钱包的安全性,并通过执行合约中的指令、支付Gas以及递增Nonce等来完成钱包的操作。通过受信任的Entry Point发起,合约钱包可以执行各种指令动作和Gas支付等操作,从而提供了更高度可编程的功能。
这种方法与传统的直接交易方式相比,将交易过程分成多个步骤,引入了额外的复杂性和开销。相比于共识层协议更改的提案(如EIP-2938、EIP-3074),EIP-4337在不修改底层协议和事务类型的情况下实现了较大程度的账户抽象。然而,这也导致了更多的Gas消耗和可能的安全漏洞。此外,与现有钱包协议工作流的不兼容性也会限制采用。
针对以上安全性问题,钱包抽象方案可以采取多种措施来提高安全性,同时保持良好的用户体验。例如,一些方案采用多重签名来确保交易的安全性。多重签名意味着需要多个用户的确认才能完成交易,这大大降低了攻击者成功攻击的可能性。此外,一些方案还采用硬件钱包来存储用户的私钥,以提高安全性。硬件钱包通常采用物理隔离的方式来保护私钥,从而防止私钥被窃取。
用户体验和安全性之间的平衡
在账户抽象钱包设计中,安全性应被视为首要考虑因素。虽然提供良好的用户体验很重要,但如果安全性存在缺陷,用户的资产可能会受到威胁。因此,钱包开发者应将安全性置于高度重视位置,采取严格的加密和身份验证措施,确保用户的私钥和资产不易受到攻击。那么,如何在安全性和用户体验方面取得平衡呢?笔者认为至少要权衡以下几点:
- 私钥管理:账户抽象钱包需要安全地管理用户的私钥,以保护用户的资产免受潜在的攻击。这可以通过使用加密算法、硬件钱包和多重身份验证等安全措施来实现。然而,过于严格的安全措施可能导致用户体验的降低,例如需要频繁的身份验证步骤。在这方面,钱包需要找到一个平衡点,以确保私钥的安全性,同时提供简便的身份验证方式,使用户能够方便地访问其资产。
- 交易确认和速度:账户抽象钱包需要提供及时的交易确认和快速的交易处理,以提供良好的用户体验。然而,在保证交易速度的同时,必须注意防止双重支付和其他欺诈行为。钱包可以采用技术措施,例如零确认交易和AI自动风险评估,来平衡安全性和交易速度之间的关系,确保用户的资产安全并提供快速的交易体验。
- 多链支持:当前的趋势是向多链发展。在考虑采用账户抽象时,需要考虑不同生态系统对AA的采纳情况以及可能存在的差异,这会给不同链和虚拟机的AA实现带来不确定性。如果你是应用程序开发者,并且考虑采用AA,那么你需要考虑在多链之间实现互操作性所需的工作量。未来账户抽象钱包需要支持多个区块链,以满足用户在不同链上的需求。然而,每个区块链都有其独特的安全性特点和用户体验要求。在平衡安全性和用户体验方面,钱包需要确保对每个链的安全性要求进行适当的满足,同时提供一致且直观的用户界面,以便用户可以轻松管理和交互不同链上的资产。
- 成本:链上交易的成本是限制应用开发的重要因素。即使我们假设大多数交易将在二层发生且费用将得到补贴,规模化部署和升级可能仍然是昂贵的。特别是,升级钱包现在需要升级底层智能合约,这可能引入新的漏洞并带来高昂的费用。
账户抽象方案的未来
综合考虑用户体验和安全性因素,以太坊的账户抽象钱包方案在目前的发展和趋势上更具潜力。以太坊生态系统中的账户抽象方案,如zkSync、Fuse Network和zkSafe等,通过灵活、安全和易用的设计和实现,提供了更优质的用户体验。然而,对于以太坊账户抽象钱包方案也存在安全挑战和扩展性问题,包括智能合约的安全性风险和面对高交易负载时的扩展性挑战。需要注意的是,账户抽象市场仍处于早期阶段,采用率较低,因此需要创新和发展来推动市场的成熟和普及。
从短中期来看,账户抽象钱包通过引入无需许可的 Bundler、Paymaster 和 Signature Aggregator 公共端点,建立开放市场,让用户以最低费用获取高质量的服务。能否快速、定制化地部署 Bundler、Paymaster 和 Signature Aggregator 将考验钱包基础设施服务商的能力。这些竞争将推动创新,提高安全性和用户体验。
同时,第三方基础设施提供商(如 Stackup)将开发模块化的 Bundler 和 Paymaster,并逐步实现无需许可性。另外,开发用于快速前端部署的脚手架工具迫在眉睫,让开发人员能够专注于业务逻辑的开发,如创建支持账户抽象功能的类似于 ether.js 的 dApp 开发标准库,封装诸如 Web2 社交媒体账户和电子邮件创建钱包、UserOperations 的创建、签名、发送和事件监听、快速部署 Paymaster 和 Signature Aggregator 等功能。这些工具可以简化开发者与不同钱包的集成过程。
从中长期来看,新的账户标准必然会出现,甚至有望将账户与智能合约钱包分离。这也意味着未来,账户抽象钱包市场中的竞争会更加激烈,功能同质化会越来越严重且技术壁垒会越来越低。未来的账户抽象钱包需要更激进的创新,包括无需许可的模块化基础设施、与现有服务的集成、dApp SDK 和独立账户层等,从而实现更大的灵活性和用户便利性。