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 2026Releases
latest 60 of 115-
0.33.0-beta.001 Jan 2026 pre-release withdrawnNothing published for this version
-
0.33.0-beta23 Feb 2026 pre-releaseRelease notes
Open source →This series of beta releases is meant for two things:
-
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. -
To allow testing of the
1.0.0RC releases of:bitcoin-primitivesbitcoin-unitsbitcoin-consensus-encoding
cargocan 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 be0.34.0-beta(excluding possible0.33.x-betapoint releases). We will remove the-betasuffix from release versions onceunits,primitives, andconsensus_encodingv1.0.0are done.For changes to our dependencies included in this release see:
bitcoin-primitives: 0.102: changelogbitcoin-units 0.3: changelogbitcoin-consensus-encoding 0.1changelogbitcoin_hashes 0.20: changelogbase58ck 0.4: changelogbitcoin-io 0.5: changeloghex-conservative 1.0.0: changeloghex-conservative 0.3: changelog
Worthy of note
This release introduces an upper limit on the
Amounttype.- Remove
Amount::MAXand replace it with the value inMAX_MONEY#3691 - Prepare to enforce
MAX_MONEYinvariant #4164 - Enforce
MAX_MONEYinvariant in amount types #4157 - Use
MAX_MONEYin serde regression test #3950
The
serdeserialization forPsbthas changed.- BREAKING: Change
Psbtserde implementations #4496
Changes
- Bump MSRV from 1.63.0 to 1.74.0 for all crates in the repo #4926
- Deprecate unchecked
amountops #3759 - Change parameter type used for whole bitcoin amounts #3744
- Add
Weight::to_kwu_ceil#3740 - Remove
Weight::from_wu_usizefunction #3738 - Move script hash types to
primitives#3734 - units: Unify and flesh out ops impls #3728
- units: Seal the
Integertrait #3724 - base58ck: Bump version to
0.2.0#3717 - Explicitly define
OrdforNodeInfo#3699 - Change
Amount::MAXfromu64::MAXtoAmount::MAX_MONEY#3693 - Fix psbt fuzz crash #3667
- Update
from_next_work_requiredto take ani64for 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_weightinto floor and ceiling version #3587 - script: remove
unsafemarker from slice-to-script conversions #3569 - io: Bump version to
0.1.3#3566 - Re-export
block::HeaderasBlockHeader#3562 - Bump
hex-conservativeto0.3.0#3543 - Re-organise the
amountmodule #3541 - Improve the
amountmodule #3539 - base58: Close all errors #3533
- psbt: Fix bug in
Subtypeconsensus_encode #3519 - Explicitly re-export stuff from crates down the stack #3497
- Expose
units::amount::ParseError#3496 - Make
Amount::to_sat and SignedAmount::to_satconst #3493 - Decode an address string based on prefix #3481
- Replace
ENABLE_RBF_NO_LOCKTIMEwithENABLE_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_partstoMidstate::to_partssince it derivesCopy#3429 - Const locktime constructors #3421
- Fix script number overflow check for
push_int#3392 - transaction: Remove
Defaultimplementations #3386 - Add
FeeRateaddition and subtraction traits #3381 - Add
Xpriv::to_xpuband improve related method names #3358 - Support
impl AsRef<[u8]>insigned_msg_hash#3357 - Fix
GetKeyfor sets (plus some related changes) #3356 - Add a condition for parsing zero from string when not denominated #3346
- Add basic
mirichecks #3328 - Add coinbase associated consts #3308
- Fix bug in
ArrayVec::extend_from_slice#3272 - Change
T::from_str(s)tos.parse::<T>()in examples, docs and tests #3262 - Add
ArbitrarytoWeight#3257 - Bump
unitsversion #3248 - Rename key field in Key to key_data #3048
- Optimize
base58on small inputs #3002 - Add
TxIdentifiertrait #2987 - Fix
Amountdecimals handling #2951 OP_RETURNstandardness check #2949- Support Testnet4 Network #2945
- Remove
VarIntand useReadExtandWriteExttrait methods instead #2931 - bip32: Add
From<&'a [#u32]>forDerivationPath#2909 - psbt: Encode keytype as a compact size unsigned integer #2906
- Pass sigs and associated types by value #2899
- Re-export
UnprefixedHexErrorin the bitcoin crate root #2895 - taproot: Split errors up #2886
- Remove usage of
blockdatafrom paths #2885 - Update
PushBytes::read_scriptint(x)tox.read_scriptint()#2872 - Remove
Denomination::MilliSatoshi#2870 - Pass keys by value #2868
- Clarify the meaning of
Height&Timebased locktime #2858 - Add API for extracting the inner payload of
RawNetworkMessage#2839 - Update
bitcoinconsensusversion to0.106.0+26#2833 - Make
difficulty_floatgeneral to all networks #2816 - Add const modifier to
Magic::from_bytes#2815 - Add an
AddressDatatype #2808 - Make
Address:p2sh_from_hashpublic #2795 - Enable getting the witness program from an address #2796
- Enforce script size limit when hashing scripts #2794
- Deprecate
to_vecin favour ofto_bytes#2768 - Flesh out hex unit parsing API #2765
- Bench
base58encoding and removeSmallVecto improve perf #2759 - Add difficulty adjustment calculation #2740
- Upgrade
base64dependency #2721 - Some additional inspectors on
ScriptandWitness#2646
Upgrade notes
MAX_SCRIPT_ELEMENT_SIZEwas removed in #2794 you may want to useMAX_REDEEM_SCRIPT_SIZEor perhapsMAX_STACK_ELEMENT_SIZE(seebitcoin/src/blockdata/constants).ecdsa::Errorwas replaced byecdsa::DecodeErrorandecdsa::ParseSignatureError(returned byecdsa::Signature::from_sliceandfrom_strrespectively).script::read_scriptintwas moved to be a method onPushBytes.- You can likely just remove the
hashes::Hashtrait import. - Change
OutPoint::default()toOutPoint::COINBASE_PREVOUTif appropriate. - Change
TxIn::default()toTxIn::EMPTY_COINBASEif appropriate. - Change
to_raw_hash()toto_byte_array(). bitcoin::error::UnprefixedHexErrormoved tobitcoin::parse::UnprefixedHexError.
-
-
0.32.10215 Jul 2026Release notes
Open source →- Backport: Make
SendCmpctidempotent #6525 - Add
consensus_encodingto block/compact-block p2p message types #6457 - Add
consensus_encodingsupport to types inbitcoin-primitives#6333 - Add
consensus_encodingsupport to core p2p message types #6443 - Add
consensus_encodingsupport to BIP157/158 filter message types #6444 - Use
write!inParseNetworkandUnknownAddressTypeerror displays #6386
- Backport: Make
-
0.32.10124 Jun 2026Release notes
Open source →Bump the MSRV to Rust 1.60.0
Exposes the new stabilized encoding library through the optional
encodingfeature. Note that enabling it bumps the MSRV to 1.74.0. -
0.32.10027 May 2026 withdrawnRelease notes
Open source →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.100when 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_encodingcrate in a point release. - The would like to later support ergonomic conversion to other 1.0 types (from
bitcoin-units, and andbitcoin-primitives) without forcing the whole ecosystem to upgrade. - Opens the door to the possibility of doing releases and then using the semver trick.
- Our primary users (BDK and LDK) are at 1.85 already well ahead of
-
0.32.1122 Jul 2026 -
0.32.1026 May 2026Release notes
Open source →- Fix bug in
LeafVerison::Future'sDisplayoutput #6208 - Manually revert
VarIntrange check #6182 - Backport - p2p: Add a hash value to
Inventory'sErrorvariant #6147 - Backport - p2p: Error on
RawNetworkMessagedecode if payload partly consumed #6140 - Backport - p2p: Error on invalid
FeeRateinFeeFilterdecode #6142 - Backport - Validate ASCII and preserve embedded nulls in
CommandStringparsing #6136 - Remove the
internalsdependency #6200
- Fix bug in
-
0.32.905 May 2026 -
0.32.806 Dec 2025Release notes
Open source →- Backport - bip158: Return no match for empty query #4972
- Remove
doc_auto_cfg
-
0.32.704 Aug 2025 -
0.32.613 May 2025Release notes
Open source →- 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
XOnlyPublicKeysupport for PSBT key retrieval and improve Taproot signing #4443 - Backport - Add methods to retrieve inner types #4450
- Backport - Fix
-
0.32.529 Nov 2024 -
0.32.428 Oct 2024 -
0.32.327 Sep 2024 -
0.32.208 Jun 2024 -
0.32.129 May 2024Release notes
Open source →Fix things we broke/removed from the
AddressAPI in the last release.- Enable getting the witness program from an address #2804
- Make
Address:p2sh_from_hashpublic #2806 - Add an
AddressDatatype #2810
If you are looking for the
address::Payloadtype we removed inv0.32.0then theAddressDatatype might be what you are after. -
0.32.024 Apr 2024Release notes
Open source →- Bump MSRV to Rust 1.56.1 #2188
- Remove "no-std" feature #2233
- Enforce displaying
Amountwith trailing zeros #2604
Things you will almost certainly hit when upgrading
- Rename
Signaturefield names #2338sigbecomessignaturehash_tybecomessighash_type
- Rename
txidtocompute_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-unitscrate docs - Release new
base58ckcrate docs - Release new
bitcoin-iocrate docs
Bug fixes
- Fix
FeeRate::checked_mul_by_weight#2182 - Use network when calculating difficulty #2168
- Fix
InputWeightPrediction::P2WPKH_MAXconstant 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
NetworktypeIn release 0.31.0 we managed to annoy a lot of people by the addition of
non_exhaustiveto theNetworktype. 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 replaceNetworkin much of the API (#2541).- Add
NetworkKind#2232 - Reduce usage of
Networkin the public API #2541 - Remove
NetworkfromAddressInner#1832 - Add consts to
Paramsfor individual networks #2396 - Add
params()method toNetwork#2172 - Use
KnownHrpinstead ofNetwork#2387 - Add check to max difficulty transition threshold #2337
Other API additions
- Add
CompressedPublicKey#2277 - Add a
consensus::deserialize_hexfunction #2039 - Add
Witness::p2tr_key_spendfunction #2097 - Add
taproot::SerializedSignature#2156 - Add input weight predictions for p2pkh outputs #2185
- Add
Weight::from_vb_weight functionfunction (added in #2206, renamed in #2228 - Implement
LowerHexandUpperHexforCompactTarget#2221 - Add conversions from TXIDs to Merkle nodes #2227
- Add
transaction::effective_value()function #2230 - Improve
LockTimes and related types: - Add and use custom
ArrayVec - Add the implementation of
Displayfortransaction::Version#2309 - Add functionality to serialize signatures to a writer #2392
- Add unchecked integer operations to
AmountandSignedAmount(add, sum etc.) #2436 - Add methods
p2wpkh_script_codetoScriptandScriptBuf#2445 - Improve API for signing Taproot inputs in PSBTs #2458
- Add
TapNodeHashgetter method onTapTreeandNodeInfo#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::BufReadinstead ofio::Readin consensus decode trait #2240 - Make
PayloadandAddressEncodingprivate #1979 - Remove
bech32from the public API #2381 - Make from_hex inherent for byte-like types #2491
- Remove the FromHexStr trait #2492
Error handling
- Split
Prevoutserrors out into specific error types #2042 - Improve error handling in the
sighashmodule #2329 - Improve lock time errors #2417
- Split relative locktime error up #2433
- Improve
amountmodule errors #2487 - Add the
FromScriptErrorfor 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
Release notes
Open source →- Bump MSRV to Rust 1.56.1 #2188
- Remove "no-std" feature #2233
- Enforce displaying
Amountwith trailing zeros #2604
Things you will almost certainly hit when upgrading
- Rename
Signaturefield names #2338sigbecomessignaturehash_tybecomessighash_type
- Rename
txidtocompute_txid#2366
Crate smashing
This release we continued our effort to split up the library into smaller crates AKA crate smashing.
- Release new
bitcoin-unitscrate docs - Release new
base58ckcrate docs - Release new
bitcoin-iocrate docs
Bug fixes
- Fix
FeeRate::checked_mul_by_weight#2182 - Use network when calculating difficulty #2168
- Fix
InputWeightPrediction::P2WPKH_MAXconstant 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
NetworktypeIn release 0.31.0 we managed to annoy a lot of people by the addition of
non_exhaustiveto theNetworktype. 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 replaceNetworkin much of the API (#2541).- Add
NetworkKind#2232 - Reduce usage of
Networkin the public API #2541 - Remove
NetworkfromAddressInner#1832 - Add consts to
Paramsfor individual networks #2396 - Add
params()method toNetwork#2172 - Use
KnowHrp`` instead ofNetwork` #2387 - Add check to max difficulty transition threshold #2337
Other API additions
- Add
CompressedPublicKey#2277 - Add a
consensus::deserialize_hexfunction #2039 - Add
Witness::p2tr_key_spendfunction #2097 - Add
taproot::SerializedSignature#2156 - Add input weight predictions for p2pkh outputs #2185
- Add
Weight::from_vb_weight functionfunction (added in #2206, renamed in #2228 - Implement
LowerHexandUpperHexforCompactTarget#2221 - Add conversions from TXIDs to merkle nodes #2227
- Add
transaction::effective_value()function #2230 - Improve
LockTimes and related types: - Add and use custom
ArrayVec - Add the implementation of
Displayfortransaction::Version#2309 - Add functionality to serialize signatures to a writer #2392
- Add unchecked integer operations to
AmountandSignedAmount(add, sum etc.) #2436 - Add methods
p2wpkh_script_codetoScriptandScriptBuf#2445 - Improve API for signing Taproot inputs in PSBTs #2458
- Add
TapNodeHashgetter method onTapTreeandNodeInfo#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::BufReadinstead ofio::Readin consensus decode trait #2240 - Make
PayloadandAddressEncodingprivate #1979 - Remove
bech32from the public API #2381 - Make from_hex inherent for byte-like types #2491
- Remove the FromHexStr trait #2492
Error handling
- Split
Prevoutserrors out into specific error types #2042 - Improve error handling in the
sighashmodule #2329 - Improve lock time errors #2417
- Split relative locktime error up #2433
- Improve
amountmodule errors #2487 - Add the
FromScriptErrorfor 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
-
0.32.0-rc105 Apr 2024 pre-releaseNothing published for this version
-
0.31.303 Apr 2026Nothing published for this version
-
0.31.202 Apr 2024Nothing published for this version
-
0.31.109 Jan 2024Release notes
Open source →-
Bump MSRV to Rust 1.48.0 #1729
-
Add new example code for signature verification #1776
-
Manually implement
DebugonWitness#1913 -
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
PartialEqtrait forAddress<NetworkUnchecked>#1757 - Add unsafe address type conversions #1765
- Add
Inventory::network_hash()method #515 - Implement
serde::SerializeforAddress#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
Amounttype for theTxOutvalue field #1811 - Add support for alloc-free parse errors #1297
- Add
Amount::from_int_btc#1870 - Make
ckd_privfunction private and implAsRefforChildNumber#1882 - Use
hex_lit::hexin 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
Targetas type forpow_limit#2107 - Add
Witness::p2wpkhconstructor #2084 - Make
Instructionbe able to read the script number #2081 - Add
Script::is_mulitsig#2078 - Count sigops for
Transaction#2073 - Add
Psbtfee checks #2064 - Add version bytes consts #2020
- Add
transaction::Versiondata type #2006
-
Moves, Removes, and renames:
- Move witness types to the script module #1846
- Remove reexport of
psbt::Prevouts#1872 - Rename
Transaction::is_coin_basetois_coinbase#1796 - Rename
TaprootSpendInfo::as_script_maptoscript_map#1897 - Rename
Script::emptytoScript::new#1925 - Rename
PartiallySignedTransactiontoPsbt#1938 - Rename
XpubIdenifiertoXKeyIdentifier#2021 - Rename
ExtendedPubKeytoXpub#2019 - Rename
ExtendedPrivKeytoXpriv#2019 - Remove
_v0from various function names (eg,new_v0_p2wpkh) #1994 - Remove
SighashCache::segwit_signature_hash(addp2wpkh_signiture_hashandp2wsh_signature_hash) #1995 - Reexport all the hash types from the crate root #1998
- Rename
opcodes::AlltoOpcode#1995 - Removed
TxOut::default(), the same logic now exists asTxOut::NULL#1811 and #1838
-
Error handling improvements:
-
-
0.31.028 Oct 2023Release notes
Open source →-
Bump MSRV to Rust 1.48.0 #1729
-
Add new example code for signature verification #1776
-
Manually implement
DebugonWitness#1913 -
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
PartialEqtrait forAddress<NetworkUnchecked>#1757 - Add unsafe address type conversions #1765
- Add
Inventory::network_hash()method #515 - Implement
serde::SerializeforAddress#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
Amounttype for theTxOutvalue field #1811 - Add support for alloc-free parse errors #1297
- Add
Amount::from_int_btc#1870 - Make
ckd_privfunction private and implAsRefforChildNumber#1882 - Use
hex_lit::hexin 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
Targetas type forpow_limit#2107 - Add
Witness::p2wpkhconstructor #2084 - Make
Instructionbe able to read the script number #2081 - Add
Script::is_mulitsig#2078 - Count sigops for
Transaction#2073 - Add
Psbtfee checks #2064 - Add version bytes consts #2020
- Add
transaction::Versiondata type #2006
-
Moves, Removes, and renames:
- Move witness types to the script module #1846
- Remove reexport of
psbt::Prevouts#1872 - Rename
Transaction::is_coin_basetois_coinbase#1796 - Rename
TaprootSpendInfo::as_script_maptoscript_map#1897 - Rename
Script::emptytoScript::new#1925 - Rename
PartiallySignedTransactiontoPsbt#1938 - Rename
XpubIdentifiertoXKeyIdentifier#2021 - Rename
ExtendedPubKeytoXpub#2019 - Rename
ExtendedPrivKeytoXpriv#2019 - Remove
_v0from various function names (eg,new_v0_p2wpkh) #1994 - Remove
SighashCache::segwit_signature_hash(addp2wpkh_signature_hashandp2wsh_signature_hash) #1995 - Reexport all the hash types from the crate root #1998
- Rename
opcodes::AlltoOpcode#1995 - Removed
TxOut::default(), the same logic now exists asTxOut::NULL#1811 and #1838
-
Error handling improvements:
-
-
0.31.0-rc219 Oct 2023 pre-releaseNothing published for this version
-
0.31.0-rc114 Oct 2023 pre-releaseNothing published for this version
-
0.30.326 Mar 2026Nothing published for this version
-
0.30.216 Nov 2023Release notes
Open source →- Expose valid (min, max) difficulty transition thresholds [#1820](Expose valid (min, max) difficulty transition thresholds)
-
0.30.117 Jul 2023 -
0.30.022 Mar 2023Nothing published for this version
-
0.29.226 Oct 2022Nothing published for this version
-
0.29.112 Aug 2022Nothing published for this version
-
0.29.008 Aug 2022 withdrawnNothing published for this version
-
0.28.202 Nov 2022Release notes
Open source →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.
-
0.28.104 May 2022Nothing published for this version
-
0.28.020 Apr 2022Nothing published for this version
-
0.28.0-rc.228 Mar 2022 pre-releaseNothing published for this version
-
0.28.0-rc.118 Jan 2022 pre-releaseNothing published for this version
-
0.27.120 Sep 2021Nothing published for this version
-
0.27.021 Jul 2021Nothing published for this version
-
0.26.208 Jun 2021Release notes
Open source →The previous release changed the behavior of
DisplayforChildNumber, 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 bothrust-miniscriptand BDK. -
0.26.107 Jun 2021 withdrawnRelease notes
Open source →- Change Amount Debug impl to BTC with 8 decimals
- Make uint types (un)serializable
- Add more derives for key::Error
- Fix optional amount serialization
- Add PSBT base64 (de)serialization with Display & FromStr
- Add non-API breaking derives for error & transaction types
- Fix error derives
- Add function to check RBF-ness of transactions
- Add Script:dust_value() to get minimum output value for a spk
- Improving bip32 ChildNumber display implementation
- Make Script::fmt_asm a static method and add Script::str_asm
- Return BlockHash from BlockHeader::validate_pow
- Add a method to error on non-standard hashtypes
- Include proprietary key in deserialized PSBT
- Fix Script::dust_value()'s calculation for non-P2*PKH script_pubkeys
- Add Address to optimized QR string conversion
- Correct Transaction struct encode_signing_data_to doc comment
- Fixing CI if base image's apt db is outdated
- Introduce some policy constants from Bitcoin Core
- Fix warnings for sighashtype
- Introduction of Schnorr keys
- Adding constructors for compressed and uncompressed ECDSA keys
- Count bytes read in encoding
- Add verify_with_flags to Script and Transaction
- Fixes documentation intra-links and enforce it
- Fixing hashes core dependency and fuzz feature
-
0.26.014 Jan 2021Release notes
Open source →- Add signet support
- Add wtxidrelay message and
WTxinv type for BIP 339 - Add addrv2 support
- Distinguish
FilterHeaderandFilterHash - Add hash preimage fields to PSBT
- Detect write errors for
PublicKey::write_into - impl
OrdandPartialOrdforInventory - Add binary encoding for BIP32 xkeys
- Add Taproot Tagged Hashes
- Add
message::MAX_INV_SIZEconstant - impl
ToSocketAddrsfor network addresses - Add new global fields to PSBT
- Serde serialization of PSBT data
- Make
InventoryandNetworkMessageenums exhaustive - Add PSBT proprietary keys
- Add
PublicKey::read_frommethod symmetric withwrite_to - Bump rust-secp to 0.20, turn off
recoveryfeature by default - Change return value of
consensus_encodetoio::Error
-
0.25.226 Oct 2020Nothing published for this version
-
0.25.120 Oct 2020Release notes
Open source →- Remove an incorrect
debug_assertthat can cause a panic when running using the dev profile.
- Remove an incorrect
-
0.25.011 Sep 2020 -
0.24.010 Sep 2020Release notes
Open source →- Remove the
BitcoinHashtrait - Introduce
SigHashCachestructure to replaceSighashComponentsand support all sighash modes - Add
Transaction::get_sizemethod - Export
util::amount::Denomination - Add
Block::get_sizeandBlock::get_weightmethods - Add
MerkleBlock::from_header_txids - Add
BlockHeader::u256_from_compact_target - Add
feefilternetwork message - Cleanup/replace
Script::Instructionsiterator API - Disallow uncompressed pubkeys in witness address generation
- Deprecate
util::contracthashmodule - Add modulo division operation for
Uint128andUint256 - Add
slice_to_u64_beendian conversion method
- Remove the
-
0.23.009 Jan 2020Release notes
Open source →- Update
secp256k1dependency to0.17.1. - Update
bitcoinconsensusdependency to0.19.0-1. - Update
bech32dependency to0.7.2.
- Update
-
0.22.007 Jan 2020Release notes
Open source →- Add
ServiceFlagstype. - Add
NetworkMessage::command. - Add
key::Error. - Add newtypes for specific hashes:
TxidWtxidBlockHashSigHashPubkeyHashScriptHashWPubkeyHashWScriptHashTxMerkleNodeWitnessMerkleNodeWitnessCommitmentXpubIdentifierFilterHash
- Refactor
CommandString. - Refactor
Rejectmessage. - Rename
RejectReasonenum variants. - Refactor
encode::Error. - Implement
DefaultforTxIn. - Implement
std::hash::HashforInventory. - Implement
CopyforInvTypeenum. - Use
psbt::ErrorinPartiallySignedTransaction::from_unsigned_tx. - Drop message decode max length to 4_000_000.
- Drop
hexandbyteorderdependencies.
- Add
-
0.21.003 Oct 2019Release notes
Open source →- Add serde to
BlockHeaderandBlock - Clean up
StreamReaderAPI (breaking change) - Add reject message to p2p messages
- Add serde to
-
0.20.023 Aug 2019 -
0.19.220 Aug 2019Nothing published for this version
-
0.19.116 Aug 2019Nothing published for this version
-
0.19.016 Aug 2019Release notes
Open source →- Add
AmountandSignedAmounttypes. - Add BIP-0158 support with
BlockFilterand related types. - Add
util::misc::signed_msg_hash()for signing messages. - Add
MerkleBlockandPartialMerkleTreetypes. - bip32: Support serde serialization for types and add some utility methods:
ChildNumber::incrementDerivationPath::children_fromDerivationPath::normal_childrenDerivationPath::hardened_children
- Add
blockdata::script::Builder::push_verifyto verify-ify an opcode. - Add
sendheadersnetwork message. - Add
OutPoint::new()method and JSON-serialize as<txid>:<vout>. - Refactor
Addresstype:- Now supports segwit addresses with version >0.
- Add
Address::from_scriptconstructor. - Add
Address::address_typeinspector. - Parsing now returns an
address::Errorinstead ofencode::Error. - Removed
bitcoin_bech32dependency for bech32 payloads.
- bip143: Rename
witness_scripttoscript_code - Rename
BlockHeader::spv_validatetovalidate_pow - Rename
OP_NOP2andOP_NOP3toOP_CLTVandOP_CSV - psbt: Use
BTreeMapinstead ofHashMapto ensure serialization roundtrips. - Drop
Decimaltype. - Drop
LoneHeaderstype. - Replace
strasondependency with (optional)serde_json. - Export the
bitcoin_hashesandsecp256k1dependent crates. - Updated
bitcoin_hashesdependency to v0.7. - Removed
randandserde_testdependencies. - Internal improvements to consensus encoding logic.
Release notes
Open source →- Add
AmountandSignedAmounttypes. - Add BIP-158 support with
BlockFilterand related types. - Add
util::misc::signed_msg_hash()for signing messages. - Add
MerkleBlockandPartialMerkleTreetypes. - bip32: Support serde serializaton for types and add some utility methods:
ChildNumber::incrementDerivationPath::children_fromDerivationPath::normal_childrenDerivationPath::hardened_children
- Add
blockdata::script::Builder::push_verifyto verify-ify an opcode. - Add
sendheadersnetwork message. - Add
OutPoint::new()method and JSON-serialize as<txid>:<vout>. - Refactor
Addresstype:- Now supports segwit addresses with version >0.
- Add
Address::from_scriptconstructor. - Add
Address::address_typeinspector. - Parsing now returns an
address::Errorinstead ofencode::Error. - Removed
bitcoin_bech32dependency for bech32 payloads.
- bip143: Rename
witness_scripttoscript_code - Rename
BlockHeader::spv_validatetovalidate_pow - Rename
OP_NOP2andOP_NOP3toOP_CLTVandOP_CSV - psbt: Use
BTreeMapinstead ofHashMapto ensure serialization roundtrips. - Drop
Decimaltype. - Drop
LoneHeaderstype. - Replace
strasondependency with (optional)serde_json. - Export the
bitcoin_hashesandsecp256k1dependent crates. - Updated
bitcoin_hashesdependency to v0.7. - Removed
randandserde_testdependencies. - Internal improvements to consensus encoding logic.
- Add
-
0.18.204 Sep 2019Nothing published for this version
-
0.18.104 Sep 2019Nothing published for this version
-
0.18.022 Mar 2019Release notes
Open source →- Update
bitcoin-bech32version to 0.9 - add
to_bytesmethod forutil::keytypes - add serde impls for
util::keytypes - contracthash: minor cleanups, use
util::keytypes instead ofsecp256k1types
- Update
-
0.17.104 Mar 2019 -
0.17.001 Mar 2019Release notes
Open source →- Update minimum rustc version to 1.22.
- Replace
rust-cryptowithbitcoin_hashes; refactor hash types - Remove
Address::p2pk - Remove misleading blanket
MerkleRootimplementation; it is now only defined forBlock - Add BIP157 (client-side block filtering messages)
- Allow network messages to be deserialized even across multiple packets
- Replace all key types to better match abstractions needed for PSBT
- Clean up BIP32 in preparation for PSBT; use new native key types rather than
secp256k1ones - Remove apparently-used
Optionserialization code - Finally merge PSBT after nearly nine months
-
0.16.015 Jan 2019Release notes
Open source →- 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::Pairtype which does not belong in this library - Minor bugfixes and optimizations
-
0.15.108 Nov 2018 -
0.15.007 Nov 2018Release notes
Open source →- Significant API overhaul:
- Remove
nu_selectmacro and low-level networking support - Move
network::consensus_paramstoconsensus::params - Move many other things into
consensus::params - Move
BitcoinHashfromnetwork::serializetoutil::hash; remove impl forVec<u8> - Rename/restructure error types
- Rename
Consensus{De,En}codertoconsensus::{De,En}coder - Replace
Raw{De,En}coderwith blanket impls ofconsensus::{De,En}coderonio::Readandio::Write - make
serializeandserialize_hexinfallible
- Remove
- Make 0-input transaction de/serialization always use segwit
- Implement
FromStrandDisplayfor many more types
- Significant API overhaul: