btcvanity

package module
v0.0.0-...-02b3931 Latest Latest
Warning

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

README

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

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

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

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

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