wallet的类型
私钥不同的生成方法,也对应着不同的wallet结构,通常可以分为非确定性wallet和确定性wallet。Bitcoin最早的客户端(Satoshi client)就是非确定性wallet,wallet是一堆随机生成的私钥的集合。
确定性wallet则不需要每次转账都要备份,确定性wallet的私钥是对种子进行单向哈希运算生成的,种子是一串由随机数生成器生成的随机数。在确定性wallet中,只要有这个种子,就可以找回所有私钥
BIP44的规则使得 HD wallet非常强大,用户只需要保存一个种子,就能控制所有token,所有账户的wallet。
可以一个wallet,同时支持BTC和以太坊
HD wallet是生成不重复使用地址的方法 ,记住一个种子就可以访问所有地址的钱而不需要每个地址都备份私钥。当然HD wallet不仅适用于BTC,HD wallet可以让一个wallet同时管理多资产成为可能性。
BIP32
定义 Hierarchical Deterministic wallet (简称 “HD Wallet”),是一个系统可以从单一个 seed 产生一树状结构储存多组 keypairs(私钥和公钥)。好处是可以方便的备份、转移到其他相容装置(因为都只需要 seed),以及分层的权限控制等。
BIP39
将 seed 用方便记忆和书写的单字表示。一般由 12 个单字组成,称为 mnemonic code(phrase),中文称为助记词或助记码。
BIP44
基于 BIP32 的系统,赋予树状结构中的各层特殊的意义。让同一个 seed 可以支援多token、多帐户等
各层定义如下:
m / purpose' / coin_type' / account' / change / address_index
- purporse’ 固定是 44’,代表使用 BIP44
- coin_type’ 用来表示不同token,例如 Bitcoin 就是 0’,Ethereum 是 60’。
- account’ 代表这个token的账户索引,从0开始。
- change 常量0用于外部链,常量1用于内部链(一般使用0)
- address_index 这就是地址索引,从0开始,代表生成第几个地址,官方建议,每个account下的address_index不要超过20
例如: m/44'/60'/0'/0/0
表示在一个 Ethereum HD Wallet 中,第一个帐户的第一组 keypair