Reference implementation of BIP-0039: Mnemonic code for generating deterministic keys
Maintained by Trezor. See the GitHub repository for source code and issue tracking.
This BIP describes the implementation of a mnemonic code or mnemonic sentence -- a group of easy to remember words -- for the generation of deterministic wallets.
It consists of two parts: generating the mnemonic, and converting it into a binary seed. This seed can be later used to generate deterministic wallets using BIP-0032 or similar methods.
See BIP-0039 for the full specification.
To install this library and its dependencies use:
$ pip install mnemonicImport library into python project via:
from mnemonic import MnemonicInitialize class instance, picking from available dictionaries:
- english
- chinese_simplified
- chinese_traditional
- french
- italian
- japanese
- korean
- spanish
- turkish
- czech
- portuguese
mnemo = Mnemonic(language)
mnemo = Mnemonic("english")Generate word list given the strength (128 - 256):
words = mnemo.generate(strength=256)Given the word list and custom passphrase (empty in example), generate seed:
seed = mnemo.to_seed(words, passphrase="")Given the word list, calculate original entropy:
entropy = mnemo.to_entropy(words)The mnemonic command provides CLI access to the library:
$ mnemonic create --help
$ mnemonic check --help
$ mnemonic to-seed --helpGenerate a new mnemonic phrase:
$ mnemonic create
$ mnemonic create -s 256 -l english -p "my passphrase"
$ mnemonic create -s 256 -l english
$ mnemonic create -P # prompt for passphrase (hidden input)
$ mnemonic create --hide-seed # only output mnemonic, not the seed
$ MNEMONIC_PASSPHRASE="secret" mnemonic createValidate a mnemonic phrase:
$ mnemonic check abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about
$ echo "abandon abandon ..." | mnemonic checkDerive seed from a mnemonic phrase:
$ mnemonic to-seed abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about
$ mnemonic to-seed -p "my passphrase" word1 word2 ...
$ mnemonic to-seed -P word1 word2 ... # prompt for passphrase (hidden input)
$ MNEMONIC_PASSPHRASE="secret" mnemonic to-seed word1 word2 ...