- 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
WTx
inv type for BIP 339 - Add addrv2 support
- Distinguish
FilterHeader
andFilterHash
- Add hash preimage fields to PSBT
- Detect write errors for
PublicKey::write_into
- impl
Ord
andPartialOrd
forInventory
- Add binary encoding for BIP32 xkeys
- Add Taproot Tagged Hashes
- Add
message::MAX_INV_SIZE
constant - impl
ToSocketAddrs
for network addresses - Add new global fields to PSBT
- Serde serialization of PSBT data
- Make
Inventory
andNetworkMessage
enums exhaustive - Add PSBT proprietary keys
- Add
PublicKey::read_from
method symmetric withwrite_to
- Bump rust-secp to 0.20, turn off
recovery
feature by default - Change return value of
consensus_encode
toio::Error
- Remove an incorrect
debug_assert
that can cause a panic when running using the dev profile.
- Expose methods on
Script
to generate various scriptpubkeys - Expose all cargo features of secp256k1
- Allow directly creating various hash newtypes
- Add methods to
Block
to get the coinbase tx and BIP34 height commitment - Add
extend
method 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
BitcoinHash
trait - Introduce
SigHashCache
structure to replaceSighashComponents
and support all sighash modes - Add
Transaction::get_size
method - Export
util::amount::Denomination
- Add
Block::get_size
andBlock::get_weight
methods - Add
MerkleBlock::from_header_txids
- Add
BlockHeader::u256_from_compact_target
- Add
feefilter
network message - Cleanup/replace
Script::Instructions
iterator API - Disallow uncompressed pubkeys in witness address generation
- Deprecate
util::contracthash
module - Add modulo division operation for
Uint128
andUint256
- Add
slice_to_u64_be
endian conversion method
- Update
secp256k1
dependency to0.17.1
. - Update
bitcoinconsensus
dependency to0.19.0-1
. - Update
bech32
dependency to0.7.2
.
- 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
forTxIn
. - Implement
std::hash::Hash
forInventory
. - Implement
Copy
forInvType
enum. - Use
psbt::Error
inPartiallySignedTransaction::from_unsigned_tx
. - Drop message decode max length to 4_000_000.
- Drop
hex
andbyteorder
dependencies.
- Add serde to
BlockHeader
andBlock
- Clean up
StreamReader
API (breaking change) - Add reject message to p2p messages
- Update
secp256k1
0.15 andbitcoinconsensus
0.17
- Add
Amount
andSignedAmount
types. - Add BIP-158 support with
BlockFilter
and related types. - Add
util::misc::signed_msg_hash()
for signing messages. - Add
MerkleBlock
andPartialMerkleTree
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 ofencode::Error
. - Removed
bitcoin_bech32
dependency for bech32 payloads.
- bip143: Rename
witness_script
toscript_code
- Rename
BlockHeader::spv_validate
tovalidate_pow
- Rename
OP_NOP2
andOP_NOP3
toOP_CLTV
andOP_CSV
- psbt: Use
BTreeMap
instead ofHashMap
to ensure serialization roundtrips. - Drop
Decimal
type. - Drop
LoneHeaders
type. - Replace
strason
dependency with (optional)serde_json
. - Export the
bitcoin_hashes
andsecp256k1
dependent crates. - Updated
bitcoin_hashes
dependency to v0.7. - Removed
rand
andserde_test
dependencies. - Internal improvements to consensus encoding logic.
- Update
bitcoin-bech32
version to 0.9 - add
to_bytes
method forutil::key
types - add serde impls for
util::key
types - contracthash: minor cleanups, use
util::key
types instead ofsecp256k1
types
- Add some trait impls to
PublicKey
for miniscript interoperability
- Update minimum rustc version to 1.22.
- Replace
rust-crypto
withbitcoin_hashes
; refactor hash types - Remove
Address::p2pk
- Remove misleading blanket
MerkleRoot
implementation; 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
secp256k1
ones - Remove apparently-used
Option
serialization 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::Pair
type which does not belong in this library - Minor bugfixes and optimizations
- Significant API overhaul:
- Remove
nu_select
macro and low-level networking support - Move
network::consensus_params
toconsensus::params
- Move many other things into
consensus::params
- Move
BitcoinHash
fromnetwork::serialize
toutil::hash
; remove impl forVec<u8>
- Rename/restructure error types
- Rename
Consensus{De,En}coder
toconsensus::{De,En}coder
- Replace
Raw{De,En}coder
with blanket impls ofconsensus::{De,En}coder
onio::Read
andio::Write
- make
serialize
andserialize_hex
infallible
- Remove
- Make 0-input transaction de/serialization always use segwit
- Implement
FromStr
andDisplay
for many more types
- Add serde support for
Address
- Reject non-compact
VarInt
s on various types - Expose many types at the top level of the crate
- Add
Ord
,PartialOrd
impls forScript
- Add regtest network to
Network
enum - 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
ChildNumber
andu32
; make representation non-public; fix documentation - Add several derivation convenience to
bip32
extended keys - Make
deserialize::deserialize()
enforce no trailing bytes - Replace
TxOutRef
withOutPoint
; use it inTxIn
struct. - Use modern
as_
to_
into_
conventions for array-wrapping types; implDisplay
rather thanToString
for most types - Change
script::Instructions
iterator to allow rejecting non-minimal pushes; fix bug where errors would iterate forever. - Overhaul
util::Error
; introduceserialize::Error
and use it forSimpleDecoder
andSimpleDecoder
rather than parameterizing these over their error type. - Overhaul
UDecimal
andDecimal
serialization 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
Display
trait to uints,FromStr
trait toNetwork
enum - Add witness inv types to inv enum, constants for Bitcoin regtest network,
is_coin_base
accessor for tx inputs - Expose
merkleroot(Vec<Sha256dHash>)
- Move witnesses inside the
TxIn
structure - Add
Transaction::get_weight()
- Update bip143
sighash_all
API 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::verify
andScript::verify
methods. - Replaced Base58 traits with
encode_slice
,check_encode_slice
, from andfrom_check
functions in the base58 module. - Un-reversed the Debug output for Sha256dHash
- Add bech32 support
- Support segwit address types
- Remove
num
dependency at Matt's request; agree this is obnoxious to require all downstream users to also have anum
dependency just so they can useUint256::from_u64
.