如果说区块链中,最令人糟心的事情是什么,可能每个人都有不同的答案,但是私钥泄露导致资产被盗无疑是公认的,目前的加密货币区块链的基础之一是数学生成的公钥/地址——私钥对,私钥相当于我们现实中的银行卡+密码,一旦遭遇泄露,hacker可以迅速取走你的钱,而你却只能无可奈何,MPC无私钥钱包可能是一个出路。

私钥其实也是大部分人刚了解区块链的门槛之一,因为大部分熟悉中心化的人比较熟悉银行卡账号+密码那一套,而一旦资金被盗也会第一时间想着要不要找钱包提供商客服问问有没有什么方案。私钥的记录是通过随机数来生成的,而在计算机中,真随机数是不存在的,大部分随机数都被称为伪随机数,比如以前人们习惯使用的纸钱包就是利用鼠标移动坐标生成伪随机数,接着生成私钥,当然这种方式目前已经被淘汰。

另外还有以前的脑钱包,用户通过输入字符来生成随机数,方便自己记忆,比如有人用唐诗或宋词里的某一句话来生成钱包,因为它有一些漏洞已经被利用,hacker可以暴力破解盗取用户资产,因此现在的脑钱包也已经被淘汰了。

大部分钱包软件主要支持的是助记词的方式,就是11个助记词+1个校验位,当然也有24个助记词的形式,原理基本相同,当然也有给助记词钱包增加密码的形式,同一套助记词设置不同的密码就会生成不同的钱包地址,这种目前支持的钱包软件相对较少,因此并不流行。

目前对于资管团队来说,多签钱包是比较常用的方式,比如我们使用2/3多签钱包,生成三个私钥来共同管理,需要转币的时候,只需要两个私钥签名同意即可,在以太坊中这种形式需要在链上部署合约实现,通过合约控制资金,也被称为智能合约钱包。

为了安全起见,人们还发明了硬件钱包,来保护私钥/助记词不联网泄露,但是这里仍然没有摆脱助记词/私钥/随机数推导的形式。在Web3中这一大类人们也称为EOA钱包,比如Metamask(软件EOA)、Ledger(硬件EOA)等。

智能合约钱包及MPC钱包

智能合约钱包是一种在链上部署合约的钱包,比如Argent(单签名智能合约钱包)、Gnosis Safe Multisig(多签名智能合约钱包)等,比如我们在使用Argent的时候如果是新的钱包,接收资金时钱包是正常的,但是需要发送资金出去的时候,首先钱包需要执行一笔交易来激活钱包,然后才能进行发送资产。

比如本图中handle deposit是跨链进来的资产(钱包接收资产),而Account create and transfer则是钱包创建和资金发送。

另一种则是我们提到的MPC方案的钱包,比如ZenGo、Web3Auth等。MPC是多方计算的缩写,多方计算是隐私计算的一种形式,也是普遍使用的方式,和TEE、ZK零知识证明属于同一赛道,当然它们的应用场景各有侧重,这里并没有接触到私钥信息,可以做到整个过程中私钥不可见,而与多签钱包不同的是,多签钱包是通过管理私钥组合签名来进行确认的,用户是可以接触到私钥片段的,而且MPC的多个私钥片段是不断变化的,也就是说这个过程中并不会有固定的私钥产生,而即使hacker拿到了某一个私钥片段也是没有用处的,因此这也彻底摆脱了私钥的限制,对于B端用户来说,也能提供更多灵活的解决方案。

在以太坊中多签钱包是部署在链上进行智能合约执行的钱包,我们理解为合约钱包,而MPC钱包的验证是在链下进行的,这里并不涉及到智能合约。而智能合约钱包一方面不能适配多条链(同一个地址EOA钱包可以切换到ETH/Polygon/BSC等多条链使用,但是多签智能合约钱包却只能在一条链上使用,如果部署到其他链上,地址会发生变化),同时智能合约钱包会带来交互Gas费的上涨,因为交互过程中会带来更多的计算,而MPC钱包则不会出现这种情况。

目前的MPC钱包并不流行,但是已经获得了多方关注,相应的产品和解决方案比如unipass、bitizen、zengo、fireblocks、web3auth等都涉及到MPC解决方案之中

整体而言,MPC钱包是一种新的钱包保管方式,也被称为下一代钱包资产管理的方式,同时结合Web3 DApp钱包登录等场景的需求,也将会逐渐普及,而困扰用户的钱包管理问题也有可能会因此而终结。