深入了解 EOA、CA、智能合约钱包的区别

接上文:「钱包」不是个好类比,拆分 3 层重新理解

以下内容整理自「Web3 101」播客的第 S1E14 期,主播为阿伟(Awaei),嘉宾为 UniPass 创始人知县


阿伟(主持人):其实钱包也有一个不断变化的过程,刚才你提到了 EOA,后面我们还会提到更多的钱包概念。你能不能给我们的听众讲一讲钱包的整个发展过程,优势以及发展动力?

知县(UniPass 创始人):钱包相关的概念很多,也很复杂,我专门写过一篇科普文章《Web3 账户概念梳理,钱包使用不迷路》。

EOA,是 Externally Owned Accounts 的缩写,中文叫外部账户,是以太坊或者说 EVM 链的一个独有概念。以太坊地址是由公钥直接计算变换得到的,就是我刚才背的那一段,它没有任何内部结构。EOA 生成的时候不依赖于区块链本身,跟以太坊没有关系,所以它叫外部账户,在外部生成并且控制的账户,也是我们平时用的最多的账户。

MetaMask 生成的钱包账户是 EOA,最近大家常说的 MPC 生成的也是 EOA。从区块链的角度来看,EOA 的功能更像是个触发器,因为绝大多数业务逻辑其实是在链上的合约内部完成的,而 EOA 在设定里面就是一个 trigger,是它来启动一次操作。后面的操作,可能很复杂,很长,有的 DeFi 操作可能涉及上百笔内部交易,但是是由一个 EOA 发起的,而且一定要它去付 gas。

这个 gas 在以太坊上你需要用 ETH 来支付,其作用一方面是防止 DOS 攻击,因为如果没有成本,谁都可以不断地在网络里面发交易,那网络就会拥堵到没法为大家服务,另一个是给 Validator 或者共识节点一定的收益,激励他们继续运行网络。

这是 EOA 的一个定位,好处是它特别简单。

一开始,不管是开发者还是用户,大家都使用 EOA,所以在早期,EOA 的扩展度非常大。我们现在用的 MetaMask,它一开始是一款开发者工具,能让开发者更好地调试自己的 dApp 的一款工具,而不是一款 to C 的产品,所以它的 interface(界面)会偏极客一点,可能没有太优化 UX(用户体验)。

后来,很多开发者直接把它挂在自己的网站上,说你要是没有 MetaMask 的话,就下载一个吧,这样很多人就下了。这是一个我认为很有意思的事情。

阿伟(主持人):所以,我们今天所有的用户都是开发者,是吧?

知县(UniPass 创始人):对,大家都在用当年的开发者工具在交互,也就都使用了 EOA。一开始,以太坊更希望大家用的其实是 CA,这是另一个概念。CA,Contract Accounts,中文叫做合约账户,它跟 EOA 是相对的。以太坊或者说 EVM 生态就是 CA 和 EOA 这两种账户。

智能合约钱包,顾名思义,就是用 CA 作为地址的钱包(这里正好又 call back 一下我们刚才说的钱包和地址的关系),地址是一个合约地址,拿它来作为钱包业务逻辑,让你去操作这个地址的这个东西就是钱包。它的好处是更灵活,比如可以免 gas。为什么它能免 gas 呢?因为它无法付 gas,其实属于一个 bug 变 feature 的过程。

前面讲到,只有 EOA 才能付 gas,才能启动交易。所以,如果你用 CA 作为账户或者地址,那么你自己就不用付 gas 了,你可以用别的手段让别人帮你付 gas。另外,CA 内部有更灵活的逻辑,所以你可以做类似于社交恢复这些东西。这些东西可以让用户的使用体验变得更好,因为社交恢复,它可以把助记词从用户端干掉,还可以扩展功能,比如说多签、做批量交易,等等。

以上是 EOA 和 CA 之间的一个区别。

阿伟(主持人):我们今天看到的比如 ERC-20 合约,DeFi 的一些合约,是不是通过 CA 来生成的?

知县(UniPass 创始人):没错,CA 和智能合约钱包,其实是两个概念,这些概念之间确实有点绕。CA 就是合约账户,它可以用来做钱包,它也可以不用来做钱包,因为钱包是个场景。如果我们拿 CA 去做记账,比如 ERC-20 或者 ERC-721 这种账本,也就是资产合约;我们拿它来做金融逻辑,比如借贷或者说是交易,那么它就是咱们常见的 DeFi 这种类型的东西。

有一个说法,说以太坊上的绝大多数资产,都是由 CA 管理的,除了原生代币 ETH。

ETH 代币本身没有合约,它是可以直接用 EOA 查出对应到的。其他的所有资产,包括 ERC-20,ERC-721,所有这些东西其实都是由 CA 管理,都是记在一张大表里。这就是为什么现在你在 MetaMask 里导入私钥之后,它推出来的地址只能显示你有多少 ETH,对于那些不太 popular 的代币,你需要自己去添加它的代币合约地址,这样 MetaMask 才能查到你有多少币。因为你有多少币,这件事情是不在你的地址里的,不像大家想的那样会在我的地址里存着,不是的。它是在 CA,就是 ERC-20 的 CA 里面存着,你让 MetaMask 帮你去查一下你这个地址在里面有多少钱,它查到了才给你显示出来。

这就是 CA,它其实是更大的概念。所有的链上逻辑、链上合约、链上资产,所有的活动,其实都是 CA 来承载的。

阿伟(主持人):前面提到智能合约钱包,我们今天已经有在使用了吗?还是说,它只是一个设想?

知县(UniPass 创始人):智能合约钱包是个老概念了,这次算是第二波,第一波应该是 2019 年左右。那时候的一些智能合约钱包,有一部分现在还在运营,比如 Argent,Gnosis Safe。大家有时候会叫 Gnosis Safe 为多签钱包,因为大家一般用它来做多签逻辑,但实际上多签只是个 feature,不是它的本质,它的本质是一个智能合约钱包。用多把密钥来控制一个链上地址,所以大家不太意识到,但其实 Gnosis Safe 可能算是比较广泛使用的智能合约钱包了。

阿伟(主持人):所以,可以说智能合约钱包是 CA 的一个子集?

知县(UniPass 创始人):对,智能合约钱包是 CA 的一种使用方法,拿 CA 来做钱包,这个场景就是智能合约钱包。

(未完待续)


收听博客的完整版音频:S1E14|智能合约钱包为Web3引入10亿用户?EOA/CA/账户抽象科

Subscribe to Nervos 中文社区
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.