#solana #address #instructions #addresses #blazingly #key-pair #ed25519

app vanity

A *bLaZinGlY fAsT* tool for grinding vanity addresses on Solana

7 releases

0.3.4 Nov 14, 2024
0.3.3 Nov 12, 2024
0.2.0 Jun 15, 2024
0.1.0 Nov 23, 2022

#25 in #blazingly

Download history 1/week @ 2024-09-16 9/week @ 2024-09-23 31/week @ 2024-09-30 1/week @ 2024-10-28 1/week @ 2024-11-04 662/week @ 2024-11-11 62/week @ 2024-11-18 24/week @ 2024-11-25 51/week @ 2024-12-02 17/week @ 2024-12-09

182 downloads per month

MIT/Apache

44KB
783 lines

vanity

A bLaZinGlY fAsT tool for grinding vanity addresses on Solana.

1) What

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.

2) H

By default, vanity compiles for cpu. Install via

cargo install vanity

To compile for gpu, install via

cargo install vanity --features=gpu

If 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 help

To 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,
) -> Instruction

Contributions

yes

Performance

one of y'all can fill this out. RTX 4090 does ≈1 billion address searches per second.

Acknowledgements, External Libraries

  • 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

Dependencies

~29–45MB
~770K SLoC