Search packages, repositories and app categories

Package detailsv0.2.2

bech32

Library implementing Bitcoins BIP173 (Bech32 encoding) specification in a Flutter friendly fashion.

AndroidiOSWebmacOSWindowsLinux
30-day downloads
150K
Likes
6
Pub points
160

Install package

flutter pub add bech32

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

A Flutter-compatible library that implements Bitcoin's BIP173 Bech32 encoding standard, enabling secure and efficient handling of native segwit addresses. Designed for seamless integration across all major platforms, it ensures accurate encoding and decoding of Bech32 strings used in modern Bitcoin transactions. The package is lightweight and follows the official specification closely, making it ideal for cryptocurrency applications requiring strict adherence to Bech32 formatting.

Use cases

  • Encoding Bitcoin segwit addresses
  • Decoding Bech32 strings in wallets
  • Validating address formats in crypto apps
  • Integrating with Bitcoin-based services
  • Cross-platform address handling

Key features

  • Full BIP173 compliance
  • Supports Android, iOS, Web, macOS, Windows, Linux
  • Simple API for encoding and decoding
  • Lightweight and fast
  • Robust error handling

Suitable for

  • Bitcoin wallet developers
  • Crypto app builders
  • Blockchain integrations
  • Cross-platform mobile apps
  • Security-focused applications

Considerations

  • Only handles Bech32 format, not other address types
  • Requires manual validation of context-specific rules
  • Not suitable for non-Bitcoin use cases
  • No built-in support for Bech32m (BIP350)
  • Limited to encoding/decoding operations

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

Bech32

pub package CircleCI

An implementation of the BIP173 spec for Segwit Bech32 address format.

Examples

  Segwit address = segwit.decode("bc1pw508d6qejxtdg4y5r3zarvary0c5xw7kw508d6qejxtdg4y5r3zarvary0c5xw7k7grplx");
  print(address.scriptPubKey);
  // => 5128751e76e8199196d454941c45d1b3a323f1433bd6751e76e8199196d454941c45d1b3a323f1433bd6
  print(address.version);
  // => 1

The lightning BOLT #11 spec can have longer inputs than the BIP173 spec allows. Use the positional maxLength parameter to override the validation.

  String paymentRequest = "lnbc1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdpl2pkx2ctnv5sxxmmwwd5kgetjypeh2ursdae8g6twvus8g6rfwvs8qun0dfjkxaq8rkx3yf5tcsyz3d73gafnh3cax9rn449d9p5uxz9ezhhypd0elx87sjle52x86fux2ypatgddc6k63n7erqz25le42c4u4ecky03ylcqca784w";
  Bech32Codec codec = Bech32Codec();
  Bech32 bech32 = codec.decode(
    paymentRequest,
    paymentRequest.length,
  );
  print("hrp: ${bech32.hrp}");
  // => hrp: lnbc

Exceptions

The specification defines a myriad of cases in which decoding and encoding should fail. Please make sure your code catches all the relevant exception defined in lib/exceptions.dart.

Installing

Add it to your pubspec.yaml:

dependencies:
  bech32: any

Licence overview

All files in this repository fall under the license specified in COPYING. The project is licensed as AGPL with a lesser clause. It may be used within a proprietary project, but the core library and any changes to it must be published online. Source code for this library must always remain free for everybody to access.

Thanks

Categories

Dependencies

Dependency list 1 items

Source repository

Projects using this package