PackageTrack
Sign in Get early access

bitcoin

General purpose library for using and interoperating with Bitcoin.

0.32.102 14M downloads/mo #2547 most downloaded on crates.io rust-bitcoin/rust-bitcoin

What this package is like to depend on

Last release 1 months ago

22 Jul 2026

Release timing varies

gaps range from 8 days to 6 months

Some releases are documented

notes for 42 of 105 stable releases

4 versions withdrawn

withdrawn after publishing

11 years old

115 releases · first in 2015

11 releases in the last 12 months

see the full history below

Release timeline

115 releases · Sep 2015 to Jul 2026
2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 60 of 115
  1. 0.33.0-beta.0 01 Jan 2026 pre-release withdrawn

    Nothing published for this version

  2. 0.33.0-beta 23 Feb 2026 pre-release
    Release notes

    This series of beta releases is meant for two things:

    1. To allow testing of the upcoming bitcoin v0.33.0. It's been a long time since we released and there is a lot in this.

    2. To allow testing of the 1.0.0 RC releases of:

      • bitcoin-primitives
      • bitcoin-units
      • bitcoin-consensus-encoding

    cargo can be surprising when there is a - in the version number (see discussion on #5229).

    We do not intend on ever releasing 0.33.0. The next release will be 0.34.0-beta (excluding possible 0.33.x-beta point releases). We will remove the -beta suffix from release versions once units, primitives, and consensus_encoding v1.0.0 are done.

    For changes to our dependencies included in this release see:

    Worthy of note

    This release introduces an upper limit on the Amount type.

    • Remove Amount::MAX and replace it with the value in MAX_MONEY #3691
    • Prepare to enforce MAX_MONEY invariant #4164
    • Enforce MAX_MONEY invariant in amount types #4157
    • Use MAX_MONEY in serde regression test #3950

    The serde serialization for Psbt has changed.

    • BREAKING: Change Psbt serde implementations #4496

    Changes

    • Bump MSRV from 1.63.0 to 1.74.0 for all crates in the repo #4926
    • Deprecate unchecked amount ops #3759
    • Change parameter type used for whole bitcoin amounts #3744
    • Add Weight::to_kwu_ceil #3740
    • Remove Weight::from_wu_usize function #3738
    • Move script hash types to primitives #3734
    • units: Unify and flesh out ops impls #3728
    • units: Seal the Integer trait #3724
    • base58ck: Bump version to 0.2.0 #3717
    • Explicitly define Ord for NodeInfo #3699
    • Change Amount::MAX from u64::MAX to Amount::MAX_MONEY #3693
    • Fix psbt fuzz crash #3667
    • Update from_next_work_required to take an i64 for timespan #3660
    • Account for data pushing opcodes in is_standard_op_return #3643
    • Add p2wpkh address creation example #3642
    • Add Address::into_unchecked #3640
    • Mark checked_ functions as const #3636
    • Mark functions const in fee_rate #3627
    • Mark functions const #3608
    • Add constructor to FeeRate #3604
    • Fix bug in witness stack getters #3601
    • Split checked_div_by_weight into floor and ceiling version #3587
    • script: remove unsafe marker from slice-to-script conversions #3569
    • io: Bump version to 0.1.3 #3566
    • Re-export block::Header as BlockHeader #3562
    • Bump hex-conservative to 0.3.0 #3543
    • Re-organise the amount module #3541
    • Improve the amount module #3539
    • base58: Close all errors #3533
    • psbt: Fix bug in Subtype consensus_encode #3519
    • Explicitly re-export stuff from crates down the stack #3497
    • Expose units::amount::ParseError #3496
    • Make Amount::to_sat and SignedAmount::to_sat const #3493
    • Decode an address string based on prefix #3481
    • Replace ENABLE_RBF_NO_LOCKTIME with ENABLE_LOCKTIME_AND_RBF #3459
    • Add version three variant to transaction version #3450
    • Input weight prediction helpers for nested P2WPKH #3443
    • Clarify sequence constant name and add FINAL #3439
    • Add checked div by weight to amount #3430
    • Rename Midstate::into_parts to Midstate::to_parts since it derives Copy #3429
    • Const locktime constructors #3421
    • Fix script number overflow check for push_int #3392
    • transaction: Remove Default implementations #3386
    • Add FeeRate addition and subtraction traits #3381
    • Add Xpriv::to_xpub and improve related method names #3358
    • Support impl AsRef<[u8]> in signed_msg_hash #3357
    • Fix GetKey for sets (plus some related changes) #3356
    • Add a condition for parsing zero from string when not denominated #3346
    • Add basic miri checks #3328
    • Add coinbase associated consts #3308
    • Fix bug in ArrayVec::extend_from_slice #3272
    • Change T::from_str(s) to s.parse::<T>() in examples, docs and tests #3262
    • Add Arbitrary to Weight #3257
    • Bump units version #3248
    • Rename key field in Key to key_data #3048
    • Optimize base58 on small inputs #3002
    • Add TxIdentifier trait #2987
    • Fix Amount decimals handling #2951
    • OP_RETURN standardness check #2949
    • Support Testnet4 Network #2945
    • Remove VarInt and use ReadExt and WriteExt trait methods instead #2931
    • bip32: Add From<&'a [#u32]> for DerivationPath #2909
    • psbt: Encode keytype as a compact size unsigned integer #2906
    • Pass sigs and associated types by value #2899
    • Re-export UnprefixedHexError in the bitcoin crate root #2895
    • taproot: Split errors up #2886
    • Remove usage of blockdata from paths #2885
    • Update PushBytes::read_scriptint(x) to x.read_scriptint() #2872
    • Remove Denomination::MilliSatoshi #2870
    • Pass keys by value #2868
    • Clarify the meaning of Height & Time based locktime #2858
    • Add API for extracting the inner payload of RawNetworkMessage #2839
    • Update bitcoinconsensus version to 0.106.0+26 #2833
    • Make difficulty_float general to all networks #2816
    • Add const modifier to Magic::from_bytes #2815
    • Add an AddressData type #2808
    • Make Address:p2sh_from_hash public #2795
    • Enable getting the witness program from an address #2796
    • Enforce script size limit when hashing scripts #2794
    • Deprecate to_vec in favour of to_bytes #2768
    • Flesh out hex unit parsing API #2765
    • Bench base58 encoding and remove SmallVec to improve perf #2759
    • Add difficulty adjustment calculation #2740
    • Upgrade base64 dependency #2721
    • Some additional inspectors on Script and Witness #2646

    Upgrade notes

    • MAX_SCRIPT_ELEMENT_SIZE was removed in #2794 you may want to use MAX_REDEEM_SCRIPT_SIZE or perhaps MAX_STACK_ELEMENT_SIZE (see bitcoin/src/blockdata/constants).
    • ecdsa::Error was replaced by ecdsa::DecodeError and ecdsa::ParseSignatureError (returned by ecdsa::Signature::from_slice and from_str respectively).
    • script::read_scriptint was moved to be a method on PushBytes.
    • You can likely just remove the hashes::Hash trait import.
    • Change OutPoint::default() to OutPoint::COINBASE_PREVOUT if appropriate.
    • Change TxIn::default() to TxIn::EMPTY_COINBASE if appropriate.
    • Change to_raw_hash() to to_byte_array().
    • bitcoin::error::UnprefixedHexError moved to bitcoin::parse::UnprefixedHexError.
    Open source →
  3. 0.32.102 15 Jul 2026
    Release notes
    • Backport: Make SendCmpct idempotent #6525
    • Add consensus_encoding to block/compact-block p2p message types #6457
    • Add consensus_encoding support to types in bitcoin-primitives #6333
    • Add consensus_encoding support to core p2p message types #6443
    • Add consensus_encoding support to BIP157/158 filter message types #6444
    • Use write! in ParseNetwork and UnknownAddressType error displays #6386
    Open source →
  4. 0.32.101 24 Jun 2026
    Release notes

    Bump the MSRV to Rust 1.60.0

    Exposes the new stabilized encoding library through the optional encoding feature. Note that enabling it bumps the MSRV to 1.74.0.

    • Remove mutagen #6337
    • Use write! in ParseNetwork and UnknownAddressType error displays #6386
    • Add consensus_encoding to types present in units 1.0 #6184
    Open source →
  5. 0.32.100 27 May 2026 withdrawn
    Release notes

    This release was yanked because the MSRV bump to 1.74.0 was too aggressive for some users. See version 0.32.101 for a smaller upgrade to 1.60.0.

    Bump the MSRV to Rust 1.74.0

    Note the version number jump. We jumped to v0.32.100 when doing the MSRV bump so as to leave room for a bunch of secuity releases up to this number if needed.

    • Our primary users (BDK and LDK) are at 1.85 already well ahead of 1.74.
    • We would like to deliver the new sans-IO consensus_encoding crate in a point release.
    • The would like to later support ergonomic conversion to other 1.0 types (from bitcoin-units, and and bitcoin-primitives) without forcing the whole ecosystem to upgrade.
    • Opens the door to the possibility of doing releases and then using the semver trick.
    Open source →
  6. 0.32.11 22 Jul 2026
    Release notes
    • Backport: Make SendCmpct idempotent #6527
    Open source →
  7. 0.32.10 26 May 2026
    Release notes
    • Fix bug in LeafVerison::Future's Display output #6208
    • Manually revert VarInt range check #6182
    • Backport - p2p: Add a hash value to Inventory's Error variant #6147
    • Backport - p2p: Error on RawNetworkMessage decode if payload partly consumed #6140
    • Backport - p2p: Error on invalid FeeRate in FeeFilter decode #6142
    • Backport - Validate ASCII and preserve embedded nulls in CommandString parsing #6136
    • Remove the internals dependency #6200
    Open source →
  8. 0.32.9 05 May 2026
    Release notes
    • Backport - Fix Unknown NetworkMessage encoding #6106
    • Backport - Arbitrary #5085
    • Backport - Add CompactSize range check to deserialization #5921
    Open source →
  9. 0.32.8 06 Dec 2025
    Release notes
    • Backport - bip158: Return no match for empty query #4972
    • Remove doc_auto_cfg
    Open source →
  10. 0.32.7 04 Aug 2025
    Release notes
    • Backport - Use _u32 in FeeRate constructor instead of _unchecked #4552
    • Backport - Add support for pay to anchor outputs #4691
    • Backport - Remove non_exhaustive from Network #4658
    Open source →
  11. 0.32.6 13 May 2025
    Release notes
    • Backport - Fix is_invalid_use_of_sighash_single() incompatibility with Bitcoin Core #4122
    • Backport - Backport witness fixes #4101
    • Backport - bip32: Return error when attempting to derive past maximum depth #4434
    • Backport - Add XOnlyPublicKey support for PSBT key retrieval and improve Taproot signing #4443
    • Backport - Add methods to retrieve inner types #4450
    Open source →
  12. 0.32.5 29 Nov 2024
    Release notes
    • Backport - Re-export bech32 crate #3662
    • Backport - Add API for extracting the inner payload of RawNetworkMessage #3523
    • Backport - Fix bug in witness stack getters #3626
    • Backport - address: Add Address::into_unchecked #3655
    Open source →
  13. 0.32.4 28 Oct 2024
    Release notes
    • Bound decode methods on Read, rather than BufRead #3173
    • Backport - Some additional inspectors on Script and Witness #2646
    • Backport - Add difficulty adjustment calculation #3494
    • Backport - Add testnet 4 support #3453
    • Backport - CI: Copy main workflow from master #3418
    Open source →
  14. 0.32.3 27 Sep 2024
    Release notes
    • Backport BIP-0032 alias' without typo #3252
    Open source →
    Release notes
    • Backport BIP-32 alias' without typo #3252
    Open source →
  15. 0.32.2 08 Jun 2024
    Release notes
    • Fix a bug when parsing 256-bit numeric types #2837
    Open source →
  16. 0.32.1 29 May 2024
    Release notes

    Fix things we broke/removed from the Address API in the last release.

    • Enable getting the witness program from an address #2804
    • Make Address:p2sh_from_hash public #2806
    • Add an AddressData type #2810

    If you are looking for the address::Payload type we removed in v0.32.0 then the AddressData type might be what you are after.

    Open source →
  17. 0.32.0 24 Apr 2024
    Release notes
    • Bump MSRV to Rust 1.56.1 #2188
    • Remove "no-std" feature #2233
    • Enforce displaying Amount with trailing zeros #2604

    Things you will almost certainly hit when upgrading

    • Rename Signature field names #2338
      • sig becomes signature
      • hash_ty becomes sighash_type
    • Rename txid to compute_txid #2366
    • In hardcoded BIP-0032 derivation paths: Remove m/ prefix requirement #2451

    Crate smashing

    This release we continued our effort to split up the library into smaller crates AKA crate smashing.

    • Release new bitcoin-units crate docs
    • Release new base58ck crate docs
    • Release new bitcoin-io crate docs

    Bug fixes

    • Fix FeeRate::checked_mul_by_weight #2182
    • Use network when calculating difficulty #2168
    • Fix InputWeightPrediction::P2WPKH_MAX constant DER sig length #2213
    • Fix CJDNS marker byte check #2546
    • Add resource limit check during deserialization of Merkle block #2607

    Changes to and involving the Network type

    In release 0.31.0 we managed to annoy a lot of people by the addition of non_exhaustive to the Network type. After much discussion, and in an effort to cater to multiple camps, we did a bunch of changes this release. To sum up, "network" is ill defined and it means different things to different devs/software. Your software should probably have some custom handling of whatever "network" means to you.

    In particular consider having some type that implements AsRef<Params>, we have attempted to replace Network in much of the API (#2541).

    • Add NetworkKind #2232
    • Reduce usage of Network in the public API #2541
    • Remove Network from AddressInner #1832
    • Add consts to Params for individual networks #2396
    • Add params() method to Network #2172
    • Use KnownHrp instead of Network #2387
    • Add check to max difficulty transition threshold #2337

    Other API additions

    • Add CompressedPublicKey #2277
    • Add a consensus::deserialize_hex function #2039
    • Add Witness::p2tr_key_spend function #2097
    • Add taproot::SerializedSignature #2156
    • Add input weight predictions for p2pkh outputs #2185
    • Add Weight::from_vb_weight function function (added in #2206, renamed in #2228
    • Implement LowerHex and UpperHex for CompactTarget #2221
    • Add conversions from TXIDs to Merkle nodes #2227
    • Add transaction::effective_value() function #2230
    • Improve LockTimes and related types:
      • Improve relative locktime API #2549
      • Implement ordered::ArbitraryOrd for absolute and relative locktimes, introducing the "ordered" feature:
    • Add and use custom ArrayVec
    • Add the implementation of Display for transaction::Version #2309
    • Add functionality to serialize signatures to a writer #2392
    • Add unchecked integer operations to Amount and SignedAmount (add, sum etc.) #2436
    • Add methods p2wpkh_script_code to Script and ScriptBuf #2445
    • Improve API for signing Taproot inputs in PSBTs #2458
    • Add TapNodeHash getter method on TapTree and NodeInfo #2467
    • Add hex parsing to pow types #2514
    • Implement From<core::convert::Infallible> for errors #2516
    • Add ServiceFlags::P2P_V2 #2555

    Other API breaking changes

    • Require io::BufRead instead of io::Read in consensus decode trait #2240
    • Make Payload and AddressEncoding private #1979
    • Remove bech32 from the public API #2381
    • Make from_hex inherent for byte-like types #2491
    • Remove the FromHexStr trait #2492

    Error handling

    • Split Prevouts errors out into specific error types #2042
    • Improve error handling in the sighash module #2329
    • Improve lock time errors #2417
    • Split relative locktime error up #2433
    • Improve amount module errors #2487
    • Add the FromScriptError for handling errors in address #2497
    • Add NetworkValidationError #2508 but don't return it #2610
    • Improve leaf errors ("leaf" means not enum with nested error type) #2530
    Open source →
    Release notes
    • Bump MSRV to Rust 1.56.1 #2188
    • Remove "no-std" feature #2233
    • Enforce displaying Amount with trailing zeros #2604

    Things you will almost certainly hit when upgrading

    • Rename Signature field names #2338
      • sig becomes signature
      • hash_ty becomes sighash_type
    • Rename txid to compute_txid #2366

    Crate smashing

    This release we continued our effort to split up the library into smaller crates AKA crate smashing.

    • Release new bitcoin-units crate docs
    • Release new base58ck crate docs
    • Release new bitcoin-io crate docs

    Bug fixes

    • Fix FeeRate::checked_mul_by_weight #2182
    • Use network when calculating difficulty #2168
    • Fix InputWeightPrediction::P2WPKH_MAX constant DER sig length #2213
    • Fix CJDNS marker byte check #2546
    • Add resource limit check during deserialization of merkle block #2607
    • Allow m/ prefix in BIP-32 in derivation path strings but do not enforce it #2684

    Changes to and involving the Network type

    In release 0.31.0 we managed to annoy a lot of people by the addition of non_exhaustive to the Network type. After much discussion, and in an effort to cater to multiple camps, we did a bunch of changes this release. To sum up, "network" is ill defined and it means different things to different devs/software. Your software should probably have some custom handling of whatever "network" means to you.

    In particular consider having some type that implements AsRef<Params>, we have attempted to replace Network in much of the API (#2541).

    • Add NetworkKind #2232
    • Reduce usage of Network in the public API #2541
    • Remove Network from AddressInner #1832
    • Add consts to Params for individual networks #2396
    • Add params() method to Network #2172
    • Use KnowHrp`` instead of Network` #2387
    • Add check to max difficulty transition threshold #2337

    Other API additions

    • Add CompressedPublicKey #2277
    • Add a consensus::deserialize_hex function #2039
    • Add Witness::p2tr_key_spend function #2097
    • Add taproot::SerializedSignature #2156
    • Add input weight predictions for p2pkh outputs #2185
    • Add Weight::from_vb_weight function function (added in #2206, renamed in #2228
    • Implement LowerHex and UpperHex for CompactTarget #2221
    • Add conversions from TXIDs to merkle nodes #2227
    • Add transaction::effective_value() function #2230
    • Improve LockTimes and related types:
      • Improve relative locktime API #2549
      • Implement ordered::ArbitraryOrd for absolute and relative locktimes, introducing the "ordered" feature:
    • Add and use custom ArrayVec
    • Add the implementation of Display for transaction::Version #2309
    • Add functionality to serialize signatures to a writer #2392
    • Add unchecked integer operations to Amount and SignedAmount (add, sum etc.) #2436
    • Add methods p2wpkh_script_code to Script and ScriptBuf #2445
    • Improve API for signing Taproot inputs in PSBTs #2458
    • Add TapNodeHash getter method on TapTree and NodeInfo #2467
    • Add hex parsing to pow types #2514
    • Implement From<core::convert::Infallible> for errors #2516
    • Add ServiceFlags::P2P_V2 #2555

    Other API breaking changes

    • Require io::BufRead instead of io::Read in consensus decode trait #2240
    • Make Payload and AddressEncoding private #1979
    • Remove bech32 from the public API #2381
    • Make from_hex inherent for byte-like types #2491
    • Remove the FromHexStr trait #2492

    Error handling

    • Split Prevouts errors out into specific error types #2042
    • Improve error handling in the sighash module #2329
    • Improve lock time errors #2417
    • Split relative locktime error up #2433
    • Improve amount module errors #2487
    • Add the FromScriptError for handling errors in address #2497
    • Add NetworkValidationError #2508 but don't return it #2610
    • Improve leaf errors ("leaf" means not enum with nested error type) #2530
    Open source →
  18. 0.32.0-rc1 05 Apr 2024 pre-release

    Nothing published for this version

  19. 0.31.3 03 Apr 2026

    Nothing published for this version

  20. 0.31.2 02 Apr 2024

    Nothing published for this version

  21. 0.31.1 09 Jan 2024
    Release notes
    • Fix bug in FeeRate::checked_mul_by_weight #2128
    • Add BIP-0032 types remove in 0.31 back in and mark as deprecated #2258
    Open source →
    Release notes
    • Bump MSRV to Rust 1.48.0 #1729

    • Add new example code for signature verification #1776

    • Manually implement Debug on Witness #1913

    • Use new bech32 API #1951 and #2117

    • Upgrade to secp256k1 v0.28.0 #2098

    • Upgrade to base64 v0.21.3 #2032

    • API Improvements:

      • Add kilo weight unit conversion #1735
      • Add ChainHash::from_genesis_block_hash#1753
      • Add implementation of PartialEq trait for Address<NetworkUnchecked> #1757
      • Add unsafe address type conversions #1765
      • Add Inventory::network_hash() method #515
      • Implement serde::Serialize for Address #1785
      • Expose valid (min, max) difficulty transition thresholds #1820
      • Add functionality to generate PrivateKey #1837
      • Allow parsing sub-sat denominations with decimal points #1768
      • Fix associated constants of InputWeightPrediction #1835
      • Add FeeRate::checked_mul_by_weight #1864
      • Use Amount type for the TxOut value field #1811
      • Add support for alloc-free parse errors #1297
      • Add Amount::from_int_btc #1870
      • Make ckd_priv function private and impl AsRef for ChildNumber #1882
      • Use hex_lit::hex in benches (also backported to v0.30.1) #1941
      • Add a verify function to PublicKey #1911
      • Add method Script::count_sigops #1890
      • Implement From<PublicKey> for XOnlyPublicKey #1901
      • Implement From<secp256k1::PublicKey> for bitcoin::PublicKey #1949
      • Add DerivationPath::to_u32_vec #1946
      • Use Target as type for pow_limit #2107
      • Add Witness::p2wpkh constructor #2084
      • Make Instruction be able to read the script number #2081
      • Add Script::is_mulitsig #2078
      • Count sigops for Transaction #2073
      • Add Psbt fee checks #2064
      • Add version bytes consts #2020
      • Add transaction::Version data type #2006
    • Moves, Removes, and renames:

      • Move witness types to the script module #1846
      • Remove reexport of psbt::Prevouts #1872
      • Rename Transaction::is_coin_base to is_coinbase #1796
      • Rename TaprootSpendInfo::as_script_map to script_map #1897
      • Rename Script::empty to Script::new #1925
      • Rename PartiallySignedTransaction to Psbt #1938
      • Rename XpubIdenifier to XKeyIdentifier #2021
      • Rename ExtendedPubKey to Xpub #2019
      • Rename ExtendedPrivKey to Xpriv #2019
      • Remove _v0 from various function names (eg, new_v0_p2wpkh) #1994
      • Remove SighashCache::segwit_signature_hash (add p2wpkh_signiture_hash and p2wsh_signature_hash) #1995
      • Reexport all the hash types from the crate root #1998
      • Rename opcodes::All to Opcode #1995
      • Removed TxOut::default(), the same logic now exists as TxOut::NULL #1811 and #1838
    • Error handling improvements:

      • Improve hashes::Error #1873
      • Add ValidationError #1874
      • Improve crypto::taproot error type #1895
      • Audit error types code base wide #2101
    Open source →
  22. 0.31.0 28 Oct 2023
    Release notes
    • Bump MSRV to Rust 1.48.0 #1729

    • Add new example code for signature verification #1776

    • Manually implement Debug on Witness #1913

    • Use new bech32 API #1951 and #2117

    • Upgrade to secp256k1 v0.28.0 #2098

    • Upgrade to base64 v0.21.3 #2032

    • API Improvements:

      • Add kilo weight unit conversion #1735
      • Add ChainHash::from_genesis_block_hash#1753
      • Add implementation of PartialEq trait for Address<NetworkUnchecked> #1757
      • Add unsafe address type conversions #1765
      • Add Inventory::network_hash() method #515
      • Implement serde::Serialize for Address #1785
      • Expose valid (min, max) difficulty transition thresholds #1820
      • Add functionality to generate PrivateKey #1837
      • Allow parsing sub-sat denominations with decimal points #1768
      • Fix associated constants of InputWeightPrediction #1835
      • Add FeeRate::checked_mul_by_weight #1864
      • Use Amount type for the TxOut value field #1811
      • Add support for alloc-free parse errors #1297
      • Add Amount::from_int_btc #1870
      • Make ckd_priv function private and impl AsRef for ChildNumber #1882
      • Use hex_lit::hex in benches (also backported to v0.30.1) #1941
      • Add a verify function to PublicKey #1911
      • Add method Script::count_sigops #1890
      • Implement From<PublicKey> for XOnlyPublicKey #1901
      • Implement From<secp256k1::PublicKey> for bitcoin::PublicKey #1949
      • Add DerivationPath::to_u32_vec #1946
      • Use Target as type for pow_limit #2107
      • Add Witness::p2wpkh constructor #2084
      • Make Instruction be able to read the script number #2081
      • Add Script::is_mulitsig #2078
      • Count sigops for Transaction #2073
      • Add Psbt fee checks #2064
      • Add version bytes consts #2020
      • Add transaction::Version data type #2006
    • Moves, Removes, and renames:

      • Move witness types to the script module #1846
      • Remove reexport of psbt::Prevouts #1872
      • Rename Transaction::is_coin_base to is_coinbase #1796
      • Rename TaprootSpendInfo::as_script_map to script_map #1897
      • Rename Script::empty to Script::new #1925
      • Rename PartiallySignedTransaction to Psbt #1938
      • Rename XpubIdentifier to XKeyIdentifier #2021
      • Rename ExtendedPubKey to Xpub #2019
      • Rename ExtendedPrivKey to Xpriv #2019
      • Remove _v0 from various function names (eg, new_v0_p2wpkh) #1994
      • Remove SighashCache::segwit_signature_hash (add p2wpkh_signature_hash and p2wsh_signature_hash) #1995
      • Reexport all the hash types from the crate root #1998
      • Rename opcodes::All to Opcode #1995
      • Removed TxOut::default(), the same logic now exists as TxOut::NULL #1811 and #1838
    • Error handling improvements:

      • Improve hashes::Error #1873
      • Add ValidationError #1874
      • Improve crypto::taproot error type #1895
      • Audit error types code base wide #2101
    Open source →
  23. 0.31.0-rc2 19 Oct 2023 pre-release

    Nothing published for this version

  24. 0.31.0-rc1 14 Oct 2023 pre-release

    Nothing published for this version

  25. 0.30.3 26 Mar 2026

    Nothing published for this version

  26. 0.30.2 16 Nov 2023
    Release notes
    • Expose valid (min, max) difficulty transition thresholds [#1820](Expose valid (min, max) difficulty transition thresholds)
    Open source →
  27. 0.30.1 17 Jul 2023
    Release notes
    Open source →
  28. 0.30.0 22 Mar 2023

    Nothing published for this version

  29. 0.29.2 26 Oct 2022

    Nothing published for this version

  30. 0.29.1 12 Aug 2022

    Nothing published for this version

  31. 0.29.0 08 Aug 2022 withdrawn

    Nothing published for this version

  32. 0.28.2 02 Nov 2022
    Release notes

    Backported a set of changes from 0.29 which may cause some specific transactions and/or blocks to fail to deserialize. No known such transactions exist on any public blockchain.

    Open source →
  33. 0.28.1 04 May 2022

    Nothing published for this version

  34. 0.28.0 20 Apr 2022

    Nothing published for this version

  35. 0.28.0-rc.2 28 Mar 2022 pre-release

    Nothing published for this version

  36. 0.28.0-rc.1 18 Jan 2022 pre-release

    Nothing published for this version

  37. 0.27.1 20 Sep 2021

    Nothing published for this version

  38. 0.27.0 21 Jul 2021

    Nothing published for this version

  39. 0.26.2 08 Jun 2021
    Release notes

    The previous release changed the behavior of Display for ChildNumber, assuming that any correct usage would not be affected. Issue 608 goes into the details of why this isn't the case and how we broke both rust-miniscript and BDK.

    Open source →
  40. 0.26.1 07 Jun 2021 withdrawn
    Release notes Open source →
  41. 0.26.0 14 Jan 2021
    Release notes Open source →
  42. 0.25.2 26 Oct 2020

    Nothing published for this version

  43. 0.25.1 20 Oct 2020
    Release notes
    • Remove an incorrect debug_assert that can cause a panic when running using the dev profile.
    Open source →
  44. 0.25.0 11 Sep 2020
    Release notes
    • Bump MSRV to 1.29.0
    Open source →
  45. 0.24.0 10 Sep 2020
    Release notes
    Open source →
  46. 0.23.0 09 Jan 2020
    Release notes
    • Update secp256k1 dependency to 0.17.1.
    • Update bitcoinconsensus dependency to 0.19.0-1.
    • Update bech32 dependency to 0.7.2.
    Open source →
  47. 0.22.0 07 Jan 2020
    Release notes
    • Add ServiceFlags type.
    • Add NetworkMessage::command.
    • Add key::Error.
    • Add newtypes for specific hashes:
      • Txid
      • Wtxid
      • BlockHash
      • SigHash
      • PubkeyHash
      • ScriptHash
      • WPubkeyHash
      • WScriptHash
      • TxMerkleNode
      • WitnessMerkleNode
      • WitnessCommitment
      • XpubIdentifier
      • FilterHash
    • Refactor CommandString.
    • Refactor Reject message.
    • Rename RejectReason enum variants.
    • Refactor encode::Error.
    • Implement Default for TxIn.
    • Implement std::hash::Hash for Inventory.
    • Implement Copy for InvType enum.
    • Use psbt::Error in PartiallySignedTransaction::from_unsigned_tx.
    • Drop message decode max length to 4_000_000.
    • Drop hex and byteorder dependencies.
    Open source →
  48. 0.21.0 03 Oct 2019
    Release notes
    Open source →
  49. 0.20.0 23 Aug 2019
    Release notes
    • Update secp256k1 0.15 and bitcoinconsensus 0.17
    Open source →
  50. 0.19.2 20 Aug 2019

    Nothing published for this version

  51. 0.19.1 16 Aug 2019

    Nothing published for this version

  52. 0.19.0 16 Aug 2019
    Release notes
    • Add Amount and SignedAmount types.
    • Add BIP-0158 support with BlockFilter and related types.
    • Add util::misc::signed_msg_hash() for signing messages.
    • Add MerkleBlock and PartialMerkleTree types.
    • bip32: Support serde serialization for types and add some utility methods:
      • ChildNumber::increment
      • DerivationPath::children_from
      • DerivationPath::normal_children
      • DerivationPath::hardened_children
    • Add blockdata::script::Builder::push_verify to verify-ify an opcode.
    • Add sendheaders network message.
    • Add OutPoint::new() method and JSON-serialize as <txid>:<vout>.
    • Refactor Address type:
      • Now supports segwit addresses with version >0.
      • Add Address::from_script constructor.
      • Add Address::address_type inspector.
      • Parsing now returns an address::Error instead of encode::Error.
      • Removed bitcoin_bech32 dependency for bech32 payloads.
    • bip143: Rename witness_script to script_code
    • Rename BlockHeader::spv_validate to validate_pow
    • Rename OP_NOP2 and OP_NOP3 to OP_CLTV and OP_CSV
    • psbt: Use BTreeMap instead of HashMap to ensure serialization roundtrips.
    • Drop Decimal type.
    • Drop LoneHeaders type.
    • Replace strason dependency with (optional) serde_json.
    • Export the bitcoin_hashes and secp256k1 dependent crates.
    • Updated bitcoin_hashes dependency to v0.7.
    • Removed rand and serde_test dependencies.
    • Internal improvements to consensus encoding logic.
    Open source →
    Release notes
    • Add Amount and SignedAmount types.
    • Add BIP-158 support with BlockFilter and related types.
    • Add util::misc::signed_msg_hash() for signing messages.
    • Add MerkleBlock and PartialMerkleTree types.
    • bip32: Support serde serializaton for types and add some utility methods:
      • ChildNumber::increment
      • DerivationPath::children_from
      • DerivationPath::normal_children
      • DerivationPath::hardened_children
    • Add blockdata::script::Builder::push_verify to verify-ify an opcode.
    • Add sendheaders network message.
    • Add OutPoint::new() method and JSON-serialize as <txid>:<vout>.
    • Refactor Address type:
      • Now supports segwit addresses with version >0.
      • Add Address::from_script constructor.
      • Add Address::address_type inspector.
      • Parsing now returns an address::Error instead of encode::Error.
      • Removed bitcoin_bech32 dependency for bech32 payloads.
    • bip143: Rename witness_script to script_code
    • Rename BlockHeader::spv_validate to validate_pow
    • Rename OP_NOP2 and OP_NOP3 to OP_CLTV and OP_CSV
    • psbt: Use BTreeMap instead of HashMap to ensure serialization roundtrips.
    • Drop Decimal type.
    • Drop LoneHeaders type.
    • Replace strason dependency with (optional) serde_json.
    • Export the bitcoin_hashes and secp256k1 dependent crates.
    • Updated bitcoin_hashes dependency to v0.7.
    • Removed rand and serde_test dependencies.
    • Internal improvements to consensus encoding logic.
    Open source →
  53. 0.18.2 04 Sep 2019

    Nothing published for this version

  54. 0.18.1 04 Sep 2019

    Nothing published for this version

  55. 0.18.0 22 Mar 2019
    Release notes
    • Update bitcoin-bech32 version to 0.9
    • add to_bytes method for util::key types
    • add serde impls for util::key types
    • contracthash: minor cleanups, use util::key types instead of secp256k1 types
    Open source →
  56. 0.17.1 04 Mar 2019
    Release notes
    • Add some trait impls to PublicKey for miniscript interoperability
    Open source →
  57. 0.17.0 01 Mar 2019
    Release notes
    Open source →
  58. 0.16.0 15 Jan 2019
    Release notes
    • Reorganize opcode types to eliminate unsafe code
    • Un-expose some macros that were unintentionally exported
    • Update rust-secp256k1 dependency to 0.12
    • Remove util::iter::Pair type which does not belong in this library
    • Minor bugfixes and optimizations
    Open source →
  59. 0.15.1 08 Nov 2018
    Release notes Open source →
  60. 0.15.0 07 Nov 2018
    Release notes
    • Significant API overhaul:
      • Remove nu_select macro and low-level networking support
      • Move network::consensus_params to consensus::params
      • Move many other things into consensus::params
      • Move BitcoinHash from network::serialize to util::hash; remove impl for Vec<u8>
      • Rename/restructure error types
      • Rename Consensus{De,En}coder to consensus::{De,En}coder
      • Replace Raw{De,En}coder with blanket impls of consensus::{De,En}coder on io::Read and io::Write
      • make serialize and serialize_hex infallible
    • Make 0-input transaction de/serialization always use segwit
    • Implement FromStr and Display for many more types
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive