帐户。这个特定用例的另一个重要用途是 Visa 的提议,即允许用户使用法币卡支付链上 Gas 费,如下图所示。 通过账户抽象重新思考数字交易 通过账户抽象重新思考数字交易 4. 自动化交易 与 EOA 不同,dApp 上的每笔交易都需要手动启动或签名,智能账户引入了自动化的可能性。通过智能账户,用户可以设置各种参数,包括对特定代币的访问、支出限制、持续时间、Gas限制以及特定操作的预定义触发器。举例来说,用户希望允许 DEX 在接下来的一小时内每 15 分钟代表其执行一次交换:签名一次,交易将在之后自动发生。这种执行可以在 CowSwap 上看到,CowSwap 是一个提供TWAP交易的去中心化交易所,将所需的用户操作分散到在一段时间内执行的部分。智能账户自动化的潜力几乎是无限的,为用户提供超出传统 EOA 限制的定制和效率水平。 技术组件 利用该技术的方法有多种,可以通过启动你自己的内部组件(图1),也可以使用 SDK 或库并利用该领域其他参与者维护的现有基础设施。我们列出了各种入门选项,我们将进一步探索使用特定解决方案的用例和优势。 无论你在利用帐户抽象时选择哪种实现方法,了解其关键要素都很重要。 UserOperations 是类似交易的对象,代表用户对智能合约账户的交易意图。与传统交易不同,UserOperations 引入了额外的字段,如 EntryPoint、Bundler、Paymaster 和 Aggregator,并定向到单独的内存池。值得注意的是,UserOperations 是基于意图的,允许用户包含以结果为中心的交易的元数据,这偏离了传统输入的特殊性。 下面的关键组件称为 Bundler,是一种特殊类型的以太坊节点,在支持 UserOperations 方面发挥着关键作用。用户操作被定向到Bundler网络,该网络主动监视替代内存池。这些Bundler将多个 UserOperations 合并为一个交易,随后代表用户将它们打包并提交到区块链。作为这项服务的回报,他们获得补偿。它们的意义在于抽象了 web3 中每个参与者拥有自己的外部拥有账户(EOA)的必要性,这是实现 ERC-4337 功能的关键组成部分。 然后,UserOperations 被发送到 EntryPoint Contract,这是一个singleton智能合约,用于执行 UserOperations 的验证和执行。验证过程涉及评估钱包是否拥有足够的资金来支付潜在的最大 Gas 使用量,该最大 Gas 使用量由 UserOp 中的 Gas 字段决定。缺乏足够资金的交易将被拒绝。为了执行,智能合约执行交易,从智能合约账户 (SCA) 中扣除资金,用适当的原生代币金额偿还 Bundler 的 Gas 费用。 在某些情况下,开发人员希望代表用户赞助gas费,或者允许他们使用除原生代币之外的各种代币来支付这些费用。为此,他们可以利用名为 Paymaster 的合约,该合约旨在管理gas支付政策。这有效地消除了用户拥有原生区块链代币与区块链交互的要求。 不同 AA 工具的演练 1. 无SDK解决方案 如上所述,利用帐户抽象功能需要一些关键元素,而其他一些元素仍然是可选的。如果你不想依赖第三方 AA 解决方案,则可以运行自己的设置并完全控制和托管所涉及的智能合约和流程。对于以太坊,有多种提议的解决方案,其中eth-infinitism在智能账户合约、Entry Point合约和 Paymasters 方面拥有最流行的解决方案。除了部署这些合约并正确资助之外,还需要运行一个 Bundler,它将接收用户操作并将其重定向到Entry Point合约。为了帮助开发人员,社区成员开发了解决方案,只需利用简单的npm包即可在 Hardhat 环境中本地设置帐户抽象。 由于自行设置所有基础设施所需的繁重工作,大多数人选择依赖各种库和公司,它们提供现成的解决方案,并从开发人员手中抽象出所有复杂性。 2.Pimlico和permissionless.js 如果你希望利用 JavaScript 库向应用程序添加帐户抽象功能,最有效的解决方案是permissionless.js。它建立在 viem 之上,允许开发人员利用 Pimlico 提供的 AA 套件、Bundler 和 Paymaster API 来构建高度可定制和模块化的应用程序,所有这些都支持 20 多个 EVM 兼容链。假设智能帐户和交易数据已创建,以下是如何使用 Permissionless.js 和 Pimlico 的帐户抽象 SDK 发送交易的方法: const txHash = await smartAccountClient.sendTransaction({ to: "0xd8da6bf26964af9d7eed9e03e53415d37aa96045", value: parseEther("0.1"), maxFeePerGas: gasPrices.fast.maxFeePerGas, maxPriorityFeePerGas: gasPrices.fast.maxPriorityFeePerGas, }); 3. Alchemy 账户套件 Alchemy 的帐户工具包是对开发人员最友好的帐户抽象工具之一。与其他解决方案类似,除了 aa-sdk 之外,Alchemy 还提供了 Light Account 解决方案,这是一个简单的智能帐户界面、一个 Bundler API、一个利用自己的 Paymaster 智能合约的 Gas Manager 解决方案,允许开发人员赞助用户操作或允许用户在支付 Gas 费用时使用 ERC-20 代币。假设智能帐户和交易数据已创建,以下是你如何使用 Achemy 的帐户工具包发送交易并检索交易哈希: const userOperation = await smartAccountClient.sendUserOperation({ uo: { target: "0xTARGET_ADDRESS", data: uoCallData, }, }); const txHash = await smartAccountClient.waitForUserOperationTransaction(uo); 4.Biconomy SDK 在使用帐户抽象进行构建时,Biconomy SDK 提供了最多的功能。它们允许开发人员定制各种功能,为智能合约帐户设置多重签名配置,并提供 Bundler 和 Paymaster 服务。其功能高度模块化,与竞争对手相比具有独特的功能。它允许开发人员创建由一组约束支持的网关,从而使特定的 SCA 交易能够发生,而签名者无需对每个交易进行签名。这种特殊的功能增强了用户体验,并为在后台进行区块链操作的应用程序奠定了基础,同时用户正在经历完全的 web2 之旅。 Biconomy 的 AA 解决方案是该领域最受欢迎的解决方案之一,其 SDK 处理了 2500 万笔元交易,帮助 Web3 领域吸引了 280 万用户。假设智能账户和交易数据已经创建,以下是你如何使用 Biconomy SDK 发送交易并检索交易哈希: const userOpResponse = await smartWallet.sendTransaction({ to: toAddress, data: transactionData, }); const { transactionHash } = await userOpResponse.waitForTxHash(); 结论 总而言之,尽管帐户抽象的想法已经存在了一段时间,但帮助开发人员大规模采用它的文档和工具仍然有限。尽管如此,它仍然是 Web3 开发中最大的里程碑之一,并为新的、令人兴奋的用例提供了基础。 尽管目前主要需要依赖第三方来使用账户抽象功能,但模块化范式和生态系统的去中心化鼓励越来越多的开发人员将其中一些工具集成到他们的应用程序中,甚至构建自己的工具——建立智能合约和链下实用程序来利用这项令人兴奋的新技术。仍然非常需要简化用户入门并为加密货币的大规模采用做出贡献,而帐户抽象是目前满足这一需求的最佳工具,允许项目在用户不知情的情况下利用区块链技术。 来源:金色财经lg...