A bLaZinGlY fAsT tool for grinding vanity addresses on Solana.
Typically, solana developers wishing to obtain a vanity address for their program or token grind out ed25519 keypairs and sign off on a SystemInstruction::CreateAccount instruction. However, by using SystemInstruction::CreateAccountWithSeed, developers can bypass ed25519 and get extreme speedups on address searches. Although not as generic, this method covers many use cases.
By default, vanity compiles for cpu. Install via
cargo install vanityTo compile for gpu, install via
cargo install vanity --features=gpuIf you don't have a GPU, consider using vast.ai. Pls use this referral link so that I can keep using GPUs.
Refer to the help via vanity --help for information on usage.
Usage: vanity [OPTIONS] --base <BASE> --owner <OWNER> --target <TARGET>
Options:
--base <BASE> The pubkey that will be the signer for the CreateAccountWithSeed instruction
--owner <OWNER> The account owner, e.g. BPFLoaderUpgradeab1e11111111111111111111111 or TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
--target <TARGET> The target prefix for the pubkey
--case-insensitive Whether user cares about the case of the pubkey
--logfile <LOGFILE> Optional log file
--num-cpus <NUM_CPUS> Number of cpu threads to use for mining [default: 0]
-h, --help Print helpTo actually make use of the resulting seed, refer to the solana_program docs:
pub fn create_account_with_seed(
from_pubkey: &Pubkey,
// this is the resulting address, obtained via Pubkey::create_with_seed
to_pubkey: &Pubkey,
base: &Pubkey,
seed: &str,
lamports: u64,
space: u64,
owner: &Pubkey,
) -> InstructionThe vanity tool can also run as an HTTP server to provide a REST API for grinding vanity addresses.
# Build with server feature
cargo build --release --features server
# Start server on default port 8080
cargo run --release --features server -- server
# Start server on custom port
cargo run --release --features server -- server --port 3000Get API documentation:
curl -X GET http://localhost:8080/Grind vanity addresses (synchronous):
curl -X GET http://localhost:8080/grindHealth check:
curl -X GET http://localhost:8080/healthSee API.md for complete API documentation with examples in multiple programming languages.
The server supports configuration via environment variables. Copy .env.example to .env and modify as needed:
cp .env.example .env
# Edit .env file with your settingsAvailable environment variables:
VANITY_PORT- Server port (default: 8080)- Additional variables documented in
.env.example
yes
Update@06/27/25: Ran a 14x RTX 4090 setup and it did 1.2-1.3 billion searches per second per GPU
- The sha2 implementation used in this library is taken from here, which is in the public domain.
- The base58 encoding implementation is taken from firedancer with heavy modifications for use in cuda & case insensitive encodings, licensed under APACHE-2.0