{"id":21336818,"url":"https://github.com/dan-da/subaddress-derive-xmr","last_synced_at":"2025-07-12T12:32:52.684Z","repository":{"id":72068227,"uuid":"210714079","full_name":"dan-da/subaddress-derive-xmr","owner":"dan-da","description":"A CLI utlity to derive Monero (XMR) subaddresses.","archived":false,"fork":false,"pushed_at":"2023-11-06T05:33:59.000Z","size":236,"stargazers_count":10,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-04-16T22:29:23.682Z","etag":null,"topics":["coldwallet","cryptonote","monero","monero-cli","monero-offline","monero-php","monero-utility","monero-wallet","paperwallet","subaddresses","xmr"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dan-da.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2019-09-24T23:19:27.000Z","updated_at":"2024-04-16T22:29:23.682Z","dependencies_parsed_at":"2023-11-06T06:29:42.732Z","dependency_job_id":"556b23e3-40d7-4c24-be11-824f1d9f2d4f","html_url":"https://github.com/dan-da/subaddress-derive-xmr","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dan-da%2Fsubaddress-derive-xmr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dan-da%2Fsubaddress-derive-xmr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dan-da%2Fsubaddress-derive-xmr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dan-da%2Fsubaddress-derive-xmr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dan-da","download_url":"https://codeload.github.com/dan-da/subaddress-derive-xmr/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225820222,"owners_count":17529139,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["coldwallet","cryptonote","monero","monero-cli","monero-offline","monero-php","monero-utility","monero-wallet","paperwallet","subaddresses","xmr"],"created_at":"2024-11-21T23:55:29.312Z","updated_at":"2024-11-21T23:55:29.997Z","avatar_url":"https://github.com/dan-da.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"**subaddress-derive-xmr is a command-line tool that generates a monero wallet and derives addresses**\n\n# About\n\nThis tool can be used to generate a monero wallet and/or derive addresses offline\nfrom keys or from a mnemonic without installing full monero software.\n\nDerivation reports show major index (account ID), address index, and address.\n\nInput must be provided with these flags:\n\n    --mnemonic : a mnemonic phrase to use an existing wallet\n    --view-priv and --spend-pub : a private view key and a public spend key\n    --gen-wallet : generates a new wallet seed and keys.\n\n\nReports are available in json, plaintext, and html. Columns can be changed or\nre-ordered via command-line.\n\nThis tool was adapted from: [hd-wallet-derive](https://github.com/dan-da/hd-wallet-derive) -- a tool for\nderiving Bitcoin HD-Wallet addresses.\n\n\n\n# Let see some examples\n\n## Generate new wallet keys and master address\n\n```\n$ ./subaddress-derive-xmr --gen-wallet  -g\n{\n    \"seed\": \"66dcbb7490ee34dad1b04fa316b90ba1795ce70586298e2cc09455de1ae95273\",\n    \"mnemonic\": \"focus aquarium luxury etched video smidgen sidekick because rounded cigar befit ritual layout visited wetsuit tobacco oars setup mystery insult females dauntless yodel jeopardy rounded\",\n    \"wordset\": \"english\",\n    \"view-key-private\": \"25d014a444fb7a1e6836c680d3ec1b6eed628a29c3c85e0379fb89f53c4c610a\",\n    \"view-key-public\": \"603ebe3bc1b2590c8a5e4caa90ee807cada4f881ad4f21f6c3653459781034c0\",\n    \"spend-key-private\": \"eb1003ead738b471f5668a2e00e4f20e795ce70586298e2cc09455de1ae95203\",\n    \"spend-key-public\": \"dce90ff7304d8b648bfbac69624b4c6562340c5c748a8a6d2c84bad3b76fe974\",\n    \"address\": \"49zf2PF7nLSHpRwWcPG8ePHxYnR6eFmYuKG8Akpq5vFALTzZzMdv3kC36fCSP3UfFdMrY51QAs5NGiGuwXK6YMa3Nk7549x\"\n}\n```\n\n## Generate new wallet using alternative wordset\n\nHere we specify --wordset=japanese to generate a mnemonic in Japanese.\n\n```\n$ ./subaddress-derive-xmr --gen-wallet --wordset=japanese -g\n{\n    \"seed\": \"a6d5b4007d6b05d3a46b8bae199c8eef702c05f4fa219dbc80c84913da1c6a7e\",\n    \"mnemonic\": \"すくう あらわす あんい だいじょうぶ ちしりょう ずっと おもちゃ てはい さんこう そんみん てんかい ちひょう ちたん かかえる おおどおり けわしい きかい はめつ すれちがう はっかく いきおい けねん しんか あらためる ちしりょう\",\n    \"wordset\": \"japanese\",\n    \"view-key-private\": \"48381703f1354d371678d1e8a63d2eef6cde8e6b406ff466902583024fe93c0a\",\n    \"view-key-public\": \"a528500e7bf5ea90e2da21c7e1dcb8bc2d23c1fca912dbcf050f26fa760fa3ea\",\n    \"spend-key-private\": \"2b0afc75c4b5846ac821c63903c7755d702c05f4fa219dbc80c84913da1c6a0e\",\n    \"spend-key-public\": \"900a3a401f61cea0cc9e9df0cc08c193a356a63c500a1c53bcc61be12dd2b808\",\n    \"address\": \"475hYFjWisFTtxNEvr8qTNRhGtXAJUzd9F1Mk9TznAYP2SsPUPXMcsjREaUE6GVhDqYUYg3gzne42bdMMq5ZuvxSTVQUiGG\"\n}\n```\n\n\n## Derive addresses\n\nFor deriving addresses we use the private view key and the public spend key.  In the examples below, we use the\nkeys that were generated above.\n\nIf you want to use keys from your wallet, then in the official Monero GUI, they are available in the\nSettings-\u003eSeed \u0026 Keys area. In the CLI, open your wallet and use the commands spendkey and viewkey\nto find the keys.\n\n```\n./subaddress-derive-xmr --view-priv=25d014a444fb7a1e6836c680d3ec1b6eed628a29c3c85e0379fb89f53c4c610a --spend-pub=dce90ff7304d8b648bfbac69624b4c6562340c5c748a8a6d2c84bad3b76fe974 --numderive=3 -g\n\n+-------------+-------------+-------------------------------------------------------------------------------------------------+\n| major_index | minor_index | address                                                                                         |\n+-------------+-------------+-------------------------------------------------------------------------------------------------+\n|           0 |           0 | 49zf2PF7nLSHpRwWcPG8ePHxYnR6eFmYuKG8Akpq5vFALTzZzMdv3kC36fCSP3UfFdMrY51QAs5NGiGuwXK6YMa3Nk7549x |\n|           0 |           1 | 87i7kA61fNvMboXiYWHVygPAggKJPETFqLXXcdH4mQTrECvrTxZMtt6e6owj1k8jUVjNR11eBuBMWHFBtxAwEVcm9dcSUxr |\n|           0 |           2 | 8A9XmWsATrhfedtNhTMNKELwfCwMVAk2iVTdUJdFRb2AC4tV4VeBjsCLYR9cSQTwnvLo4MAuQFMLP6Si4xp6t6BS788db3t |\n+-------------+-------------+-------------------------------------------------------------------------------------------------+\n```\n\nNote that the first address (0,0) is the same address that was generated with --gen-wallet.  This is the master address\nfor the Monero wallet and is generated slightly differently from the other subaddresses.\n\n## Same keys, different account\n\nFor this, we use the --majorindex flag.\n\n```\n./subaddress-derive-xmr --majorindex=1 --view-priv=25d014a444fb7a1e6836c680d3ec1b6eed628a29c3c85e0379fb89f53c4c610a --spend-pub=dce90ff7304d8b648bfbac69624b4c6562340c5c748a8a6d2c84bad3b76fe974 --numderive=3 -g\n\n+-------------+-------------+-------------------------------------------------------------------------------------------------+\n| major_index | minor_index | address                                                                                         |\n+-------------+-------------+-------------------------------------------------------------------------------------------------+\n|           1 |           0 | 87G36SRd8Ru9YG9xXjq3i7hAiHTEpVfRdjZEqn5KcWk28oFbEaNWDCiJTcL9BqrZQ8cFtonzJY3zz3LsTT95wdunQhRqW5g |\n|           1 |           1 | 88jg9HNvkisAYFz9J3gr9H4jsz4kMA1yu4Pm8qrwoieuRtarWNX5a2ac5pAwxz3Kphgn1391RgKPe5oZ1uuWmbnwMiVkkaZ |\n|           1 |           2 | 86V9FP5VWUc3dSrAKuJHp1AotL6CU41z3fjBUDetGzpGK8jDW7bPeVL6BJNjK8SVrf1795oPMmw78HbK1JoH1cqtKoQuPyj |\n+-------------+-------------+-------------------------------------------------------------------------------------------------+\n```\n\n\n## We can easily change up the columns in whatever order we want.\n\nJust use the --cols parameter.\n\n```\n./subaddress-derive-xmr --cols=address,minor_index --majorindex=1 --view-priv=25d014a444fb7a1e6836c680d3ec1b6eed628a29c3c85e0379fb89f53c4c610a --spend-pub=dce90ff7304d8b648bfbac69624b4c6562340c5c748a8a6d2c84bad3b76fe974 --numderive=3 -g\n\n+-------------------------------------------------------------------------------------------------+-------------+\n| address                                                                                         | minor_index |\n+-------------------------------------------------------------------------------------------------+-------------+\n| 87G36SRd8Ru9YG9xXjq3i7hAiHTEpVfRdjZEqn5KcWk28oFbEaNWDCiJTcL9BqrZQ8cFtonzJY3zz3LsTT95wdunQhRqW5g |           0 |\n| 88jg9HNvkisAYFz9J3gr9H4jsz4kMA1yu4Pm8qrwoieuRtarWNX5a2ac5pAwxz3Kphgn1391RgKPe5oZ1uuWmbnwMiVkkaZ |           1 |\n| 86V9FP5VWUc3dSrAKuJHp1AotL6CU41z3fjBUDetGzpGK8jDW7bPeVL6BJNjK8SVrf1795oPMmw78HbK1JoH1cqtKoQuPyj |           2 |\n+-------------------------------------------------------------------------------------------------+-------------+\n```\n\n## Derive addresses from a mnemonic\n\nThe --mnemonic flag makes it happen.\n\n```\n$ ./subaddress-derive-xmr --mnemonic=\"school bunch godfather school umbrella criminal mowing payment himself tacit tawny dagger phrases blender depth sayings antics bagpipe gels ability ablaze mugged balding apology sayings\" -g --numderive=3\n\n+-------------+-------------+-------------------------------------------------------------------------------------------------+\n| major_index | minor_index | address                                                                                         |\n+-------------+-------------+-------------------------------------------------------------------------------------------------+\n|           0 |           0 | 46pbLJeN7ns2LxWGqvfYL5dEJ42UXKogi6E9kkY6hTZVM8u7FVN2egrH2mxUGTxRmd1RKhfzXU6dRDWyuub6m7QZDztrVEc |\n|           0 |           1 | 8BtVfzdXSZ6TbxjGPLsWwjcmWvYduXu23UAAeHPhPu91QF9h54Vg6dn6sGMA4e35WV5cw2YByEsdfHfhMstHHBwi7PNhETF |\n|           0 |           2 | 86XGETJkKkoN2dcD9sv2Sx1XHby1XC9dFaYvM6hnRr1NHjnH6sd6ZQydSJUy9xqrPQiqWtFZ6FLuQiRdwGpc7LMb7BLNmTv |\n+-------------+-------------+-------------------------------------------------------------------------------------------------+\n```\n\n## Get seed and wallet keys from a mnemonic\n\nJust use --wallet-keys in addition to --mnemonic.  Note that --wallet-keys defaults to jsonpretty output, but that can\nbe changed with the -format flag.\n\n```\n$ ./subaddress-derive-xmr --wallet-keys --mnemonic=\"school bunch godfather school umbrella criminal mowing payment himself tacit tawny dagger phrases blender depth sayings antics bagpipe gels ability ablaze mugged balding apology sayings\" -g\n{\n    \"seed\": \"e5f8bd36b5d9174725aca5bc88a8ac567a0d1614a840d109af84430001fd56f7\",\n    \"mnemonic\": \"school bunch godfather school umbrella criminal mowing payment himself tacit tawny dagger phrases blender depth sayings antics bagpipe gels ability ablaze mugged balding apology sayings\",\n    \"view-key-private\": \"6b4236e3446c290ed5df7cee7389925796759e6ad464318fed2f6c159cadc405\",\n    \"view-key-public\": \"62e7eb0777e9b35fd739e7ec43cc540281d42ccd1ef82c4ad57182eb06f49e73\",\n    \"spend-key-private\": \"028e56c4290b041e967b23307d049c1d790d1614a840d109af84430001fd5607\",\n    \"spend-key-public\": \"892aacab12ca34080927d5fda5772ed899abb1f6e904c71f3fa6c4ee51d13478\",\n    \"address\": \"46pbLJeN7ns2LxWGqvfYL5dEJ42UXKogi6E9kkY6hTZVM8u7FVN2egrH2mxUGTxRmd1RKhfzXU6dRDWyuub6m7QZDztrVEc\"\n}\n```\n\n## Use a mnemonic with alternative wordset.\n\nNote that \"wordset: japanese\" is present in the results.\nThe wordset is automatically detected from the words in the mnemonic phrase.\n\n```\n$ ./subaddress-derive-xmr --wallet-keys --mnemonic=\"すくう あらわ す あんい だいじょうぶ ちしりょう ずっと おもちゃ てはい さんこう そんみん てんかい ちひょう ちたん かかえる おおどおり けわしい きかい はめつ すれちがう はっかく いきおい けねん しんか あらためる ちしりょう\" -g\n{\n    \"seed\": \"a6d5b4007d6b05d3a46b8bae199c8eef702c05f4fa219dbc80c84913da1c6a7e\",\n    \"mnemonic\": \"すくう あらわす あんい だいじょうぶ ちしりょう ずっと おもちゃ てはい さんこう そんみん てんかい ちひょう ちたん かかえる おおどおり けわしい きかい はめつ すれちがう はっかく いきおい けねん しんか あらためる ちしりょう\",\n    \"wordset\": \"japanese\",\n    \"view-key-private\": \"48381703f1354d371678d1e8a63d2eef6cde8e6b406ff466902583024fe93c0a\",\n    \"view-key-public\": \"a528500e7bf5ea90e2da21c7e1dcb8bc2d23c1fca912dbcf050f26fa760fa3ea\",\n    \"spend-key-private\": \"2b0afc75c4b5846ac821c63903c7755d702c05f4fa219dbc80c84913da1c6a0e\",\n    \"spend-key-public\": \"900a3a401f61cea0cc9e9df0cc08c193a356a63c500a1c53bcc61be12dd2b808\",\n    \"address\": \"475hYFjWisFTtxNEvr8qTNRhGtXAJUzd9F1Mk9TznAYP2SsPUPXMcsjREaUE6GVhDqYUYg3gzne42bdMMq5ZuvxSTVQUiGG\"\n}\n```\n\n\n## Derive addresses from a seed\n\nWe use the --seed flag\n\n```\n$ ./subaddress-derive-xmr --seed=\"66dcbb7490ee34dad1b04fa316b90ba1795ce70586298e2cc09455de1ae95273\" -g --numderive=3\n\n+-------------+-------------+-------------------------------------------------------------------------------------------------+\n| major_index | minor_index | address                                                                                         |\n+-------------+-------------+-------------------------------------------------------------------------------------------------+\n|           0 |           0 | 49zf2PF7nLSHpRwWcPG8ePHxYnR6eFmYuKG8Akpq5vFALTzZzMdv3kC36fCSP3UfFdMrY51QAs5NGiGuwXK6YMa3Nk7549x |\n|           0 |           1 | 87i7kA61fNvMboXiYWHVygPAggKJPETFqLXXcdH4mQTrECvrTxZMtt6e6owj1k8jUVjNR11eBuBMWHFBtxAwEVcm9dcSUxr |\n|           0 |           2 | 8A9XmWsATrhfedtNhTMNKELwfCwMVAk2iVTdUJdFRb2AC4tV4VeBjsCLYR9cSQTwnvLo4MAuQFMLP6Si4xp6t6BS788db3t |\n+-------------+-------------+-------------------------------------------------------------------------------------------------+\n```\n\n## Get mnemonic and wallet keys from a seed\n\nAgain we add the --wallet-keys flag.\n\n```\n$ ./subaddress-derive-xmr --wallet-keys --seed=\"66dcbb7490ee34dad1b04fa316b90ba1795ce70586298e2cc09455de1ae95273\" -g --numderive=3\n{\n    \"seed\": \"66dcbb7490ee34dad1b04fa316b90ba1795ce70586298e2cc09455de1ae95273\",\n    \"mnemonic\": \"focus aquarium luxury etched video smidgen sidekick because rounded cigar befit ritual layout visited wetsuit tobacco oars setup mystery insult females dauntless yodel jeopardy rounded\",\n    \"view-key-private\": \"25d014a444fb7a1e6836c680d3ec1b6eed628a29c3c85e0379fb89f53c4c610a\",\n    \"view-key-public\": \"603ebe3bc1b2590c8a5e4caa90ee807cada4f881ad4f21f6c3653459781034c0\",\n    \"spend-key-private\": \"eb1003ead738b471f5668a2e00e4f20e795ce70586298e2cc09455de1ae95203\",\n    \"spend-key-public\": \"dce90ff7304d8b648bfbac69624b4c6562340c5c748a8a6d2c84bad3b76fe974\",\n    \"address\": \"49zf2PF7nLSHpRwWcPG8ePHxYnR6eFmYuKG8Akpq5vFALTzZzMdv3kC36fCSP3UfFdMrY51QAs5NGiGuwXK6YMa3Nk7549x\"\n}\n```\n\n\n# How address derivation works\n\nFor background, please read [Monero's documentation](https://monerodocs.org/public-address/subaddress/).\n\n# Mnemonic wordsets\n\nThe wordset list can be obtained with the --help-wordsets flag.\n\n```\n$ ./subaddress-derive-xmr --help-wordsets\n+--------------------+-----------------+----------------------+\n| wordset            | name            | english_name         |\n+--------------------+-----------------+----------------------+\n| chinese_simplified | 简体中文 (中国)   | Chinese (simplified) |\n| dutch              | Nederlands      | Dutch                |\n| english            | English         | English              |\n| english_old        | EnglishOld      | English (old)        |\n| esperanto          | Esperanto       | Esperanto            |\n| french             | Français        | French               |\n| german             | Deutsch         | German               |\n| italian            | Italiano        | Italian              |\n| japanese           | 日本語           | Japanese             |\n| lojban             | Lojban          | Lojban               |\n| portuguese         | Português       | Portuguese           |\n| russian            | русский язык    | Russian              |\n| spanish            | Español         | Spanish              |\n+--------------------+-----------------+----------------------+\n```\n\nA particular wordset can be specified using the --wordset flag with a value from\nthe wordset column.  This flag is recognized when generating a wallet or\ndisplaying wallet info from a seed.\n\nWhen a list of words is provided with the --mnemonic flag, the wordset is\nautomatically recognized and --wordset flag is ignored.\n\nnote: These wordsets were obtained directly from the official monero\nsource code [here](https://github.com/monero-project/monero/tree/master/src/mnemonics).  (See *.h files)\n\nThe default wordset is english.  english_old is a wordset from electrum.\n\n\n\n# Privacy and Security implications\n\nThis tool runs locally and does not make any requests to a server.\nThis eliminates many forms of leaks and privacy issues.\n\nThat said, any time when you are working with private keys you should\ntake serious security precautions.\n\nWhen you run this tool in a terminal, the executed command(s) will\nusually be saved to a history file -- including your keys used as command arguments.\nYou should be very careful to either expunge the command(s), or move the funds to\nanother wallet, or be certain untrusted parties cannot access your machine.\n\nFinally, this tool depends on libraries written by other authors and they\nhave not been carefully audited for security.  So use at your own risk.\n\n\n# Use at your own risk.\n\nThe author makes no claims or guarantees of correctness.\n\nBy using this software you agree to take full responsibility for any losses\nincurred before, during, or after the usage, whatsoever the cause, and not to\nhold the software author liable in any manner.\n\n\n# Output formats\n\nThe report may be printed in the following formats:\n* plain      - an ascii formatted table, as above.  intended for humans.\n* csv        - CSV format.  For spreadsheet programs.\n* json       - raw json format.  for programs to read easily.\n* jsonpretty - pretty json format.  for programs or humans.\n* list       - single column list. for easy cut/paste.  uses first col.\n\n\n# Usage\n\n```\n   subaddress-derive-xmr.php\n\n   This script derives Monero addresses\n\n   Options:\n\n    -g                   go!  ( required )\n        \n    --spend-pub=\u003ckey\u003e    public spend key\n    --view-priv=\u003ckey\u003e    private view key\n    \n    --mnemonic=\u003cwords\u003e   seed words\n                           note: either key or nmemonic is required.\n                                                     \n    --mnemonic-pw=\u003cpw\u003e   optional password for mnemonic. (unimplemented)\n    \n    --seed=\u003cseed\u003e        wallet seed in hex  \n    \n    --wallet-keys        display seed+keys and do not derive.\n                          applies to --mnemonic and --seed.\n\n    --majorindex         identifies an account.  default=0\n    \n    --startindex=\u003cn\u003e     Index to start deriving keys from.  default=0\n\n    --numderive=\u003cn\u003e      Number of keys to derive.  default=10\n                            \n    --cols=\u003ccols\u003e        a csv list of columns, or \"all\"\n                         all:\n                          (view_secret_key,spend_public_key,major_index,minor_index,address)\n                         default:\n                          (major_index,minor_index,address)\n\n    --outfile=\u003cpath\u003e     specify output file path.\n    --format=\u003cformat\u003e    txt|md|csv|json|jsonpretty|html|list|all   default=txt\n    \n                         if 'all' is specified then a file will be created\n                         for each format with appropriate extension.\n                         only works when outfile is specified.\n                         \n                         'list' prints only the first column. see --cols\n\n    --gen-wallet        generates keys and mnemonic for a new wallet.\n    \n    --wordset=\u003cws\u003e      wordset for generating wallet mnemonic. default=english.\n                          applies only to --gen-wallet and --seed\n                          \n    --help-wordsets     displays list of available wordsets.\n    \n    --gen-words=\u003cn\u003e     num words to generate. implies --gen-wallet.\n                           (unimplemented)\n                           one of: [13, 25]\n                           default = 25.\n    \n    --logfile=\u003cfile\u003e    path to logfile. if not present logs to stdout.\n    --loglevel=\u003clevel\u003e  debug,info,specialinfo,warning,exception,fatalerror\n                          default = info\n```\n\n\n# Installation and Running.\n\nLinux Ubuntu 16.04 requirements:\n```\napt-get install php php-gmp php-mbstring php-mcrypt composer\n```\n\nBuild\n```\n$ composer install\n```\n\nTry an example\n```\n$ ./subaddress-derive-xmr --view-priv='55cdeaa9a36c83a130e42934fcc7bb7761945fa266f026bf85a4056beafb390f' --spend-pub='9b593fbcdc7a13f95b8cf51274bd3ffc9ef8374ee1fa14400857e927b3f2f6f4' -g\n```\n\n\n# Thanks\n\nA big thank-you to the author(s) of [monero-integrations/monerophp](https://github.com/monero-integrations/monerophp/).\nThis library does much of the heavy lifting.\n\n\n# Todos\n\n* implement --mnemonic-pw (mnemonic password)\n* move mnemonic class into separate repo for other php devs to use.\n* add all available mnemonic wordsets / langs.\n* implement --gen-words (variable length mnemonics).\n* implement --network  (support testnet)\n* add more test cases\n* \u003cstrike\u003eauto detect mnemonic wordset from mnemonic words.\u003c/strike\u003e\n* \u003cstrike\u003esupport mnemonics in other languages\u003c/strike\u003e\n* \u003cstrike\u003eimplement --gen-wallet\u003c/strike\u003e\n* \u003cstrike\u003eimplement --mnemonic\u003c/strike\u003e\n* \u003cstrike\u003eimplement --seed\u003c/strike\u003e\n* \u003cstrike\u003eimplement --wallet-keys\u003c/strike\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdan-da%2Fsubaddress-derive-xmr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdan-da%2Fsubaddress-derive-xmr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdan-da%2Fsubaddress-derive-xmr/lists"}