Skip to content

Latest commit

 

History

History
654 lines (550 loc) · 34.8 KB

File metadata and controls

654 lines (550 loc) · 34.8 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog.

0.41.1 - 2026-01-23

Changed

  • Bump bincode to 2.0.1 (#356) @lklimek

0.41.0 - 2025-12-30

Added

  • Use feature for console UI (#158) @QuantumExplorer
  • Code analysis documentation (#159) @QuantumExplorer
  • InstantLock BLS signature verification and peer reputation (#163) @PastaPastaPasta
  • Buffered stateful framing for TCP connections (#167) @PastaPastaPasta
  • Enhanced storage clear and balance display (#174) @PastaPastaPasta
  • Comprehensive wallet FFI transaction builder (#175) @PastaPastaPasta
  • DashPay support (#177) @QuantumExplorer
  • Async check transaction (#178) @QuantumExplorer
  • Broadcast transaction support (#180) @pauldelucia
  • Update FFI headers (#183) @xdustinface
  • Flush header index on shutdown and after header sync (#197) @pauldelucia
  • Add pre-commit infrastructure (#201) @xdustinface
  • Introduce DashSpvClientInterface (#214) @xdustinface
  • DIP-17 Platform Payment account support in key-wallet (#229) @pauldelucia
  • Add data directory lockfile protection (#241) @xdustinface
  • Validate headers during sync (#242) @xdustinface
  • Parallelize header validation with rayon (#243) @xdustinface
  • Add atomic_write for atomic file writing (#245) @xdustinface
  • Add logging module with file rotation support (#252) @xdustinface
  • Add workflow to label PRs with merge conflicts (#265) @xdustinface
  • Filter storage using segmentscache (#267) @ZocoLini
  • Height based storage (#272) @ZocoLini
  • Add benchmarks with criterion (#277) @ZocoLini
  • Add --mnemonic-file CLI argument (#285) @xdustinface
  • Add network to FFIWalletManager struct (#325) @xdustinface

Changed

  • Split big files in dash-spv (#160) @QuantumExplorer
  • Update GitHub Actions to use ubuntu-22.04-arm (#169) @PastaPastaPasta
  • Drop unused code in dash-spv::network (#179) @xdustinface
  • Rename MultiPeerNetworkManager to PeerNetworkManager (#184) @xdustinface
  • Improve SPV shutdown handling with CancellationToken (#187) @xdustinface
  • Rename TcpConnection to Peer and ConnectionPool to PeerPool (#190) @xdustinface
  • Drop unused code in dash-spv::network (#192) @xdustinface
  • Clippy auto fixes (#198) @pauldelucia
  • Make flow control syncing default (#211) @xdustinface
  • Rename HeaderSyncManagerWithReorg to HeaderSyncManager (#221) @xdustinface
  • Don't add a dummy in mark_filter_received (#222) @xdustinface
  • Cleanup and simplify MemoryStorageManager (#224) @xdustinface
  • Make synced_from_checkpoint based on sync_base_height (#226) @xdustinface
  • More address matching in typo checker (#230) @xdustinface
  • Use genesis_block for all nets in initialize_genesis_block (#231) @xdustinface
  • Rename SequentialSyncManager to SyncManager (#235) @xdustinface
  • Some restructuring in dash-spv::sync (#236) @xdustinface
  • Cleanup SPV validation (#237) @xdustinface
  • Move header validation into sync::headers::validation (#238) @xdustinface
  • Replace SyncPhase matches wildcard usage with exhaustive match (#239) @ZocoLini
  • Storage segments cleanup (#244) @ZocoLini
  • Pin rust version in rust-toolchain.toml (#266) @xdustinface
  • Less cloning in SPV message handling (#268) @xdustinface
  • Make filter loading range based (#269) @xdustinface
  • Single network Wallet and ManagedWalletInfo (#271) @xdustinface
  • Remove all use of dyn (#274) @ZocoLini
  • Some ChainState cleanups (#289) @ZocoLini
  • Drop FFINetworks and use FFINetwork only (#294) @xdustinface
  • Single network WalletManager (#299) @xdustinface
  • Make wallet birth height non-optional (#300) @xdustinface

Removed

  • Drop unused sync code (#208) @xdustinface
  • Drop ChainHash and related tests from dash (#228) @xdustinface
  • Drop unused code in dash-spv::sync (#232) @xdustinface
  • Drop unused code in dash-spv::checkpoint (#233) @xdustinface
  • Remove unused struct StorageConfig (#273) @ZocoLini
  • Remove MemoryStorageManager (#275) @ZocoLini
  • Drop persistent sync state (#279) @ZocoLini
  • Remove unused ChainLockStats (#281) @ZocoLini
  • Remove unused orphan pool module (#282) @ZocoLini
  • Remove StorageStats (#283) @ZocoLini
  • Remove duplicate quorum validation logic (#284) @ZocoLini
  • Drop unused lookahead (#288) @xdustinface
  • Remove unused filters field from ChainState (#293) @xdustinface
  • Move logo and protx test data files to contrib (#295) @xdustinface
  • Remove unused swift-dash-core-sdk (#301) @xdustinface

Fixed

  • CFHeaders overlap verification and underflow prevention (#163) @PastaPastaPasta
  • FFI event flooding and memory leak in progress callbacks (#173) @PastaPastaPasta
  • PeerNetworkManager cast in broadcast_transaction (#185) @xdustinface
  • Use non-blocking TcpStream in TCP connection (#188) @xdustinface
  • Locking issue after #190 (#191) @xdustinface
  • Follow-up fixes to #190 (#193) @xdustinface
  • Let the examples start the network monitoring (#194) @xdustinface
  • Wait for MnListDiff responses before transitioning to next phase (#199) @pauldelucia
  • SPV Regtest/Devnet support (#227) @xdustinface
  • Drop duplicated received filter update (#248) @xdustinface
  • Compressed headers protocol compatibility with Dash Core (#256) @PastaPastaPasta
  • Stop loading headers twice into ChainState::headers (#258) @xdustinface
  • FILTER_REQUEST_BATCH_SIZE should be 1000, not 100 (#260) @PastaPastaPasta
  • Return the correct block hash in prepare_sync (#262) @xdustinface
  • FFI CLI percentage display (#263) @ZocoLini
  • maintain_gap_limit target calculation off by one (#286) @xdustinface
  • Docs build issues (#297) @xdustinface

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