未来钱包的模式更有可能是类似 B2B2C 的模式。钱包作为一个 C 端产品存在的同时,更重要的是提供一套成熟的 SDK 方案用于其他应用集成为应用内钱包,再面向 C 端用户。其中,打包器和聚合器在早期主要是中心化的构建方式,后面有可能形成模块化的网络,但由于这一块是价值捕获的核心,钱包采用他人构建的打包器网络需要经过经济收益的博弈。& R+ a- F$ W% z5 c3 D
6 k! k) [% L( U9 x- |- j
随着以太坊应用场景的不断拓展和延伸,传统以太坊钱包的外部账户(Externally Owned Accounts, EOA)方案的劣势逐步显露,其功能简单而且性能一般,不支持并发交易,且存在密钥管理的难题。智能合约钱包使用合约账户(Contract Accounts, CA)作为钱包地址,是一种相对来说新型的以太坊钱包解决方案,它能解决 EOA 钱包的短板并且带来更强大的功能。未来,你将可以选择不去小心翼翼保护好自己的私钥,也能够享受几乎同等级别的安全性;你还可以在去中心化的交易所里享受到目前中心化交易所才有的便捷,但同时资金又是始终掌握在自己的手中,不用担心交易所暴雷的可能……" M- Q$ `& X7 Y6 @- f- ~; D
# \0 N% w, ^% V) F7 D7 u! Y
前段时间发布的新版以太坊路线图中,账户抽象智能合约规范 ERC-4337 作为 EOA 钱包转向智能合约钱包的关键要素被写入 The Splurge 当中。那么,智能合约钱包到底是什么,而账户抽象与智能合约钱包又是什么关系,它们是怎么实现的,其未来的发展形态是什么样的,又存在着什么机遇和挑战呢?* y+ X* Q4 G* N8 d4 U ]
! H5 v1 J* L0 v: A8 n0 v( b* H- y
以太坊的账户类型以太坊有两种类型的账户:外部账户(Externally Owned Accounts, EOA)和合约账户(Contract Accounts, CA)。外部账户是以太坊原生记录用户余额的钱包账户地址,合约账户一开始的设计目的并不是用来记录用户钱包地址余额的。
" h5 T5 `9 i* [5 R) J
外部账户EOA 是以太坊以及其他 EVM 兼容链(或类 EVM 链)才有的概念,严格来说包括 BTC 在内的主流非 EVM 链都没有这个设定。Metamask 钱包使用的就是外部账户,这一类的钱包也被称为「EOA 钱包」,由用户私钥控制,其生成规则是:
: ?; s6 H7 E" R5 a4 F3 B; G
私钥 → 公钥 → Keccak256 哈希 → 最后 20 Bytes → 十六进制字符串(EOA 地址)7 b% Z: r6 Y8 |0 M9 E/ L- N b
这个生成规则完全由数学变换而来,该地址未对应任何一段智能合约。使用该类型地址进行交易的时候,其节点验证规则是:. U" ]0 \$ w/ }- v0 z, S, l' c$ r
8 o+ w H* Q3 N' M
交易签名 → ec_recover → 公钥 → (用上面的规则生成)地址 → 对比要操作的地址
如果验证通过,则继续后面的流程,不通过则拒绝交易。EOA 在以太坊中的核心设定是作为交易的发起方并支付 gas,即交易的触发器,一笔交易无论后面有多少合约调用,一开始都必须由一个 EOA 发起并且支付足够的 gas 才可以进行。一个 EOA 地址的交易流程如下图所示。* I* A4 w2 n6 Q" G4 C% ?' T4 B
( s# i* u/ G" l! k* g; t+ \
简化的 EOA 交易机制 来源:Nethermind/ x8 I. H+ }5 g8 Z
; }3 P; v; Q# g2 T. B