5个版本
0.1.5 | 2023年2月10日 |
---|---|
0.1.3 | 2023年1月23日 |
0.1.2 | 2023年1月23日 |
0.1.1 | 2022年11月30日 |
0.1.0 | 2022年11月28日 |
#1410 in 算法
19KB
286 行
seed15
seed15是一种将用户密钥转换为种子短语的规范。seed15库包括用于生成新种子(包含16字节熵)以及在不同种子和种子短语之间转换的辅助函数。
seed15种子短语使用一个1024词的英语字典,这意味着每个词包含10位熵。总共需要13个词才能获得映射到16字节种子的128位。第13个词的最后两个位被显式设置为零,一个有效的种子只能使用字典中特定的256个词作为第13个词。
最后两个词用于校验和。校验和是通过计算种子的sha256然后使用结果的前20位来计算的。20位的熵意味着一个错误转录的种子有百万分之一的几率具有正确的校验和。使用20位校验和还意味着,只要只有一两个词是错误的,就有很高的概率可以通过暴力破解找到正确的种子,而不会有任何假阳性。
use seed15::random_seed;
use seed15::phrase::{seed_to_seed_phrase, seed_phrase_to_seed};
use seed15::keypair::keypair_from_seed;
// Create a seed, convert it to a human-readable phrase, then convert the phrase back to a
// seed.
let new_seed = random_seed();
let phrase = seed_to_seed_phrase(new_seed);
let seed = seed_phrase_to_seed(&phrase).unwrap();
// Use the seed to create an ed25519 keypair.
let keypair = keypair_from_seed(seed);
种子协议的完整规范可以在这里找到: https://blog.sia.tech/a-technical-breakdown-of-mysky-seeds-ba9964505978
依赖关系
~4.5MB
~84K SLoC