作者:Ggg, Redline DAO

摘要

  • “Not your key, not your coin”,无论智能合约钱包还是个人账户钱包,私钥都拥有对钱包的绝对控制权,一旦私钥丢失我们的钱包就完全暴露在风险之下
  • 私钥是钱包的基础,助记词是私钥的恢复方案,也是目前的钱包发展阻碍所在
  • MPC和社交恢复带来的无助记词方案是Mass Adoption的基础
  • 未来钱包的更多可能性,关于EIP-4337的期待

2010年,以太坊创始人Vitalik Buterin在魔兽世界中有一个术士的账号,有一天暴雪决定将术士角色大削,移除了生命虹吸法术的法伤部分。他哭着睡着了,并且在那一天意识到集中服务器会带来怎样的恐怖,于是他决定退出,创建了去中心化网络以太坊。2022年11月,世界上最大的衍生品交易所FTX被曝挪用用户资金,创始人SBF被巴哈马警方逮捕,准备移交美国受审。

从13年前被暴雪莫名背刺的术士玩家,到今天维权的FTX受害用户,我们越来越认识到**“Not your key, not your coin”**这句话的重要性:即使有第三方的审计/监管机构,中心化的服务器仍然可以肆意篡改、粉饰数据,而在去中心化网络上,链上账本透明且无法篡改,只要我们拥有自己账户的私钥,便拥有对个人资产的绝对控制权。

去中心化是美妙的,但代价呢?

生活在区块链网络中的我们,是个人资产的第一负责人。大部分的用户在选择链上钱包时,最关键的权衡是,**我愿意为我的资产承担多大的风险以及多大的责任?**以传统金融机构为例:

  • 在追求安全性的用户的眼里,他们希望将钱放在开户步骤繁琐,但是规模体量庞大的银行里:大银行的资金安全(风险) > 标准严格的开户步骤(责任)
  • 在追求应用性的用户眼里,他们仅仅将钱放在微信和支付宝里即可,微信和支付宝能够便捷地完成P2P交易,而且只需要身份证和手机号即可完成注册,即使微信和支付宝只是两家上市企业而非国家支持的银行机构:微信的便捷性(责任)> 微信的运营状况(风险)

回到web3,我们在web3中存放资产有两种方式,托管钱包和非托管钱包,而在此之前我们需要对钱包的原理进行一个简要的介绍:

钱包与私钥

账户的生成即私钥的创建过程。在以太坊上,有两种账户类型:EOA账号(External Owned Account,外部账户)和合约账户(通过EOA账户部署在链上的智能合约):

1、以EOA账户为例,

EOA address

通过生成256bit的随机数作为私钥,再通过私钥由SHA3算法推导出对应的公钥,然后再通过keccak-256计算出地址(原始哈希的后20字节),便得到了一个由唯一私钥对应的个人账户。在这个过程中,私钥会计算生成12个助记词,我们可以用助记词来重新推导出私钥。

 

Source:https://www.liaoxuefeng.com/files/attachments/1381807125692481/l

目前各大主链上最主流的dApp钱包都是EOA钱包,如Metamask,Phantom(Solana),BSC Wallet(BSC),Keplr(Cosmos)

2、而智能账户则是通过EOA账户在链上部署的一段EVM编码,可以实现不同的功能。但是和EOA账户不一样的是,合约账户没有私钥,不能主动执行,它只能被EOA账户发起调用,也正因此,智能合约钱包的最终控制权 = 部署合约使用的EOA账户私钥,在这个层面上理解,智能合约账户也是被私钥控制的。只要钱包地址是合约,那就是智能合约钱包

  • 智能合约钱包分为多签钱包(Multisig account)和账户抽象钱包(Abstract account):
  • **多签钱包:**早在 2013 年,多签钱包就已经成为基金组织的首要选择。这项技术最初是在比特币生态系统中开发的,现在以太坊中也存在优秀的多签钱包(如Gnosis Safe):以太坊基金会用的就是一种4-of-7的多签钱包(即创建一个智能合约用于存放基金,通过7个EOA账户对合约进行控制,只有达到4/7以上的EOA账户签名,才可以完成签名)
  • 账户抽象则是以单个EOA钱包控制合约地址,达到用智能合约模拟EOA的效果,如Argent/Loopring等热门项目都属于账户抽象钱包

