Recently, I got it into my head that I want a custom/vanity Nano (XNO) address. After having no luck with NanoAddr (Firefox prevents the Web worker from running due to a security issue), I decided that this week I'll try nano-vanity
(written in Rust) instead. I've installed it on my old GNU/Linux laptop using cargo since it was easier to use apt
package management than the rust-up
script on Windows (although I could have used Debian through WSL, all things considered).
I was hoping to use the GNU/Linux machine's GPU (since the other laptop has integrated graphics), but the card is either too old or I don't have the right drivers installed. (Something's causing nano-vanity
to panic and quit if I specify the --gpu
option, anyway.) The old laptop does have an old i7 CPU, though (and it generally runs faster and smoother than the Windows machine with a tenth generation i5), so I've specified that nano-vanity
can use five threads. It's not like I'm using the machine for anything else at the moment, so most of the CPU being dedicated to one task is not going to be an issue. However, it has no battery life anymore, so loadshedding could be a complicating factor.
I just hope that either Natrium or Nautilus will be able to import whatever result I get (either by private key or seed). According to the table on the Nano Wallets Guide Website, both of those wallets should be able to cope with either if I understand it correctly. I'll try Nautilus first, seeing as it has more features than Natrium and I don't regret recently switching to it. Natrium will be my second choice. Failing that, I might have to use the nPass wallet browser extension (which can import an address from a seed), but it doesn't allow changing representative (which is a problem since I want to use the address for CVn) and it only works with Chromium-based browsers (such as Brave and Iridium).
I'll most likely have to send what Nano I have in Natrium and Nautilus to another wallet (Atomic or Exodus), make backups and reset the wallets in order to do the import, since trying to add an address when I already have one results in a new random address (which isn't what I want). I'm going to do that anyway, just to be on the safe side.
To install nano-vanity
:
- Install Rust as the root user:
apt install -y cargo rust
- Use cargo to install
nano-vanity
with GPU support:cargo install nano-vanity --features gpu
- For the sake of safety, disconnect from the Internet.
- Run
nano-vanity
:~/.cargo/bin/nano-vanity --gpu --threads 5 --generate-seed nano_#{word}*
The above command for nano-vanity
is broken down as follows:
--gpu
: Use a graphics card's GPU (optional, but recommended)--threads 5
: Use five CPU threads (should be less than your CPU has cores)--generate-seed
: Generate a seed string instead of a private/public key pair. This is optional and takes slightly longer, since it's derived from the private key. (Do not confuse a seed with a twelve/twenty-four word mnemonic phrase. A seed is a hexadecimal number, such as "69DEADBEEF47EA108102DAB00B1E5A790210" ...)nano_#{word}*
generate a Nano (XNO) address starting with "nano_", followed by a digit (Nano uses 1 or 3), followed by a word (without braces; substitute your desired word here), followed by any letter or digit
For my address, I specified "snarky1". The estimated number of required attempts is 1 099 511 627 776 (~1.0995 billion) and the number of generated keys is only 117 364 per second. Clearly, this is going to take quite a while to find a public key (address) that is literally one in a billion, assuming that the estimate is correct and such an address can be found.
If you wish to examine the source code, I have included the address of the GitHub repository in the "Resources" links, as well as three free books on Rust (which is also used to power ZCash).
Thumbnail image: Screenshot of the table on Nano Wallets Guide, showing export and import options for various Nano (XNO) wallets (borders added by me)