From d69c8ed8413ff5d406c7dd2966a4e3322394bcde Mon Sep 17 00:00:00 2001 From: xdustinface Date: Mon, 22 Dec 2025 09:20:26 +0100 Subject: [PATCH] chore: release v0.41.0 --- CHANGELOG.md | 107 ++++++++++++++++++++++++++++++ CLAUDE.md | 7 +- Cargo.toml | 2 +- README.md | 15 ++--- dash-network/README.md | 2 +- dash-spv/ARCHITECTURE.md | 6 +- dash-spv/CODE_ANALYSIS_SUMMARY.md | 2 +- 7 files changed, 120 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 51467eeba..de176dc61 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,110 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). + +## 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 diff --git a/CLAUDE.md b/CLAUDE.md index 9cb1ee10b..ffae8810e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -165,17 +165,14 @@ cargo doc --open - Use proptest for property-based testing where appropriate ### Git Workflow -- Current development branch: `v0.40-dev` +- Current development branch: `v0.42-dev` - Main branch: `master` -- Recent work: - - Removed interleaved sync logic from dash-spv (now uses sequential sync only) - - Swift SDK and FFI improvements ## Current Status The project is actively developing: - FFI bindings improvements -- Support for Dash Core versions 0.18.0 - 0.21.0 +- Support for Dash Core versions 0.18.0 - 0.23.x ## Security Considerations diff --git a/Cargo.toml b/Cargo.toml index 33c2aaac8..82d87738b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ members = ["dash", "dash-network", "dash-network-ffi", "hashes", "internals", "f resolver = "2" [workspace.package] -version = "0.40.0" +version = "0.41.0" [patch.crates-io] dashcore_hashes = { path = "hashes" } diff --git a/README.md b/README.md index d2e9c6f04..311c74feb 100644 --- a/README.md +++ b/README.md @@ -92,14 +92,13 @@ This library provides comprehensive wallet functionality through multiple compon For most applications, start with [key-wallet-manager](key-wallet-manager/README.md) which provides a complete, easy-to-use interface for wallet operations. # Supported Dash Core Versions -The following versions are officially supported and automatically tested: -* 0.18.0 -* 0.18.1 -* 0.19.0.1 -* 0.19.1 -* 0.20.0 -* 0.20.1 -* 0.21.0 +The following versions are officially supported: +* 0.18.x +* 0.19.x +* 0.20.x +* 0.21.x +* 0.22.x +* 0.23.x # Minimum Supported Rust Version (MSRV) This workspace compiles on Rust 1.89 or newer. Crates use mixed editions (2021 and 2024). See CLAUDE.md/AGENTS.md for common commands and CI expectations. diff --git a/dash-network/README.md b/dash-network/README.md index ee2eb9979..1ffa0d690 100644 --- a/dash-network/README.md +++ b/dash-network/README.md @@ -19,7 +19,7 @@ Add this to your `Cargo.toml`: ```toml [dependencies] -dash-network = "0.40.0" +dash-network = "0.41.0" ``` ### Basic Example diff --git a/dash-spv/ARCHITECTURE.md b/dash-spv/ARCHITECTURE.md index b6260eb1f..39196c94e 100644 --- a/dash-spv/ARCHITECTURE.md +++ b/dash-spv/ARCHITECTURE.md @@ -1,10 +1,6 @@ # Dash SPV Client - Comprehensive Code Guide -**Version:** 0.40.0 -**Last Updated:** 2025-01-21 -**Total Lines of Code:** ~40,000 -**Total Files:** 110+ -**Overall Grade:** A+ (96/100) +**Version:** 0.41.0 ## Table of Contents diff --git a/dash-spv/CODE_ANALYSIS_SUMMARY.md b/dash-spv/CODE_ANALYSIS_SUMMARY.md index 8c761612b..55dfc14fa 100644 --- a/dash-spv/CODE_ANALYSIS_SUMMARY.md +++ b/dash-spv/CODE_ANALYSIS_SUMMARY.md @@ -2,7 +2,7 @@ **Date:** 2025-01-21 **Analyzer:** Claude (Anthropic AI) -**Codebase Version:** 0.40.0 +**Codebase Version:** 0.41.0 **Total Files Analyzed:** 110+ files **Total Lines of Code:** ~40,000