Skip to content

MarinX/btc-vanity

Repository files navigation

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

Use it as library

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

Use it as a CLI tool

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)

Tests

No magic, just run

go test -v

Credits

License

This library is under the MIT License

Releases

No releases published

Packages

No packages published

Languages