以下内容整理自「Web3 101」播客的第 S1E14 期,主播为阿伟(Awaei),嘉宾为 UniPass 创始人知县。
阿伟(主持人):我记得你之前在即刻 App 上发过原本准备在「瓦猫之夏」分享的 PPT。在那个 PPT 中,你认为钱包这概念并不是很好,并对钱包进行了拆解,可以跟我们具体讲讲吗?
知县(UniPass 创始人):钱包这个说法不好,是我之前一直隐隐有的一个想法,别人在提到钱包的时候,总会让对方的思维产生一种禁锢。后来,我看到一篇文章,把我这个想法说得淋漓尽致,这篇文章叫 Stop Calling it a Wallet,不要再叫它钱包了。我把这篇文章的一些核心观点列到了 PPT 里。
第一个,是钱包的这个意象不好。钱包咱们用的时间太久了,人类用钱包的历史几百上千年,这个东西在我们的印象里是个静态的物品,缺乏成长感,因为一个钱包你可能用 10 年它也不会变,只是变得更老更旧,不会有什么新功能突然蹦出来,所以有一种特别陈旧的感觉。
第二个,是钱包的一个固有用途,就是放钱,会对你的认知产生一些误导。比如说,咱们现在用的区块链钱包,Web3 钱包,它里面放的其实不是资产,它里面放的是你的密钥,你的资产其实是在链上的,你只是放了一个能动资产的凭证在里面。如果真要类比的话,它其实是你放钥匙的包,而不是放钱的包,只不过放的钥匙,有的是去动钱的,有的不一定是动钱的,可能是你去开另一个保险柜,拿出一个证明来证明你是你,后者就是 DID 的使用场景。
在区块链领域,一开始为什么叫 wallet?其实是因为比特币是一个金融类的产品,它叫 bitcoin,它一开始就是钱,所以用来管理它的就是钱包,这个没毛病。
但是,当时代往后发展,叙事也好,区块链的应用场景也好,其实是变得越来越多了。如果大家还在用钱包这个概念,其实没有办法适应一些新的需求,至少我觉得可以把它称为「账户」。如果再想抽象一点,有一个更极客的词,叫 DPKI(去中心化公钥基础设施)。
用区块链和智能合约来实现的一套去中心化公钥基础设施,你可以用它来管理资产,这个时候你可以叫它钱包;你也可以用它来登录,用它来认证,用它来签名,甚至用它来加密,做端对端加密的聊天通话或者说数据保存,这个时候你再叫它钱包就不贴切了。这是我对钱包这个概念的一些看法。
关于钱包的分层,我画了个图:
我把钱包分成三层,最下层我们可以叫它 Signer,签名器。它其实是跟区块链一点关系都没有,它是个纯密码学或者说纯数学运算的一个东西。比如说,你去创建一个密钥对,导入一个密钥,导出一个密钥,或者你拿这个密钥进行各种格式的签名、加密,这些操作全是数学运算,全是在处理数据,所以这部分其实跟链无关。
第二层,我们可以叫它 Provider。这一层开始跟区块链有关系了,比如说,这个是比特币的 Provider,那么你按照比特币的要求,用公钥能够生成一系列的地址;你按照以太坊的要求,可以用公钥生成一个 EOA;或者按照其他链的要求,生成不同的地址。
你怎么跟区块链交互,也是这一层定义的。比如说,某些 RPC 的服务,一些相关的 API 处理,其实都是 Provider 做的事情,我们经常会看到换个 Provider 就能切换到另外一条链。如果是多链钱包的话,用户使用同一套助记词可以生成多个不同链不同地址的钱包。这些都是在不同的 Provider 的作用下做到的。
最上面那一层,就是我们常说的 Wallet。它是一个应用逻辑,或者说它是一个场景。Wallet 干的事情,包括资产的展示,资产的收发,交易记录的查看,等等。
这是我自己的想法,当然也欢迎大家去来 challenge。
阿伟(主持人):其实本质上可能没有一个官方的定义。我们经常会把钱包这概念混用,比如我们中文可能都叫钱包,但有的时候英文对应的是 Wallet,有的时候是 Address。
地址和钱包,这两个词经常混在一起。你能不能给大家解释一下?比如,MetaMask 到底是什么?它应该叫钱包,还叫地址?它这里边生成的是啥?
知县(UniPass 创始人):MetaMask 其实是钱包,因为钱包是一个应用。
地址可以理解为一个概念,钱包里面管的是各种各样的地址。只不过大家在聊的时候,不太注意的时候,就直接把地址叫钱包了。Active wallets 有多少,可能就是一种省略的说法,实际指的是 active wallet address。
在我看来,这两个概念还是非常清楚的,可以很容易区分。
地址是一个实体,其实可以不经过钱包,你自己就能算出地址。比如以太坊的 EOA,用 ECDSA-secp256k1 的签名算法将私钥映射成公钥,然后计算公钥的 Keccak-256 哈希值,结果取后 20 bytes,再十六进制数转换,完成后前面再加个 0x,就得到了以太坊地址。这个地址的生成过程中,没有用到任何钱包。
所以,钱包其实是一个工具,它可以帮你去生成地址,帮你去管理资产。
阿伟(主持人):对于普通的用户来说,比如我们用的 MetaMask,它可以生成很多的地址,但其实这些地址你用别的钱包也可以生成。其实应该这么理解这个事情。
知县(UniPass 创始人):**对,同一个地址可以在不同钱包里使用,也可以不用钱包就算出一个地址。钱包和地址的关系,还是比较解耦的。你也可以简单理解为钱包是操作地址的。
收听博客的完整版音频: