钱包作为进入加密世界的入口以及通行证在整个加密行业中有着不可替代的地位,使用钱包也是每一个想进入加密世界的人不可避免的一环,钱包的功能也从最初的纯记账功能演化至如今的多链多场景使用功能。但目前钱包的使用门槛对于新用户来说学习成本过高,这道门槛将许多想进入加密世界的人拒之门外,而钱包门槛的降低才可以为整个加密世界带来更多的新鲜血液以及生态的爆发,随着 EIP-4337 账户抽象提案的到来,账户抽象钱包带来的降低门槛是否会让钱包进入下一个时代引爆加密世界的用户爆发潮?
注:文章仅代表作者个人观点,不构成任何投资建议
TL;DR
▪ 加密世界的知识门槛较高,人们普遍缺乏对区块链以及钱包知识的认知,钱包现阶段使用体验复杂,存在着许多因素阻碍着新用户的加入
▪ 现阶段小白用户使用钱包时会遇到一些痛点:使用钱包必须先有 Gas 费、需要寻找加密资产购买渠道、眼花缭乱的主网选择以及钱包安全问题
▪ 以太坊上的钱包存在两种不同类型的账户即 EOA 外部拥有账户(Externally Owned Accounts)和 CA 合约账户(Contract Account),EOA 外部拥有账户类型的钱包指由私钥以及公钥的密钥对控制的钱包,不具备可编程功能。CA 合约账户类型的钱包指以智能合约形式存在的钱包,合约账户类型的钱包本身不是由私钥控制也不存在私钥,而是通过编写代码实现各种功能,但不能主动发起交易
▪ 两种钱包账户类型各有利弊以及局限性,EOA 外部拥有账户只能按照以太坊规定的生成密钥对的方法来生成,不具备可编程性,需要拥有 Gas 费才可以操作,私钥丢失就无法找回,但相比 CA 合约账户类型而言,虽然 CA 合约账户类型可以自定义逻辑来实现更多功能的可能性,但是 CA 合约账户类型无法主动发起交易需要由 EOA 外部拥有账户来进行调用,并且生成 CA 合约账户类型的钱包需要额外的成本,这两种钱包账户类型目前都无法解决钱包使用体验复杂的问题
▪ 账户抽象(Account Abstraction)是以太坊上一种待实现的钱包技术方案,其最终愿景是让AA账户抽象钱包结合 EOA 外部拥有账户和 CA 合约账户两种账户类型的特征,使其合二为一替代 EOA 来作为主账户存在,除了拥有 CA 的可编程性外还可以摆脱 EOA 的依赖主动发起交易
▪ EIP-4337 提案将原本以太坊钱包交易流程中写死在共识层中的【验证交易机制】抽离出来交给 EIP-4337 的新机制处理,新机制的出现使得账户抽象钱包实现了签名方式的可自定义,并且带来了更多应用场景
▪ 实现了账户抽象的钱包应用可以让用户无需拥有 EOA 也可以使用特定的签名方式发起交易来作为主账户使用,使得账户抽象钱包的所有权以及签名权解耦,账户抽象钱包的 EOA 所有者账户也仅仅是作为所有者存在,不影响实际账户抽象钱包的使用
▪ EIP-4337 之所以能被以太坊选择为最终方案,首先是因为 EIP-4337 不需要进行共识协议层的修改就可以实现账户抽象,这就避免了不亚于类似从 POW 工作量证明机制转换至 POS 权益证明机制这种庞大的共识层修改
▪ 在 EIP-4337 中账户抽象钱包将【签名验证机制】交给了入口点合约来进行,这就使得账户抽象钱包可以使用任意签名形式的签名机制,钱包开发者可以选择相应场景的签名形式去开发钱包产品
▪ 目前的账户抽象钱包更像是一种智能合约钱包的新标准,还无法摆脱对于需要 EOA 作为钱包拥有者的依赖。并且目前账户抽象提案仍存在一些不足以及风险:智能合约风险、更高的 GAS、技术实现问题
文章速览:01/ 现阶段小白用户使用钱包的痛点是什么?02/ 以太坊现有的钱包类型有哪些?03/ 账户抽象是什么?EIP-4337账户抽象有哪些优点?04/ 为什么以太坊选择了EIP-4337账户抽象提案?05/ EIP-4337账户抽象钱包如何运作?与其他钱包账户类型有什么不同?06/ EIP-4337账户抽象存在着哪些不足和风险?现阶段小白用户,使用钱包的痛点是什么?由于加密世界的知识门槛较高,人们普遍缺乏对区块链以及钱包知识的认知,钱包现阶段使用体验复杂,并存在着许多因素阻碍着新用户的加入。
痛点一:使用钱包必须先有 Gas 费
当一个小白用户满怀期待想体验加密世界并下载了钱包准备大干一番的时候,小白惊奇的发现钱包居然不能使用,因为钱包里面没有公链原生通证(如以太坊的ETH)作为 Gas 费,钱包无法进行任何操作,因为钱包的每一次链上操作都需要矿工来打包操作并支付 Gas 费给矿工作为辛苦费,这时小白就要开始寻找购买加密资产的渠道,而许多钱包产品并没有提供出入金渠道,大多数小白的选择可能就会是中心化交易所。
痛点二:加密资产购买渠道以及眼花缭乱的主网选择
当小白用户想购入加密资产时,他们可能会选择有出入金渠道的钱包产品、中心化交易所、场外交易等渠道购入加密资产,但对于选择中心化交易所和场外交易渠道的小白用户来说,在中心化交易所购入资产后想要转入钱包中的话小白用户又会被选择转账的各种各样的主网给搞晕了,学会选择主网就需要一定的学习成本,稍不小心转错网络处理起来极其繁琐,如果是场外交易的话则十分具有风险,小白用户极容易成为骗子的诈骗对象。痛点三:钱包安全问题
对于小白用户来说,即便好不容易搞定了 Gas 费可以使用钱包进行交互了,但整个加密世界对于小白来说就是一片黑暗森林。小白用户需要学习关于钱包的密码学知识如私钥公钥等,还需要理解私钥是什么并思考怎么确保私钥的安全以及防范加密黑暗森林中的骗局,这些对于小白用户来说学习成本大且很容易上当受骗,最重要的是私钥一旦丢失或忘记就无法找回,不能像 Web2 应用找回密码那样重新找回,对于 Web2 用户来说这是他们很难习惯的。以太坊现有的钱包类型有哪些?目前以太坊上的钱包存在两种不同类型的账户即 EOA 外部拥有账户(Externally Owned Accounts)和 CA 合约账户(Contract Account)。
EOA外部拥有账户(Externally Owned Accounts)
EOA 外部拥有账户类型的钱包指由私钥以及公钥的密钥对控制的钱包,外部拥有钱包的作用基本只有接收、持有、发送 Token 和与智能合约进行交互的功能,不具备可编程功能,并且执行每一笔交易都需要支付 Gas 费。创建一个外部拥有账户类型的钱包是无需成本的,但只能通过生成私钥的方式创建。
CA 合约账户(Contract Account)
CA 合约账户类型的钱包指以智能合约形式存在的钱包,合约账户类型的钱包本身不是由私钥控制也不存在私钥,而是通过编写代码实现各种功能,如 DeFi 协议、多签钱包、保险柜、水龙头等等功能,常见的用处有多签钱包,即需要多个外部拥有账户钱包授权才可以进行交易的钱包,通常用于企业钱包管理。创建一个合约账户钱包是需要消耗Gas费创建的,合约账户钱包本身不能主动发起交易,而是需要外部拥有账户钱包调用并支付 Gas 费而被动发起交易。
这两种钱包账户类型各有利弊以及局限性,EOA 外部拥有账户只能按照以太坊规定的生成密钥对的方法来生成,不具备可编程性,需要拥有 Gas 费才可以操作,私钥丢失就无法找回,但相比 CA 合约账户类型而言,虽然 CA 合约账户类型可以自定义逻辑来实现更多功能的可能性,但是 CA 合约账户类型无法主动发起交易需要由 EOA 外部拥有账户来进行调用,并且生成 CA 合约账户类型的钱包需要额外的成本,这两种钱包账户类型目前都无法解决钱包使用体验复杂的问题。账户抽象是什么?EIP-4337账户抽象有哪些优点?账户抽象(Account Abstraction)是以太坊上一种待实现的钱包技术方案,其最终愿景是让 AA 账户抽象钱包结合 EOA 外部拥有账户和 CA 合约账户两种账户类型的特征,使其合二为一替代 EOA 来作为主账户存在,除了拥有 CA 的可编程性外还可以摆脱 EOA 的依赖主动发起交易。
本处讨论的账户抽象(Account Abstraction)指由 Vitalik 提出的以太坊 EIP-4337 提案,该提案将原本以太坊钱包交易流程中写死在共识层中的【验证交易机制】抽离出来交给 EIP-4337 的新机制处理,新机制的出现使得账户抽象钱包实现了签名方式的可自定义,并且带来了更多应用场景如:代付 Gas、聚合签名、隐私保护等。
EIP-4337 提案实现后的账户抽象钱包可以不局限于 EOA 外部拥有账户类型钱包使用的以太坊椭圆曲线数字签名算法(ECDSA)密钥对的签名方式,钱包应用的开发者们可以将任意类型的签名方案应用在账户抽象钱包应用上使得用户可以使用其他签名方式发起交易,从而可以降低用户的使用门槛。
实现了账户抽象的钱包应用可以让用户无需拥有 EOA 也可以使用特定的签名方式发起交易来作为主账户使用,使得账户抽象钱包的所有权以及签名权解耦,账户抽象钱包的 EOA 所有者账户也仅仅是作为所有者存在,不影响实际账户抽象钱包的使用。而所有权和签名权的解耦使得钱包产品可以为用户提供社交恢复等手段,人们即便丢失了私钥也不用担心无法找回了。由于账户抽象钱包新机制带来的可扩展性,先有 Gas 才能使用钱包的痛点也可以得到解决,账户抽象钱包不仅可以允许第三方代付 Gas,还可以实现除原生代币以外的资产支付 Gas 费,这将极大的降低小白用户对于 Gas 费的使用门槛,在不久的将来似乎可以预见,账户抽象带来的更低门槛以及更多的自定义功能可能会引领钱包的一个新时代。
为什么以太坊选择了EIP-4337 账户抽象提案?账户抽象的讨论自以太坊上线之时讨论就没有停止过,从最早的 EIP-101 到 EIP-3074 再到现在最新的EIP-4337,账户抽象的方案已经迭代过好几个版本,但由于大部分方案不成熟以及涉及到共识协议层的修改太复杂最终被搁置了。
从2015年至今经过了漫长的讨论和迭代后,最终以太坊在 EIP-3074 和 EIP-4337 这两个方案之间进行抉择,如果说 EIP-4337 是让 CA 智能合约账户钱包可以像 EOA 那样使用,那么 EIP-3074 就是让 EOA 外部拥有账户钱包可以拥有智能合约账户的可编程功能,最终随着以太坊创始人 Vitalik 公布的以太坊最新路线图中,EIP-4337 被正式纳入在 The Splurge(狂欢)阶段中实施,这也让 EIP-4337 成为了账户抽象的最终方案。
EIP-4337 之所以能被以太坊选择为最终方案,首先是因为 EIP-4337 不需要进行共识协议层的修改就可以实现账户抽象,这就避免了不亚于类似从 POW 工作量证明机制转换至 POS 权益证明机制这种庞大的共识层修改,而 EIP-3074 涉及到共识层的改动,一旦出问题就需要使用硬分叉(hard fork)来解决问题,其次由于 EIP-3074 是让 EOA 外部拥有账户拥有智能合约账户的特性,在签名机制上依旧使用固定的 ECDSA 签名,无法像 EIP-4337 那样可以使用任意签名方式,所以相比于 EIP-3074 来说,EIP-4337 似乎在钱包门槛的降低上更有优势。
图片来源:ethereum.cn翻译
EIP-4337 账户抽象钱包如何运作?与其他钱包账户类型有什么不同?账户抽象相比于之前的账户类型引入了一些新角色以及机制:钱包合约 (Wallet Contract):账户抽象后的钱包智能合约,可以实现自定义的钱包逻辑。
入口点合约 (Entry Point Contract):与钱包合约进行沟通协调并负责处理验证和执行用户操作的合约。
用户操作(UserOperations,uo):用户发起的新链下交易形式,区别于以前的【交易事务Transaction, tx】。
捆绑者(Bundler):负责将用户操作打包并传递给入口点合约的链下计算节点。
用户操作内存池(UserOperation Mempool):一个专门用于堆积待执行用户操作的内存池,独立于交易事务内存池。
代付人(Paymaster):可选择的第三方支付 Gas 的代付人合约账户。
如果你不明白这些新名词是什么,接下来我会用简化版的流程图来进行展示,首先我们先了解 EOA 外部拥有账户类型的钱包的交易机制,EOA 外部拥有钱包需要签署一个 ECDSA 签名才可以发起交易。
图片来源:https://medium.com/nethermind-eth/ethereum-wallets-today-and-tomorrow-eip-3074-vs-erc-4337-a7732b81efc8
从图中可以看到 EOA 账户类型的钱包发起一个交易的步骤为:
[ol]