Algomania is the fastest CPU-only vanity address generator for Algorand. It utilizes libsodium
for ed25519 keypair generation
and produces Algorand account mnemonics only when public key matches are found. For those wanting elite 8-char vanity addresses,
using Algomania is essential. See the performance table for tested keygen speeds.
-
System Requirements (Cross-Platform supported)
-
git clone https://github.com/kirse/algomania
-
Update the
DllImport
path in line 12 ofMain.fs
to point to your libsodium library (.dll, .so, etc.)- Recommended to put the
libsodium
.dll/.so (etc) in the same folder - If Windows, copy
libsodium.dll
next to this program and no edits will be needed
- Recommended to put the
-
dotnet run -c Release
Given the math, the best "bang for your buck" is an 8-char vanity prefix (if you have the hardware). A byte array
of length mod 5 = 0
exactly specifies a desired Base32 string. What this means is a 7-char prefix
(4 bytes of chance 1/256) * (1 "pinning" byte of chance 1/32) is about as hard to generate as an 8-char prefix (5 bytes of chance 1/256).
Any vanity prefixes that are 1-3 bytes are easily churnable on commodity hardware. Vanity prefixes of 4-5 bytes should use high performance many-core CPUs. Prefixes of 6+ bytes is uncharted space and not recommended. 6+ bytes is likely possible with an ed25519 GPU-focused solution (stay tuned).
To contribute figures, please PR with a runtime screenshot.
CPU | RAM | Keys/Sec | Test Notes | Platform |
---|---|---|---|---|
AMD EPYC 7443P - 2.85/4.0 GHz - 24C/48T | 256GB | 1.16M | 11h:26m / 48b tries | Rocky8 |
Intel E-2288G - 4.0/4.9 GHz - 6C/12T | 32GB | 304K | 10h:58m / 12b tries | Rocky8 |
Intel Core i7-7500U - 2.7/2.9 Ghz - 2C/4T | 16GB | 31K | 8h:30m / 1b tries | Windows |
- Base32 Converters
(On trying to generate keys faster)
- First cut is ~1:50/M addresses - 9k/s
- 2nd - remove .NET AlgoSDK, use Bouncy Castle direct = 1:32/M - 10.8k/s
- 3rd - separate fsharp = 1:12/M - 13.8k/s
- 4th - use Array and Array.Parallel.iter = 0:52/M (19.1k/s), 8h/500M (17.3k/s)
- 4th - fresh reboot - 7:35:00/500M (18.3k/s)
- 5th - used .NET TPL - 0:33/M - 30k/s (4 Tasks), 6:50/10M (24.4k/s), 9:21:00/800M (23.8k/s)
- 6th - refactor using TPL + libsodium for keygen - 0:24/M (41k/s), 2:18/5M (36k/s), 8:30/1B (33k/s) dotnet run -c Release
- 7th - tried
span<byte>
+stackalloc
refactor but same times as round 6 - 8th - cloud 3cpu/9-core box - 0:07/M (143k/s)
- 9th - cloud Bare Metal 6cpu/12-core box -
- 0:3.8s/1.2M (315k/s), 37.6s/12M (320k/s), 394s/120M (304k/s), 10h58m/12B (304k/s) = (26Bk/Day!!)
- 10th - cloud Bare Metal 24cpu/48-core box - 11:26:30/48B (1.16M k/s = 100Bk/Day)
- Note: Successful generation of multiple 8-char vanity addresses on this config