Apecoin Contract Address

3、账户创建之后,我们参与任何链上活动,都离不开私钥的参与。

根据廖雪峰老师的介绍:

在去中心化的网络中,并没有一个类似银行这样的信任机构存在,要想在两个节点之间达成交易,就必须实现一种在零信任的情况下安全交易的机制。

我们假设小明和小红希望达成一笔交易,一种创建交易的方法是小红声称小明给了他1万块钱,显然这是不可信的;

还有一种创建交易的方法是:小明声称他给了小红一万块钱,只要能验证这个声明确实是小明作出的,并且小明真的有1万块钱,那么这笔交易就被认为是有效的:

​​如何验证小明做出的声明呢?

  • 通过私钥创造的签名可以让验证者确认这个声明的发起方:任何人都可以通过公钥对数字签名喝转账的结果进行对照验证,由于只有拥有私钥的小明才可以发起这个声明,所以可以确信这个声明的确是小明做的。
  • 而在以太坊网络中,这样的交易不仅包括P2P的转账交易,也包括对智能合约的调用。
  • 所以当我们日常使用钱包时,等于通过钱包平台对本地私钥进行调用以完成链上的签名。

钱包的安全性,门槛与抗审查性

钱包的一切都围绕着私钥构建。钱包本质上是一个1.创建私钥,2.保管私钥,3.使用私钥,4.备份私钥,5.恢复私钥的工具,目前的主流私钥备份/恢复方案便是助记词,即在注册钱包时出现的12/24个单词组合:

  1. 助记词可以推导出私钥的明文,当用户迁移钱包至新的设备上时,只需要在钱包app上输入助记词便可推导出私钥,从而重新获得钱包的控制权
  2. 对于用户来说,私钥=助记词,但这两个概念在钱包的日常使用中仍然是有区别的:助记词是用户私钥的备份恢复方案
  3. 一个比喻:助记词等于将你的钥匙复制了下来,当你的钥匙丢失之后,可以通过助记词再生成一把一样的钥匙

由于私钥是我们与区块链网络进行交互的唯一凭证,我们的责任在于保管好我们的钱包私钥和助记词。最安全的创建账户方式当然是在一个离线的环境,自己通过代码运行随机数(私钥)和SHA256算法生成自己的地址,但是无疑这个门槛太高,并不适用与绝大部分的用户。所以在钱包的选择上,用户需要考虑三点:安全性,门槛和抗审查性:

  1. 安全性:黑客破解钱包私钥/助记词的成本有多高
    1. 以硬件钱包为例,黑客只能通过钓鱼或者线下盗取私钥的方式才能获得用户私钥
  2. 门槛:钱包的易用性如何
    1. Metamask的注册过程中需要用户记录12个助记词,更换设备时需要重新输入12个助记词,而Binance的交易所注册和换设备登录都可以通过邮箱登录一键完成
  3. 抗审查性:钱包的最终控制权是否在用户手里
    1. 如果钱包app会保存用户导入的助记词明文上传至服务器,导致黑客可以通过破解服务器盗取用户钱包。而即便没有黑客攻击,也存在这Slope项目方监守自盗的可能性,没有达到抗审查。

钱包类别主要分为两种:非托管钱包和中心化的托管钱包。

  1. 非托管钱包:用户自行保管助记词

    1. 以主流钱包Metamask为例,MetaMask 是一种非托管(或自托管)加密货币钱包。非托管意味着MetaMask 不存储有关钱包的任何数据,而私钥数据都在本地级别的浏览器或移动应用程序中,当用户需要进行链上签名活动时,Metamask将从本地文件调用私钥进行签名。而如果用户的私钥和助记词都丢失/窃取,Metamask将无法帮助用户寻回,用户的资产也将永久丢失
    2. 被公认为最安全的硬件钱包(如Ledger),则是采用了一个硬件设备离线生成私钥和钱包地址,再通过将地址的公钥导入至网页钱包如Metamask,需要签名时再通过Ledger硬件的线下确认,由于私钥完全不接触互联网,黑客很难窃取硬件钱包里的私钥。但是如果用户把助记词丢失了,或者被钓鱼了,硬件钱包的防护作用也归零,用户的资产依旧会被盗走: