xrpl-vanity CLI
The same search as the desktop app, from a terminal on Windows or Linux.
Build it
There are no prebuilt binaries: run it from source with the .NET 10 SDK.
$ git clone https://github.com/StaticBit-io/xrpl-vanity-generator.git $ cd xrpl-vanity-generator $ dotnet run --project src/XrplVanity.Cli -c Release -- --contains xrp --count 1
The first run builds the program. In the examples below, xrpl-vanity stands for dotnet run --project src/XrplVanity.Cli -c Release --.
Choose where the word goes
A bare word must appear at the start of the address, right after the leading r. A run can mix positions, and an address matches if any one pattern does.
$ xrpl-vanity ripple hodl xrp $ xrpl-vanity --ends xyz --contains dao $ xrpl-vanity --starts-ends abc:xyz $ xrpl-vanity --list words.txt 5
--starts-ends needs both halves on the same address, so it costs as much as one word of their combined length. The last line loads its words from a file and keeps those of at least 5 characters.
Options
| Option | Default | What it does |
|---|---|---|
--starts P | none | Match at the start of the address, after the r. Repeatable. Bare words do the same. |
--near-start P | none | Let the word begin at the 2nd or 3rd character. Repeatable. |
--ends P | none | Match at the end of the address. Repeatable. |
--contains P | none | Match anywhere. Repeatable. |
--starts-ends PREFIX:SUFFIX | none | Require a prefix and a suffix on the same address. Repeatable. |
--near-starts-ends PREFIX:SUFFIX | none | The same, with the prefix allowed at the 2nd or 3rd character. Repeatable. |
--list FILE [minLen] | minLen 4 | Load words for the start of the address from a file. |
--case-sensitive | off | Match exactly as typed. By default every case combination matches, for words of up to 12 characters. |
--threads N | all cores | Worker threads for a CPU search. Ignored with --gpu. |
--out FILE | none | Append matches to a file as well as printing them. |
--count N | none | Stop after N matches. Otherwise the search runs until you press Ctrl+C. |
--gpu | off | Search on the GPU: CUDA first, then OpenCL. |
--backend NAME | none | Force cuda or opencl. Implies --gpu. |
--device N | none | Pick a device by index. Implies --gpu. |
--list-devices | none | List every device and exit. |
--gpu-devices SPEC | none | Use several devices at once: all, cuda, opencl, or a comma-separated list. Implies --gpu. |
--gpu-duty N | 100 | Keep the GPU busy about N% of the time, from 1–100. |
Which words work
Addresses use 58 characters. 0, O, I and l do not exist, so your word is adjusted: l becomes L, 0 and O become o, and I becomes i. A word that still holds an impossible character is reported and skipped.
Each extra character multiplies the wait, by up to 58 times with --case-sensitive and by less without it, because more spellings count as a match.
The first character after the r is usually one of pshnaf39wBUDNEGHJKLM4PQ. A word that starts with anything else is about 23 times rarer than its length suggests. --near-start lets it begin one character later, which finds it about 24 times sooner.
Search on a GPU
$ xrpl-vanity --list-devices $ xrpl-vanity --gpu --contains dao --count 1 $ xrpl-vanity --gpu-devices cuda --starts abc $ xrpl-vanity --gpu --gpu-duty 80 --contains dao --count 1 --out dao.tsv
Every GPU hit is derived again on the CPU, and only printed if the two agree, so a faulty device costs speed and never gives you a wrong key. Without a usable device, --gpu exits with code 2 rather than falling back to the CPU.
The first OpenCL run can take tens of seconds while the driver compiles the program. Later runs are fast. --gpu-duty leaves room for other applications, and speed drops roughly in proportion. --gpu-devices all opens each card once per backend, so use --gpu-devices cuda for every NVIDIA card once.
Results and exit codes
Each match is one line on your terminal:
Address: r... Seed: sEd...
--out FILE appends the same pair, separated by a tab, without the labels. Warnings and the final speed go to stderr, so piping stdout gives you matches alone.
Anyone who holds the seed controls the account. Matches are in plain text, on your terminal and in that file, and nowhere else. Keep them private.
| Code | Meaning |
|---|---|
0 | The --count target was met. |
2 | Invalid usage, no reachable pattern, no usable GPU, or a failed search. |
130 | Ended by Ctrl+C before a --count target was met. |