Skip to content
💰 Elixir implementation of BIP39 Mnemonics
Elixir
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows Update elixir.yml Feb 21, 2020
config Clean up bloat Jan 26, 2020
lib Add option for hex-encoded entropy Jan 29, 2020
priv
test Test seed/1 clause Feb 20, 2020
.formatter.exs Initial commit Jan 25, 2020
.gitignore Initial commit Jan 25, 2020
LICENSE Add license Jan 26, 2020
README.md Fixup Jan 29, 2020
mix.exs Add Credo Feb 20, 2020
mix.lock Add Credo Feb 20, 2020

README.md

Mnemo

Hex.pm

Elixir implementation of BIP39.

(...) implementation of a mnemonic code or mnemonic sentence -- a group of easy to remember words -- for the generation of deterministic wallets.

mnemo library exposes the following interfaces:

  • Generate random English mnemonic
  • Generate English mnemonic for pre-existing binary entropy
  • Convert English mnemonic back to its binary entropy
  • Derive a PBKDF2 hex-encoded seed from any mnemonic

The library is tested against reference vectors from Trezor's implementation. Additionally, a simple property test guarantees mnemonic <-> entropy <-> mnemonic correctness.

Examples

iex(1)> Mnemo.generate
"seminar depart parent awake canal relief age emotion swap area always near voyage exist idea aunt around burst uphold web tumble mimic reopen note"
iex(1)> mnemonic = "insect miracle play mad cream upgrade engage march absorb pyramid december observe jazz senior
 betray family valve peasant cargo marriage table laundry melody morning"
iex(2)> Mnemo.entropy(mnemonic, hex: true)
"7511ae9942d32fdd52943e00d5e0e2cc377787455a94f114448ac42dcefb62a4"
iex(1)> Mnemo.mnemonic :crypto.strong_rand_bytes(16)
"emotion enroll aspect taxi nerve warrior become lens cactus stand stage pretty"
iex(1)> Mnemo.generate |> Mnemo.seed
"18a644cfd59eb0b509b0a73639b01e836e9e5a09f1f473a7f1b967acebc1908a9c8afe4ad8fabe7928d11ea422ffabec42db07ca7085131196b7d3fb6a1d9bc4"

Installation

The package can be installed by adding mnemo to your list of dependencies in mix.exs:

def deps do
  [
    {:mnemo, "~> 0.1.0"}
  ]
end

Documentation

Documentation can be generated locally with ExDoc.

The docs can be found at https://hexdocs.pm/mnemo.

You can’t perform that action at this time.