@it-tools/bip39
TypeScript icon, indicating that this package has built-in type declarations

0.0.4 • Public • Published

logo

GitHub Workflow Status npm bundle size GitHub package.json version Licence Badge

A simple and complete bip39 mnemonic (passphrase) and entropy generator in typescript.

This package is similar to bitcoinjs/bip39 but lighter, strongly typed and without the heavy dependency to Buffer in order to be easily used in the browser.

Installation

Node JS

Install using yarn or npm.

npm install @it-tools/bip39
# or
yarn add @it-tools/bip39

And import :

// EMAScript import
import { entropyToMnemonic, mnemonicToEntropy } from '@it-tools/bip39';
// Or Common JS:
const { entropyToMnemonic, mnemonicToEntropy } = require('@it-tools/bip39');

const passphrase = entropyToMnemonic('063679ca1b28b5cfda9c186b367e271e');

console.log(passphrase);
// alert record income curve mercy tree heavy loan hen recycle mean devote

Usage

Create mnemonic (passphrase) from entropy

Default language is english. The entropy must an hexadecimal string with a length >= 16 or <= 32 and that is a multiple or 4.

import { entropyToMnemonic } from '@it-tools/bip39';

const passphrase = entropyToMnemonic('063679ca1b28b5cfda9c186b367e271e');

console.log(passphrase);
// alert record income curve mercy tree heavy loan hen recycle mean devote

Get entropy from a mnemonic (passphrase)

Default language is english.

import { mnemonicToEntropy } from '@it-tools/bip39';

const entropy = mnemonicToEntropy('alert record income curve mercy tree heavy loan hen recycle mean devote');

console.log(entropy);
// 063679ca1b28b5cfda9c186b367e271e

Generate an entropy

import { generateEntropy } from '@it-tools/bip39';

// Default is a 32 long entropy
const entropy = generateEntropy();

console.log(entropy);
// 063679ca1b28b5cfda9c186b367e271e
import { generateEntropy } from '@it-tools/bip39';

const entropy = generateEntropy(16);

console.log(entropy);
// b063679ca1b28b5c

Other languages

To use another language, just import the wordlist an use it in the function:

import { entropyToMnemonic, mnemonicToEntropy, frenchWordList } from '@it-tools/bip39';

const passphrase = entropyToMnemonic('063679ca1b28b5cfda9c186b367e271e', frenchWordList);

console.log(passphrase);
// adroit pastèque glace commande lanceur tarder forcer insigne fougère paternel label culminer

const entropy = entropyToMnemonic('adroit pastèque glace commande lanceur tarder forcer insigne fougère paternel label culminer', frenchWordList);

console.log(entropy);
// a063679ca1b28b5cfda9c186b367e271e

Available languages are:

  • chineseSimplified: import { chineseSimplifiedWordList } from '@it-tools/bip39';
  • chineseTraditional: import { chineseTraditionalWordList } from '@it-tools/bip39';
  • czech: import { czechWordList } from '@it-tools/bip39';
  • english: import { englishWordList } from '@it-tools/bip39';
  • french: import { frenchWordList } from '@it-tools/bip39';
  • italian: import { italianWordList } from '@it-tools/bip39';
  • japanese: import { japaneseWordList } from '@it-tools/bip39';
  • korean: import { koreanWordList } from '@it-tools/bip39';
  • portuguese: import { portugueseWordList } from '@it-tools/bip39';
  • spanish: import { spanishWordList } from '@it-tools/bip39';

You can event define your custom language:

import { entropyToMnemonic, IWordList } from '@it-tools/bip39';

const customWordList: IWordList = {
  language: 'my-language',
  spacer: ' ', // character used to split word in a sentence, mainly space
  words: [
    'word1',
    'word2',
    // ...
  ],
};

const passphrase = entropyToMnemonic('063679ca1b28b5cfda9c186b367e271e', customWordList);

Contribute

Pull requests are welcome ! Feel free to contribute.

Credits

Coded with ❤️ by Corentin Thomasset.

Inspired from bitcoinjs/bip39

License

This project is under the MIT license.

Package Sidebar

Install

npm i @it-tools/bip39

Weekly Downloads

369

Version

0.0.4

License

MIT

Unpacked Size

457 kB

Total Files

109

Last publish

Collaborators

  • corentinth