{"_id":"@aladas-org/cryptowallet","_rev":"2-996687e5209cb809985977fa6365433b","name":"@aladas-org/cryptowallet","dist-tags":{"latest":"0.4.1"},"versions":{"0.4.0":{"name":"@aladas-org/cryptowallet","version":"0.4.0","keywords":["Cryptowallet","wallet","cryptocurrency","Bitcoin","Dogecoin","Ethereum","non custodial","desktop application","GUI","cryptography","seed phrase","private key","fortune cookies","mnemonic","QR Code","BIP39","BIP32","BIP44","Conversion","Base64","Base58","Hexadecimal","Hindi","Russian","Esperanto"],"author":{"name":"Daniel Rodet & Michel Kern"},"license":"BSD-3-Clause","_id":"@aladas-org/cryptowallet@0.4.0","maintainers":[{"name":"aladas","email":"aladas.org@gmail.com"},{"name":"echopraxium","email":"echopraxium@gmail.com"}],"homepage":"https://github.com/ALADAS-org/cryptowallet#readme","bugs":{"url":"https://github.com/ALADAS-org/cryptowallet/issues"},"dist":{"shasum":"8070e5ad6e688e40a864976a9ce45158115aa15c","tarball":"https://registry.npmjs.org/@aladas-org/cryptowallet/-/cryptowallet-0.4.0.tgz","fileCount":261,"integrity":"sha512-iU04GKi7sMQcqzsEPOfuY57DZtas/556Y4pQkO4EevDRAsX4y+mZrsInRiehZMVhvZapfHGpLjSaKwpnndBSxg==","signatures":[{"sig":"MEQCIEN9pPIrM+4VKBQaEOgS/0gpnkJD/7uekyQwKKr5BAV3AiBkn5GWMF0Gg5ky2VwM4ZJIEQvAnSYY+pedh5m5ufXmHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6340084},"main":"./www/js/_main/electron_main.js","gitHead":"067bb8ff0b08f8cb9af119cf68e13da06367a84e","scripts":{"build":"electron-packager . app --platform win32 --arch x64 --out dist/","start":"electron . --enable-logging"},"_npmUser":{"name":"echopraxium","actor":{"name":"echopraxium","type":"user","email":"echopraxium@gmail.com"},"email":"echopraxium@gmail.com"},"repository":{"url":"git+https://github.com/ALADAS-org/cryptowallet.git","type":"git"},"_npmVersion":"11.4.1","description":"Non custodial cryptocurrency wallet generator","directories":{},"_nodeVersion":"22.14.0","dependencies":{"bs58":"^5.0.0","uuid":"^10.0.0","web3":"^4.11.1","bip32":"^4.0.0","bip39":"^3.1.0","eip55":"^2.1.1","hdkey":"^2.1.0","bwip-js":"^4.3.2","coinkey":"^3.0.0","bchaddrjs":"^0.5.2","bs58check":"^4.0.0","crypto-js":"^4.2.0","firstline":"^2.0.2","js-base64":"^3.7.7","js-sha256":"^0.11.0","js-sha512":"^0.9.0","moleculer":"^0.14.35","secp256k1":"^5.0.0","bitcore-lib":"^10.2.1","@scure/bip32":"^1.4.0","@scure/bip39":"^1.2.2","electron-log":"^5.2.0","app-root-path":"^3.1.0","bitcoinjs-lib":"^6.1.6","ed25519-hd-key":"^1.3.0","ed25519-keygen":"^0.6.2","filter-console":"^1.0.0","tiny-secp256k1":"^2.2.3","@solana/web3.js":"^1.91.1","ethereumjs-util":"^7.1.5","bitcore-mnemonic":"^10.2.1","v8-compile-cache":"^2.4.0","bs58check-b4bcoin":"^1.0.1","cardano-crypto.js":"^6.1.2","cardano-wallet-js":"^1.4.0","ethereum-keystore":"^0.0.3","ethereumjs-wallet":"^1.0.2","generate-password":"^1.7.1","hdaddressgenerator":"^1.1.12","@stricahq/bip32ed25519":"^1.1.0","check-internet-connected":"^2.0.6","@emurgo/cardano-serialization-lib-nodejs":"^11.5.0"},"// electron .":"","_hasShrinkwrap":false,"devDependencies":{"electron":"^37.0.0","@electron/packager":"^18.3.6"},"// --inspect-brk=9229":"","_npmOperationalInternal":{"tmp":"tmp/cryptowallet_0.4.0_1750951880333_0.016972274762384165","host":"s3://npm-registry-packages-npm-production"},"// electron . --enable-logging":"","// bs58: keep version 5.0.0 else 'import' needed instead of 'require' (ESM support in ElectronJS)":""},"0.4.1":{"name":"@aladas-org/cryptowallet","version":"0.4.1","description":"Non custodial cryptocurrency wallet generator","main":"./www/js/_main/electron_main.js","// electron .":"","// electron . --enable-logging":"","// --inspect-brk=9229":"","// bs58: keep version 5.0.0 else 'import' needed instead of 'require' (ESM support in ElectronJS)":"","scripts":{"start":"electron . --enable-logging","build":"electron-packager . app --platform win32 --arch x64 --out dist/"},"repository":{"type":"git","url":"git+https://github.com/ALADAS-org/cryptowallet.git"},"keywords":["Cryptowallet","wallet","cryptocurrency","Bitcoin","Dogecoin","Ethereum","non custodial","desktop application","GUI","cryptography","seed phrase","private key","fortune cookies","mnemonic","QR Code","BIP39","BIP32","BIP44","Conversion","Base64","Base58","Hexadecimal","Hindi","Russian","Esperanto"],"author":{"name":"Daniel Rodet & Michel Kern"},"license":"BSD-3-Clause","bugs":{"url":"https://github.com/ALADAS-org/cryptowallet/issues"},"homepage":"https://github.com/ALADAS-org/cryptowallet#readme","devDependencies":{"@electron/packager":"^18.3.6","electron":"^37.0.0"},"dependencies":{"@emurgo/cardano-serialization-lib-nodejs":"^11.5.0","@scure/bip32":"^1.4.0","@scure/bip39":"^1.2.2","@solana/web3.js":"^1.91.1","@stricahq/bip32ed25519":"^1.1.0","app-root-path":"^3.1.0","bchaddrjs":"^0.5.2","bip32":"^4.0.0","bip39":"^3.1.0","bitcoinjs-lib":"^6.1.6","bitcore-lib":"^10.2.1","bitcore-mnemonic":"^10.2.1","bs58":"^5.0.0","bs58check":"^4.0.0","bs58check-b4bcoin":"^1.0.1","bwip-js":"^4.3.2","cardano-crypto.js":"^6.1.2","cardano-wallet-js":"^1.4.0","check-internet-connected":"^2.0.6","coinkey":"^3.0.0","crypto-js":"^4.2.0","ed25519-hd-key":"^1.3.0","ed25519-keygen":"^0.6.2","eip55":"^2.1.1","electron-log":"^5.2.0","ethereum-keystore":"^0.0.3","ethereumjs-util":"^7.1.5","ethereumjs-wallet":"^1.0.2","filter-console":"^1.0.0","firstline":"^2.0.2","generate-password":"^1.7.1","hdaddressgenerator":"^1.1.12","hdkey":"^2.1.0","js-base64":"^3.7.7","js-sha256":"^0.11.0","js-sha512":"^0.9.0","moleculer":"^0.14.35","secp256k1":"^5.0.0","tiny-secp256k1":"^2.2.3","uuid":"^10.0.0","v8-compile-cache":"^2.4.0","web3":"^4.11.1"},"_id":"@aladas-org/cryptowallet@0.4.1","gitHead":"7f8e61396046d7cd7d8bb1769233dcc46c034cc8","_nodeVersion":"22.14.0","_npmVersion":"11.4.1","dist":{"integrity":"sha512-WIeQfSUnvzKw2P72Qt7tLwvOOaQjeBQq5w/HgMkEsg2lZuZmvyfW3KRYcE+1Avo6DPd7KnHKybNyPGeJCydUvw==","shasum":"50c5d7a2efaa3a7f8d0988dc872dec67bf0f0c68","tarball":"https://registry.npmjs.org/@aladas-org/cryptowallet/-/cryptowallet-0.4.1.tgz","fileCount":261,"unpackedSize":6340184,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCZgZ1xJ+IiHQqE6+pIptdgvIQupzkmD37934t7JKRfAwIhAPVoDXMAaroWx+fw1NCT3KighQ102irUOEccgwZjaI54"}]},"_npmUser":{"name":"echopraxium","email":"echopraxium@gmail.com","actor":{"name":"echopraxium","email":"echopraxium@gmail.com","type":"user"}},"directories":{},"maintainers":[{"name":"aladas","email":"aladas.org@gmail.com"},{"name":"echopraxium","email":"echopraxium@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cryptowallet_0.4.1_1750952938318_0.5272321394026895"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-26T15:31:20.229Z","modified":"2025-06-26T15:48:58.819Z","0.4.0":"2025-06-26T15:31:20.576Z","0.4.1":"2025-06-26T15:48:58.589Z"},"bugs":{"url":"https://github.com/ALADAS-org/cryptowallet/issues"},"author":{"name":"Daniel Rodet & Michel Kern"},"license":"BSD-3-Clause","homepage":"https://github.com/ALADAS-org/cryptowallet#readme","keywords":["Cryptowallet","wallet","cryptocurrency","Bitcoin","Dogecoin","Ethereum","non custodial","desktop application","GUI","cryptography","seed phrase","private key","fortune cookies","mnemonic","QR Code","BIP39","BIP32","BIP44","Conversion","Base64","Base58","Hexadecimal","Hindi","Russian","Esperanto"],"repository":{"type":"git","url":"git+https://github.com/ALADAS-org/cryptowallet.git"},"description":"Non custodial cryptocurrency wallet generator","maintainers":[{"name":"aladas","email":"aladas.org@gmail.com"},{"name":"echopraxium","email":"echopraxium@gmail.com"}],"readme":"## Cryptowallet 0.4.1\r\n![](https://github.com/ALADAS-org/cryptowallet/blob/master/_doc/Screenshots/Entropy_Wallet_0_4_0_EN.gif)\r\n1. Purpose  \r\n   _Cryptowallet_ is a standalone desktop application which generates non custodial _Cryptocurrency wallets_.\r\n   These wallets can be either _Non Deterministic_ (_Simple Wallet_) or _Hierarchical Deterministic_ (`BIP32`) paradigm.\r\n   Even though there is already similar tools online, the purpose is to use these features\r\n   locally on your computer (non custodial) in order to reduce the risk of your _Private Key_ / _WIF_ \r\n   or _seed phrase_ informations being stolen.    \r\n   _Supported Blockchains_: _Bitcoins_ (`BTC`), _Ethereum_ (`ETH`), _Solana_ (`SOL`),\r\n   _Ripple_ (`XRP`), _DogeCoin_ (`DOGE`), _Cardano_ (`ADA`), _TRON_ (`TRON`), \r\n   _Avalanche_ (`AVX`), _Bitcoin Cash_ (`BCH`), _LiteCoin_ (`LTC`), _Dash_ (`DASH`) and _Firo_ (`FIRO`)    \r\n   _Supported Languages_: _English_ (`EN`), _French_ (`FR`), _Spanish_ (`ES`), _Italian_ (`IT`), \r\n   _Czech_ (`CS`), _Portuguese_ (`PT`), _Deutsch_ (`DE`), _Esperanto_ (`EO`), _Russian_ (`RU`),\t, _Hindi_ (`HI`),\r\n   _Simplified Chinese_ (`SC`), _Traditional Chinese_ (`TC`), _Japanese_ (`JP`), _Korean_ (`KO`)\r\n   NB: _Cryptowallet_ uses [ElectronJS](https://www.electronjs.org/) as well as many modern and popular\r\n       [Desktop applications](https://en.wikipedia.org/wiki/List_of_software_using_Electron)\r\n   \r\n2. Setup \r\n   + 2.1. _Fast and Furious_ (advised for end users)\r\n      + 2.1.1. Download [Cryptowallet installer](https://sourceforge.net/projects/aladas-cryptowallet/files/latest/download)\r\n\t  from _SourceForge_ (NB: the installer was generated with  \r\n\t  [electron packager](https://www.npmjs.com/package/@electron/packager) and\r\n      [Inno Setup](https://jrsoftware.org/isinfo.php).    \r\n      Notice that the installer is not signed so _Windows Defender Smartscreen_ \r\n\t  will require that you validate yourself the application source. \r\n\t  If you don't trust the installer, you can either:\r\n\t      + 2.1.1.a. Rebuild yourself the _Installer_ by downloading `Inno Setup` and following the _Howto_ \r\n          provided in the `_inno_setup` subfolder (`Howto build cryptowallet_setup.txt`) \t\t  \r\n          + 2.1.1.b. Else you can proceed to _Wizard's Lair_ setup instead (see 2.2)\t  \r\n      + 2.1.2. Default setup folder is `C:\\Users\\$CURRENT_USER\\AppData\\Local\\Programs\\Cryptowallet`\r\n      + 2.1.3. Default subfolder where _Wallet informations_ are saved:    \r\n\t      * `$DEFAULT_SETUP_FOLDER\\resources\\app\\_output`\t  \r\n   + 2.2. _Wizard's Lair_ (advised for custom local setup and/or software developers)\r\n      + 2.2.1. Prerequisites\r\n          * Install [NodeJS](https://nodejs.org/en/)\r\n\t      * Install [Git](https://git-scm.com/)\r\n      + 2.2.2. Open a _command line interpreter_\r\n\t      * Use Windows Menu _Start_ then input `cmd`\r\n\t      * Change _current disk_ to where you plan to install (eg. if its `D` then type `D:`)\r\n\t      * Change _current directory_ to where you to install (eg. `md tools` then `cd tools`)\r\n\t  + 2.2.3. Import _Cryptowallet_ from _github_\r\n\t      * Open the [Cryptowallet repository](https://github.com/ALADAS-org/cryptowallet) \r\n\t      * Use the [<> Code v] green button\r\n\t      * Copy the displayed [.git URL](https://github.com/ALADAS-org/cryptowallet.git)\r\n\t      * In the _command line interpreter_, type `git clone ` followed by the `.git` URL\\\r\n\t      e.g. `git clone https://github.com/ALADAS-org/cryptowallet.git`\r\n          * Type `cd cryptowallet`\t\r\n          * Type `npm install`    \r\n\r\n3. Release notes\r\n    + 3.1. Features in `0.4.1`\r\n\t    * Rename of _Cryptocalc_ (now deprecated) to _cryptowallet_.\r\n\t+ 3.2. Features in `0.3.19`\r\n\t    * Added support of _Hindi_ (`HI`) for the _Seed phrase_.\t\r\n    + 3.3. Features in `0.3.18`\r\n\t    * Changed _HD Wallet_ mode so that it the _Derivation Path_ is `Hardened` by default \r\n\t\t  and mandatory (for _Security_ reason, see 5.2.3.\t\r\n        * HD Wallet: Augmentation of `account` and `address_index` digits from 4 to 9\t\t  \r\n\t\t* Fixed bug: useless twice loading of `index.html`\r\n    + 3.4. Features in `0.3.17`\r\n\t    * Added support of _Russian_ language. \r\n    + 3.5. Features in `0.3.16`\r\n\t    * Changed license to 'BSD-3-Clause' and added support of _Esperanto_ language. \r\n    + 3.6. Features in `0.3.15`\r\n\t    * Added feature 'Internet Connection status' (see 4.1.9) for securing _Offline wallet creation_\r\n    + 3.7. Features in `0.3.14`\r\n\t    * Bug fixes on Ripple (XRP) HD Wallet:    \r\n\t\t    + Bug 1. [Apply] button displayed when password input manually\r\n\t\t    + Bug 2. WIF and Private Key displayed for Ripple (XRP) HD Wallet\r\n\t\t\t+ Bug 3. WIF and Private Key in 'wallet_info.txt'\r\n    + 3.8. Features in `0.3.11`\r\n\t    * Added support of _Simplified Chinese_ and _Traditional Chinese_ for the `Seed phrase` \r\n    + 3.9. Features in `0.3.8`\r\n\t    * Added support of _Korean_ for the `Seed phrase` \r\n    + 3.10. Features in `0.3.7`\r\n\t    * Added support of _Japanese_ for the `Seed phrase` (taking into account the _Ideographic Space_\r\n\t\t  as a separator between words instead of the _Normal Space_).\r\n\t\t* Code enhancement: in `renderer_gui.js` and `electron_main.js`. The _Singleton_ design pattern\r\n\t\t  now uses `Symbol()` for the value of the static field `#key`.\r\n    + 3.11. Features in `0.3.4`\r\n\t    * Added _password feature_ for `HD Wallet` (see 4.1.5)\r\n\t\t* `Seed` tab renamed to `Entropy`\r\n\t\t* Bug fix: crash when saving `SWORD Wallet`\r\n\t\t* Update of [`Cryptowallet installer`](https://sourceforge.net/projects/aladas-cryptowallet/) on [`SourceForge`](https://sourceforge.net/)\r\n \t\r\n4. _Cryptowallet_ User Guide  \r\n    You can launch _Cryptowallet_ either by using the _Cryptowallet Standalone installer_ (see 2.1)\r\n\tor by downloading the `npm package` (see 2.2) then double clicking on `_run.bat`.\r\n    + 4.1. Features \r\n        * 4.1.1. _Cryptowallet Standalone installer_    \r\n\t\t    + 4.1.1.a: Downloadlc [Cryptowallet installer](https://sourceforge.net/projects/aladas-cryptowallet/files/latest/download)\r\n\t\t    + 4.1.1.b. Default subfolder where _Wallet informations_ are saved:    \r\n\t        `$DEFAULT_SETUP_FOLDER\\resources\\app\\_output`: Node that this folder\r\n            won't be deleted automatically if you uninstall _Cryptowallet_\t\r\n\t\t* 4.1.2. Generate _Entropy_ from _Entropy Source_    \r\n\t\tUse [Generate] button to draw a random image (cf. 4.1.3)\r\n\t\twhich then will be used as the _Entropy_ (with the _Salt_) to generate a new _seed phrase_ (between 12 and\r\n\t\t24 words) which is derived to get the _Private Key_ from which the _Wallet Address_ is obtained\r\n\t\t(NB: _Private Key_ and _Wallet Address_ are in the _Wallet_ Tab).\r\n\t\tThere is also a conversion to the _Shortened seed phrase_: as only the 4 first characters of each _mnemonic_ \r\n\t\tare useful (cf. `BIP39` specification) then in the _Shortened seed phrase_ each _mnemonic_ is represented \r\n\t\tonly by its 4 first characters (with the first character in Uppercase as a mean to separate _mnemonics_).   \r\n\t\tNB: As some _mnemonics_ are only 3 characters long, the abbreviation will of course only be whole _mnemonic_.  \r\n\t\tHere is an example below:  \r\n        _seed phrase_  \r\n\t\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rent expand super sea summer pull catalog mobile proud solve oven goose    \r\n        _Shortened Seedphrase_  \r\n\t\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RentExpaSupeSeaSummPullCataMobiProuSolvOvenGoos    \r\n        NB: Please notice that the _Shortened seed phrase_ is not meant to be used\r\n        to import a wallet in a _Wallet Manager_, it's only a trick to _compress_ the _seed phrase_ and make it easier\r\n\t\tto store on a device with limited memory like a `NTAG213 NFC` (see 4.2.3). \t\r\n\t    * 4.1.3. _Entropy Source_ : `Image` or `Fortunes`    \r\n\t\t_Entropy Source_ may be switched between `Image` (Default source) \r\n\t\tand `Fortunes` (drawn from a compilation of 12803 _Fortune Cookies_). \r\n\t\tPlease notice that a text is not considered as random enough for an _Entropy Source_ \r\n\t\tthus `Image` is now the default _Entropy Source_ \r\n        (Notice that an image is much better in terms of randomness than a text).    \r\n\t\t    * 4.1.3.a: You can _Drag'n'Drop_ images (`png`, `jpg` or `svg`) from you local folders.\t\t\r\n            * 4.1.3.b: Image samples are provided in `www/js/img` folder.  \t\t\r\n            * 4.1.3.c: When using [Generate], _Cryptocurrency logos_ are drawn \r\n\t\t\tfrom the `www/js/img/CryptoCurrency` folder and the first image \r\n\t\t\tis always our logo (`Zilver_64px.svg`).\r\n        * 4.1.4. Choose _Wallet_Mode_: _Simple Wallet_, _HD Wallet_ or _SWORD Wallet_ (choice is in the `Wallet` tab)  \t\r\n            * 4.1.4.a. _Simple Wallet_    \r\n            This is the default _Wallet Mode_. In this mode, each wallet is separated. \r\n\t\t\tand there is no need to understand the principles of the _HD Wallet Wallet Tree_\r\n\t\t\tand the purpose of the `Derivation Path` used by _HD Wallets_. So a  it's a good fit to \r\n\t\t\t_Give it a Try_ and start creating your _Cryptocurrency Wallets_ with minimum knowledge.    \r\n\t\t\tOn the other hand it's less secure than _HD Wallets_ and it becomes clumsy if you need to manage \r\n            multiple wallets (for example to secure your assets by splitting them among many wallets). \t\t\t\r\n\t\t\t* 4.1.4.b. _HD Wallet_    \r\n\t\t\tThis _Wallet Mode_ allows to create / manage a whole hierarchy of Wallets (_HD_ is the acronym for \r\n\t\t\t_Hierarchical Deterministic_) in the same _BIP32 tree_.\r\n\t\t\t> Please notice that the `Derivation Path` is now `Hardened` by default and mandatory (since `0.3.18`). \r\n\t\t\t> This is for _Security_ purpose (see 5.2.3)\r\n\t\t\tThe `BIP32` HD wallet tree_ is fully determined by the _Entropy_ (or _seed phrase_ which is equivalent) \r\n\t\t\tand an optional _Password_.\r\n\t\t\tThe _Entropy_ may be represented by a more human friendly representation: the _Mnemonics Sequence_ which \r\n\t\t\tmay also be called a _seed phrase_, _Mnemonics_ or even _SRP_ (_Secret Recovery Passphrase_).    \r\n\t\t\t> How to Generate a new wallet with a given _Entropy_:    \r\n\t\t\t> Paste a new _Entropy_ (or _seed phrase_) in the `Entropy` wallet tab. \r\n\t\t\t> Notice that this will hide the _Entropy Source_ and _Salt_ fields \r\n\t\t\t> (meaningless in this situation).    \r\n\t\t\t> You can then change either the _Account_ or _Address Index_ fields \r\n\t\t\t> (the maximum number of digits is 9 so you can input a decimal value \r\n\t\t\t> between 0 and 999999999 for each field) in the _Wallet_ tab page. \r\n\t\t\t> This will show a [Refresh] button to recompute the wallet once you have finished.\r\n\t\t\t> Pushing the [Refresh] button (or hitting either [Return] or [Enter] keys \r\n\t\t\t> while the cursor is in either _Account_ or _Address Index_ field) will recompute the \r\n\t\t\t> wallet address (and _Private key_ or _WIF_) accordingly.\r\n\t\t\t* 4.1.4.c. _SWORD Wallet_    \r\n\t\t\t`SWORD` is an acronym which means `Simple Wallet Over Randomized Deterministic`, \r\n\t\t\tit's an hybrid between `Simple Wallet` and `HD Wallet` because it hides the `Derivation Path` logic \r\n\t\t\t(which contains `Account` and `Address Index`), thus you don't need to care or understand the principles \r\n\t\t\tof _Hierarchical Deterministic_ wallets, but it allows to generate all the cryptocurrencies provided by `HD Wallet`.\r\n\t\t\t* 4.1.4.d. Please notice that for `Cardano` HD wallets, the `Account` and `Address Index` parameters are not taken \r\n\t\t\tinto account by the _Wallet Managers_ which I have tested (namely `Guarda` and `Yoroi`) because they ask for \r\n\t\t\tthe `Mnemonics` (`Seed phrase` in _Cryptowallet_). This is why in _Cryptowallet_, these parameters are _hard-coded_\r\n\t\t\tto Zero (for `Cardano` HD wallets only).\t\t\t\r\n\t\t\t* 4.1.4.e. You can check generated _HD Wallets_ with _Ian Coleman BIP39_ homepage    \r\n\t\t\tIt's [URL](https://iancoleman.io/bip39/) is provided as an item in the `Help menu` (`Help/Resources/Ian Coleman BIP39`)\r\n\t\t* 4.1.5. _Password feature_ (_HD Wallet_ only)    \r\n    \tWith a _password_ (also called _Passphrase_) a completely different _HD hierarchy_ is generated. \r\n\t\tYou can either input or generate (with the [Generate] button represented by a `Refresh` icon, like in the main toolbar). \r\n\t\t**Important Notice**: Once a password is provided, you must use the [Apply] button to recompute the _HD hierarchy_, \r\n\t\tthis is the reason why _Save_ is disabled (in the main toolbar and in the 'File' menu) until you click on the [Apply] button. \t\t\t\r\n\t\t* 4.1.6. _Salted Entropy_    \r\n\t\t_Entropy_ is generated from _Entropy Source_ (either _Image_ or _Fortune Cookie_ ATM) and adding\r\n\t\ta _Salt_ (`UUID`) to ensure that the _Entropy_ will be different at each Generation even if the _Entropy Source_ \r\n\t\tis the same. Thus the _Entropy_ will be unique at each press of [Generate] button.\r\n\t\t* 4.1.7. Choose _Entropy Size_    \r\n\t\tThe _Entropy Size_ is between 128 to 256 bits (32 to 64 hexadecimal digits). This is equivalent to a _Seedphrase size_ \r\n\t\tbetween 12 and 24 words. Changing _Entropy Size_ impacts the _Seedphrase size_ and conversely.\r\n\t\t* 4.1.8. _Wallet Address_    \r\n\t\t_Wallet Address_ is displayed in the `Wallet` tab page. There's also an [Explorer...] button which allows to check\r\n\t\tthe generated address in the appropriate _Blockchain Explorer_.\r\n\t\t* 4.1.9. _Internet Connection Status_    \r\n\t\tThis is to secure _Offline wallet creation_ (_non custodial_). An icon at the right of the _Main Toolbar_ shows \r\n\t\tif the Internet is connected (`Wifi ON` red icon) or not connected (`Wifi OFF` green icon)\r\n\t\t* 4.1.10. `Save` _Wallet Informations_    \r\n\t\tWith `File/Save` (or the _Save_ icon in the main toolbar), you can save the _Wallet Informations_ in a timestamped \r\n\t\tsubfolder (eg. `2024_10_07_21h-4m-4s-3_BTC_EN`) under `_output` folder.\t\r\n\t\tThis subfolder contains `wallet_info.txt` and a `wallet.json` with the informations displayed in _Entropy_ and _Wallet_ tab pages. \r\n\t\t\t* 4.1.10.a. When you save the current generated wallet a Popup dialog confirms the saving and allows to show where it is saved.    \r\n            * 4.1.10.b. The _Wallet Informations_ subfolder contains _QR Codes_ (`png` images) for `Address`, `Private Key`, `Seedphrase`,\r\n\t\t\t`Entropy` and `WIF` (if applicable).    \r\n\t\t\tNotice that there is a `xtras` subfolder where these _QR codes_ are provided\r\n\t\t\tin the `svg` format. There is also a _Rectangular Micro QR code_ (`rMQR`) of the \r\n\t\t\t`Entropy` (_Rectangular Micro QR Code_, `R15x59` or `R15x77` version depending on\t\t\r\n\t\t\t`Entropy size`) and an experimental `Ultracode` color QR code of the `Entropy`.\r\n\t\t    * 4.1.10.c: How to retrieve a _Wallet Address_ from the _Rectangular Micro QR Code_    \r\n\t\t        * 4.1.10.c.I: Notice that most Android _QR Code reader_ apps will \r\n\t\t\t    not be compatible with _Rectangular Micro QR Code_ but it works with \r\n\t\t\t    [`QRQR`](https://play.google.com/store/apps/details?id=com.arara.q&hl=en)\t \r\n\t\t\t    an Android _QR Code reader_ published by _Arara_ on the _Google Play Store_.              \r\n                * 4.1.10.c.II: Then convert the _Entropy_ to the matching _seed phrase_ \r\n\t\t\t    by doing a copy/paste in the `Entropy` field of _Cryptowallet_.    \r\n\t\t\t\t**Caution**: Take care to set _Cryptowallet_ with the same `Entropy Size` and \r\n\t\t\t\t`Derivation path` (if applicable, don't forget to use the [Refresh] button)\r\n\t\t\t\tthan those used when the wallet was created (these informations \r\n\t\t\t\tare provided either in the `wallet_info.txt` or in `wallet_info.wits`).\r\n\t\t* 4.1.11. `Open` _Wallet Informations_ of a previously saved wallet    \r\n\t\t    * 4.1.11.a. _Wallet informations_ are saved both as a `.txt` but also as a `.wits` file (`JSON` format). \r\n\t\t    * 4.1.11.b. A `.wits` file can be opened either with `File.Open...` menu item or 'Open...' icon\r\n\t\t\tin the toolbar. It can be also be opened in `Cryptowallet.exe` by double clicking on the `.wits` \r\n\t\t\t(_File extension to Application_ feature): this will launchlc `Cryptowallet.exe` (cf. 2.1 for installing \r\n\t\t\t`Cryptowallet.exe` with the _Cryptowallet Standalone installer_)  /\r\n\t\t\t* 4.1.11.c. Once opened, a wallet can't be saved on itself (it is to prevent accidental overwrite of the original wallet),\r\n            but you can use `File.Save As...` which will save the wallet with a different timestamp than the original one.\t\r\n            * 4.1.11.d.\tNotice that for a _HD Wallet_ you can change the `Account` and/or the `Address Index` (dont forget to push\r\n\t\t\tthe [Refresh] button). Now you can save the new wallet with `File.Save As...` and if you didn't change the `Entropy` \r\n            then this new wallet will belong to the same `Bip32 HD Wallet Tree` (see 5.2) than the original one.\t\t\t\r\n\t\t* 4.1.12. Import a wallet in `Guarda`    \r\n\t\tAn item in the menu (Help / Resources / Guarda) eases importing a wallet in a\r\n\t\t_Wallet Manager_ application by opening [`Guarda`](https://guarda.com/).\t\t\t\t\r\n        * 4.1.13. Select _Seedphrase Language_    \r\n\t\tYou can select the _Wordlist Language_ (eg. _English_, _French_, _Deutsh_, etc...). \r\n\t\tPlease notice that only _English_ is accepted for most _Wallet Manager_ applications. \r\n        Changing _Wordlist Language_ is indeed a mean to add a scramble step in order \r\n\t\tto make it harder to steal your _Secret Recovery Passphrase_ because \r\n        it should be translated to _English_ to be used with a _Wallet Manager_.   \r\n\t\tNB: the translation between languages is native in _Cryptowallet_\r\n\t\tbecause the reference is the _Word Indexes_ (see 4.1.10) not the words.\r\n\t\t* 4.1.14. Display of _Word Indexes_    \r\n        The _Word Indexes_ are between 0 and 2047, it is the index of each of the \r\n\t\t_Seed phrase_ words in the `BIP39` dictionary (see also 6.1.1). \r\n\t\tYou can choose to display these indexes in _Decimal_ or _Binary_ \r\n\t\t(in _Binary_ you can check that the computed _Checksum bits_ are added at the end\r\n\t\tof the converted _Entropy_ to determine the index of the last word).\r\n\t\t* 4.1.15. Display of the _BIP32 Derivation Path_    \r\n\t\tThe _BIP32 Derivation Path_ is displayed in the _Wallet_ tab page.\r\n\t\tYou can edit the _Account_ or _Address Index_ fields to generate new wallets\r\n\t\twhich belong to the same `BIP32` hierarchy that is determined by the\r\n\t\t_seed phrase_ (also called the _Secret Recovery Passphrase_).\r\n\t\t* 4.1.16. Change/Reset of _Options_ (`Tools/Options`)    \r\n\t\tCurrently it allows to set default values for `Default Blockchain`, `Wallet Mode` and `Entropy Size`.\r\n\t\tThese values are defined in `www/config/options.json` file.    \r\n\t\tIt is also possible to reset _Options_ to _Default Options_\r\n\t\t(defined in `www/config/defaults/options.json`)\r\n        * 4.1.17. Support of _Localization_    \r\n        In _Cryptowallet_, the _Localization_ (`l10n`) feature is the translation of \r\n\t\t_GUI Labels_ to adapt to the _locale_ (eg. `en`).\r\n        A _locale_ name can be composed of a base language, country (territory) of use, \r\n\t\tand optionnally a codeset (eg. `de_CH.UTF-8`).\t\t\r\n\t\tThe _locale_ is provided as part of your machine's environment. \r\n\t\t_Cryptowallet_ only uses the 2 letter language part (eg. `en`). \r\n\t\tLocalization is enabled by a _JSon_ file in the `www/js/L10n` folder \r\n\t\t(eg. `gui-msg-en.json`) . \r\n\t\tCurrently only `en` and `fr` are provided.  \t\t\r\n    + 4.2. Use cases\r\n        * 4.2.1. Generate a new _Wallet_ and import it in a _Wallet manager_  \r\n\t    With a _Wallet Manager_ like [`Guarda`](https://https://guarda.com/) you can import\r\n\t\ta wallet generated by _Cryptowallet_:\r\n            * 4.2.1.a. Choose _Wallet Mode_: _Simple Wallet_ or _HD Wallet_ \t\t\r\n            * 4.2.1.b. Choose a coin: `BTC`,`ETH`,`XRP`,`ADA`,`DOGE`,`LTC`,`SOL`,`AVX`,`TRON`,`BCH`,`DASH`,`Firo` \r\n\t\t    * 4.2.1.c. Enter _Private Key_  (NB: or _WIF_ for `BTC` wallets)    \r\n        * 4.2.3. Store _Shortened Seedphrase_ in a _NFC SmartRing_  \r\n        The entry level _SmartRings_ (price range: 7..15$) contains a `NTAG213 NFC` with \r\n\t\t144 bytes useable capacity. This is enough to store the _Shortened Seedphrase_, \r\n\t\twith a 24 words _Shortened Seedphrase_ \r\n\t    the maximum required capacity is 96 bytes/characters (24*4, cf. 4.1.1) \r\n\t\tor even less (as some mnemonics have only three characters).   \r\n        * 4.2.4. Store _Master password_  \r\n        This is similar to the previous case, but the _Shortened Seedphrase_ \r\n\t\tcan be used as a _Master password_ for a _Password Manager_ or for tools like\r\n\t\t[_PGP Tool_](https://pgptool.github.io) which provide encryption/decryption\r\n\t    of your documents.    \r\n\t\t\r\n5. Appendix  \r\n    + 5.1. `BIP39`: a _Dictionary_ of 2048 words    \r\n\t`BIP39` (`BIP` is the acronym of _Bitcoin Improvement Proposal_) is a specification regarding:\r\n\t\t* 5.1.1. A _Dictionary_ of 2048 words    \r\n\t\tThe _Dictionary_ contains 2048 _English_ words each with a their unique 4 starting characters \r\n\t\t(or 3 if the word is 3 characters long). This dictionary exists also in other languages \r\n\t\t(e.g. _French_, _Deutsh_, _Spanish_, Italian_, _Portuguese_, etc...) but _Wallet Managers_ \r\n\t\t(e.g. _Guarda_, _Metamask_, _Atomic Wallet_, etc...) and _Hardware Wallets_ \r\n\t\t(eg. _Ledger_, _Trezor_, _Tangem_, etc...) will most probably accept only _English_ words.\r\n\t    * 5.1.2. Conversion of _seed phrase_ from and to _Entropy_\t\t\r\n        The _seed phrase_ is obtained by drawing words (also called or _menemonics_) from the dictionary.\r\n        Drawing a word is indeed choosing an index between 0 and 2047. This index can be represented\r\n        by 11 bits in _Binary_ (because 2^11 = 2048). \r\n            * Conversion from _Entropy_ to _seed phrase_\r\n\t\t\tThe _Entropy_ is represented in _Binary_ and divided in 11 bits segements but the entropy\r\n\t\t\tis a multiple of 8 bits (128, 160, 192, 224, 256) there are \"missing bits\" for choosing \r\n\t\t\tthe last word. These \"missing bits\" are provided by computing the _Entropy Checksum_.\r\n\t\t\te.g. For an _Entropy Size_ of 128 bits (converted to a 12 words _seed phrase_), \r\n\t\t    132 bits are needed (11 * 12), so the _Entropy Checksum_ provides the missing 4 bits.\r\n\t\t\t* Conversion from _seed phrase_ to _Entropy_ \r\n\t\t\tFor each word its index is retrieved from the _Dictionary_, its value is represented\r\n\t\t\tas a 11 bits segment and a number of bits corresponding to tne _Entropy Checksum_\r\n\t\t\tare removed at the end of the concatenation of 11 bits segments.\r\n\t\t\te.g. For a _seed phrase_ of 12 words (converted to a 128 bits _Entropy_), \r\n\t\t    132 bits are obtained from the _Word Indexes_ (11 * 12), and because the _Entropy Checksum_ \r\n\t\t\tis 4 bits long then the 4 bits at the end are removed.\r\n\t\t* Reference    \r\n\t\t[BIP39 — Mnemonic Generation with detailed explanation](https://medium.com/@sundar.sat84/bip39-mnemonic-generation-with-detailed-explanation-84abde9da4c1)\r\n\t+ 5.2. `BIP32`: Hierarchic Deterministic wallets\r\n\t`BIP32` specifies how to generate wallets with are all derived from the same _Entropy_\r\n\tor _seed phrase_ (also called the _Secret Recovery Passphrase_).\r\n    A _seed phrase_ of only 12 words is enough is most _Wallet Managers_ but it is much more secure to use a 24 words \r\n\t_seed phrase_ if possible (e.g. _Ledger_ hardware wallet manager).    \r\n\t    Example: meaning of each part for `m/44'/60'/0'/0/0'` (a _Hardened Derivation Path_):    \r\n\t    * Start at the master key                                      (m)    \r\n        * Follow the `BIP44` specification                             (44')    \r\n        * Derive the key for _Ethereum_ (for which _Coin type_ is 60)  (60')     \r\n        * Access the first account                                     (0')    \r\n        * Choose the external chain, used for public addresses         (0)    \r\n        * And finally, generate the first address in this sequence     (0')    \r\n        \t\r\n\t* 5.2. References    \r\n\t    + 5.2.1. [Understanding Derivation Paths in Cryptocurrency: Easy-To-Follow Guide](https://getcoinplate.com/blog/derivation-paths-guide/#:~:text=A%20derivation%20path%20is%20simply,a%20particular%20branch%20(address))\r\n\t\t+ 5.2.2. [Hierarchical key generation](https://alexey-shepelev.medium.com/hierarchical-key-generation-fc27560f786)\r\n\t\t+ 5.2.3. [BIP32 Key Derivation with HD Wallets](https://docs.bsvblockchain.org/guides/sdks/ts/examples/example_hd_wallets)\t\t\r\n\t\t\r\n","readmeFilename":"README.md"}