Generate Bitcoin Vanity Address
Vanity addresses are valid bitcoin addresses that contain human-readable messages.
For example, 1LoveBPzzD72PUXLzCkYAtGFYmK5vYNR33
is a valid address that contains the letters forming the word "Love" as the first four Base-58 letters. Vanity addresses require generating and testing billions of candidate private keys, until one derives a bitcoin address with the desired pattern...reference
The frequency of a vanity pattern (1KidsCharity) and average time-to-find on a desktop PC
Length | Pattern | Frequency | Average search time |
---|---|---|---|
1 | 1K | 1 in 58 keys | < 1 milliseconds |
2 | 1Ki | 1 in 3,364 | 50 milliseconds |
3 | 1Kid | 1 in 195,000 | < 2 seconds |
4 | 1Kids | 1 in 11 million | 1 minute |
5 | 1KidsC | 1 in 656 million | 1 hour |
6 | 1KidsCh | 1 in 38 billion | 2 days |
7 | 1KidsCha | 1 in 2.2 trillion | 3–4 months |
8 | 1KidsChar | 1 in 128 trillion | 13–18 years |
9 | 1KidsChari | 1 in 7 quadrillion | 800 years |
10 | 1KidsCharit | 1 in 400 quadrillion | 46,000 years |
11 | 1KidsCharity | 1 in 23 quintillion | 2.5 million years |
go get github.com/MarinX/btc-vanity
package main
import (
"fmt"
"github.com/MarinX/btc-vanity"
)
func main() {
// create configuration
cfg := &btcvanity.Config{
// buffered channel, more buffer, faster to find matching pattern
Buffer: 5,
// if you want to use testnet, set true
TestNet: false,
}
btc := btcvanity.New(cfg)
// find a patters eg adddress which starts with "ab"
address, err := btc.Find("ab")
if err != nil {
panic(err)
}
// print our custom public key
fmt.Printf("PUBLIC KEY\n%s\n", address.PublicKey())
// print our private key so it can be imported in most btc wallets
fmt.Printf("PRIVATE KEY\n%s\n", address.PrivateKey())
}
go get github.com/MarinX/btc-vanity/cmd/btcvanity
Usage: ./btcvanity [OPTIONS] pattern
Example: ./btcvanity Kid
-testnet
Use testnet
-threads int
How many threads you want to spawn (default 16)
No magic, just run
go test -v
This library is under the MIT License