rust-bitcoin-unsafe-fast/base58
merge-script fe8c6455a4
Merge rust-bitcoin/rust-bitcoin#3533: base58: Close all errors
c92290278e base58: Close all errors (Tobin C. Harding)

Pull request description:

  Currently we have a bunch of public errors in the `base58` crate. Only two are returned by public functions `decode()` and `decode_check()` (`Error` and `InvalidCharacterError` respectively).

  - Close the two public errors by adding private inner errors.
  - Add getters on the public errors to get the error data.
  - Make all other errors private.
  - Call `impl_from_infallible` for _all_ error types.

  Done as part of #3261

ACKs for top commit:
  apoelstra:
    ACK c92290278eaa4b4f062928c6bc6c2984e1ab7ba6; successfully ran local tests

Tree-SHA512: e2ecef89691b41dfcc8ea3ef02c3719c45c72dbb252c76eadd97d03e32518ac7e00a2623d753de947d607ac3edf785f1ffdef8178a4f17ac3e7fd26ee01031ab
2024-10-31 18:25:36 +00:00
..
contrib Add/fix alloc features 2024-07-11 10:14:50 +10:00
src Merge rust-bitcoin/rust-bitcoin#3533: base58: Close all errors 2024-10-31 18:25:36 +00:00
CHANGELOG.md base58: Add changelog 2024-03-25 06:41:38 +11:00
Cargo.toml Remove the SliceIndex implementation from hash types 2024-10-02 10:18:45 +10:00
README.md Bump MSRV to 1.63 2024-07-27 07:24:32 +02:00

README.md

Bitcoin base58 encoding

This crate provides encoding and decoding of base58 strings as defined by the Bitcoin ecosystem including the checksum.

There are a bunch of crates on crates.io that implement base58 encoding and decoding. The more obviously named ones differ from this crate because:

  1. bitcoin-base58 is transpiled from the C++ code in Bitcoin Core as part of a large long-term transpilation project, whereas this crate is a pure Rust implementation intended to be production-ready and to provide an Rust-idiomatic API.

  2. base58 implements parsing but does not validate checksums (see base58check). It may be appropriate in cases where performance is more important than safety. Appears unmaintained.

  3. base58check Adds checksum to the base58 crate and depends on sha2 for hashing. Appears unmaintained.

This crate uses bitcoin_hashes when hashing to calculate the checksum.

Minimum Supported Rust Version (MSRV)

This library should always compile with any combination of features on Rust 1.63.0.

Licensing

The code in this project is licensed under the Creative Commons CC0 1.0 Universal license. We use the SPDX license list and SPDX IDs.