From 5cd2f59d8d3fa1547ca989395deb77b80041957d Mon Sep 17 00:00:00 2001 From: Josh Rickmar Date: Thu, 9 Apr 2026 20:35:24 +0000 Subject: [PATCH 1/4] [release-v2.1] Provide SPV peers as mixing message source Providing unique sources of mixing messages allows mixpool orphan removal to more accurately target peers who have submitted the most orphans. Backport of 4317fc38324a6f79883d503cd3bb60d176d707d6. --- chain/sync.go | 4 ++-- spv/sync.go | 2 +- wallet/mixing.go | 13 +++++++++++++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/chain/sync.go b/chain/sync.go index fd335763c..3f3767006 100644 --- a/chain/sync.go +++ b/chain/sync.go @@ -944,7 +944,7 @@ func (s *Syncer) mixMessage(ctx context.Context, params json.RawMessage) error { msg.WriteHash(s.blake256Hasher) s.blake256HasherMu.Unlock() - err = s.wallet.AcceptMixMessage(msg) + err = s.wallet.AcceptMixMessageBySource(msg, mixpool.ZeroSource) var e *mixpool.MissingOwnPRError if errors.As(err, &e) { ke, ok := msg.(*wire.MsgMixKeyExchange) @@ -957,7 +957,7 @@ func (s *Syncer) mixMessage(ctx context.Context, params json.RawMessage) error { pr.WriteHash(s.blake256Hasher) s.blake256HasherMu.Unlock() - err = s.wallet.AcceptMixMessage(pr) + err = s.wallet.AcceptMixMessageBySource(pr, mixpool.ZeroSource) } return err } diff --git a/spv/sync.go b/spv/sync.go index a0bf8e510..a2cd65381 100644 --- a/spv/sync.go +++ b/spv/sync.go @@ -1223,7 +1223,7 @@ func (s *Syncer) handleMixInvs(ctx context.Context, rp *p2p.RemotePeer, hashes [ } } - err := s.wallet.AcceptMixMessage(msg) + err := s.wallet.AcceptMixMessageBySource(msg, rp) var missingPRErr *mixpool.MissingOwnPRError if errors.As(err, &missingPRErr) { ke := msg.(*wire.MsgMixKeyExchange) diff --git a/wallet/mixing.go b/wallet/mixing.go index d8b2433cc..c74cdf0d7 100644 --- a/wallet/mixing.go +++ b/wallet/mixing.go @@ -553,6 +553,8 @@ func PossibleCoinJoin(tx *wire.MsgTx) (isMix bool, mixDenom int64, mixCount uint // AcceptMixMessage adds a mixing message received from the network backend to // the wallet's mixpool. +// +// Deprecated: Use [AcceptMixMessageBySource]. func (w *Wallet) AcceptMixMessage(msg mixing.Message) error { _, err := w.mixpool.AcceptMessage(msg, mixpool.ZeroSource) if err != nil { @@ -562,6 +564,17 @@ func (w *Wallet) AcceptMixMessage(msg mixing.Message) error { return nil } +// AcceptMixMessageBySource adds a mixing message received from the network +// backend to the wallet's mixpool. +func (w *Wallet) AcceptMixMessageBySource(msg mixing.Message, source mixpool.Source) error { + _, err := w.mixpool.AcceptMessage(msg, source) + if err != nil { + return err + } + + return nil +} + func (w *Wallet) expireMixMessages(height uint32) { mixc := w.mixClient.Load() if mixc == nil { From 4bc7039e60ea5d2c950de24d6788afc4b1667fef Mon Sep 17 00:00:00 2001 From: jholdstock Date: Fri, 10 Apr 2026 12:58:13 +0000 Subject: [PATCH 2/4] [release-v2.1] Increment correct account branch. Ensure SyncLastReturnedAddress RPC increments the correct account branch when the caller specifies the external branch. Also fix the func name used for errors/logging while this area is being touched. Backport of 482d3429ef257d5843fd3ecffa072253101b0044. --- wallet/addresses.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wallet/addresses.go b/wallet/addresses.go index 4315d8e4c..d721ecfb8 100644 --- a/wallet/addresses.go +++ b/wallet/addresses.go @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2025 The Decred developers +// Copyright (c) 2017-2026 The Decred developers // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. @@ -843,7 +843,7 @@ func (w *Wallet) BIP0044BranchNextIndexes(ctx context.Context, account uint32) ( // BIP00044 account branch. The next returned address for the branch will be // child+1. func (w *Wallet) SyncLastReturnedAddress(ctx context.Context, account, branch, child uint32) error { - const op errors.Op = "wallet.ExtendWatchedAddresses" + const op errors.Op = "wallet.SyncLastReturnedAddress" var ( branchXpub *hdkeychain.ExtendedKey @@ -860,7 +860,7 @@ func (w *Wallet) SyncLastReturnedAddress(ctx context.Context, account, branch, c var alb *addressBuffer switch branch { case udb.ExternalBranch: - alb = &acctData.albInternal + alb = &acctData.albExternal case udb.InternalBranch: alb = &acctData.albInternal default: From 4dbb3c3edf82334012a1ee828e9e5b68c84cfaa8 Mon Sep 17 00:00:00 2001 From: Josh Rickmar Date: Fri, 10 Apr 2026 16:41:55 +0000 Subject: [PATCH 3/4] [release-v2.1] Update mixing module to v0.7.3 Backport of 04fbb6780c1fc42b66b641b8f6143a2590a8e190. --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 67935ab48..04a85bf19 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/decred/dcrd/dcrutil/v4 v4.0.3 github.com/decred/dcrd/gcs/v4 v4.1.1 github.com/decred/dcrd/hdkeychain/v3 v3.1.3 - github.com/decred/dcrd/mixing v0.7.2 + github.com/decred/dcrd/mixing v0.7.3 github.com/decred/dcrd/rpc/jsonrpc/types/v4 v4.4.0 github.com/decred/dcrd/rpcclient/v8 v8.1.0 github.com/decred/dcrd/txscript/v4 v4.1.2 diff --git a/go.sum b/go.sum index 770c1556a..83deb70ee 100644 --- a/go.sum +++ b/go.sum @@ -50,8 +50,8 @@ github.com/decred/dcrd/gcs/v4 v4.1.1 h1:3ELoII8uwIxXFGq6ETB29AjW7Lmr3McQOYsSD3dv github.com/decred/dcrd/gcs/v4 v4.1.1/go.mod h1:5q1EnYp1CzJw057/XfRB6UGkos24fpu2r2ZLuwE7YdE= github.com/decred/dcrd/hdkeychain/v3 v3.1.3 h1:Kn2wfj5cOR6pQO/WrYOMT1KK12IgWFEeQwnk1o81WsU= github.com/decred/dcrd/hdkeychain/v3 v3.1.3/go.mod h1:mDAuGaH6InRD+hKVeVJsjLD/ih1mD3aCKURNHS8Tq2s= -github.com/decred/dcrd/mixing v0.7.2 h1:lfCjkn9N7KuANNJkBdTJTrkIbzzklsf8yGBQ8trVTpk= -github.com/decred/dcrd/mixing v0.7.2/go.mod h1:riSgG1GpWXl8LVuBvo8WXuFgcBj01ZGpTAxT/4PrtU0= +github.com/decred/dcrd/mixing v0.7.3 h1:zrMPKvR3GP2stDiqT9tiv0e8GGnFpgl1EClNRew7FFk= +github.com/decred/dcrd/mixing v0.7.3/go.mod h1:riSgG1GpWXl8LVuBvo8WXuFgcBj01ZGpTAxT/4PrtU0= github.com/decred/dcrd/rpc/jsonrpc/types/v4 v4.4.0 h1:BBVaYemabsFsaqNVlCmacoZlSsLDqwHYIs8ty6fg59Q= github.com/decred/dcrd/rpc/jsonrpc/types/v4 v4.4.0/go.mod h1:w4C6hZ7ywpc8/YNkiPAknCaqKofF68cRhUiTglEIc7s= github.com/decred/dcrd/rpcclient/v8 v8.1.0 h1:FLZ1j4ub7+O9oCIcKf+frYCrZW++G3FSzk2/f4U80hI= From a78745f9aec8be15446a657d82fac9bd74ce7964 Mon Sep 17 00:00:00 2001 From: Josh Rickmar Date: Thu, 9 Apr 2026 20:35:59 +0000 Subject: [PATCH 4/4] [release-v2.1] Bump version to 2.1.5+release.local. --- version/version.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version/version.go b/version/version.go index f9e2ea7f0..8ffbe0fb4 100644 --- a/version/version.go +++ b/version/version.go @@ -20,7 +20,7 @@ const semverAlphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrst const ( Major = 2 Minor = 1 - Patch = 4 + Patch = 5 ) // Integer is an integer encoding of the major.minor.patch version.