谈以太坊的账户抽象化与ERC-4337

以太坊系统中实际存在两种类型的账户:

一种是由私钥控制的外部账户(externally-owned account,EOA),比如我们所使用的钱包中的账户,这类账户都有自己的余额。拥有者可以通过创建和签名一笔交易从自己的外部账户发送消息;

另一种是由部署到区块链上的代码控制的合约账户(contract account),由存储在智能合约账户(有时也被称为智能钱包)内的以太坊虚拟机代码控制。当合约账户收到信息时,其内部代码就会被激活,并允许它对内部存储进行读取和写入以及创建新合约等操作。按照目前的以太坊协议,只有外部帐户才可以发起交易,并且仅允许账户的所有人修改其帐户状态。

什么是账户抽象化?

账户抽象是对以上两种账户的一种改进,尝试模糊二者之间的界限,变成一种包含复杂逻辑的通用性账户,使账户可以同时拥有合约账户和外部账户的功能

这种做法相当于让用户按照合约账户的格式来定义外部账户,用户可以在智能合约钱包中包含任何逻辑验证。由密钥控制的账户也可以获得代码的支持。

账户抽象化的各种方案

一直以来,实现账户抽象化都是以太坊开发者社区的愿景。社区也提出了各种各样的方案,如:EIP-86,EIP-2938 等

EIP-86 是为账户抽象做技术准备,它定义了一种新的账户类型,允许用户创建基于智能合约的账户。

以太坊协议本身要求将所有内容打包到源自 ECDSA 安全的外部账户 (EOA) 的交易中,每个用户操作都需要由来自 EOA 的事务包装,这会产生 21000 gas 的费用。用户需要在单独的 EOA 中拥有 ETH 来支付 gas。

EIP-86 提出的账户抽象带来新类型的事务,与传统事务必须有一个 EOA 作为发送者相比,这些事务没有发送者。这种事务破坏了事务哈希的唯一性。EIP-86 原计划于 Metropolis 阶段升级,但由于前面所说的问题,开发者决定在 Metropolis 中暂缓引入。

EIP-2938 提供了一种账户抽象化解决方案,通过更改一部分以太坊协议,允许合约账户与外部账户一样可以发起交易。但是由于这个方案需要在共识层进行以太坊协议的更改,所以并没有得到广泛的接受。

后来提出的新的协议 ERC-4337 则提供了一种无需更改共识协议的方案试图达到与 EIP2938 同样的效果,这种安全性更高的实现方式目前在社区中得到了更多的关注。

ERC-4337 如何实现?

ERC-4337 没有试图修改协议共识,而是在系统中复制了 mempool 的功能。

用户发送一个用户操作(UserOperation)对象,这个对象中包括了用户的意图、签名和其他数据。

用户操作有一个单独的 mempool 存储池,连接到这个存储池的节点会进行 ERC-4337 特定的验证,以过滤操作来确保他们只收到支付费用的操作。

由矿工或使用 Flashbots 服务的打包者批量收集这些用户操作,打包成单笔捆绑交易(bundle transaction),并纳入以太坊区块中。打包者为以太坊中的捆绑交易支付 gas fee,并收取每个单独的 UserOperation 所支付的费用进行补偿。打包者将使用费用优先级逻辑选择包含哪些 UserOperation 对象。

其中的用户操作 UserOperation 看起来像一个事务,但它是一个 ABI 编码的结构,包括了以下字段:

1、发件人:进行操作的钱包;

2、nonce 和 signature:传递给钱包验证函数的参数,以便钱包可以验证操作;

3、initCode:如果钱包尚不存在,则用于创建钱包的初始化代码;

4、callData:用于实际执行步骤调用钱包的数据。

而每一个钱包都是一个智能合约,必须包括两个功能函数:

1、validateUserOp,它接受一个 UserOperation 作为输入。这个函数应该验证 UserOperation 里的签名和 nonce,如果验证成功则支付费用并增加 nonce,如果验证失败则抛出异常;

2、op 执行函数,将 calldata 解析成钱包执行操作的一个或多个指令。

ERC-4337 带来的变化

如果该提议被普遍采用,签名验证转移到了以太坊虚拟机(EVM)上,validateUserOp 函数添加了任意签名和随机数验证逻辑,使验证逻辑变得更加灵活。

如此一来,签署交易之时就能采用新的密码学工具,钱包也可以提供一些新的功能,比如:

1、多重签名;

2、社交恢复;

3、更高效、更简单的签名算法(例如 Schnorr、BLS);

4、后量子安全签名算法(例如,Lamport、Winternitz);

5、可升级钱包。

这种方案还打开了各种其他交易许可管理,比如允许交易通过智能合约来支付 gas 费

在目前,外部钱包要在以太坊上交互的 gas fee 只能通过钱包中的 ETH 来支付,如果你的钱包中只有 ERC-20 Token,没有 ETH,你将没有办法将这些 Token 转出。当 ERC-4337 采用后,用户可以使用账户中的 ERC-20 Token 来支付费用,由矿工节点用合约作为中介来代为支付 ETH 上链并获取用户的 ERC-20 Token 。

抽象化实现后,由外部账户的所有者签名交易并进行广播将不再是发起交易的唯一方法。这将为以太坊充当元交易的中继者带来可能。目前许多以太坊上的应用都需要依靠中继者在区块链上发布用户交易,并向中继者支付费用。如果钱包中可以内置更复杂的合约,有些中继者就不再有存在的必要,也就不需要向他们支付额外的费用。

虽然有很多优点,但是新方案也同样面临一些问题。

最突出的一点就是更高的 Gas 成本,基本的 ERC-4337 操作约需要 42000 gas,而常规交易需要 21000 gas,原因如下:

