以下内容整理自「Web3 101」播客的第 S1E14 期,主播为阿伟(Awaei),嘉宾为 UniPass 创始人知县。
阿伟(主持人):OK,现在我们可能又提到「账户抽象」这事了。
知县(UniPass 创始人):账户抽象是另一个维度的事情,它其实是一种能力,而不是说一个产品。
账户抽象很早就提出了,最早是在 2015 年,当时 Vitalik 就有提。他当时关注的点是 “如果现在以太坊用的密码学不够好,未来怎么换” 的问题。以太坊用的 secp256k1 继承自比特币,现在它已经不是最好的,你看一些新的公链,用的是 Ed25519、EdDSA,这些密码学在效率上,甚至在抗量子计算上,有更大的优势。未来以太坊要想承载更大的场景,承载更多的用户,或者对抗更大的挑战的时候,可能要不断地去提升自己的密码学基础,比如加入 Ed25519,让更多的签名可以一起做。这个是 Vitalik 一开始考虑的初衷。
当然,到后面,随着生态的发展,大家对于账户抽象这个概念的补充一点一点地在增加,比如说账户抽象后用户体验可以更好,比如说权限控制可以加进去。
账户抽象是以太坊一直想追求的一个能力。其他链其实也有账户抽象,有的链原生就带,只不过程度不同。比如,比特币原生就有账户抽象的能力,它的地址看上去都差不多,但实际上这个地址的逻辑和那个地址的逻辑可能是不一样的。其他新的公链就更是如此了,从 EOS 开始,其实都是有一定程度抽象的,还有像 StarkNet、Nervos CKB 这种完全账户抽象的链。
所以,账户抽象这件事情不是以太坊独有的,只不过以太坊现在想追求让自己的账户能够变得更加现代化,相当于鸟枪换炮,变得能够承载更大的场景。
智能合约钱包和账户抽象的关系,你可以理解为,现在智能合约钱包这个方案是在以太坊上实现账户抽象这个能力最有前景的一个方法。那么,如果不用智能合约钱包,怎么实现?其实以太坊这么多年一直追求的,就是从底层直接改,改链的底层,让它也拥有原生账户抽象。但之前的提案,因为对共识层的改动非常大,伤筋动骨,有可能带来很多无法想象的问题。
这也是以太坊生态非常繁荣所带来的一把双刃剑。一方面发展很好,另一方面它会有很多遗留问题很难解决,因为它背上了很沉重的生态的债务,规则一变,整个业务逻辑可能就崩了。而且,有的合约是以不可升级的方式部署的,你一旦改了一些基础设定,这类合约可能直接就跑不动了,很多人的钱可能就被锁死,或者说这个项目就完蛋了。这种事情就很难做。
这其实是以太坊之前一直想实现账户抽象的路径。而最近提出的 EIP-4337,它不从底层来做账户抽象,而是从用户层去做。
阿伟(主持人):其实在 EIP-4337 之前,还有几个提案,比如 EIP-5003。
知县(UniPass 创始人):那不是之前,EIP-5003 是之后了。在往前,其实有好多次提案,甚至有三位数的。
阿伟(主持人):那现在关于账户抽象,我们最关注的是 EIP-4337,对吧?
知县(UniPass 创始人):是的,这个大家提得比较多,比较有代表性。
阿伟(主持人):你能简单给我们介绍下 EIP-4337 主要的内容吗?想让我们怎么干呢?
知县(UniPass 创始人):4337 是一个代号,代表以太坊的第 4337 号提案。EIP-4337 描述了怎么在账户层面去实现账户抽象的一个标准,而这个标准使用的就是智能合约钱包这条路径。
其实,在之前的 EIP-3074 和之后的 EIP-5003,它们是在打组合拳。EIP-3074 让 EOA 能够把自己的验签权限委托给一个合约,其实这就在部分账户抽象了,只不过它只抽象了解锁 EOA 逻辑这一个功能。智能合约钱包的可扩展性,可能要比这个要强。EIP-5003 就更接近了,它的目标是所有的 EOA 一次性迁移到 CA,让所有的外部地址直接迁移到合约地址,这样大家用的就都是合约地址了,全部鸟枪换炮,也没有兼容性问题,所有人都用智能合约钱包。
EIP-4337 有点承前启后,它规定的内容最多,也是最实操的一个提案。为什么它现在这么火爆?一个是它的可行性很好,因为智能合约钱包其实已经不是新东西了,已经在业界跑了四五年,已经验证了很长时间。
第二个,它有一些现成的方案,而且已经在用了,所以说它的结合度很好。一提这件事情,现在很多钱包像 Argent、Sequence 就开始呼应,开始探索、共建,这比在共识层的改变更能引起社会话题。共识层其实就那么些人讨论,讨论的内容也比较硬核。比如,他们之前讨论过的一个话题,就是加一种叫 AA 的账户。现在大家会讲 AA 钱包其实是不准确的,就没有这个东西,AA 之前真的是有这么一种存在,除了 OA 和 CA 之外,要是加一个 AA,这样就有三种了。AA 基本上就是一个可以自己发起交易的智能合约。那么,问题就来了,gas 费在什么层面上印证?按照原来的 EOA,gas 费在单节点运行之前可能有个基础的判断,但是如果把 gas 费后置,原来的判断逻辑就失效了,这样对共识的挑战会比较大。因为对当前的业务逻辑挑战太大了,这个提案最终没有通过。
现在的 EIP-4337 走的是更亲民的上层路线,讨论也更亲民,不会涉及到硬核的内容,比如现在的以太坊 gas 费到底是怎么算的,节点到底是怎么防 DDOS 攻击的,等等。大家更多的是讨论有了这个之后会怎么样,于是就进入了美好的畅想。
第三个,也是一个比较重要的点,EIP-4337 真的降低了智能钱包这个产品类别的开发门槛。EIP-4337 还没有真的去实现,有一些代码,但是还完全没有到 production 的程度。如果你现在想做一款能用的智能合约钱包,必须要解决什么?除了钱包的链上逻辑的开发,你还要有一套配套的前端,因为现在的 MetaMask 也好,其他钱包也罢,它们没有办法跟你自己写的合约直接进行交互,你得有一套跟它配套的前端。
此外,你还得有一套配套的帮你付 gas 费的东西,因为智能钱包自己是没有办法付 gas 费的,你也不可能要求用户在他用钱包之前先创建一个 MetaMask,买了 gas 后才去跟你交互,那是 Gnosis Safe 假设。Gnosis Safe 的假设是有道理的,因为它面向的都是高端用户,你需要用多签了,基本上你已经是资产也达标,认知也达标,已经有 gas 了,当然可以直接去用它。但是,智能合约钱包这个品类肯定不全是面向高端的,甚至很多时候是面向普通用户的,这个时候包括 gas 费,包括这些前端的密码学基础设施,其实都得自己重新做,所以门槛是非常高。
有了 EIP-4337 之后,比如说智能合约钱包,大家都实现那几个接口,这样的话,只要前端也按照这个标准实现接口,就能够跟你的钱包交互,这个就非常像 ERC-20 概念。ERC-20 是什么?它是一种资产标准,它规定了资产都需要有哪些功能,比如说 transfer 转账、prove 授权,类似的这些功能都有,那么只要你的钱包前端的这些东西,按照这个标准来交互,那么你就能够去管理用户的资产。所以,现在你把私钥随便导入一个兼容 ERC-20 资产标准的钱包里,你就能够正常地查看、收发资产,这就是标准的力量。所以,EIP-4337 出来之后,智能钱包也会变成这样,只要你的前端有这么几个跟合约交互的接口,用户把他的钱包地址贴进去,你就可以操作它,类似这样。
以上几点其实就是让 EIP-4337 变得非常流行的原因,它具备降低门槛、可行性好、话题高等因素。
阿伟(主持人):刚才我们讲账户抽象的时候,还是比较学术。账户抽象是要让所有的 EOA 账户变成 CA 账户吗?怎么理解?它到底起到一个什么作用呢?
知县(UniPass 创始人):账户抽象是一种能力,它描述一条链在账户层设计的能力,比如说它的扩展性好不好,能不能非常灵活地去提升用户账户的基本能力,比如换密码学,加权限管理,等等。
以太坊的账户抽象,描述的是以太坊生态想要提升自己的账户体验,让账户抽象度更高,这样的话可扩展性会更好,用户体验也能更好。其中,把所有的 EOA 变成 CA 这件事,算是提升账户抽象能力的非常重要的一步,相当于让大家一起迁移到一个更好的账户平台上来,这样生态就不需要去兼顾两种差距很大的情况,只需要 focus 在账户抽象能力提升以后的账户上就好了。
阿伟(主持人):今天在智能钱包里边的一些功能,比如说 gas 费代付、批量交易、权限管理、社交恢复,这些是在账户抽象这个定义下面大家设想出可以实现的功能,还是说在之前其实就已经可以这么做了?
知县(UniPass 创始人):这些是账户抽象能够带来的可能性。
如果没有账户抽象,比如现在的 EOA,它的逻辑是锁死的,你想加权限管理,不好意思,几乎不可能,所以你只能从链外,也就是密钥层、纯密码学层面去想办法,比如说做密钥分片。密钥分片有两种,一种是门限签名,一种是叫 Shamir Secreting Sharing(SSS),各有各的好处和问题。那么,这种情况下,你能做的创新就非常有限,你最多可能就是分散一下风险,提升一下可用性。这些东西如果不考虑成本的话,其实在链上用多签方案能做得更好,因为它可以加各种权重,加各种各样的操作,让权限管理变得更强,但是在链下,你就只能用非常复杂的方案、提升有限的方案。
所以,账户抽象能带来更好的扩展性,更低的门槛,包括更好的用户体验,带来可发挥的空间。有了账户抽象,这些东西就可以做了,没有的话做不了,或者说有一部分能做,但效果很差,难度也很大。
阿伟(主持人):刚才提到了智能钱包带来的一些变化和功能,比如 gas 费代付、批量交易,具体的功能你是否可以给我们解释一下,对于普通用户来说,他怎么理解 EOA 钱包和智能合约钱包在功能上的区别呢?
知县(UniPass 创始人):OK,两者功能上的区别,我从原理上面去逐一讲解。
首先,其实智能合约钱包带来的这些特性,都是基于它的基础能力的提升。这个基础能力怎么理解?我用功能机(非智能手机)和智能手机做类比。功能手机功能很简单,就是打电话、发短信,有的带计算器,有的可以玩玩贪吃蛇,有通讯录,跟手机这个场景相关的功能它都有,别的功能就没有了。智能手机,它的基础能力提升了,比如说更好的摄像头,这个是原来没有的,大屏多点触控、GPS、陀螺仪,各种各样的传感器。这些东西的提升,才带来了我们今天这些移动互联网应用的繁荣。
EOA 钱包和智能合约钱包,它们之间的功能性差距,其实也是来源于技术能力的提升。比如,EOA 只能单次交互,跟链上做交互的时候,只能付 gas 做一次操作。你可能会说:“不对呀,我付了一笔 gas,从这个合约里取了钱,又抵押到那个合约里了。”其实它不是 EOA 直接做的事情,而是你的 EOA 调用了 CA,CA 帮你做了后面的事情。
所以,EOA 的问题就是它只能单次,具体到一些 swap 操作上,你需要先 approve,approve 完成了再 swap,体现在 nonce 上面就是要 +1 才能做下一步操作,这是 EOA 的问题。CA 则可以聚合,可以把好多笔操作放在一起去做。比如说,闪电贷就是在一笔交易里面,从某个地方借到钱,把这个钱做一波骚操作,赚完钱之后再把这个钱还回去。本质上这些操作都是在一笔交易里完成的,但是它内部做了很多操作,这就是 CA 或者说合约钱包能做到的基本能力的提升。
第二,EOA 的权限逻辑是固定的,它的验签逻辑也是固定的。EOA 拿到签名,按照之前说的逻辑,通过公钥生成地址,再对比它生成的地址和要操作的地址是不是一致的,一致就可以操作,不一致就打回,这个逻辑是固定不变的。这个类似于我们用的机械锁,钥匙上齿的凹槽是什么样的,对应里面的锁芯就是什么样,完全固定,差一点都不行。
但是,CA 的验签权限是可以自定义的,你可以验一个,你也可以验好几个,你可以验 secp256k1 的签名,也可以验其他签名,甚至还可以不验签名。CA 不验签名就能动钱是什么情况?比如你在 Compound 上还钱把抵押品取出来这个操作,其实就是抵押品的合约先去 check 一下这个人的账还了没有,如果还清了他就可以把钱取走,如果没还就不能取走。
这其实就是一个基于逻辑的权限控制,而不是说基于密码学。在这个层面上,密码学验签只是逻辑的一种。用我前面门锁的比喻,那 CA 就是一个智能锁,它可以用指纹,它也可以用机械钥匙,也可以用扫脸,甚至还可以用蓝牙把逻辑扩展到一个 App 上,再由 App 来决定。这些都是 CA 的基本能力。
那么,基本能力的提升会带来什么?比如说,从单签到多签,甚至还可以加权重,比如这把钥匙权重是 10,那把是 30,还有一些是 50,权重为 40 的操作,10 和 30 的钥匙单独都做不了,但他们可以一起签名进行做,而权重为 50 的钥匙自己就能做。这其实是咱们大家日常生活中经常碰到的情况。这个 EOA 做不了,但 CA 能做。
此外,还有离线授权。CA 既然解锁逻辑是可以自定义的,那就可以签一个授权,即一旦达到某个标准,就可以解锁某一个东西给别人。比如,我想卖一个无聊猿 NFT,要价 100 ETH,我就可以签一个授权,谁能给我打 100 ETH 谁就可以把无聊猿 NFT 拿走。
这其实是一个非常特殊的解锁。首先,它只能解锁这个无聊猿 NFT,不能解锁其他 NFT;其次,它的达成是有条件的,就是你得先给我 100 ETH。这种事情 CA 是可以批量操作的,这就是上一个基础能力,它可以一次性地把别人给你打 ETH 从你这取走 NFT 这件事情完成,所以叫做原子交易,就是要么都成功要么都失败。这就是 CA 能带来的新的能力,也是权限逻辑可以自定义和聚合批量操作所带来的。
然后就是刚才说的分资产的权限控制。我给这个无聊猿的资产权限,跟转出 USDT 的权限可能是不一样的。转出 USDT 或许我只要用钱包签个名就行了,但无聊猿很贵,我可以设置为除了钱包签名,还需要一个硬件钱包的密钥签名,只有集齐了这 2 个签名才能转出去。这是一个按资产来做权限控制的例子。
甚至,我们还可以分场景去使用密钥,这也是一个常见的情况。如果我拿 EOA 地址的私钥到处签名,一个不小心可能就签了某个对我的资产有害的操作,或者不小心授权了一个什么合约,这个合约把我的钱全部转走了。如果我不想让我的金融账户和我的社交账户混为一谈,因为我有时候只是为了登录某个社交媒体或者是在 Mirror 上面发个文章,我为什么要用管了比如说上百万美金的私钥去签?
这个时候,你如果用 CA 的话,你可以登记好多个密钥,这些密钥有一部分有权力管理资产,可以是单签、多签,另一部分密钥没有管理资产的权限,但它们有认证我是这个合约控制人的权限,这样我登录 Mirror,就可以用这个密钥签。这个时候它不是把我的公钥转为地址然后进行验证,而是验证这个合约是不是有控制 key,这个 key 是不是认证过的,如果是的话,这个 key 的签名等同于合约 owner 的授权。
以上这些例子,都是基础能力的提升让使用场景变得丰富多样,交互更好的同时还能更安全。这是智能合约钱包能够带来的提升和想象空间。
(未完待续)
收听博客的完整版音频:S1E14|智能合约钱包为Web3引入10亿用户?EOA/CA/账户抽象科