Skip to content
Generate Bitcoin Vanity Address
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore
.travis.yml
LICENSE
README.md
btcvanity.go
btcvanity_test.go
config.go
generator.go
generator_test.go
go.mod
go.sum
matcher.go
matcher_test.go
wallet.go
worker.go

README.md

btc-vanity

Build Status Go Report Card GoDoc License MIT

Generate Bitcoin Vanity Address

What is 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

Length of address

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

Using library

Install

go get github.com/MarinX/btc-vanity

Example

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())
}

Tests

No magic, just run

go test -v

Credits

License

This library is under the MIT License

You can’t perform that action at this time.