一、种子前缀对区块链的作用
种子前缀是一种用于标识任何区块链地址的16字节(128位)简称,它可以用来区分不同的区块链地址,从而更安全的实现资金转账。
1.用于支付
种子前缀能够有效地保护用户资金的安全性,以及降低误输错误地址的几率。生成交易时,使用固定的种子前缀可以确保账户余额不会出现差错。对于用户体验来讲,确定地址后再输入种子前缀可以减少交易错误的可能。
2.扩展地址
另一方面,当每个以太币账户地址的末尾部分被使用完毕增加地址簿时,使用种子前缀,可以更加简便、高效的生成新的地址,来拓展新的以太币账户地址,这对以太币业务的发展和完善可以起到重要的推进作用。
3.安全保护
使用种子前缀可以有效防止交易私钥的泄漏,确保区块链资产的安全性。在使用全新的地址之前,可以在服务器上按16字节的种子前缀存储一个完整的私钥数据,并且使用相关变量进行交易,以防止私钥泄露。
4.地址分级
进行资金分级时使用种子前缀可以提高安全性,可以将大规模的资金分成多个账户群并存储在多个地址,便于更加安全的分级管理资金,降低全部资金的风险。
总之,种子前缀对区块链系统来说是一个重要的安全保护措施,可以有效降低账户资金的损失,确保账户安全,拓展以太币账户地址,以及合理有效地分级管理资金,有助于更加不断地提升区块链技术的发展水平。
确定性,或者“种子”钱包包含通过使用单项离散方程而可从公共的种子生成的私钥。种子是随机生成的数字。这个数字也含有比如索引号码或者可生成私钥的“链码”(参见“4.4.4 分层确定性钱包(BIP0032/BIP0044)”一节)。在确定性钱包中,种子足够收回所有的已经产生的私钥,所以只用在初始创建时的一个简单备份就足以搞定。并且种子也足够让钱包输入或者输出。这就很容易允许使用者的私钥在钱包之间轻松转移输入。
助记码词汇是英文单词序列代表(编码)用作种子对应所确定性钱包的随机数。单词的序列足以重新创建种子,并且从种子那里重新创造钱包以及所有私钥。 在首次创建钱包时,带有助记码的,运行确定性钱包的钱包的应用程序将会向使用者展示一个12至24个词的顺序。单词的顺序就是钱包的备份。它也可以被用来 恢复以及重新创造应用程序相同或者兼容的钱包的钥匙。助记码代码可以让使用者复制钱包更容易一些,因为它们相比较随机数字顺序来说,可以很容易地被读出来 并且正确抄写。
助记码被定义在比特币的改进建议39中(参见"附录2 比特币改进协议[bip0039]”),目前还处于草案状态。需注意的是,BIP0039是一个建议草案而不是标准方案。具体地来说,电子钱包和BIP0039使用不同的标准且对应不同组的词汇。Trezor钱包以及一些其他钱包使用BIP0039,但是BIP0039和电子钱包的运行不兼容。
BIP0039定义助记码和种子的创建过程如下:
1.创造一个128到256位的随机顺序(熵)。
2.提出SHA256哈希前几位,就可以创造一个随机序列的校验和。
3.把校验和加在随机顺序的后面。
4.把顺序分解成11位的不同集合,并用这些集合去和一个预先已经定义的2048个单词字典做对应。
5.生成一个12至24个词的助记码。
表4-5表示了熵数据的大小和助记码单词的长度之间的关系。
表4-5 助记码:熵及字段长度
熵(bits) | 校验符(bits) | 熵+校验符 | 字段长 |
---|---|---|---|
128 | 4 | 132 | 12 |
160 | 5 | 165 | 15 |
192 | 6 | 198 | 18 |
224 | 7 | 231 | 21 |
256 | 8 | 264 | 24 |
助记码表示128至256位数。这可以通过使用私钥抻拉函数PBKDF2来导出更长的(512位)的种子。所得的种子可以用来创造一个确定性钱包以及其所派生的所有钥匙。
表4-6和表4-7展示了一些助记码的例子和它所生成的种子。
表4-6 128位熵的助记码以及所产生的种子
负熵输入 (128 bits) | 0c1e24e5917779d297e14d45f14e1a1a |
---|---|
助记码 (12 个单词) | army van defense carry jealous true garbage claim echo media make crunch |
种子 (512 bits) | 3338a6d2ee71c7f28eb5b882159634cd46a898463e9d2d0980f8e80dfbba5b0fa0291e5fb88 8a599b44b93187be6ee3ab5fd3ead7dd646341b2cdb8d08d13bf |
表4-7 256位熵的助记码以及所产生的种子
负熵输入 (256 bits) | 2041546864449caff939d32d574753fe684d3c947c3346713dd8423e74abcf8c |
---|---|
助记码 (24个单词) | cake apple borrow silk endorse fitness top denial coil riot stay wolf luggage oxygen faint major edit measure invite love trap field dilemma oblige |
种子 (512 bits) | 3972e432e99040f75ebe13a660110c3e29d131a2c808c7ee5f1631d0a977fcf473bee22 fce540af281bf7cdeade0dd2c1c795bd02f1e4049e205a0158906c343 |
确定性钱包被开发成更容易从单个“种子”中生成许多关键的钥匙。最高级的来自确定性钱包的形是通过BIP0032标准生成的 the hierarchical deterministic wallet or HD wallet defined。分层确定性钱包包含从数结构所生成的钥匙。这种母钥匙可以生成子钥匙的序列。这些子钥匙又可以衍生出孙钥匙,以此无穷类推。