1、需要支付大量的单个存储读/写成本,在 EOA 的情况下,这些成本会捆绑到一笔 21000 gas 的付款中:

(1)编辑包含 pubkey+nonce (~5000) 的存储 slot;

(2)用户操作调用数据成本(约 4500,通过压缩可减少到约 2500);

(3)ECRECOVER (~3000);

(4)首次访问钱包本身 (~2600)

(5)首次访问收款人账户 (~2600)

(6)将 ETH 转入收款人账户 (~9000)

(7)编辑存储以支付费用(~5000)

(8)访问包含代理 (~2100) 的存储 slot,然后访问代理本身 (~2600);

2、除了上述存储读/写成本之外,合约还需要执行「业务逻辑」(解包 UserOperation、对其进行哈希、洗牌变量等)

3、需要消耗 gas 来支付日志费用(EOA 不发布日志);

4、一次性合约创建成本(约 32000 gas,加上代理中每个 code byte 200 gas,再加上设置代理地址的 20000 gas)

简而言之,账户抽象地址的每一步都需要计算,需要消耗更多的资源,也增加了额外的费用。

好在这并不是无解的。

由于 Rollup 擅长进行数据压缩,与数据复杂的账户抽象方案具有天然的契合点。

在 Vitalik 最新的提案中,提出了通过 layer 2 来处理账户抽象化产生的数据。其改进点在于,将只能分步骤实现的功能打包成批交易,同时用 SNARK 技术来保证交易有效性。

结语

在以太坊重点发展 Layer 2 的格局已定的现在,Vitalik 对以太坊升级的后续计划开始转向账户抽象。最新的提案中展示了 rollup+账户抽象的技术路径。各个 Rollup 提供商也推出了兼容账户抽象的新版本。

今年 6 月,zkSync 发布 V2 更新信息:增添「账户抽象」功能,增加与以太坊 EVM 的兼容性。10 月,ERC-4337 发布了新版本,添加了包括 BLS 签名算法的签名聚合功能。签名聚合能够让构建者和批次提交者也能聚合签名(例如 BLS、SNARKs),大大减少链上数据,可为 rollups 降低数据成本。

我们有理由相信,账户抽象带来的变化同样蕴藏着生态爆发的可能性。随着 Rollup 的发展,可以与 Rollup 进行结合的账户抽象化一定也能发展出更优更精细的方案。

24小时热点

免费的行情软件app网站在国外有哪些?

区块链看行情的软件,简而言之,就是一类能够实时提供数字货币行 ...

2377169

波场区块链浏览器

2024年最新十大不收费看盘软件排名公布

随着股市交易的普及和技术的发展,投资者对高效、可靠且免费的看 ...

1126159

波场区块链浏览器

2024年人气最高的免费看行情的软件大全

区块链看行情的软件是指那些能够提供实时数字货币行情、市场动态 ...

450622

波场区块链浏览器

雷达币最新进展:2024年主网上线时间及前景预测

近期有传闻称,新加坡的加密货币交易所推出了一款雷达币,这款被 ...

1827806

波场区块链浏览器

什么是u币?u币怎么换成人民币?

U币通常指的是USDT(Tether),是一种与美元1:1锚 ...

267673

波场区块链浏览器

1U等于多少人民币?U币怎么兑换人民币?

U币(如USDT)是一种基于区块链技术的稳定币,其价值与美元 ...

251060

区块链圈小菜鸡

数字人民币预计全面普及时间是什么?与纸质人民币有什么差别?

数字人民币的全面普及时间是一个受到广泛关注的话题。数字人民币 ...

536594

区块链圈小菜鸡

988pay虚拟钱包使用指南分享

988pay虚拟钱包被称为数字货币钱包或者是区块链钱包,方便 ...

657985

波场区块链浏览器

2024年派币在中国被认可了吗?

派币,全称为Pi Network,是一个旨在实现相对广泛普及 ...

516234

区块链圈小菜鸡

比特币最开始价格多少一个?比特币刚进入中国多少钱一个?

比特币最开始的价格不到1美分,1美元可以兑换1300个比特币 ...

329124

区块链圈小菜鸡

热点专题

区块链网是什么

中国区块链价值评价中心 中国区块链价值评价中心于2 ...

5292806

知信链

免费的行情软件app网站在国外有哪些?

区块链看行情的软件,简而言之,就是一类能够实时提供数字货币行 ...

2377018

波场区块链浏览器

雷达币最新进展:2024年主网上线时间及前景预测

近期有传闻称,新加坡的加密货币交易所推出了一款雷达币,这款被 ...

1827508

波场区块链浏览器

2024年最新十大不收费看盘软件排名公布

随着股市交易的普及和技术的发展,投资者对高效、可靠且免费的看 ...

1125849

波场区块链浏览器

元界(Metaverse)

元界(Metaverse)是一个去中心化的公有区块链项目,元 ...

992187

WEEX数字货币

BTC123

BTC123(www.btc123.com)成立于2011年 ...

839225

Kusama 测试网

最全传销名单,请告诉家人朋友,别让他们上当受骗后赔到血本无归

因为互联网的发展,让现代传销具备了更强的隐蔽性,更让社会经验 ...

785641

律动 BlockBeats

中币网zb——中币交易所

ZB.com是一个全球化的数字货币交易所,目前已获得泰国和迪 ...

751221

中币交易所

Bitfinex(香港B网)

Bitfinex交易平台目前仍处于试运营阶段,该平台由iFi ...

722733

Hi元宇宙

DAC币——达芬奇Davinci Coin

达芬奇项目的平台是通过叫作"Dchain"的自身区块链把可以 ...

715222

Mechanism Capital