在前三章课程中,我们回顾了加密货币钱包的发展,并指出了几个 Web3 钱包解决方案的面临挑战及其关注点,特别是 EOA 的单一故障点、多重签名和 MPC 钱包在重新分配委托者方面的局限性。此外,Web3 用户需要一个对开发者友好的环境,使开发人员能够轻松创建解决方案,以满足快速发展的 Web3 领域的多样化需求。受 EOA 在以太坊上的交易逻辑的限制,开发人员发现很难扩展其功能并满足 DApp 更复杂的要求。正因如此,账户抽象应运而生。深入探究账户抽象,了解其为何被视为 Web3 大规模采用的关键一步,这一点非常重要。不过在此之前,我们需要对 EOA 交易和以太坊上通过账户抽象改进的交易的典型生命周期进行比较。
以太坊网络只允许 EOA(外部拥有账户)以 ECDSA 作为签名发起交易,经过签名的交易被发送到网络中每个节点的内存池进行处理。在大多数节点确认信息(如签名匹配,足够的余额,足够的 gas 和 nonce)后,EVM 开始执行交易。
从上图可以看出,以太坊网络用以红色框出的五个部分是硬编码的,无法进行任何修改。因此,如果开发人员要引入新功能,比如使用密码学方法实现多重签名,就必须从零开始。那么有没有一种方法可以为开发者提供一个简单的开发环境,而不必改变以太坊网络的机制?一些开发人员提出了 EIP-4337(现在被称为 ERC-4337)来实现这一目标。ERC-4337 为以太坊引入了新的角色,使其更具可编程性,我们称之为以太坊中的账户抽象(简称 AA)。
*EIP代表以太坊改进提案,可以由以太坊社区的任何成员提出,目的是改变或改进以太坊网络,而 ERC 是以太坊网络的标准,只有社区采用的 EIP 才能被称为 ERC。
ERC-4337 中交易的典型生命周期如下所示:
在账户抽象中,我们可以简单地将打包器(bundler)看作是承担原始 EOA 的角色(实际上,打包器是一个 EOA),用于将用户操作(UserOperations)打包成一个Bundle,对应于内存池中的原始交易。用户操作是可定制的,从而实现了广泛的签名类型。只有在共识层经过验证的 Bundle 才会被发送到 EVM,用于入口点对每个用户操作进行特定验证和相关合约的执行。在入口点验证之后,会启动特定的合约执行,分为三个模块:
工厂合约(Factory Contract) - 仅在初始合约创建期时涉及。
账户合约(Account Contract) - 用于实现自定义功能。
Paymaster 合约 - 负责处理 gas 的自定义支付。
因此,如果我们将原始方式和账户抽象下的交易发起步骤进行比较,不难观察到,账户抽象在保持共识层机制的同时,引入了 UserOperation、Bundler、入口点等新模块,增加了实现更多功能的可能性。
来源:https://www.erc4337.io/docs/understanding-ERC-4337/architecture
对于开发人员来说,账户抽象在引入新功能方面提供了更多的灵活性,对于用户来说,则提供了与 Web2 产品相符的操作。
目前,账户抽象钱包在探索的 5 个重要方向包括:
社会恢复:解决私钥永久丢失的问题。
在账户抽象种,开发人员可以自定义签名方法,这意味着可以通过移动设备、电子邮件或生物识别验证等常见的 Web2 方法进行签名或帐户恢复。
多重签名:多个参与者控制一个帐户
帐户所有者可以建立多重签名设置,需要两个或多个用户的批准才能执行交易。
Gas 升级:允许任何人以任何一种代币(包括稳定币)支付 gas。
通过账户抽象,用户可以使用任何代币(包括稳定币)来支付 gas,进一步扩大了第三方 gas 赞助的可能性。EVM 中新增的模块 Paymaster 旨在处理 gas 相关的执行。因此,DApp开发人员可以轻松地为其用户补贴费用以吸引用户。此外,用户还可以使用信用卡或其他方式支付 gas 费。
自动交易:无需每次使用 DApp 都需要获得批准。账户抽象钱包可以设置为允许在预定条件下自动执行。此功能允许交易者通过去中心化交易所照搬他人的策略,或在 Web3 中支付定期订阅。
委托调用:钱包所有者为帐户分配不同的角色。
可以授予不同用户特定的访问权限。例如,帐户 A 被授权管理钱包,最高每月使用限额为100美元。
提供多重签名功能的账户抽象钱包具有稀缺性,这并不是由于技术限制,而是因为 Safe 在这个领域占据了大部分市场份额。因此,其他钱包提供商正在转向占领个人钱包市场。
在前三章课程中,我们回顾了加密货币钱包的发展,并指出了几个 Web3 钱包解决方案的面临挑战及其关注点,特别是 EOA 的单一故障点、多重签名和 MPC 钱包在重新分配委托者方面的局限性。此外,Web3 用户需要一个对开发者友好的环境,使开发人员能够轻松创建解决方案,以满足快速发展的 Web3 领域的多样化需求。受 EOA 在以太坊上的交易逻辑的限制,开发人员发现很难扩展其功能并满足 DApp 更复杂的要求。正因如此,账户抽象应运而生。深入探究账户抽象,了解其为何被视为 Web3 大规模采用的关键一步,这一点非常重要。不过在此之前,我们需要对 EOA 交易和以太坊上通过账户抽象改进的交易的典型生命周期进行比较。
以太坊网络只允许 EOA(外部拥有账户)以 ECDSA 作为签名发起交易,经过签名的交易被发送到网络中每个节点的内存池进行处理。在大多数节点确认信息(如签名匹配,足够的余额,足够的 gas 和 nonce)后,EVM 开始执行交易。
从上图可以看出,以太坊网络用以红色框出的五个部分是硬编码的,无法进行任何修改。因此,如果开发人员要引入新功能,比如使用密码学方法实现多重签名,就必须从零开始。那么有没有一种方法可以为开发者提供一个简单的开发环境,而不必改变以太坊网络的机制?一些开发人员提出了 EIP-4337(现在被称为 ERC-4337)来实现这一目标。ERC-4337 为以太坊引入了新的角色,使其更具可编程性,我们称之为以太坊中的账户抽象(简称 AA)。
*EIP代表以太坊改进提案,可以由以太坊社区的任何成员提出,目的是改变或改进以太坊网络,而 ERC 是以太坊网络的标准,只有社区采用的 EIP 才能被称为 ERC。
ERC-4337 中交易的典型生命周期如下所示:
在账户抽象中,我们可以简单地将打包器(bundler)看作是承担原始 EOA 的角色(实际上,打包器是一个 EOA),用于将用户操作(UserOperations)打包成一个Bundle,对应于内存池中的原始交易。用户操作是可定制的,从而实现了广泛的签名类型。只有在共识层经过验证的 Bundle 才会被发送到 EVM,用于入口点对每个用户操作进行特定验证和相关合约的执行。在入口点验证之后,会启动特定的合约执行,分为三个模块:
工厂合约(Factory Contract) - 仅在初始合约创建期时涉及。
账户合约(Account Contract) - 用于实现自定义功能。
Paymaster 合约 - 负责处理 gas 的自定义支付。
因此,如果我们将原始方式和账户抽象下的交易发起步骤进行比较,不难观察到,账户抽象在保持共识层机制的同时,引入了 UserOperation、Bundler、入口点等新模块,增加了实现更多功能的可能性。
来源:https://www.erc4337.io/docs/understanding-ERC-4337/architecture
对于开发人员来说,账户抽象在引入新功能方面提供了更多的灵活性,对于用户来说,则提供了与 Web2 产品相符的操作。
目前,账户抽象钱包在探索的 5 个重要方向包括:
社会恢复:解决私钥永久丢失的问题。
在账户抽象种,开发人员可以自定义签名方法,这意味着可以通过移动设备、电子邮件或生物识别验证等常见的 Web2 方法进行签名或帐户恢复。
多重签名:多个参与者控制一个帐户
帐户所有者可以建立多重签名设置,需要两个或多个用户的批准才能执行交易。
Gas 升级:允许任何人以任何一种代币(包括稳定币)支付 gas。
通过账户抽象,用户可以使用任何代币(包括稳定币)来支付 gas,进一步扩大了第三方 gas 赞助的可能性。EVM 中新增的模块 Paymaster 旨在处理 gas 相关的执行。因此,DApp开发人员可以轻松地为其用户补贴费用以吸引用户。此外,用户还可以使用信用卡或其他方式支付 gas 费。
自动交易:无需每次使用 DApp 都需要获得批准。账户抽象钱包可以设置为允许在预定条件下自动执行。此功能允许交易者通过去中心化交易所照搬他人的策略,或在 Web3 中支付定期订阅。
委托调用:钱包所有者为帐户分配不同的角色。
可以授予不同用户特定的访问权限。例如,帐户 A 被授权管理钱包,最高每月使用限额为100美元。
提供多重签名功能的账户抽象钱包具有稀缺性,这并不是由于技术限制,而是因为 Safe 在这个领域占据了大部分市场份额。因此,其他钱包提供商正在转向占领个人钱包市场。