Crates.io | grin-vanity |
lib.rs | grin-vanity |
version | 0.1.0 |
source | src |
created_at | 2023-08-01 16:27:49.410465 |
updated_at | 2023-08-01 16:27:49.410465 |
description | A cli vanity address generator for Grin |
homepage | |
repository | |
max_upload_size | |
id | 932015 |
size | 316,682 |
A commnand-line vanity address generator for Grin. I made this mostly for fun and to familiarize myself with the various Grin libraries written in Rust. The code is currently a lot slower than expected since deriving a slatepack address from a seed seems to be ~1000x slower that deriving it from a raw public key.
The output below depicts an adrress found with the pattern grin1test
and its corresponding seed.
$ grin-vanity --threads 30 --pattern grin1test --interval 180
Searching for pattern grin1test
Using 30 threads
1177.69 keys/s eta: 16.78min
1180.52 keys/s eta: 16.74min
1180.57 keys/s eta: 16.74min
1184.35 keys/s eta: 16.69min
1191.43 keys/s eta: 16.59min
1186.02 keys/s eta: 16.67min
1187.23 keys/s eta: 16.65min
1183.23 keys/s eta: 16.70min
Found address: grin1testjvsvwm3nrh7ueas8vanjs0tmvymetskf5qwl7cjmkqy7lm0sy0wmcs
With Seed: drastic find quarter number column ready program parent mad novel fix vital drill cactus host arm enter omit short team mushroom saddle fancy swarm
1953000 keys in 1537.039615623 seconds
Guessing a private key with the chosen prefix has an element of luck to it. The following table depicts a rough estimate on what should be expected on a Ryzen 5950x using 30 threads. Your results may vary.
Prefix | Eta |
---|---|
grin1 | < 1s |
grin10 | < 1s |
grin100 | < 1s |
grin1000 | 30 s |
grin10000 | 16 min |
grin100000 | 9 h |
grin1000000 | 12 d |
grin10000000 | 17 y |
grin100000000 | 560 y |
First install Rust from here. Then you can build the project by simply typing:
cargo build --release
$ grin-vanity --help
A vanity slatepack address generator
Usage: grin-vanity [OPTIONS]
Options:
-p, --pattern <PATTERN> Desired pattern [default: grin1234]
-t, --threads <THREADS> Threads [default: 1]
-i, --interval <INTERVAL> Refresh Interval [default: 1]
-h, --help Print help
-V, --version Print version