一组助记词打天下——HD钱包的奥妙
不知你是否遇到这样的困境:因为交易需要和个人隐私问题,手握多条公链钱包的多个不同的私钥,备份却成了个大问题。每条公链上的每个私钥都要单独备份保存,着实麻烦!那是否有一种钱包可以极大地简化多链多**的备份过程呢?是否有一种方式可以只记录一组助记词就可以管理所有钱包呢?
当然有!HD钱包可以满足你的需求。HD钱包,即Hierarchical Deterministic Wallet,中文称为分层确定性钱包。它是目前来说最好用的、最方便的确定性钱包。
非确定性钱包VS确定性钱包
由于私钥不同的生成方法对应着不同的钱包结构,根据此区别,我们把钱包分为非确定性钱包和确定性钱包。
非确定性钱包,又称为随机钱包,特点是私钥之间互相没有任何联系,最早的比特币钱包就是这种类型。在当时,要想备份钱包中的所有地址,必须对每个**对中的私钥进行单独备份,这样一来,备份管理就成了一件极其麻烦的事情。所以作为解决方案的确定性钱包应运而生。
非确定性钱包
确定性钱包,又称为种子钱包,特点是所有**对都靠同一个种子产生。确定性钱包的好处是:一个种子就能恢复所有的私钥,在备份和恢复起来都非常方便。值得注意的是,确定性钱包随机产出的种子是通过一系列确定、不可逆的运算来派生出一系列的**对。为什么要强调确定和不可逆?因为确定可以保证从一个种子中可以生成出全部的子**对,而“不可逆”则是为了确保不能通过子**对反推出种子。
确定性钱包
分层确定性钱包(HD钱包)
分层确定性钱包,即HD钱包。HD钱包的概念最早是在BIP32协议中提出的,也是目前最为常见的确定性钱包。HD在对确定性钱包的结构进行了优化,以树状结构来分层衍生**。首先由种子生成主**对,主**对可以衍生出许多子**对,子**对还可以继续无限往下衍生。HD钱包的衍生过程同样遵循确定、不可逆的原则。
HD钱包
这样的树状结构和衍生原则不仅可以方便掌控庞大数量的**对,也利于**管理者下放权利,增加组织管理能力。父**对子**中的资产做到绝对掌握,子**可以控制当前**中的资产,但不会对同级或者父级**中的资产产生影响。
助记词 VS HD钱包
在结构问题优化了之后,种子的问题开始凸显。虽然跟不确定性钱包钱包相比,HD钱包只需要记住一个种子确实方便很多,但是BIP32 协议中的种子是128位字符也太难记了!
种子举例:
d4f9e64aff329ce0d1d7f57df9ec91cfbb1e40d7f9a94ecea7881aa944366a9c0fe1c326af5a072427f86ceb73d48e11169772b0077a1230b7f04a7edaf927dc
(这谁记得住!)
针对这个问题,BIP39协议中提出了助记词这一解决方案:随机生成数位的助记词,通过这些单词和单词的顺序就能得到种子。BIP39具体的解决方案是,定义一个包含2048个单词的单词表,生成一串随机序列后,对这串随机序列做一定的算法演变,得到一个新的序列,将序列分割成好几个部分后,将每个部分与单词表上的一个单词做对应,就得到了助记词。而助记词再通过**生成函数PBKDF2就能生成种子。至此,我们可以把整个HD钱包创建的过程表示为:助记词——种子——**——地址。
助记词举例:
crew code snow thing onion hybrid polar kid arctic reject meat pioneer cherry tree change
(小白也能记住!)
HD钱包的优化到此结束了吗?答案是没有!在之后的BIP44协议中,对树状结构中的每一层都进行了新的定义,每一层都可以支持多公链币种。这也就意味着,HD钱包用户可以通过一个主私钥或者一组助记词来控制多个链上的不同资产!
可快速生成多种公链地址,一组助记词即可轻松备份多链资产,组织结构授权方便管理,这样的HD钱包你还不心动?下周,TokenPocket将上线HD钱包,到时候我们会放出详细的教程和攻略,欢迎大家来体验!