__ _____ _ _ _____ _____ _ _
\ \ / / _ \ | \ | | ____|_ _| | | |
\ V / |_| | | \| | _| | | | |_| |
\_/|_/ \_\ |_|\__|_____| |_| |_| |_|
⛏️ CREATE2 Vanity Miner ⛏️
GPU-accelerated CREATE2 vanity address miner for Ethereum using Solady CREATE2 Factory
This tool uses brute force to find a salt value that, when used with the CREATE2 opcode, will deploy a smart contract to a vanity address (e.g., starting with 0x00000000).
The CREATE2 address is calculated as:
address = keccak256(0xff ++ deployer_address ++ salt ++ keccak256(init_code))[12:]
- 🚀 Highly Optimized: Direct byte comparison, pre-calculated values, zero allocations in hot loop
- 🔥 SIMD Acceleration: AVX2-optimized 4-way parallel Keccak256 (~10x faster than standard CPU)
- ⚡ Multi-core Support: Automatically uses all CPU cores with configurable goroutines
- 🎮 GPU Acceleration: OpenCL support on macOS/Linux, CUDA support for NVIDIA GPUs on Linux
- 🎯 Flexible Patterns: Search for any hex pattern (prefix matching)
- 🔑 Salt Prefix Support: Generate salts with fixed prefixes for Solady CREATE2 factory
- ⏱️ Real-time Stats: Live hash rate monitoring during mining
- 🔧 Easy Configuration: CLI arguments for all search parameters
git clone https://github.com/hadv/vaneth.git
cd vaneth
go buildFor GPU acceleration on macOS with AMD GPUs:
make build-gpuRequirements:
- macOS with OpenCL framework (built-in)
- AMD GPU (e.g., Radeon Pro 555X, 560X, 5500M, etc.)
- CGO enabled (default on macOS)
For GPU acceleration on Linux using OpenCL (supports AMD, NVIDIA, and Intel GPUs):
# Install OpenCL development libraries
# Ubuntu/Debian:
sudo apt install opencl-headers ocl-icd-opencl-dev
# For NVIDIA GPUs, also install:
sudo apt install nvidia-opencl-dev
# For AMD GPUs, install ROCm or AMDGPU-PRO drivers
# Build with OpenCL support
make build-gpuRequirements:
- OpenCL 1.2+ runtime and headers
- Compatible GPU with OpenCL drivers installed
- CGO enabled
For native CUDA acceleration on Linux with NVIDIA GPUs (recommended for NVIDIA hardware):
# Install NVIDIA CUDA Toolkit (Ubuntu/Debian)
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update
sudo apt install cuda-toolkit
# Add CUDA to PATH (add to ~/.bashrc for persistence)
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
# Verify nvcc is available
nvcc --version
# Build with CUDA support
make build-cudaRequirements:
- Linux operating system
- NVIDIA GPU with Compute Capability 5.0+ (Maxwell architecture or newer, ~2014+)
- NVIDIA CUDA Toolkit 11.0+
nvcccompiler in PATH- CGO enabled
Supported NVIDIA GPUs:
- GeForce GTX 750 Ti and newer
- GeForce GTX 900/1000/1600/2000/3000/4000 series
- Tesla K80 and newer
- Quadro M series and newer
Edit main.go and set these values:
deployerAddress := common.HexToAddress("0x18Ee4C040568238643C07e7aFd6c53efc196D26b") // Your deployer address
initCodeHashStr := "ed6d47ef8858bf77ca8c43589269de4a0242b881ab9d2f8704546ce86ab20879" // keccak256(init_code)
pattern := "0x00000000" // Pattern to search for
numCores := runtime.NumCPU() // CPU cores to use
numGoroutines := numCores * 100 // Goroutines per coreThe init code hash is the keccak256 hash of your contract's creation bytecode. You can get this from:
- Hardhat/Foundry deployment scripts
- Remix compiler output
- Or calculate it manually:
keccak256(type(YourContract).creationCode)
./vanethSearching for CREATE2 address starting with '0x00000000'...
Deployer: 0x0000000000FFe8B47B3e2130213B802212439497
Init Code Hash: 0x747dd63dfae991117debeb008f2fb0533bb59a6eee74ba0e197e21099d034c7a
Using 12 CPU cores with 9600 goroutines
Found!
Salt: 0x18ee4c040568238643c07e7afd6c53efc196d26bb3aa4a73c14310c5a4a12b1b
Address: 0x000000006e38ec9e8074ed84cbcbf4b9d8773b7e
Time elapsed: 2m51.724719347s
The Solady CREATE2 factory requires salts with a specific prefix (the caller's address). This tool supports generating salts with fixed prefixes.
The current configuration in main.go is set up for the Solady CREATE2 factory:
// Solady CREATE2 Factory Configuration
deployerAddress := common.HexToAddress("0x0000000000ffe8b47b3e2130213b802212439497") // Solady factory address
initCodeHashStr := "747dd63dfae991117debeb008f2fb0533bb59a6eee74ba0e197e21099d034c7a" // Your contract's init code hash
pattern := "0x000000" // Pattern to search for
// Salt prefix (pre-calculated outside the loop for performance)
saltPrefix := common.HexToAddress("0x18Ee4C040568238643C07e7aFd6c53efc196D26b") // Your address (caller)- First 20 bytes: Fixed prefix (your address as the caller)
- Last 12 bytes: Randomly generated
- The prefix is pre-calculated once for optimal performance
Once you find a matching salt, deploy using the Solady CREATE2 factory:
// Solady CREATE2 factory interface
interface ICreate2Factory {
function deploy(bytes32 salt, bytes memory initCode) external returns (address);
}
// Deploy your contract
ICreate2Factory factory = ICreate2Factory(0x0000000000FFe8B47B3e2130213B802212439497);
bytes memory initCode = type(YourContract).creationCode;
bytes32 salt = 0x18Ee4C040568238643C07e7aFd6c53efc196D26b000000000000000000000123; // Salt found by the tool
address deployed = factory.deploy(salt, initCode);- The Solady factory is deployed at:
0x0000000000FFe8B47B3e2130213B802212439497 - The factory automatically prepends the caller's address to the salt
- Your salt prefix must match your deploying address
- The tool optimizes by only randomizing the last 12 bytes
SIMD mode uses AVX2 instructions to compute 4 Keccak256 hashes in parallel, providing up to 10x faster mining compared to standard CPU mode.
./vaneth --simd \
-i 747dd63dfae991117debeb008f2fb0533bb59a6eee74ba0e197e21099d034c7a \
-s 0x18Ee4C040568238643C07e7aFd6c53efc196D26b \
-p 0x00000000Requirements:
- CPU with AVX2 support (Intel Haswell 2013+ or AMD Excavator 2015+)
- Automatically falls back to standard CPU mode if AVX2 is not available
GPU acceleration provides significantly faster mining compared to CPU mode.
| Flag | Description | Default |
|---|---|---|
--simd |
Enable SIMD-optimized CPU miner (AVX2) | false |
--gpu, -g |
Enable GPU mode | false |
--gpu-backend |
GPU backend: opencl, cuda, or auto |
opencl |
--gpu-device |
GPU device index | 0 |
--batch-size |
Hashes per GPU batch | 5000000 |
--list-gpus |
List available GPUs and exit | - |
# List OpenCL GPUs (macOS/Linux)
./vaneth --list-gpus
# List CUDA GPUs (Linux with NVIDIA)
./vaneth --list-gpus --gpu-backend cudaExample output (OpenCL):
Available GPUs:
[0] Intel(R) UHD Graphics 630
[1] AMD Radeon Pro 555X Compute Engine
Example output (CUDA):
Found 1 CUDA GPU device(s):
Device 0: NVIDIA GeForce RTX 3080
Compute Units (SMs): 68
Max Threads per Block: 1024
Total Memory: 10240 MB
./vaneth --gpu --gpu-device 1 \
-i 747dd63dfae991117debeb008f2fb0533bb59a6eee74ba0e197e21099d034c7a \
-s 0x18Ee4C040568238643C07e7aFd6c53efc196D26b \
-p 0x0000./vaneth --gpu --gpu-backend cuda \
-i 747dd63dfae991117debeb008f2fb0533bb59a6eee74ba0e197e21099d034c7a \
-s 0x18Ee4C040568238643C07e7aFd6c53efc196D26b \
-p 0x0000The auto backend tries CUDA first, then falls back to OpenCL:
./vaneth --gpu --gpu-backend auto \
-i 747dd63dfae991117debeb008f2fb0533bb59a6eee74ba0e197e21099d034c7a \
-s 0x18Ee4C040568238643C07e7aFd6c53efc196D26b \
-p 0x0000Searching for CREATE2 address starting with '0x0000'...
Deployer: 0x0000000000FFe8B47B3e2130213B802212439497
Salt Prefix: 0x18Ee4C040568238643C07e7aFd6c53efc196D26b
Init Code Hash: 0x747dd63dfae991117debeb008f2fb0533bb59a6eee74ba0e197e21099d034c7a
Using GPU: AMD Radeon Pro 555X Compute Engine
Batch size: 5000000 hashes per iteration
Found!
Salt: 0x18ee4c040568238643c07e7afd6c53efc196d26b000000000000000000004030
Address: 0x0000e628d423549be95a4113c4b59765b6cee09d
Time elapsed: 56.4974ms
Total hashes: 5000000
Hash rate: 88.50 MH/s
| Mode | Throughput | Speedup |
|---|---|---|
| Standard CPU (single thread) | ~1.5 MH/s | baseline |
| SIMD CPU (single thread) | ~5-6 MH/s | ~4x |
| Standard CPU (12 cores) | ~4 MH/s | baseline |
| SIMD CPU (12 cores) | ~35-40 MH/s | ~10x |
SIMD mode uses AVX2 4-way parallel Keccak256 with zero allocations
| Pattern | Standard CPU | SIMD CPU | GPU (OpenCL) |
|---|---|---|---|
0x0000 (4 hex) |
~73ms | ~7ms | ~57ms |
0x000000 (6 hex) |
~18s | ~2s | ~1.5s |
0x00000000 (8 hex) |
~5-8 min | ~30-60s | ~30-60s |
Tested on MacBook Pro with Intel i7-9750H (12 threads) and AMD Radeon Pro 555X
- Thermal Management: MacBooks may throttle under heavy GPU load. Monitor temperatures.
- Power: Keep the laptop plugged in for best GPU performance.
- Batch Size: Larger batch sizes improve throughput but increase memory usage.
- Device Selection: Use
--list-gpusto find your discrete GPU (usually index 1 on MacBooks).
// Use all available cores (default)
numCores := runtime.NumCPU()
// Limit to specific number
numCores := 8
// Use half of available cores
numCores := runtime.NumCPU() / 2// Light load
numGoroutines := numCores * 10
// Balanced (recommended)
numGoroutines := numCores * 100
// Heavy load
numGoroutines := numCores * 1000The difficulty increases exponentially with pattern length:
| Pattern Length | Approximate Attempts | Time (estimate) |
|---|---|---|
| 6 hex chars | ~16 million | seconds ~ minutes |
| 8 hex chars | ~4 billion | minutes ~ hours |
| 10 hex chars | ~1 trillion | hours ~ days |
- Pre-calculation: Pattern bytes and deployer address bytes are calculated once
- Parallel Search: Multiple goroutines generate random salts concurrently
- CREATE2 Calculation: Each salt is used to compute the resulting contract address
- Direct Comparison: Bytes are compared directly (no string operations)
- Early Exit: Stops immediately when a match is found
- ✅ Direct byte comparison (no string allocations)
- ✅ Pre-calculated pattern and deployer bytes
- ✅ Pre-calculated salt prefix (for Solady factory mode)
- ✅ Returns bytes directly from CREATE2 calculation
- ✅ Early exit on byte mismatch
- ✅ Fast PRNG (xoroshiro128+) instead of crypto/rand (~800x faster)
- ✅ Zero-allocation hashing with pre-allocated buffers
- ✅ Multi-core parallel processing
- ✅ Real-time hash rate monitoring
- ✅ All standard CPU optimizations plus:
- ✅ AVX2 4-way parallel Keccak256 (Cloudflare CIRCL library)
- ✅ Computes 4 hashes simultaneously per CPU core
- ✅ Zero allocations in hot path (0 B/op)
- ✅ ~10x faster than standard CPU mode
- ✅ OpenCL 1.2 compatible (native macOS support, Linux with drivers)
- ✅ Optimized Keccak256 kernel implementation
- ✅ Batch processing (millions of hashes per kernel launch)
- ✅ Atomic operations for early exit on match
- ✅ Efficient memory transfers between CPU and GPU
- ✅ Support for Intel, AMD, and NVIDIA GPUs
- ✅ Native NVIDIA GPU support via CUDA
- ✅ Optimized Keccak256 kernel with
__constant__memory - ✅ Loop unrolling with
#pragma unrollfor performance - ✅ Batch processing (millions of hashes per kernel launch)
- ✅ Atomic operations (
atomicCAS) for thread-safe early exit - ✅ Efficient memory management with device memory allocation
- ✅ Support for Compute Capability 5.0+ (Maxwell and newer)
Once you find a salt, use it in your Solidity contract:
contract Factory {
function deploy(bytes32 salt) public {
bytes memory bytecode = type(YourContract).creationCode;
address addr;
assembly {
addr := create2(0, add(bytecode, 0x20), mload(bytecode), salt)
}
require(addr != address(0), "Deploy failed");
}
}MIT License - see LICENSE file for details
Contributions are welcome! Feel free to open issues or submit pull requests.
Ha ĐANG (@hadv)