Skip to content

Latest commit

 

History

History
541 lines (452 loc) · 29.3 KB

CHANGELOG.md

File metadata and controls

541 lines (452 loc) · 29.3 KB

0.28 - 2022-04-20 "The Taproot Release"

At nearly nine months, this is our longest release cycle ever, and thanks to a huge increase in the number of active contributors this year and last, it is also by far our largest release ever, at 148 PRs merged from 23 different contributors. Our primary goal in this release was to introduce support for Taproot and its associated data structures: addresses, taptrees, sighashes, PSBT fields, and more. As it turned out, these changes required (or at least, incentivized) changing a lot of our APIs, causing a significant increase in scope.

We have more big changes coming down the pike. 2022 is going to be a big year for rust-bitcoin, which we know is exciting for us but disruptive to downstream users who ultimately want the library to just work. Our hope is that by 2023 we will have eliminated large amounts of technical debt, modernized our APIs to meet current Rust conventions, and clarified the scope of the individual crates in this ecosystem while still providing the essential functionality needed by our downstream users, especially wallet projects.

We will also develop a plan to make our releases more predictable and manageable, likely by having scheduled releases with limited scope. We would like to reach a point where we no longer have frequent breaking releases, but right now we are nowhere close.

Upcoming changes will include

  • A quick new release which updates our MRSV from 1.29 to 1.41 and does little else
  • Updating our codebase to take advantage of the new MSRV, especially regarding nostd and wasm support
  • A comprehensive rethinking and flattening of our public-facing APIs
  • Richer support for PSBT, Script, and BIP-0340/Schnorr signatures

With so many changes since 0.27, we cannot list every PR. Here are the highlights:

Additionally we made several minor API changes (renaming methods, etc.) to improve compliance with modern Rust conventions. Where possible we left the existing methods in place, marked as deprecated.

0.27 - 2021-07-21

0.26.2 - 2021-06-08

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.

0.26.1 - 2021-06-06 (yanked, see explanation above)

0.26.0 - 2020-12-21

0.25.1 - 2020-10-26

  • Remove an incorrect debug_assert that can cause a panic when running using the dev profile.

0.25.1 - 2020-10-07

0.25.0 - 2020-09-10

  • Bump MSRV to 1.29.0

0.24.0 - 2020-09-10

0.23.0 - 2020-01-07

  • Update secp256k1 dependency to 0.17.1.
  • Update bitcoinconsensus dependency to 0.19.0-1.
  • Update bech32 dependency to 0.7.2.

0.22.0 - 2020-01-07

  • 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.

0.21.0 - 2019-10-02

0.20.0 - 2019-08-23

  • Update secp256k1 0.15 and bitcoinconsensus 0.17

0.19.0 - 2019-08-16

  • Add Amount and SignedAmount types.
  • Add BIP-158 support with BlockFilter and related types.
  • Add 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 dashcore_hashes and secp256k1 dependent crates.
  • Updated dashcore_hashes dependency to v0.7.
  • Removed rand and serde_test dependencies.
  • Internal improvements to consensus encoding logic.

0.18.0 - 2019-03-21

  • Update bitcoin-bech32 version to 0.9
  • add to_bytes method for key types
  • add serde impls for key types
  • contracthash: minor cleanups, use key types instead of secp256k1 types

0.17.1 - 2019-03-04

  • Add some trait impls to PublicKey for miniscript interoperability

0.17.0 - 2019-02-28 - ``The PSBT Release''

0.16.0 - 2019-01-15

  • Reorganize opcode types to eliminate unsafe code
  • Un-expose some macros that were unintentionally exported
  • Update rust-secp256k1 dependency to 0.12
  • Remove iter::Pair type which does not belong in this library
  • Minor bugfixes and optimizations

0.15.1 - 2018-11-08

0.15.0 - 2018-11-03

  • 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 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

0.14.2 - 2018-09-11

  • Add serde support for Address

0.14.1 - 2018-08-28

  • Reject non-compact VarInts on various types
  • Expose many types at the top level of the crate
  • Add Ord, PartialOrd impls for Script

0.14.0 - 2018-08-22

0.13.1

  • Add Display trait to uints, FromStr trait to Network enum
  • Add witness inv types to inv enum, constants for Bitcoin regtest network, is_coin_base accessor for tx inputs
  • Expose merkleroot(Vec<Sha256dHash>)

0.13

  • Move witnesses inside the TxIn structure
  • Add Transaction::get_weight()
  • Update bip143 sighash_all API to be more ergonomic

0.12

  • 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 and Script::verify methods.
  • Replaced Base58 traits with encode_slice, check_encode_slice, from and from_check functions in the base58 module.
  • Un-reversed the Debug output for Sha256dHash
  • Add bech32 support
  • Support segwit address types

0.11

  • Remove num dependency at Matt's request; agree this is obnoxious to require all downstream users to also have a num dependency just so they can use Uint256::from_u64.

Dashcore RPC

0.15.0

  • bump bitcoin crate version to 0.28.0
  • add get_block_stats
  • add add_node
  • add remove_node
  • add onetry_node
  • add disconnect_node
  • add disconnect_node_by_id
  • add get_added_node_info
  • add get_node_addresses
  • add list_banned
  • add clear_banned
  • add add_ban
  • add remove_ban
  • make Auth::get_user_pass public
  • add ScriptPubkeyType::witness_v1_taproot

0.14.0

  • add wallet_conflicts field in WalletTxInfo
  • add get_chain_tips
  • add get_block_template
  • implement From<u64> and From<Option<u64>> for ImportMultiRescanSince
  • bump rust-bitcoin dependency to 0.27
  • bump json-rpc dependency to 0.12.0
  • remove dependency on hex

0.13.0

  • add wallet_process_psbt
  • add unlock_unspent_all
  • compatibility with Bitcoin Core v0.21
  • bump rust-bitcoin dependency to 0.26
  • implement Deserialize for ImportMultiRescanSince
  • some fixes for some negative confirmation values

0.12.0

  • bump bitcoin dependency to version 0.25, increasing our MSRV to 1.29.0
  • test against bitcoind 0.20.0 and 0.20.1
  • add get_balances
  • add get_mempool_entry
  • add list_since_block
  • add get_mempool_entry
  • add list_since_block
  • add uptime
  • add get_network_hash_ps
  • add get_tx_out_set_info
  • add get_net_totals
  • partially implement scantxoutset
  • extend create_wallet and related APIs
  • extend GetWalletInfoResult
  • extend WalletTxInfo
  • extend testsuite
  • fix GetPeerInfoResult
  • fix GetNetworkInfoResult
  • fix GetTransactionResultDetailCategory
  • fix GetMempoolEntryResult for bitcoind prior to 0.19.0
  • fix GetBlockResult and GetBlockHeaderResult

0.11.0

  • fix minimum_sum_amount field name in ListUnspentQueryOptions
  • add missing "orphan" variant for GetTransactionResultDetailCategory
  • add ImportMultiRescanSince to support "now" for importmulti's timestamp parameter
  • rename logging target to bitcoincore_rpc instead of bitcoincore_rpc::client
  • other logging improvements

0.10.0

  • rename dump_priv_key -> dump_private_key + change return type
  • rename get_block_header_xxx methods to conform with get_block_xxx methods
  • rename get_raw_transaction_xxx methods to conform with get_block_xxx methods
  • rename GetBlockHeaderResult fields
  • rename GetMiningInfoResult fields
  • represent difficulty values as f64 instead of BigUint
  • fix get_peer_info
  • fix get_transaction
  • fix get_balance
  • fix get_blockchain_info and make compatible with both 0.18 and 0.19
  • fix get_address_info
  • fix send_to_address
  • fix estimate_smart_fee
  • fix import_private_key
  • fix list_received_by_address
  • fix import_address
  • fix finalize_psbt
  • fix fund_raw_transaction
  • fix test_mempool_accept
  • fix stop
  • fix rescan_blockchain
  • add import_address_script
  • add get_network_info
  • add version
  • add Error::UnexpectedStructure
  • add GetTransactionResultDetailCategory::Immature
  • make list_unspent more ergonomic
  • made all exported enum types implement Copy
  • export jsonrpc dependency.
  • remove num_bigint dependency

v0.9.1

  • Add wallet_create_funded_psbt
  • Add get_descriptor_info
  • Add combine_psbt
  • Add derive_addresses
  • Add finalize_psbt
  • Add rescan_blockchain

v0.7.0

  • use bitcoin::PublicKey instead of secp256k1::PublicKey
  • fix get_mining_info result issue
  • fix test_mempool_accept issue
  • fix get_transaction result issues
  • fix bug in fund_raw_transaction
  • add list_transactions
  • add get_raw_mempool
  • add reconsider_block
  • add import_multi
  • add import_public_key
  • add set_label
  • add lock_unspent
  • add unlock_unspent
  • add create_wallet
  • add load_wallet
  • add unload_wallet
  • increased log level for requests to debug

v0.6.0

  • polish Auth to use owned Strings
  • fix using Amount type and Address types where needed
  • use references of sha256d::Hashes instead of owned/copied

v0.5.1

  • add get_tx_out_proof
  • add import_address
  • add list_received_by_address

v0.5.0

  • add support for cookie authentication
  • add fund_raw_transaction command
  • deprecate sign_raw_transaction
  • use PrivateKey type for calls instead of string
  • fix for sign_raw_transaction
  • use 32-bit integers for confirmations, signed when needed

v0.4.0

  • add RawTx trait for commands that take raw transactions
  • update jsonrpc dependency to v0.11.0
  • fix for create_raw_transaction
  • fix for send_to_address
  • fix for get_new_address
  • fix for get_tx_out
  • fix for get_raw_transaction_verbose
  • use secp256k1::SecretKey type in API

v0.3.0

  • removed the GetTransaction and GetScript traits (those methods are now directly implemented on types)
  • introduce RpcApi trait
  • use bitcoin_hashes library
  • add signrawtransactionwithkey command
  • add testmempoolaccept command
  • add generate command
  • improve hexadecimal byte value representation
  • bugfix getrawtransaction (support coinbase txs)
  • update rust-bitcoin dependency v0.16.0 -> v0.18.0
  • add RetryClient example

v0.2.0

  • add send_to_address command
  • add create_raw_transaction command
  • Client methods take self without mut