An implementation of the BIP173 and BIP350 specs for Segwit Bech32 address format. This is a for of original that inroduces BIP350, conversion fixes and cleaner interface.
Add it to your pubspec.yaml
:
dependencies:
bitcoin_bech32_ng: any
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
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
.
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.