# 社交恢复和智能合约钱包目前存在的缺点

By [Nervos 中文社区](https://paragraph.com/@nervos) · 2023-01-17

---

接上文：[账户抽象会给智能合约钱包带来哪些想象空间？](https://mirror.xyz/0xD58189F5E858A6F67319E33Fa1107eb7e679989f/SS7sa_S7zZ069957FUucuvCULP2YO9himmJdIEsbq64)

以下内容整理自「Web3 101」播客的第 S1E14 期，主播为[阿伟（Awaei）](https://twitter.com/web3awaei)，嘉宾为 [UniPass](https://unipass.id/) 创始人[知县](https://twitter.com/frank_lay2)。

* * *

阿伟（主持人）：这里有两个事情想再追问一下，一个是不需要助记词，另一个是社交恢复，怎么实现的？

知县（UniPass 创始人）：这两个是一体的。不需要助记词，是大家一直以来的一个期望，因为用过的人都知道，助记词这个东西很麻烦。生成助记词后，你需要手动抄写下来，因为它一旦触网就会变得不安全，所以最好的方法是离线保存，这个就已经很麻烦了。

另一个问题是，你保存你就能保存好吗？对于一个普通用户来说，一个是他保存的手法有限，他不太可能真的去买一个钢板，然后封起来。我相信很多人不会干这个事情。很多时候，私钥可能就被放在了微信收藏里，或者放到笔记里，或者发到云端，同步到 iCloud ，这都是很常见的情况。甚至为了权限的转移，从电脑上用微信发到自己的手机上，这种事情我相信有人干过。

助记词带来的问题，其实比密码更严重，因为密码一旦丢失了，其实还有挽回的余地，你可以通过各种方式去重置，你也可以通过 2FA 来降低密码丢失带来的进一步的损害。但是，助记词这个东西就是核按钮，只要拿到助记词，他跟你的权限就是一模一样的，没有人能区分开这个操作是他做的还是你做的。

另一方面，一旦助记词找不到了，那谁也救不了你。之前咱们经常听到比特币涨到多少了，然后有个人之前有 1000 个比特币，因为助记词当时没有保存好，然后就没了，无法挽回。这种东西对普通人的生活来说，是不怎么存在的。我哪怕银行卡密码忘了，我可以去找银行重置，我连卡丢了都可以找银行补办，我身份证丢了我也可以去公安局通过指纹、扫脸、回答问题等来换取新的身份证。总是有兜底的，但 crypto 或者 Web3 的账户就很反常识。

所以，如果想 mass adoption，大家就要把助记词干掉，这是一个基本逻辑。

怎么干掉助记词？助记词是用来干嘛的？把它干掉之后，会有什么后果？

其实，助记词非常简单。如果你正常使用 MetaMask，你是不需要注记词的，你正常签名就行了，你只要记得解锁密码就能用。当你不记得密码的时候，这是第一种情况需要使用到助记词。第二种情况，当你把 MetaMask 卸载了重新安装。第三种情况，当你在一个新设备上使用 MetaMask。所以，助记词的主要作用就是恢复。

那么，我们能不能不通过助记词恢复？这其实就是社交恢复的作用。就是说，我们不通过助记词，我们就要通过其他的权限或者说其他的方法来保证能够恢复账户，但是又不会丢失我们对账户的控制权，这其实是一个比较 tricky 的地方，或者说比较难以权衡的地方。

所以说，社交恢复的好处是你可以把自己的账户所有权分散性地委托给你相信的人、亲密的人。比如说，你分散给 5 个人，这 5 个人里面有 3 个人同意的时候，就可以加一个新的密钥进来，这样你的密钥丢了，或者在新设备上没有原来的密钥，没关系，只要在新设备上通过这些朋友、亲人的联合操作，把新的密钥加进去，就能够拿到对账户的访问权。

这本质上有点像咱们在新设备上登录微信。我们在微信服务器端也记录着一个公钥，这个公钥不是区块链的公钥。在新设备上登录微信时，需要验证你的手机号、密码，验完了之后还要再找两三个朋友辅助验证一下，如果这个人确实能联系到朋友，那说明他大概率就是这个人本人，这种时候就是社交恢复。

社交恢复的提出，应该说是为了实现免助记词，目前来说，在去中心化程度、安全性、便利性上，平衡得最好的就是社交恢复。

阿伟（主持人）：那么，智能合约钱包相比 EOA 钱包，有没有缺点或者问题？

知县（UniPass 创始人）：当然有了。首先，虽然说智能合约钱包已经有一段时间了，但也相对较新，所以会有一些兼容性的问题，主要出在一些 DeFi 的场景里面。还有一些 Token 不允许 CA 去访问它，或者只允许白名单里的 CA 能访问它，这个不是很普遍，且主要集中在 DeFi 里。

另外，CA 的签名也可能遇到兼容性问题。EOA 有一个签名标准，它可以签一个消息，比如签一个授权挂单。CA 的合约地址不对应一个公钥，所以用原来的验签方法是不行的。当然，社区也提出了 EIP-1271 来解决这个问题。

所以，现在 CA 的兼容性问题，问题不是特别大，随着时间的推移很容易解决。

第二个是安全性。EOA 的逻辑很简单，简单就更加 solid 一点。智能合约钱包，因为有自己的内部逻辑，有功能扩展，这些其实都是需要合约代码去实现的，这些合约代码能不能够比较 solid、能否一直运行，一方面需要你去做更严格的安全审计，另一方面需要时间来检验。时间足够久，承载的资产量、用户量足够大，而且也不出问题，那么它未来出问题的概率就会变得更小。

第三个是成本问题。相比 EOA，用 CA 做普通的转账也需要合约调用，所以它会有一些基础费用，其他链上操作也类似，都需要支付基础费用，所以付的 gas fee 会更多一点。但也有特殊情况，比如你用 EOA 去做 swap，需要先 approve 一笔交易，然后再进行 swap，这两个操作加起来的 gas fee 就比直接用 CA 操作需要支付的 gas fee 多了，因为 CA 只需要一个操作。因此，成本问题需要分情况讨论。

最后一个就是场景比较有限。目前的 Web3 场景中，智能合约钱包的优势不明显，它擅长的扩展性、灵活性暂时还发挥不出来。

---

*Originally published on [Nervos 中文社区](https://paragraph.com/@nervos/QqGaZicEtWRjdYMMYVfZ)*
