mt logoMyToken
总市值:
0%
恐慌指数:
0%
币种:--
平台 --
ETH Gas:--
EN
USD
APP
Ap Store QR Code

Scan Download

聊一点钱包技术

收藏
分享

钱包技术应该说是区块链技术最核心的战地,对开发人员的要求非常之高。除了要有非常扎实的比特币技术功底,还要具备聪明、解决复杂难题的能力。

钱包技术写十期怕都写不完,今天只聊点基础的。先不说扩展公钥(xpub)、扩展私钥(xpriv)这些复杂的,就说最简单的比特币公私钥。有谁能说出比特币公钥长度是多少(字节),私钥长度是多少?

比特币公私钥

比特币用的是 secp256k1,给出一个随机数 32字节(256bit)作为私钥,推导出对应的公钥。因为 secp256k1 是个对称的曲线(如下图),给定x轴上的某一点(私钥),可以找到y轴上的两个点(公钥)。因为公钥会出现在正负两个象限,因此完整的公钥长度是 64字节(32+32)。

64字节(实际上是65字节,04前缀)长度的公钥就称为比特币的非压缩公钥。因为如果知道其中一个点,反象限的点是可以推导出来的,可以只留下32字节的信息,称为压缩公钥。并加上前缀 02 或者 03 (计算过程中使用了y的平方根,不同私钥计算压缩公钥会得到不同的前缀),因此最终的压缩公钥是以 02 或 03 开头的33字节数据。

从上面可以看出,比特币私钥可以推导出三种类型的公钥,分别是:02、03、04开头(注:同一个比特币私钥对应的压缩公钥,只能是02/03中的一种)。他们最终都会推导出不同的比特币地址。为了表示在使用哪种公钥(地址),出现了私钥的编码格式,称为WIF。WIF以 5 或 K/L 开头,分别表示对应非压缩公钥和压缩公钥。

知道了比特币,那么 ETH 怎么样?ETH 使用的是非压缩形式,而且不需要 04 开头,因为 ETH 中没有引进压缩公钥,也就无需 04 标识了。

再如 EOS,则只使用压缩公钥。因为没有了非压缩公钥,因此 EOS 的 WIF 私钥也无需通过不同编码来标识是否压缩了。所以 EOS 的 WIF 只有一个形式。

其它币种大多和比特币类似,大家可以自行研究。下面我们说说大家更常见到的助记词。

助记词

现在钱包支持得最多的是 BIP39 助记词,但其实早在 BIP39 之前就出现了助记词,比如 Electrum 助记词。因为出现得比 BIP39 更早,所以 Electrum 助记词和 BIP39 是不兼容的。

Electrum 助记词前后也有两个不同的版本。目前使用的版本 v2 在词库上使用了和 BIP39 一样的词库,只是 Seed 的生成方式和 BIP39 不同。去年我读了 Electrum 的源码,并且在 Ownbit 钱包中集成了 Electrum 助记词。应该是目前唯一同时支持 BIP39 和 Electrum 助记词导入的钱包。

关于助记词怎么推导出 seed,进而推导出各种路径的扩展私钥(xpriv)和扩展公钥(xpub),这边先不忙介绍。这里只讲大家最常见的一个问题。

问题:我用的是中文助记词,是否可以生成一套对应的英文助记词,然后它们的地址和资产还都是一样的?

这个问题的答案比较复杂,断然地回答行或者不行都不准确。

对于绝大多数币是不行的,比如比特币、ETH等。标准的 BIP39 js库是将助记词字符串本身作为生成 seed 的源,因为用的是字符串本身,而不是单词在词库中的index,因此不同语言的助记词哪怕顺序是一样的,都会生成出不同的 seed,进行公私钥、地址都不一样了。

但实际上并不一定要这样,而且这样并不好,大家可以想一想。如果中英文助记词可以相互转换,从产品角度来说是个很有用的功能。因为我们有些人用的是中文助记词,但是在导入到某些钱包时会发现不支持中文助记词。如果能有这样的助记词转换的功能此时就很好了。

这里面讲助记词的另外一个概念:Entropy。每套助记词可以生成一个Entropy,其实就是这套助记词在词库中的 index 信息。如果我们使用 Entropy 生成 seed,而不是助记词本身,那么就可以实现不同助记词语言的切换了。有些币就是这么做的,比如:ADA ?(Cardano)。

目前国内而言,就我所知,支持 ADA 币的钱包只有 Ownbit 和 火币钱包。火币钱包的团队可能对 Entropy 的理解并不到位,我试了下,发现它们用中文助记词是无法生成ADA地址的。而这点在 Ownbit 里是没有问题的。

Entropy 的方式并不是 BIP39 标准方式,但实际上从产品角度却是一个更好的方式。现在用户对助记词的选择出现了两难的境况,一方面更多小白用户开始使用数字钱包,他们需要更加本地化的助记词,比如中文助记词。另一方面很多钱包(尤其外国钱包)并不支持中文助记词的资产恢复,使用中文助记词会降低资产恢复的通用性,因此确实两难。

这次先说这么多,下次再聊。

本文首发于微信公众号:谈谈区块链。文章内容属作者个人观点,不代表和讯网立场。投资者据此操作,风险请自担。

(责任编辑:张潮 HZ0011)
免责声明:本文版权归原作者所有,不代表MyToken(www.mytokencap.com)观点和立场;如有关于内容、版权等问题,请与我们联系。
相关阅读