package module
Version: v0.0.0-...-02b3931 Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Jan 13, 2020 License: MIT Imports: 5 Imported by: 0



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

go get
Use it as library
package main

import (


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 {

	// 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
Usage: ./btcvanity [OPTIONS] pattern
Example: ./btcvanity Kid
        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




This section is empty.


This section is empty.


This section is empty.


type BTCVanity

type BTCVanity struct {
	// contains filtered or unexported fields

BTCVanity library holder

func New

func New(config *Config) *BTCVanity

New creates a new BTCVanity service

func (*BTCVanity) Find

func (b *BTCVanity) Find(pattern string) (IWallet, error)

Find runs a service to find matching pattern

func (*BTCVanity) Stop

func (b *BTCVanity) Stop()

Stop stops the process

type Config

type Config struct {
	Buffer  int
	TestNet bool

Config hold configuration for package

type Generator

type Generator struct {
	// contains filtered or unexported fields

Generator hold the logic for generating bitcoin address Depending on chain configuration, it can generate main/test net versions of wallet

func (*Generator) Generate

func (g *Generator) Generate() (IWallet, error)

Generate generates bitcoin wallet interface

type IGenerator

type IGenerator interface {
	Generate() (IWallet, error)

IGenerator is interface for generator

type IWallet

type IWallet interface {
	PublicKey() string
	PrivateKey() string

IWallet is interface to our internal wallet

type Wallet

type Wallet struct {
	// contains filtered or unexported fields

Wallet is our private/public key holder

func (Wallet) PrivateKey

func (w Wallet) PrivateKey() string

PrivateKey returns private key, ready for import in most bitcoin wallets

func (Wallet) PublicKey

func (w Wallet) PublicKey() string

PublicKey returns encoded address


Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL