最近有很多朋友问我关于钱包的一些知识,为避免重复回答,下文做简要一般性介绍,以后有人再问就直接给本文章的链接
顾名思义,钱包是用来保存钱的。但在数字货币的世界中,钱包里面并没有“钱”。钱包账户里有多少“钱”都是记录在区块链上的,钱包里只是存储了账户对应的私钥,账户是从私钥相应的公钥衍生出来的。只要有了私钥,你就可以在数字货币世界里证明你的身份,发送区块链上属于你的资产。因此,钱包实际上是管理和存储私钥的工具。
.公钥与私钥是一对秘钥。私钥用来加密,公钥用来解密。私钥自己保存,公钥是公开的。可以通过私钥推导出公钥,公钥却不能推导出私钥。
.数字签名的意思就是将待加密内容哈希运算得到一个哈希值,用私钥进行加密这个哈希值。如此便可以通过签名验证内容是否是真实未被篡改过的。
.数字签名只是保证了内容的完整性,数字证书则表明了此数字签名属于谁。通过数字签名和数字证书则可以验证某一段内容是否被修改过以及是否来自于某人。
BIP32:定义了HD钱包(Hierarchical Deterministic Wallet),允许从单一种子产生一树状结构储存多组私钥和公钥,可以方便的备份、转移以及分层权限控制等。HD钱包包含以树状结构衍生的密钥,使得父密钥可以衍生一系列子密钥,每个子密钥又可以衍生出一系列孙密钥,以此类推,无限衍生。下图展示了HD钱包的树状结构:
BIP39:将种子用方便记忆和书写的单词表示,一般由12个单词组成,称为助记词或助记码。由一系列单词生成种子是个标准化的方法,这样易于在钱包中转移、导出和导入。比如
shrimp make call path pink draw gym song select brother social base
,其相应的私钥为xprv9s21ZrQH143K4HQ8sBPNNkXHNuVYfivR96gtpJzMWCJVF5hdYjzT5nVQu6GfHAQLPstQtFp9GTWADUcKgzaV5EyL5JxT2rxkyg51ReGTVg8
。BIP43:为HD钱包路径引入
purpose
字段,路径记作m / purpose' / *
,比如m / 0' / *
表示BIP32的默认账户。BIP44:定义HD钱包路径字段,赋予树状结构中的各层特殊的意义,从而支持多币种、多账户,路径定义为:
m / purpose' / coin_type' / account' / change / address_index
其中,
purpose'
固定是44'
,代表使用BIP44;coin_type'
用来表示不同币种,例如Bitcoin就是0'
,Bitcoin Testnet是1'
,Ethereum是60'
;account'
表示账户编码;change
用来表示该地址是否为找零地址;address_index
为地址编号。BIP45:定义多签名HD钱包路径字段,从而支持多签名地址,路径定义为:
m / purpose' / cosigner_index / change / address_index
其中,
purpose
固定是45'
,代表使用BIP45;cosigner_index
表示多签名用户编号;其余字段与BIP44相同。