- Bigendian fixes and CI test
- no_std support, keeping MSRV
- Bech32m adoption
- Use Amount type for dust value calculation
- Errors enum improvements
- std -> core
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.
- 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
- 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
- Remove an incorrect
debug_assertthat can cause a panic when running using the dev profile.
- Expose methods on
Scriptto generate various scriptpubkeys - Expose all cargo features of secp256k1
- Allow directly creating various hash newtypes
- Add methods to
Blockto get the coinbase tx and BIP34 height commitment - Add
extendmethod to bip32::DerivationPath - Alias
(Fingerprint, DerivationPath)asKeySource - Add serde implementation for PSBT data structs
- Add FromStr/Display implementation for SigHashType
- Expose the raw sighash message from sighash computations
- Add support for signmessage/verifymessage style message signatures
- Bump MSRV to 1.29.0
- 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
- Update
secp256k1dependency to0.17.1. - Update
bitcoinconsensusdependency to0.19.0-1. - Update
bech32dependency to0.7.2.
- 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 serde to
BlockHeaderandBlock - Clean up
StreamReaderAPI (breaking change) - Add reject message to p2p messages
- Update
secp256k10.15 andbitcoinconsensus0.17
- 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.
- 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
- Add some trait impls to
PublicKeyfor miniscript interoperability
- 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
- 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
- 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
- Add serde support for
Address
- Reject non-compact
VarInts on various types - Expose many types at the top level of the crate
- Add
Ord,PartialOrdimpls forScript
- Add regtest network to
Networkenum - Add
Script::is_op_return()which is more specific thanScript::is_provably_unspendable() - Update to bech32 0.8.0; add Regtest bech32 address support
- Replace rustc-serialize dependency with hex as a stopgap toward eliminating any extra dependencies for this; clean up the many independent hex encoders and decoders throughout the codebase.
- Add conversions between
ChildNumberandu32; make representation non-public; fix documentation - Add several derivation convenience to
bip32extended keys - Make
deserialize::deserialize()enforce no trailing bytes - Replace
TxOutRefwithOutPoint; use it inTxInstruct. - Use modern
as_to_into_conventions for array-wrapping types; implDisplayrather thanToStringfor most types - Change
script::Instructionsiterator to allow rejecting non-minimal pushes; fix bug where errors would iterate forever. - Overhaul
util::Error; introduceserialize::Errorand use it forSimpleDecoderandSimpleDecoderrather than parameterizing these over their error type. - Overhaul
UDecimalandDecimalserialization and parsing and fix many lingering parsing bugs - Update to serde 1.0 and strason 0.4
- Update to secp256k1 0.11.0
- Many, many documentation and test improvements.
- Add
Displaytrait to uints,FromStrtrait toNetworkenum - Add witness inv types to inv enum, constants for Bitcoin regtest network,
is_coin_baseaccessor for tx inputs - Expose
merkleroot(Vec<Sha256dHash>)
- Move witnesses inside the
TxInstructure - Add
Transaction::get_weight() - Update bip143
sighash_allAPI to be more ergonomic
- The in-memory blockchain was moved into a dedicated project rust-bitcoin-chain.
- Removed old script interpreter
- A new optional feature "bitcoinconsensus" lets this library use Bitcoin Core's native
script verifier, wrappend into Rust by the rust-bitcoinconsenus project.
See
Transaction::verifyandScript::verifymethods. - Replaced Base58 traits with
encode_slice,check_encode_slice, from andfrom_checkfunctions in the base58 module. - Un-reversed the Debug output for Sha256dHash
- Add bech32 support
- Support segwit address types
- Remove
numdependency at Matt's request; agree this is obnoxious to require all downstream users to also have anumdependency just so they can useUint256::from_u64.