什么是账户抽象:以太坊与Solana比较

account-abstraction-ethereum-vs-solana-pda-program-derived-addresses-ethereum-aa-eip-erc-4337-smart-contract-wallets-solana

长期以来,加密钱包仅限于高级用户,功能有限,阻碍了新用户的加入。账户抽象(AA)的最新进展终于推动了新自我托管解决方案的创建,有可能吸引下一代用户进入加密领域。虽然AA在Solana等较新的区块链网络中原生实现,但随着期待已久的ERC-4337升级,它在以太坊社区中也引起了极大兴趣。

本文介绍了加密领域的AA概念,探讨了以太坊和Solana网络的AA能力及其差异,最后介绍了我们在Squads上构建的智能合约钱包标准,以促进Solana上的账户抽象开发。

注意:本文经常提到“账户”或“用户账户”。在加密领域,钱包只是让用户与区块链账户交互的界面或应用程序。

什么是账户抽象

账户抽象(Account Abstraction, AA)自2015年起在加密领域出现,Vitalik是其主要倡导者。AA广义上指将区块链用户账户的刚性结构抽象化,使其更灵活适应,同时仍能与网络交互。这种抽象允许开发者创建带有自定义逻辑的链上账户,设置自己的资产存储和交易执行条件,而不是依赖标准区块链账户的内置规则。

传统区块链的账户结构绑定于单一所有者和特定密钥对(私钥和公钥),AA则使开发者能够创建作为用户账户的智能合约,这些合约可以与多个账户交互,执行跨程序通信,并集成多种自定义逻辑。

what-is-account-abstraction-smart-contract-wallet-solana-multisig-smart-wallet-fuse-aa-use-cases-account-abstraction-solana

虽然“账户抽象”(AA)一词在以太坊和Solana中都可以使用,但其实现方式和功能在这两条区块链之间存在差异。一般来说,加密领域的账户抽象涉及以下方面的定制:

  • 账户结构:开发者可以为特定用途定义自己的账户结构和数据存储方式。
  • 验证和执行方案:允许实现自定义的交易验证和执行逻辑。
  • 账户之间的交互:促进不同用户账户/智能合约之间的可组合性,使其能够协同工作。

账户抽象(AA)的理念是允许并简化开发者为任何需求创建用户账户的过程,使其不再受限于固定结构,并由网络原生支持。正如Argent所言:“账户抽象将加密从当前的一体适用模式转变为未来的定制模式,一个小错误不会导致一切丧失,可以为自我托管构建安全网,并提供更流畅的用户体验。”

AA的最终目标是让用户账户的底层技术(区块链)对用户来说不可感知。

以太坊上的账户抽象和ERC-4337解析

在以太坊中,由于账户的刚性和结构性,账户抽象一直是一个持续研究和开发的领域。在ERC-4337之前,没有标准化的方法供开发者创建和实施自定义用户账户,这导致链上存储和管理资产的用户体验不佳。

由于账户抽象标准的晚实施,大多数以太坊钱包如Metamask仅允许用户创建和管理外部拥有账户(EOA)。这些账户受私钥控制,功能有限,无法实现自定义逻辑,只能存储数据(ETH、ERC-20或ERC-721代币)和签署交易与智能合约交互。这限制了管理资产和与智能合约交互的范围。长期以来,EOA是唯一与以太坊智能合约交互的方式。

智能钱包作为解决外部拥有账户(EOA)局限性的一种方案,基于合约账户(Contract Accounts)构建。合约账户是智能合约,存储数据和代码,其行为由智能合约内的代码决定,而不是由私钥控制。这种设计使以太坊合约账户具有可编程逻辑,能够为用户创建任何类型的自定义账户。

智能钱包利用合约账户的能力,提供比传统EOA更先进和用户友好的替代方案,可以实现社交恢复、使用任何代币支付费用(如USDC)、定期支付、会话密钥等多种用例。

由于其复杂性和使用成本,合约账户一直未被广泛用于创建和管理用户钱包。在EIP-4337实施并成为ERC-4337标准之前,开发者在以真正去中心化和安全的方式构建自定义用户账户方面没有明确的标准。

ERC-4337的作用

ERC-4337 是一个新的智能合约钱包标准,它允许在不更改协议的情况下,在以太坊上本地创建高度可编程的用户账户。ERC-4337 通过引入一个新的系统,与 EVM 的标准交易过程并行运行,而不是改变共识层来支持智能合约钱包。这一高级系统将合约账户的操作及其相关签名捆绑在一起,并发送到特定的“内存池”,验证者可以收集它们来创建“捆绑交易”。这些交易然后像常规交易一样被包含在以太坊区块中。

ERC-4337 通过引入一个称为“入口点”的通用钱包合约,改变了合约账户的功能,将复杂的安全功能外包给该合约。这个合约管理费用支付和 EVM 代码执行,使开发者能够构建具有组合性的账户,而无需担心中心化的安全问题。

ERC-4337 是实现本地账户抽象的第一步,使合约账户,特别是智能合约钱包,在 EVM 上更加高效和灵活。它已经在以太坊上的一些知名智能钱包(如 Safe)中获得支持。

Solana 的账户抽象 - 一直如此

与以太坊相比,Solana 一直是原生支持账户抽象的区块链,因为其架构与 EVM 有根本不同。Solana 的账户默认更灵活,简化了账户与智能合约之间复杂交互的开发。实际上,在 Solana 中,一切都被视为账户。Solana 的账户模型将所有账户视为“存储桶”,可以存储数据、代币,以及与特定程序/智能合约相关的任何信息(在 Solana 上,智能合约称为程序)。

solana-account-model-account-types-executable-non-executable-account-solana-program-accounts-data-accounts-pda-ethereum-vs-solana-account-model-types

Solana 的两种主要账户类型:

  1. 可执行账户(程序账户):这些是存储代码的智能合约,通常称为“程序”。
  2. 不可执行账户(数据账户):这些账户可以接收代币或数据,但不能执行代码。

Solana 的特殊之处

Solana 的账户模型使程序能够创建和管理特定账户,定义自定义规则和逻辑。这种扩展账户抽象能力的功能称为程序派生地址(PDAs)。与数据账户不同,程序账户是可执行的,包含可执行代码。通过 PDAs,开发者可以设置一系列规则和机制来签署交易,允许程序以 Solana 网络认可的方式代表受控账户(PDA)授权不同的链上操作,无需使用私钥。

PDAs 是 Solana 账户抽象的关键特性,因为它们可以在不需要私钥的情况下启用操作,减轻终端用户的管理负担。PDAs 还允许自定义规则和逻辑,用于访问、存储和管理 SPL 资产。像 Squads 这样的 Solana 智能钱包利用 PDAs 的功能,实现多签名(multisig)或批量交易等复杂账户管理。PDAs 也是跨程序调用(CPI)的基础,允许 Solana 账户之间的交互和组合。

虽然 Solana 和以太坊都旨在提供构建自定义账户结构的灵活环境,但它们的账户抽象(AA)方法显著不同。以太坊的账户结构较为刚性,有明确的账户类型,而 Solana 采用更灵活的账户模型,简化了开发并实现复杂的账户交互。EVM 开发者需要依赖替代方法或等待协议层更新,而 SVM 开发者可以利用原生 AA 创建自托管产品,无任何限制。

但即使 Solana 在用户账户定制方面更先进和去中心化,因为它在协议层面上已经启用,基于账户抽象的解决方案(如智能钱包)的普及仍面临许多挑战。其中之一是生态系统中对智能钱包相关工作流的支持不足,以及试图人为限制其可组合性的协议,阻止其他程序调用它们,并且不公开其代码和接口定义语言(IDL)。

Squads Protocol - 解锁 Solana 的账户抽象(AA)能力的智能合约钱包标准

ERC-4337 在以太坊上建立了一个标准,用于构建实现 AA 的自我托管解决方案,如智能合约钱包。尽管 Solana 自始至终支持高水平的账户抽象,但直到最近,它在构建基于 PDA 功能的自我托管和资金管理产品方面缺乏简化。

Squads 多签名程序库(SMPL)是一组开源的 Solana 程序,任何人都可以利用它来构建自我托管产品,使其成为 SVM 的终极智能合约钱包基础设施。Squads Protocol 使开发者更容易利用 Solana 的账户抽象功能。

Squads Protocol 堆栈

Squads Protocol 堆栈允许 Solana 开发者创建定制的自我托管解决方案,以满足特定的用例和用户需求。SMPL 支持轻松实现 Solana 的账户抽象(AA),帮助开发者构建智能钱包。通过它,开发者可以构建高级功能,如社交恢复、资金的细粒度控制/权限,甚至无需保存 12/24 字种子短语来访问和管理 SPL 资产。

通过解锁账户抽象的全部潜力,Squads Protocol 为 Solana 上的下一代加密用户提供了更加无缝和用户友好的体验。AA 的重要性不仅在于其网络实现,还在于开发者可以基于它创建的功能。无论用户在以太坊还是 Solana,账户抽象的实现使得自我托管解决方案的创建更加容易,让用户忘记他们在使用区块链,并缩小与 web2 金融产品的差距。


💡
原文链接:An Introduction to Account Abstraction

本文由SlerfTools翻译,转载请注明出处。

SlerfTools是专为Solana设计的工具箱,致力于简化区块链操作,提供无编程全可视化界面,使发币管理流动性无代码创建Dapp等复杂过程变得安全简单。