#newtype #bitcoin #parser #bip21

no-std bitcoin_uri

Rust-idiomatic, compliant, flexible and performant bitcoin URI crate

1 unstable release

0.1.0 Dec 2, 2024

#49 in #newtype

Download history 89/week @ 2024-12-09 24/week @ 2024-12-16 175/week @ 2024-12-23 102/week @ 2024-12-30 124/week @ 2025-01-06 187/week @ 2025-01-13 147/week @ 2025-01-20 116/week @ 2025-01-27 166/week @ 2025-02-03 153/week @ 2025-02-10 168/week @ 2025-02-17 88/week @ 2025-02-24 144/week @ 2025-03-03 238/week @ 2025-03-10 298/week @ 2025-03-17 876/week @ 2025-03-24

1,558 downloads per month
Used in 4 crates (via payjoin)

MITNFA license

44KB
695 lines

Rust implementation of BIP21 bitcoin URIs

Rust-idiomatic, compliant, flexible and performant bitcoin URI crate.

About

Important: while lot of work went into polishing the crate it's still considered early-development!

  • Rust-idiomatic: uses strong types, standard traits and other things
  • Compliant: implements all requirements of BIP21, including protections to not forget about req-. (But see features.)
  • Flexible: enables parsing/serializing additional arguments not defined by BIP21.
  • Performant: uses zero-copy deserialization and lazy evaluation wherever possible.

Serialization and deserialization is inspired by serde with these important differences:

  • Deserialization signals if the field is known so that req- fields can be rejected.
  • Much simpler API - we don't need all the features.
  • Use of Param<'a> to enable lazy evaluation.

The crate is no_std but does require alloc.

Features

  • std enables integration with std - mainly std::error::Error.
  • non-compliant-bytes - enables use of non-compliant API that can parse non-UTF-8 URI values.

MSRV

1.63.0

License

MITNFA

Dependencies

~7.5MB
~91K SLoC