在上篇文章中,我将助记词的生成过程和步骤拆解了出来,实际上在现实开发中,我们可以直接借助bip-39的npm模块来快速生成符合规范的助记词。
在上篇文章中,我将助记词的生成过程和步骤拆解了出来,实际上在现实开发中,我们可以直接借助 bip-39 的 npm 模块来快速生成符合规范的助记词。
export declare function generateMnemonic(strength?: number, rng?: (size: number) => Buffer, wordlist?: string[]): string;
generateMnemonic
函数通常用于生成符合 BIP-39 标准的助记词。我们来解释下相关参数的含义:
参数说明:
返回值: 返回生成的助记词(一个由单词组成的字符串)。
示例用法:
import { generateMnemonic } from 'bip39';
// 生成一个默认强度的助记词(128位安全性,默认英文单词表)
const mnemonic = generateMnemonic();
console.log(mnemonic);
// 使用 256 位强度生成助记词
const strongMnemonic = generateMnemonic(256);
console.log(strongMnemonic);
// 使用自定义随机数生成器
const customRng = (size: number) => {
return Buffer.from([...Array(size).keys()].map(i => Math.floor(Math.random() * 256)));
};
const customMnemonic = generateMnemonic(128, customRng);
console.log(customMnemonic);
// 使用自定义单词表(例如中文)
const chineseWordlist = bip39.wordlists.chinese_simplified;
const chineseMnemonic = generateMnemonic(128, undefined, chineseWordlist);
console.log(chineseMnemonic);
export declare function mnemonicToSeedSync(mnemonic: string, password?: string): Buffer;
这个函数用于将 BIP-39 助记词转换为种子(seed),这个种子通常用于生成 HD (Hierarchical Deterministic) 钱包的根私钥。它是一个同步函数,返回一个 Buffer
,即生成的种子值。
参数说明:
""
,即没有额外的保护。返回值: 返回一个 Buffer
,包含从助记词和可选密码生成的种子(长度为 64 字节)。
示例用法:
import { mnemonicToSeedSync } from 'bip39';
// 假设我们有一个助记词
const mnemonic = "praise you muffin lion enable neck grocery crumble super myself license ghost";
// 使用助记词生成种子
const seed = mnemonicToSeedSync(mnemonic);
console.log(seed.toString('hex')); // 以16进制输出种子
// 使用助记词和密码生成种子
const password = "mySecurePassword";
const seedWithPassword = mnemonicToSeedSync(mnemonic, password);
console.log(seedWithPassword.toString('hex')); // 以16进制输出带密码的种子
export declare function mnemonicToSeed(mnemonic: string, password?: string): Promise<Buffer>;
mnemonicToSeed
是一个异步函数,它将 BIP-39 助记词转换为种子(seed),并返回一个 Promise
对象,该对象解析为包含种子的 Buffer
。
参数说明:
""
,即没有额外的密码保护。返回值:
Promise<Buffer>
,在成功解析时返回一个 Buffer
,其中包含生成的种子。示例用法:
import { mnemonicToSeed } from 'bip39';
// 假设有一个助记词
const mnemonic = "praise you muffin lion enable neck grocery crumble super myself license ghost";
// 使用助记词生成种子(异步)
mnemonicToSeed(mnemonic).then(seed => {
console.log(seed.toString('hex')); // 输出种子的十六进制表示
}).catch(err => {
console.error('Error generating seed:', err);
});
// 使用助记词和密码生成种子
const password = "mySecurePassword";
mnemonicToSeed(mnemonic, password).then(seed => {
console.log(seed.toString('hex')); // 输出带密码的种子的十六进制表示
}).catch(err => {
console.error('Error generating seed:', err);
});
说明:
mnemonicToSeedSync
的同步版本不同,mnemonicToSeed
是异步的,适用于不希望阻塞程序执行的场景。它返回一个 Promise
,你可以通过 then()
或 async/await
进行处理。使用场景:
mnemonicToSeedSync
的区别:
mnemonicToSeed
是异步的,返回一个 Promise
,适合用于不想阻塞主线程的场景。mnemonicToSeedSync
是同步的,会立即返回生成的种子,但如果生成时间较长可能会阻塞主线程。如果你偏好使用现代 JavaScript 的 async/await
语法,下面是示例:
(async () => {
try {
const seed = await mnemonicToSeed(mnemonic);
console.log(seed.toString('hex')); // 输出种子的十六进制表示
} catch (err) {
console.error('Error generating seed:', err);
}
})();
mnemonicToEntropy
函数用于将助记词(mnemonic)转换为其对应的熵(entropy)。助记词是钱包恢复时用到的一系列单词,而这些单词实际上是基于一定的规则从熵值中生成的。mnemonicToEntropy
函数反向操作这个过程,通过助记词来计算并恢复出对应的熵值。
export declare function mnemonicToEntropy(mnemonic: string, wordlist?: string[]): string;
参数解析:
mnemonic (string) :
示例:
const mnemonic = "abandon ability able about above absent absorb abstract absurd abuse access accident";
这个参数是必须的,表示助记词,是一串由空格分隔的单词字符串(通常是12个或24个单词)。这些单词通常基于特定的词库(比如 BIP39 词库)生成。
wordlist (string[]) :
这是一个可选参数,用于指定助记词所使用的词库。如果未提供,函数通常使用默认的英文词库。不同的语言可能会有不同的词库,例如中文、日文、法文等。这个参数允许你根据不同的语言提供不同的词库。
返回值:
(string) : 该函数返回对应助记词的熵值。熵是一个表示随机性和安全性的二进制串,助记词是根据熵值生成的。因此,通过助记词可以反推出最初的熵值。熵通常以16进制字符串格式表示。
使用示例:
import { mnemonicToEntropy } from 'bip-39';
const mnemonic = "abandon ability able about above absent absorb abstract absurd abuse access accident";
const entropy = mnemonicToEntropy(mnemonic);
console.log(entropy); // 输出对应的熵值
在这个示例中,助记词通过 mnemonicToEntropy
函数被转换为它的熵值,之后你可以将熵值用于加密操作,或者继续用于生成私钥。
典型用法场景:
entropyToMnemonic
函数entropyToMnemonic
是 BIP-39 库中的一个函数,它的作用是将熵(entropy)转换为助记词(mnemonic)。熵是生成助记词的基础,而助记词是一组易记的单词,用于钱包备份和恢复等功能。
export declare function entropyToMnemonic(entropy: Buffer | string, wordlist?: string[]): string;
参数解析:
entropy (Buffer | string)
必需参数,表示熵值。可以是 Buffer
类型或者 string
类型的十六进制字符串。
熵(Entropy) :是一个二进制数据,通常是 128 位、160 位、192 位、224 位或 256 位的随机数,用于生成助记词。熵越大,生成的助记词越长,安全性也越高。助记词的长度取决于熵的比特长度:
128 位熵 → 12 个单词
256 位熵 → 24 个单词
wordlist (string[]) :可选参数,用于指定助记词生成时所用的词库。BIP-39 标准支持多种语言(如英语、中文、法语等),不同语言对应不同的词库。默认是英文词库。
(string) :该函数返回助记词字符串。它由空格分隔的单词组成,单词来自指定的词库或默认的英文词库。
使用示例:
import { entropyToMnemonic } from 'bip39';
const entropy = "000102030405060708090a0b0c0d0e0f";
const mnemonic = entropyToMnemonic(entropy);
console.log(mnemonic);
// 可能输出: "abandon ability able about above absent absorb abstract absurd abuse access accident"
在这个例子中,熵值被转换为助记词,生成的助记词可以用于钱包备份、恢复等场景。
典型用法场景:
wordlist
参数,你可以生成不同语言版本的助记词,方便不同语言的用户。validateMnemonic
函数validateMnemonic
是 BIP-39 库中的一个函数,用于验证给定的助记词(mnemonic)是否有效。这个函数会检查助记词是否符合 BIP-39 标准,并且可以选择通过指定的词库进行验证。
export declare function validateMnemonic(mnemonic: string, wordlist?: string[]): boolean;
参数解析:
mnemonic (string) : 必需参数,表示需要验证的助记词,是一个由空格分隔的单词字符串(如12个或24个单词)。这些单词通常从特定词库中选择,并按照 BIP-39 标准生成。
wordlist (string[]) :可选参数,用于指定助记词词库。如果不提供该参数,函数会使用默认的英文词库。不同语言的助记词可能基于不同的词库(如中文、法文、日文等),可以通过这个参数来验证特定语言的助记词。
返回值:(boolean) :该函数返回一个布尔值。如果给定的助记词是有效的并且符合 BIP-39 标准,则返回 true
;否则返回 false
。
使用示例:
import { validateMnemonic } from 'bip39';
const mnemonic = "abandon ability able about above absent absorb abstract absurd abuse access accident";
const isValid = validateMnemonic(mnemonic);
console.log(isValid); // 输出: true 或 false
在这个例子中,validateMnemonic
函数会检查助记词是否正确。如果助记词无效(例如,单词不在词库中或格式不符合 BIP-39 标准),它将返回 false
。
验证标准:
典型用法场景:
你可以使用这个函数来验证你生成或输入的助记词是否符合 BIP-39 标准。如果助记词无效,可能是词库不匹配或格式错误。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!