Skip to content

KarpelesLab/bech32m

Repository files navigation

GoDoc Coverage Status Build Status

bech32m

A Go package for encoding and decoding Bech32, Bech32m, and CashAddr addresses.

Features

  • Bech32 encoding/decoding (BIP-173, segwit v0)
  • Bech32m encoding/decoding (BIP-350, segwit v1+)
  • CashAddr encoding/decoding (Bitcoin Cash)
  • Segwit address encode/decode helpers
  • Zero-allocation polymod checksum using lookup tables

Install

go get github.com/KarpelesLab/bech32m

Usage

Segwit addresses

// Decode a segwit address
witver, witprog, err := bech32m.SegwitAddrDecode("bc", "bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4")

// Encode a segwit address
addr, err := bech32m.SegwitAddrEncode("bc", witver, witprog)

CashAddr addresses

// Decode a CashAddr address
vers, payload, err := bech32m.CashAddrDecode("bitcoincash:", "bitcoincash:qr6m7j9njldwwzlg9v7v53unlr4jkmx6eylep8ekg2")

// Encode a CashAddr address
addr, err := bech32m.CashAddrEncode("bitcoincash:", vers, payload)

Low-level Bech32/Bech32m

// Encode raw data with Bech32m
encoded := bech32m.Encode("hrp", data, bech32m.Bech32m)

// Decode any Bech32/Bech32m/CashAddr string
hrp, data, spec, err := bech32m.Decode(encoded)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors