ERC-4337的两种账户合并为单一账户中的钱包带来了智能合约功能,这就为AA钱包的功能带来了很大的想象空间。
原文作者:@ArrowCrypto_eth
原文来源:Twitter
注原文来自@ArrowCrypto_eth发布长推。
今天我们基于意图交易聊一聊ERC-4337(以太坊账户抽象)。实际上在上一篇文章中我们已经提到了账户抽象(Account Abstract)在项目Bob the Solver中的作用。
ERC-4337 Account Abstraction
ERC-4337旨在实现账户抽象,而不会影响去中心化和抗审查性,用户可以享用同时具备智能合约和外部拥有账户功能的单一账户。
这意味着AA钱包可以在不依赖由单个实体控制的集中式中继器的情况下,进行访问智能合约钱包,可以实现在单个合约账户中进行交易和创建合约。
账户抽象将现有两类账户①外部拥有账户(EOA)、②智能合约账户(CA)的功能合并,为单一账户中的钱包带来了智能合约功能。这使得未来的创新钱包设计更有可能。
我们先来了解下这两种账户的基础知识。
以太坊帐户有四个字段:{nonce, balance, codeHash, StorageRoot},其中:
①Nonce是一个计数器,用来显示外部帐户发送的交易数量或合约帐户创建的合约数量;
②balance – 这个地址拥有的Wei 数量;
③codeHash - 该哈希表示以太坊虚拟机 (EVM) 上的帐户代码。 合约帐户具有编程的代码片段,可以执行不同的操作。 如果帐户收到消息调用,则执行此 EVM 代码。 与其他帐户字段不同,不能更改。 所有代码片段都被保存在状态数据库的相应哈希下,供后续检索;
④storageRoot – 有时被称为存储哈希。
而这两种帐户类型分别是
①外部账户(Externally Owned Accounts),即EOA,是一种外部所有的帐户,由任何拥有私钥的人控制,codeHash为空。
②合约账户(Contact Account),即CA,没有私钥,codeHash非空。
EOA外部账户和CA合约账户的主要区别是:
外部持有账户(EOA):创建帐户是免费的,可以发起交易,外部所有的帐户之间只能进行以太币和代币交易,并且由一对加密密钥组成:控制帐户活动的公钥和私钥。
合约账户(CA):创建合约存在成本,因为需要使用网络存储空间;只能在收到交易时发送交易;从外部帐户向合约帐户发起的交易能触发可执行多种操作的代码,例如转移代币甚至创建新合约;合约帐户没有私钥,由智能合约代码逻辑控制。
ERC-4337的两种账户合并为单一账户中的钱包带来了智能合约功能,这就为AA钱包的功能带来了很大的想象空间。
目前大多数以太坊钱包都是外部持有账户,我们用的最广泛的metamask小狐狸钱包就是。
但这种外部钱包会受限于外部拥有钱包的设定规则,比如你的账户访问完全依靠私钥,进行的所有交易均需签名,如果丢失助记词那就丧失了对这个钱包的掌控权。
由智能合约账户进行管理的智能合约钱包也可以实现这个功能,这就带来了便捷性。不再需要助记词,那也就不怕助记词丢失,实现了多重身份验证和账户恢复。同时可以实现多样的定制服务。
ERC-4337的运作方式
账户抽象提案完全避免了共识层协议更改的需要,其实在之前的EIP-2938中就提出过类似概念,但是需要更改共识层协议。EIP-3074中也提出了将 "EOA控制权委托给智能合约 "的想法。
ERC-4337提案并没有添加新的协议功能并更改底层的交易类型,而是引入了一个称为 UserOperation 的更高层伪交易对象。
在实际的运作流程中,用户将 UserOperation 对象发送到新的单独内存池里。然后通过捆绑器(Bundler)调用特殊合约将这些对象打包到单个交易中,而该交易也将被包含在一个区块中。
该提案还引入了一种支付机制,用户能够使用任意的ERC-20代币(例如 USDC)而不是ETH 支付Gas费,或者允许由第三方完全支持他们的Gas费,这些都以去中心化的方式进行。
意图交易与ERC-4337
在ERC-4337中,UserOperation作为一个 "伪交易对象",代表了用户的交易意图。可以包含多个指令和附加数据,用来执行由智能合约账户发起的智能合约调用。后面在ERC4337的推动下,也会有越来越多的意图被采用。
我们看下最近很火,被誉为引领「Intent-Centric」新叙事的Web3操作协议dappOS。
dappOS 是一种 Web3 操作协议,旨在使 dApps 像移动应用程序一样用户友好。作为第一个 Web3 统一运行协议,它在用户和公链、跨链桥等加密基础设施之间创建了一个层,使用户能够轻松地与 dappOS 交互,并在去中心化的世界中完成验证和执行。DappOS 包含了恢复误删助记词的功能,用户可以通过其他设备甚至第 3 方 KYC 服务重置帐户。
而其解决方案也主要由两部分组成:
①dappOS Account:用户使用基于账户抽象的统一账户,而非外部账户EOA,使得用户恢复账户、预批次处理交易、自动化执行等功能的实现成为可能,同时多链钱包聚合的方式也能方便用户对不同链上的资产进行统一管理;
②dappOS Network:一个去中心化网络,帮助用户自动执行钱包和跨链的相关操作,完成交易背后复杂地交互流程。
所以基于dappOS,未来可以更快捷的打造傻瓜dapp了。对于用户来说也只需明确要干什么的意图,而不必自己去执行操作,仅需一个签名就能完成所有操作。