|Tasos 72bf220397 readme.md update with XMR-specific info||2 months ago|
|src||2 months ago|
|tests||3 months ago|
|.gitignore||3 months ago|
|LICENSE||3 months ago|
|changelog.md||3 months ago|
|compile.py||3 months ago|
|index.html||2 months ago|
|readme.md||2 months ago|
|release_process.md||3 months ago|
Forked from https://github.com/iancoleman/bip39/
Supports seeds used by the Coinomi wallet, Ledger hardware wallets and should be compatible with other wallets too that use BIP39 (not tested).
WARNING! DO NOT ENTER YOUR SEED PHRASE INTO ANY INTERNET WEB PAGE!
The right way to use this tool is to download the single html page (index.html) locally, disconnect from the internet, open a browser in incognito mode and drag the index.html file in it to open. These are minimum precautions, if in doubt ask someone you know and trust (but don’t give them the seed).
BIP39 Mnemonic. For a demo, just click
Generatefor a random mnemonic.
XMR - Moneroin the
XMR Seed Words. Putting this 25-word seed into any Monero wallet (CLI or GUI) will restore the wallet.
This fork adds support for XMR private spend key derivation according to the following sources:
The tricky part with Monero is that it uses a different curve from Bitcoin and derivatives (ed25519 vs secp256k1) and the BIP39/44 derivation is modified a bit. The steps are:
The BIP44 scheme is also interpreted slightly different to support subaddresses. Instead of calculating the derivation for subaddresses directly (from m / 44’ / 128’ / ’ / ’) we always use the derivation m / 44’ / 128’ / ’ / 0’ and we then use the Monero-specific subaddress generation (note here that BIP44 account is not the subaddress account mentioned in the Monero core CLI and GUI wallets).
All the Monero-specific functionality is encapsulated in a single js file which requires ES6 and WebAssembly support to function.
The basic functions are taken directly from C-source files found in the Monero project sources. Some extremely small modifications have been made to the files to make standalone compilation easier. Verifying the files is rather easy by doing a diff comparison for the following Monero project source files (taken from release v0.13):
Some of the needed functionality was in C++ files and has been moved into C files (very short and easy to inspect):
These files are compiled, mixed and merged into a single
product by using a fresh version of emscripten and the
It is possible and easy to tweak the build process to generate pure js code
instead of webassembly (in asm.js form) for anyone wishing to use this where
webassembly is not supported.
For those who do not wish to install emscripten or mess-up their systems, a docker setup has been provided that will create an emscripten environment supporting the compilation. Using this is very very simple:
Assuming current dir is
sudo docker build -t emscripten ./docker sudo docker run -it --rm -v $(pwd):/root/src emscripten bash
While inside the docker container do:
source /root/emsdk/emsdk_env.sh cd /root/src ./build.sh exit