| Crates.io | address-artisan |
| lib.rs | address-artisan |
| version | 0.4.0 |
| created_at | 2025-02-01 16:07:23.046827+00 |
| updated_at | 2025-11-25 07:11:16.127209+00 |
| description | Vanity Bitcoin address generator based on BIP32 extended public keys with GPU acceleration. |
| homepage | https://github.com/seaasses/address-artisan |
| repository | https://github.com/seaasses/address-artisan |
| max_upload_size | |
| id | 1538552 |
| size | 1,797,692 |
Address Artisan is a vanity Bitcoin address generator based on BIP32 xpub key derivation and is:
Download the latest version from the releases page.
Install the latest stable release from crates.io:
cargo install address-artisan
Build the latest stable release:
git clone https://github.com/seaasses/address-artisan.git
cd address-artisan
git checkout $(git tag -l --sort=-version:refname | head -n1)
cargo build --release
Or build the most recent code from the main branch:
git clone https://github.com/seaasses/address-artisan.git
cd address-artisan
cargo build --release
The tool requires 2 mandatory arguments (xpub and prefix) and accepts several optional arguments:
--xpub (-x): Extended public key (obtainable from almost any Bitcoin wallet)--prefix (-p): Desired address prefix (must start with "1" or "bc1q")--num-addresses (-n): Number of addresses to find before stopping automatically (default: 1, 0 = never stop). Useful for generating multiple vanity addresses in a single run--max-depth (-m): Maximum depth of the last derivation path (default: 1000). A larger max-depth means better utilization of the key space and cache. However, an address may get buried in a large gap, and since account discovery is designed to be sequential, it may take time for the wallet to find it after increasing the gap limit. Testing suggests 100,000 is an optimal value, causing only a 3-second wallet freeze during setup.--cpu-threads (-t): Number of CPU threads to use (default: 0 = auto-detect physical cores)--gpu (-g): Enable GPU processing (excludes integrated/onboard GPUs). Can optionally specify GPU IDs: --gpu 0,1 or --gpu 0 1. Without IDs, all available GPUs are used--gpu-only: Use only GPU for processing (no CPU, excludes integrated/onboard GPUs). Can be combined with --gpu to specify which GPUs to useFor detailed information, use the help command:
address-artisan --help
For a complete walkthrough with all steps and details, check the Example section.
Yes, it's completely safe to use this tool. But be aware of the following:
Again, see the Example section for a complete and safe walkthrough.
While this tool is not (and cannot be) compliant with BIP44, it can be used with BIP44-compliant wallets. Here's how it works:
BIP44 standardizes 5 levels of derivation:
m / purpose' / coin_type' / account' / change / address_index
Where:
m: Master keypurpose': Purpose identifier following BIP43 (e.g., 44' for P2PKH)coin_type': Coin identifier, following SLIP44. 0' (0x80000000) for Bitcoinaccount': Account number for funds organization - greater than or equal to 0' (0x80000000)change: Like a boolean flag - 0 (0x00) for receive addresses, 1 (0x01) for change addressesaddress_index: Address indexThis tool brute-forces a path of the form:
xpub_path' / seed0 / seed1 / b / a / 0 / address_index
Where:
xpub_path': User-provided hardened derivation pathseed0/seed1: 62-bit entropy for unique key space per run - each less than 0' (0x80000000)b/a: Two derivation paths for key space expansion - each less than 0' (0x80000000)0: Constant 0 (0x00) for BIP44-compliant wallet compatibilityaddress_index: Address index within the account - less than max_depth CLI argumentBy maintaining 0 as the second-to-last derivation path, BIP44-compliant wallets will recognize the vanity address as the address_indexth receive address when using xpub_path' / seed0 / seed1 / b / a as the wallet's input path.
The following example demonstrates the complete process of generating and using a vanity address with this tool. The Sparrow wallet will be used for this demonstration.
First, a working wallet needs to be set up.
It's recommended to create a new wallet with a custom derivation path using a dedicated purpose for vanity addresses. There's no need to generate a new seed phrase or reset the hardware wallet - using a different derivation path allows keeping existing wallet funds completely separate.
Create a new wallet using either your seed phrase/private key or your hardware wallet.

m/10495330'/0'/0'
This path uses:
Note: Make sure to include the ' after each number to ensure hardened derivation.

xpub6DRyCVn7t9e3DjUphcExjExY7NMw6mC4ZqzKZT8knao5YbVZ5iNHdaj1SibbsVdyreoWqeMPrNcNv7fbwLpmY2PrEQ8ttdtsdBy6fvpUoMkThis value should be copied for the next step.

Run the tool with the xpub and desired prefix:
address-artisan --xpub xpub6DRyCVn7t9e3DjUphcExjExY7NMw6mC4ZqzKZT8knao5YbVZ5iNHdaj1SibbsVdyreoWqeMPrNcNv7fbwLpmY2PrEQ8ttdtsdBy6fvpUoMk --prefix 1TEST
The tool will output three pieces of information:
Address: 1TEST9ecYeUg31ZxLrJ7e3ScYpkyRUjSr
Path: xpub_path'/1949567566/243133792/0/175
Address index: 158473
Where:
xpub_path' represents the initial derivation path (m/10495330'/0'/0' if following the guide above)The complete derivation path for this address is m/10495330'/0'/0'/1949567566/243133792/0/175/0/158473

m/10495330'/0'/0'/1949567566/243133792/0/175



That's it! Easy, secure and awesome 😎👍
This project is inspired by and builds upon the work of:
Special thanks to: