All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
This is a large release that reworks the SPV client, wallet, and FFI surface. The most impactful changes:
- Sync architecture rewrite: the block, filter, and masternode sync pipelines were rewritten end-to-end, with explicit state machines, hardened reconnect and resume paths, deadlock fixes, and a long tail of correctness fixes around filter batching, in-flight state on disconnect, and post-sync header handling (#411, #440, #451, #452, #738).
dashdintegration tests: end-to-end SPV sync tests against a real regtestdashdcovering sync, restarts, disconnections, transactions, masternodes, and multi-wallet, gating thespvandffiCI groups (#464, #697, #740).- Mempool support: a real mempool path through the SPV client with a
--mempool-strategyCLI argument, plus aCoinSelectorthat can spend mempool UTXOs, driving a new transaction confirmation lifecycle (#558, #540, #552, #748). - Hardcoded masternode seeds: vendored masternode seed files with weekly CI auto-refresh so cold-start bootstrapping no longer waits for a full
QRInfosync (#678). - Wallet manager extraction and atomic events: core transaction building and signing moved into a dedicated wallet manager, wallet events are now atomic, and per-account balance diffs are carried on events (#594, #727, #696, #706).
- FFI surface expansion: full
TransactionRecordexposed through FFI and wallet events, asset-lock builder,MasternodeListEngineaccessor, transaction broadcast, error callback registration, and an asyncSignertrait for iOS workflows (#614, #600, #608, #458, #661). - Platform and Asset Lock: a new
PlatformPaymentmanaged account to track Platform balances, plus Asset Lock derivation subfeatures 4 and 5 and a correctedAssetLockTxstructure (#365, #368, #454, #659). no-stdsupport dropped: incompleteno-stdsupport was removed acrossdashcore,hashes,internals, andkey-walletto simplify the codebase (#518, #519, #520, #521).
- Bump
rs-x11-hashto0.1.9for windows support (#319) @xdustinface - Track
synced_heightperManagedWalletInfo(#305) @xdustinface - Capture new addresses from
maintain_gap_limit(#287) @xdustinface - Store block hashes along with the headers in segments (#351) @ZocoLini
- Add
wallet_manager_networkFFI function (#360) @QuantumExplorer - Add PlatformPayment account specifications and creation logic (#365) @QuantumExplorer
- Introduce
BlockHeaderStorage.get_tiphelper (#359) @xdustinface - Introduce
MessageDispatcherin network manager (#383) @xdustinface - Implement parallel filter matching (#303) @xdustinface
- Include module names in the log output (#391) @xdustinface
- Add synced height to the wallet interface (#396) @xdustinface
- Introduce
PersistentBlockStorage(#397) @xdustinface - New managed platform account to track platform balances (#368) @QuantumExplorer
- Add
--mnemonic-file,--data-dirand logfiles to ffi-cli (#408) @xdustinface - Add logging for InstantLock quorum lookup (#412) @xdustinface
- Hardcoded checkpoints every 50k blocks (#410) @xdustinface
- Rewrite, fix and improve the sync architecture (#411) @xdustinface
- Add more InstantSend debug logs (#413) @xdustinface
- Collect addresses from connected peers (#421) @xdustinface
- Persist best
ChainLockto disk viaMetadataStorage(#419) @xdustinface - Validate received headers were actually requested (#438) @xdustinface
- React to network events in maintenance loop (#433) @xdustinface
- Add Asset Lock derivation path subfeatures 4 and 5 (#454) @QuantumExplorer
- Transaction broadcast ffi function (#458) @ZocoLini
- Add
cycletoSyncEvent::SyncComplete(#459) @xdustinface - Report/propagate client start/run failures (#432) @xdustinface
- Persist and restore target height via
MetadataStorage(#476) @xdustinface - Dispatch progress callback on registration (#473) @xdustinface
- Add
thread-locallogging support for parallel test isolation (#485) @xdustinface - Add
dashdintegration tests for SPV sync (#464) @xdustinface - Add
--mempool-strategyCLI argument (#526) @xdustinface - Log wallet events in the client's run loop (#525) @xdustinface
- Format wallet event amounts as DASH (#530) @xdustinface
- Wallet transaction confirmation lifecycle (#540) @xdustinface
- Add
TransactionStatusChangedevent and emit wallet events (#552) @xdustinface - Add mempool support (#558) @xdustinface
- Expose asset lock transaction builder (#600) @QuantumExplorer
- Expose MasternodeListEngine accessor on FFIDashSpvClient (#608) @QuantumExplorer
- Track input/output details and direction in
TransactionRecord(#605) @xdustinface - Expose full
TransactionRecordthrough FFI and wallet events (#614) @xdustinface - Validate transaction label size (#617) @xdustinface
- Include
InstantLockinTransactionContext::InstantSendvariant (#615) @xdustinface - Add address and value fields to FFIOutputDetail (#640) @llbartekll
- Enabled and updated key-wallet-ffi unit tests defined out of scope (#644) @ZocoLini
- Rebroadcast unconfirmed self-sent transactions (#627) @xdustinface
- Add async Signer trait and build_asset_lock_with_signer (#661) @QuantumExplorer
- Enforce required peer capabilities (#671) @xdustinface
- New more ergonomic FFIError implementation (#670) @ZocoLini
- Implement From and Drop traits for FFITransactionRecord and its members if needed (#676) @ZocoLini
- Hardcoded masternode seed files + weekly auto-refresh (#678) @QuantumExplorer
- Support multiple spv event handlers (#682) @xdustinface
- Make wallet events atomic (#696) @xdustinface
- Add mutable-pair accessors + insert_wallet (#685) @QuantumExplorer
- Expose bls and eddsa features (#700) @QuantumExplorer
- Per-wallet filter scan and runtime wallet catch-up (#694) @xdustinface
- Carry per-account balance diff on WalletEvent (#706) @QuantumExplorer
- Expose
instant_send_locksaccessor onManagedWalletInfo(#712) @QuantumExplorer - Carry addresses_derived on TransactionDetected / BlockProcessed (#725) @QuantumExplorer
- Add keep-finalized-transactions Cargo feature (#733) @QuantumExplorer
- Drive masternode sync via
PipelineModestate machine (#738) @xdustinface - Add
build_and_sign_transaction_with_signer(#735) @ZocoLini - Add
managed_core_account_set_transaction_labelFFI function (#618) @xdustinface - Add chainlock handling to the wallet (#756) @xdustinface
- Add serde derives for AssetLockFundingType and DerivedAddress (#761) @lklimek
- Always emit
ChainLockProcessedon chainlock advance (#769) @shumkov - Log version with git commit for dev builds (#770) @xdustinface
- Add explicit UTF-8 encoding for FFI doc generation (#322) @xdustinface
- Add
.gitattributesto enforce LF line endings (#321) @xdustinface - Exclude
dash-fuzzfrom clippy on Windows (#320) @xdustinface - Update
pre-commithooks to latest versions (#315) @xdustinface - Rework storage to periodically persist (#278) @ZocoLini
- Instant lock validation cleanup/simplify (#329) @ZocoLini
- Move
Send + Sync + 'staticbounds into trait definitions (#331) @xdustinface - Use separate target dirs for pre-commit (#330) @xdustinface
- Overhaul CI (#253) @xdustinface
- Cleanup
WalletBalance(#335) @xdustinface - Consolidate balance calculations (#338) @xdustinface
- Consolidate UTXO helpers in
test_utilsmodule (#334) @xdustinface - Ignore bincode unmaintained advisory
RUSTSEC-2025-0141(#343) @xdustinface - Simplify immature transactions handling (#307) @xdustinface
- Storage manager trait splitted into multiple subtraits (#311) @ZocoLini
- Cleanup unused config parameters (#346) @xdustinface
- Cleanup message handler re-enable skipped tests (#352) @ZocoLini
- Add
test_utilsmodules (#347) @ZocoLini - Move
Headers2processing into network layer (#369) @xdustinface - Move storage tests into unit tests and drop duplicated tests (#371) @ZocoLini
- Unify validation with a
Validatortrait (#355) @ZocoLini - Move sync system into
sync/legacy(#379) @xdustinface - Streamline peer related data storage (#327) @ZocoLini
- Replace some test helpers with test-utils dummy helpers (#389) @ZocoLini
- Unify all
MockNetworkManagerinto one (#388) @ZocoLini - Build
DiskStorageManagerfrom config path (#366) @ZocoLini - Move
get_peer_best_heightintoPeerPool(#392) @xdustinface - Rename
storage::blockstostorage::block_headers(#393) @xdustinface - One storage type per file (#395) @xdustinface
- Cleanup
WalletTransactionChecker::check_core_transaction(#402) @xdustinface - Cleanup storage usage in
DashSpvClientconstructor (#418) @xdustinface - Simplify DNS discovery fallback (#423) @xdustinface
- Move manager clone into
start_maintenance_looptask (#426) @xdustinface - Introduce
ProgressPercentagetrait (#431) @xdustinface - Split network maintenance loop into smaller functions (#430) @xdustinface
- Fix formatting in
start_maintenance_loop(#445) @xdustinface - Split
FiltersProgress.current_heightinto committed/stored (#446) @xdustinface - Simplify
FiltersManager.start_download(#450) @xdustinface - Make
DashSpvClientcloneable (#453) @xdustinface - Replace FFI OS threads with tokio tasks (#456) @xdustinface
- Extract methods for fee calculation (#461) @ZocoLini
- Cleanup
DashSpvClientto have singlerun()entry point (#457) @xdustinface - Add
ensure_not_started()guard (#466) @xdustinface - Change wallet_build_and_sign_transaction signature to be used in iOS (#463) @ZocoLini
- Add
RUST_BACKTRACE=1to CI test runs (#478) @xdustinface - Fix ffi api docs (#479) @xdustinface
- Improve ASAN stack trace and symbolization (#475) @xdustinface
- Move manager initialization from trait method to constructors (#467) @xdustinface
- Add
clear_in_flight_state()toSyncManagertrait (#484) @xdustinface - Extract shared
send_message_to_peerhelper (#488) @xdustinface - Add codecov coverage tracking (#493) @xdustinface
- Fix codecov uploads (#494) @xdustinface
- Add
__pycache__/to.gitignore(#495) @xdustinface - Move
Networkstruct intodashcorecrate (#497) @ZocoLini - Make
codecov/patchinformational (#506) @xdustinface - Use target 0% for
codecov/patch(#510) @xdustinface - Make
codecov/projectwait for all uploads (#508) @xdustinface - Fix
PeerPool.get_best_height()logs (#505) @xdustinface - Move
fuzzprofile settings to workspace root (#501) @xdustinface - Update docs of
Networkentries (#499) @xdustinface - Replace
ServiceFlags::from(1)withNETWORK(#507) @xdustinface - Address CodeRabbit feedback from #493 (#516) @PastaPastaPasta
- Rename
Dashnetwork entries toMainnet(#500) @xdustinface - Update key-wallet documentation to match current codebase (#524) @shumkov
- Disable
carryforwardflags to flush stale data (#543) @xdustinface - Enable CodeRabbit
request_changes_workflow(#531) @xdustinface - Re-enable
carryforwardflags (#543) (#544) @xdustinface - Re-disable
carryforwardflags (#545) @xdustinface - Consolidate fuzz CI to nightly schedule (#549) @xdustinface
- Add
ready-for-reviewlabel automation on CodeRabbit approval (#550) @xdustinface - Add polling wait for wallet callbacks in FFI test (#546) @xdustinface
- Move counter increments after payload writes in FFI callbacks (#547) @xdustinface
- Extract
snapshot_balances/emit_balance_changeshelpers (#542) @xdustinface - Add 200 block regtest blockchain support (#537) @xdustinface
- Default to
relay=falsein P2P handshake (#536) @xdustinface - Extract wallet setup into
TestWalletContext(#539) @xdustinface - Consolidate test transaction creation (#538) @xdustinface
- Extract capability lookup into
PeerPoolhelpers (#509) @xdustinface - Gate
ready-for-reviewlabel on CodeRabbit approval + CI passing (#561) @xdustinface - Add PR title prefix enforcement (#532) @xdustinface
- Use
runner.tempfor dashd log path instead of hardcoded/tmp(#563) @xdustinface - Wrap test execution in
try/finally(#564) @xdustinface - Decouple
verify-groupsfrom test matrix (#562) @xdustinface - Fix
gh apireview-state query inready-for-reviewworkflow (#566) @xdustinface - Merge
key-wallet-managercrate intokey-wallet(#503) @ZocoLini - Guard
ready-for-reviewlabel against draft PRs and handle undraft (#570) @xdustinface - Move event callback dispatch into
DashSpvClient(#572) @xdustinface - Extract
BlockInfofromTransactionContext(#578) @xdustinface - Gate manager module behind feature flag (#584) @QuantumExplorer
- Extract
key-wallet-managercrate fromkey-wallet(#594) @xdustinface - Move header files generation to the target directory (#579) @ZocoLini
- Extract WalletManager accessors and error types (#599) @QuantumExplorer
- Adjust
CLAUDE.mdthatdashdintegration tests should be run (#601) @xdustinface - Add generated FFI header directories to
.gitignore(#603) @xdustinface - Store
TransactionContextinTransactionRecord(#582) @xdustinface - Rename FFI context structs to match
key-walletnaming (#612) @xdustinface - Update stale
wallet_check_transactiondocs (#613) @xdustinface - Add FFI header validation step (#609) @ZocoLini
- Move
broadcast/disconnect_peertoNetworkManagertrait (#623) @xdustinface - Use clap derive in CLI (#620) @xdustinface
- Use
StringforTransactionRecord::label(#624) @xdustinface - Cleanup unused dependencies (#633) @xdustinface
- Unify logging on tracing (#635) @xdustinface
- Ignore
RUSTSEC-2026-0097untilblsfulupdatesrand(#639) @xdustinface - Inline
MempoolStateintoMempoolManager(#628) @xdustinface - Move spendable_utxos from wallet to account (#643) @QuantumExplorer
- Consolidate
FFINetworkin dashcore newffifeature (#642) @ZocoLini - Make WatchOnly / ExternalSignable unit variants (#654) @QuantumExplorer
- Bump pinned Rust toolchain to
1.94.1(#648) @xdustinface - Bump pinned Rust toolchain to 1.95.0 (#662) @QuantumExplorer
- Loosen wallet recovery perf threshold to 70ms (#663) @QuantumExplorer
- Fix
setup-dashd.pyscript env var export (#677) @ZocoLini - Extract Network into standalone dash-network crate (#679) @QuantumExplorer
- Rename wallet heights to reflect their meaning better (#683) @xdustinface
- Replace match patterns where we can use
error.rsmacros (#691) @ZocoLini - Track wallet heights per wallet (#689) @xdustinface
- Cleanup useless statements in
cbindgen.toml(#629) @ZocoLini - Rename
ManagedCoreAccount.account_type(#704) @xdustinface - Format wallet amounts as DASH in logs (#703) @xdustinface
- Split
ManagedCoreAccountinto funds + keys variants (#711) @QuantumExplorer - Fix ffi docs (#737) @xdustinface
- Move core tx building and signing into the key-wallet-manager crate (#727) @ZocoLini
- Add multi-wallet integration tests (#697) @xdustinface
- Forbid
std::sync::Mutex/RwLockvia clippy (#739) @ZocoLini - Wire ManagedCoreKeysAccount into the collection (#742) @QuantumExplorer
- Bump
actions/cacheto v5 andcodecov/codecov-actionto v6 (#741) @xdustinface - Refactor TransactionBuilder to centralize as much logic as possible (#744) @ZocoLini
- Add masternode integration tests (#740) @xdustinface
- Fix
create_test_walletimport intests_transaction(#751) @xdustinface - Make logging a built-in event handler (#745) @xdustinface
- Inline event logging into monitor tasks (#757) @xdustinface
- Change
DerivedAddress::public_keytoPublicKey(#765) @xdustinface - Stop caching
~/.cargo/bin(#767) @xdustinface - Return chainlock height from
wait_for_wallet_tx_chainlocked(#766) @xdustinface - Replace
runtoken andrunningflag withwatch(#772) @xdustinface
- Avoid X11 hash with wrong input size in tests (#324) @xdustinface
- Single file handle in
atomic_write(#317) @xdustinface - Use
from_byte_arrayfor dummy block hash in tests (#310) @xdustinface - Qualify
Hashtrait in macros for--no-default-features(#313) @xdustinface - Add missing license fields for cargo-deny audit (#314) @xdustinface
- Add test-only
LockFile::read_pidfor cross-platform testing (#316) @xdustinface - Prevent memory leaks in FFI tests (#323) @xdustinface
- Use RFC 5737 TEST-NET-1 IP for timeout testing (#308) @xdustinface
- Address Windows filename issues (#312) @xdustinface
- Reject empty hostname in peer address in FFI (#318) @xdustinface
- Update wallet heights when processing blocks (#309) @xdustinface
- Fail sync on timeout (#342) @xdustinface
- Correct confirmations for UTXOs in wallet FFI (#306) @xdustinface
- Store checkpoints at checkpoint height not 0 (#345) @xdustinface
- Unify immature balance tracking with remaining balances (#341) @xdustinface
- Distinguish between new and existing transactions in wallet (#378) @xdustinface
- Add missing
DevnetandRegtestforPlatformPayment(#390) @xdustinface - Store checkpoint filter header at the correct height (#399) @xdustinface
- Add missing transaction types in serialization (#401) @xdustinface
- Look up quorum by actual
quorum_indexnot by array position (#406) @xdustinface - Use
borrow_and_updateto avoid duplicate progress dispatches in ffi (#415) @ZocoLini - Require chainlock signatures only after V20 activation (#405) @xdustinface
- Use
masternode_lists_around_heightfor quorum lookups (#407) @PastaPastaPasta - Store all peers in storage (#420) @xdustinface
- Make use of stored peers (#422) @xdustinface
- Clear up failed connection attempts (#425) @xdustinface
- Avoid panic for sentinel blocks in debug builds (#427) @xdustinface
- Avoid re-inserting previous filter header on sync resume (#428) @xdustinface
- Prevent invalid header response routing (#439) @xdustinface
- Maintenance loop stops connecting at 1 peer (#437) @xdustinface
- Ensure
PeerDisconnectedis emitted on write-path disconnects (#435) @xdustinface - Handle missing fields in
ProUpServTxv2 encode (#417) @xdustinface - Use
Intervalfor maintenance tick and delay the first dns tick (#434) @xdustinface - Emit
FiltersSyncCompletefor incremental updates (#443) @xdustinface - Separate filter scan height from synced height (#442) @xdustinface
- Reset
FilterManagerin flight state when all peers disconnect (#441) @xdustinface - Correct state and
PeerDisconnectedevents in removal paths (#436) @xdustinface - Fix shutdown deadlock and ordering (#440) @lklimek
- Create filter batches at queue time to fix overlaps/gaps (#452) @xdustinface
- Correct wrong transaction data pointer creation (#462) @ZocoLini
- Correct state transitions in filter sync manager (#451) @xdustinface
- Disconnect peers after pong timeout (#424) @xdustinface
- Correct initial percentage to only average active managers (#471) @xdustinface
- Consolidate duplicate
FFISyncProgressdestroy functions (#474) @xdustinface - Avoid extra
GetHeadersafter post-sync header processing (#486) @xdustinface - Align bloom filter size/hash calculation with Dash Core (#529) @xdustinface
- Make
DMNState.serviceandMasternodeStatus.serviceoptional for Core v24 (#523) @PastaPastaPasta - Route
getdatarequests to the peer that sent theinv(#527) @xdustinface - Dashify the units (#250) @kxcd
- Cap
Vec::with_capacityinHeaders2Messagedeserialization (#63) (#581) @xdustinface - Clean up
key-walletfeature flags afterno-stdremoval (#588) @xdustinface - Disable key-wallet default features (#596) @shumkov
- Initialize everything correctly in
FiltersManager::new(#598) @xdustinface - Replace
abort()with cooperative wait inwait_for_run_task(#576) @xdustinface - Handle and propagate errors in event channel monitors (#573) @xdustinface
- Detect coinbase by input pattern in
classify_transaction(#606) @xdustinface - Extract asset lock builder into key-wallet (#604) @QuantumExplorer
- Register error callback in FFI CLI binary (#575) @xdustinface
- Make
broadcastnot return an error on success (#625) @xdustinface - Gate
FilterHeadersSyncCompleteon block header sync completion (#631) @xdustinface - Process broadcast transactions via
dispatch_local(#626) @xdustinface - Subscribe to SPV event monitors before startup (#636) @xdustinface
- Announce tip to new peers when synced (#490) @xdustinface
- Drop
max_retriesfromDownloadCoordinatorto prevent sync stall (#632) @xdustinface - Index rotated quorums by
quorum_indexand rebuild per cycle (#637) @xdustinface - Correct AssetLockTx structure per DIP-00X (#659) @QuantumExplorer
- Address serde deserialize no longer hardcodes Mainnet (#657) @QuantumExplorer
- Remove overly-strict is_synced gate from broadcast (#656) @QuantumExplorer
- Feed
last_commitment_per_indexheights to engine (#665) @xdustinface - Use platform LLMQ type for regtest in
platform_type()(#667) @xdustinface - Align
LLMQ_TEST_DIP0024params with Dash Core (#666) @xdustinface - Use single historical anchor for
QRInfobase hashes (#668) @xdustinface - Replace
hickory-resolverwithtokio::net::lookup_host(#690) @ZocoLini - Gate serde-only imports in BLS derivation (#701) @QuantumExplorer
- Seed sync checkpoints from
birth_heightinManagedWalletInfoctors (#692) @xdustinface - Track self-send change in confirmed balance (#707) @QuantumExplorer
- Ignore special transactions on block version 0 (pre DIP-0002) (#675) @owl352
- Preserve buffered block headers across disconnect (#702) @xdustinface
- Preserve raw nTxType bytes on pre-DIP-0002 (version 0) transactions (#726) @QuantumExplorer
- Classify missing infrastructure errors as
Skipped(#721) @xdustinface - Make SerdeHash tolerant of ContentDeserializer's HR-quirk (#729) @shumkov
- Make OutPoint serde tolerant of ContentDeserializer's HR-quirk (#708) @shumkov
- Make
feed_qr_inforesilient to missing rotation CL sigs (#736) @xdustinface - Fire catch-up QRInfo past
Incrementalmining window (#743) @xdustinface - Let
CoinSelectorspend mempool UTXOs (#748) @ZocoLini - Preserve in-progress sync state on peer disconnect (#746) @xdustinface
- Prevent filter sync stalls from stale progress guards (#754) @xdustinface
- Drop unused
utxo.rsinkey-walletcrate (#304) @xdustinface - Remove
headersfromChainState(#292) @ZocoLini - Drop pointless
utxo_tests.rs(#333) @xdustinface - Remove more unused
ClientConfigfields (#348) @ZocoLini - Remove an empty file (#354) @ZocoLini
- Drop redundant block processing (#349) @xdustinface
- Remove pointless
skip_mock_implementation_incompletefeature (#340) @ZocoLini - Remove unused
bloommodule (#280) @ZocoLini - Drop unused integration tests (#362) @xdustinface
- Drop headers2 stats (#367) @xdustinface
- Drop useless
DashSpvClient.sync_to_tip(#363) @xdustinface - Remove mempool tracking config mutation method (#373) @ZocoLini
- Drop redundant network message logs (#380) @xdustinface
- Drop incomplete dsq preference updates (#382) @xdustinface
- Remove not needed
PeerInfostruct (#386) @ZocoLini - Drop unused "peer sent headers2" tracking (#387) @xdustinface
- Drop
SpvStatsstatistics (#394) @xdustinface - Unused ffi functions removed from dash-spv-ffi crate (#377) @ZocoLini
- Remove legacy sync code (#414) @xdustinface
- Drop unused ffi functions (#449) @ZocoLini
- Remove duplicate
get_peer_countmethod (#455) @xdustinface - Drop unused transaction ffi functions (#460) @ZocoLini
- Remove broken ffi integration tests (#468) @ZocoLini
- Remove
SyncState::Initializingvariant (#465) @xdustinface - Remove unified sdk references (#302) @xdustinface
- Drop unused
completed_countinBlocksPipeline(#477) @xdustinface - Drop unused
_TestCallbackData(#472) @xdustinface - Drop
FeeEstimator(#480) @ZocoLini - Remove some unused files (#296) @xdustinface
- Drop
FeeLevel(#481) @ZocoLini - Drop unsigned transactions creation in
WalletManagerand inManagedWalletInfo(#483) @ZocoLini - Drop
dashcore::FeeRate(#482) @ZocoLini - Drop unused
UtxoSetstruct (#491) @ZocoLini - Drop unused
NetworkManagerfunctions (#504) @xdustinface - Removed
hkdfdependency (#512) @ZocoLini - Remove unnecessary code in
internals::macros(#513) @ZocoLini - Drop
no-stdCI jobs (#522) @ZocoLini - Drop unused modules in
dashcorecrate (#534) @ZocoLini - Drop out-of-scope crates inside
hashescrate (#535) @ZocoLini - Drop
toolsCI test group (#548) @xdustinface - Remove
current_sync_peerfrom network manager (#511) @xdustinface - Drop unused
update_wallet_balancefromWalletManager(#560) @xdustinface - Drop
no-stdsupport in internals (#519) @ZocoLini - Drop
no-stdsupport forhashes(#520) @ZocoLini - Drop
no-stdsupport indashcore(#521) @ZocoLini - Remove orphaned
key-wallet-managerdirectory (#568) @xdustinface - Remove FFI header generation from
pre-commitFFI step (#565) @xdustinface - Remove
ready-for-reviewlabel whenmerge-conflictis added (#571) @xdustinface - Remove flaky
handshake_test.rsintegration tests (#574) @xdustinface - Drop out of date c tests (#583) @ZocoLini
- Revert "fix(rpc-json): make
DMNState.serviceandMasternodeStatus.service…" (#586) @QuantumExplorer - Drop incomplete
no-stdsupport forkey-wallet(#518) @ZocoLini - Remove
default_peers_for_networkfromClientConfig(#592) @xdustinface - Remove dead
transaction_effectfromWalletInterface(#621) @xdustinface - Remove legacy mempool leftovers (#619) @xdustinface
- Remove and replaced FFIExtendedPrivateKey with FFIExtendedPrivKey (#645) @ZocoLini
- Remove and replace
FFIExtendedPublicKeywithFFIExtendedPubKey(#646) @ZocoLini - Drop random tests (#653) @ZocoLini
- Remove unused dev-dependencies (#652) @ZocoLini
- Remove redundant
HDWallet+AccountDerivationstruct (#674) @QuantumExplorer - Drop unused
Option<FH>callback fromfeed_qr_info(#669) @xdustinface - Remove unused
consecutive_resyncscounter onPeer(#705) @xdustinface - Drop unused
AccountMetadatastruct (#717) @QuantumExplorer - Drop unused
first_loaded_atandtotal_transactionsfromWalletMetadata(#719) @QuantumExplorer - Remove
wallet_create_managed_wallet(#710) @xdustinface - Drop unused
is_watch_onlyfromManagedCoreAccount(#718) @QuantumExplorer - Remove unused error variants (#364) @ZocoLini
- Revert "feat(ffi): add dash_spv_ffi_config_clear_peers (#591)" (#593) @xdustinface
- Remove
MnemonicWithPassphrasewallet type (#747) @QuantumExplorer - Drop
description(), useDisplayfor events (#758) @xdustinface - Drop unreachable
WouldBlock/TimedOut(#753) @xdustinface - Remove dead
dash/embeddedcrate and unusedfuzz/Cargo.lock(#773) @xdustinface
- Bump
bincodeto2.0.1(#356) @lklimek
- 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-commitinfrastructure (#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_writefor 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-fileCLI argument (#285) @xdustinface - Add
networktoFFIWalletManagerstruct (#325) @xdustinface
- 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
MultiPeerNetworkManagertoPeerNetworkManager(#184) @xdustinface - Improve SPV shutdown handling with
CancellationToken(#187) @xdustinface - Rename
TcpConnectiontoPeerandConnectionPooltoPeerPool(#190) @xdustinface - Drop unused code in
dash-spv::network(#192) @xdustinface - Clippy auto fixes (#198) @pauldelucia
- Make flow control syncing default (#211) @xdustinface
- Rename
HeaderSyncManagerWithReorgtoHeaderSyncManager(#221) @xdustinface - Don't add a dummy in
mark_filter_received(#222) @xdustinface - Cleanup and simplify
MemoryStorageManager(#224) @xdustinface - Make
synced_from_checkpointbased onsync_base_height(#226) @xdustinface - More address matching in typo checker (#230) @xdustinface
- Use
genesis_blockfor all nets ininitialize_genesis_block(#231) @xdustinface - Rename
SequentialSyncManagertoSyncManager(#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
WalletandManagedWalletInfo(#271) @xdustinface - Remove all use of
dyn(#274) @ZocoLini - Some
ChainStatecleanups (#289) @ZocoLini - Drop
FFINetworksand useFFINetworkonly (#294) @xdustinface - Single network
WalletManager(#299) @xdustinface - Make wallet birth height non-optional (#300) @xdustinface
- Drop unused sync code (#208) @xdustinface
- Drop
ChainHashand related tests fromdash(#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
- CFHeaders overlap verification and underflow prevention (#163) @PastaPastaPasta
- FFI event flooding and memory leak in progress callbacks (#173) @PastaPastaPasta
PeerNetworkManagercast inbroadcast_transaction(#185) @xdustinface- Use non-blocking
TcpStreamin 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_limittarget calculation off by one (#286) @xdustinface- Docs build issues (#297) @xdustinface
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:
- Remove dangerous
fuzztargetcargo feature #634 - Improve serde serialization for
Script#596 - Documentation improvements #623 #633 #663 #689 #704 #744 #852 #869 #865 #864 #858 #806 #877 #912 #923
- Introduce
WitnessVersiontype #617 - Improve error types and API #625
- Implement
Block.get_strippedsize()andTransaction.get_vsize()#626 - Add Bloom filter network messages #580
- Taproot: add signature hash support #628 #702 #722 #835 #903 #796
- Taproot: add new Script opcodes #644 #721 #868 #920
- Taproot: add bech32m support, addresses and new key types #563 #691 #697 #728 #696 #757
- Taproot: add taptree data structures #677 #703 #701 #718 #845 #901 #910 #909 #914
- no-std improvements #637
- PSBT improvements, including Taproot #654 #681 #669 #774 #779 #752 #776 #790 #836 #847 #842
- serde improvements #672
- Update rust-secp256k1 dependency #694 #755 #875
- Change BIP32 to use rust-secp256k1 keys rather than rust-bitcoin ones (no compressedness flag) #590 #591
- Rename inner key field in
PrivateKeyandPublicKey#762 - Address and denomination related changes #768 #784
- Don't allow hybrid EC keys #829
- Change erroneous behavior for
SIGHASH_SINGLEbug #860 #897 - Delete the deprecated
contracthashmodule #871; this functionality will migrate to ElementsProject/rust-elements - Remove compilation-breaking feature-gating of enum variants" #881
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.
- 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
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
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
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
dashcore_hashesandsecp256k1dependent crates. - Updated
dashcore_hashesdependency to v0.7. - Removed
randandserde_testdependencies. - Internal improvements to consensus encoding logic.
- Update
bitcoin-bech32version to 0.9 - add
to_bytesmethod forkeytypes - add serde impls for
keytypes - contracthash: minor cleanups, use
keytypes instead ofsecp256k1types
- Add some trait impls to
PublicKeyfor miniscript interoperability
- Update minimum rustc version to 1.22.
- Replace
rust-cryptowithdashcore_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
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::serializetohash; 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
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.
- 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_passpublic - add
ScriptPubkeyType::witness_v1_taproot
- add
wallet_conflictsfield inWalletTxInfo - add
get_chain_tips - add
get_block_template - implement
From<u64>andFrom<Option<u64>>forImportMultiRescanSince - bump rust-bitcoin dependency to 0.27
- bump json-rpc dependency to 0.12.0
- remove dependency on
hex
- 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
- bump
bitcoindependency to version0.25, increasing our MSRV to1.29.0 - test against
bitcoind0.20.0and0.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_walletand related APIs - extend
GetWalletInfoResult - extend
WalletTxInfo - extend testsuite
- fix
GetPeerInfoResult - fix
GetNetworkInfoResult - fix
GetTransactionResultDetailCategory - fix
GetMempoolEntryResultfor bitcoind prior to0.19.0 - fix
GetBlockResultandGetBlockHeaderResult
- fix
minimum_sum_amountfield name inListUnspentQueryOptions - add missing "orphan" variant for
GetTransactionResultDetailCategory - add
ImportMultiRescanSinceto support "now" forimportmulti'stimestampparameter - rename logging target to
bitcoincore_rpcinstead ofbitcoincore_rpc::client - other logging improvements
- rename
dump_priv_key->dump_private_key+ change return type - rename
get_block_header_xxxmethods to conform withget_block_xxxmethods - rename
get_raw_transaction_xxxmethods to conform withget_block_xxxmethods - rename
GetBlockHeaderResultfields - rename
GetMiningInfoResultfields - represent difficulty values as
f64instead ofBigUint - fix
get_peer_info - fix
get_transaction - fix
get_balance - fix
get_blockchain_infoand 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_unspentmore ergonomic - made all exported enum types implement
Copy - export
jsonrpcdependency. - remove
num_bigintdependency
- Add
wallet_create_funded_psbt - Add
get_descriptor_info - Add
combine_psbt - Add
derive_addresses - Add
finalize_psbt - Add
rescan_blockchain
- use
bitcoin::PublicKeyinstead ofsecp256k1::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
- polish Auth to use owned Strings
- fix using Amount type and Address types where needed
- use references of sha256d::Hashes instead of owned/copied
- add get_tx_out_proof
- add import_address
- add list_received_by_address
- 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
- 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::SecretKeytype in API
- 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
- add send_to_address command
- add create_raw_transaction command
- Client methods take self without mut