Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions internal/netsync/manager.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Copyright (c) 2013-2016 The btcsuite developers
// Copyright (c) 2015-2025 The Decred developers
// Copyright (c) 2015-2026 The Decred developers
// Use of this source code is governed by an ISC
// license that can be found in the LICENSE file.

Expand Down Expand Up @@ -1056,7 +1056,8 @@ func (m *SyncManager) OnMixMsg(peer *Peer, msg mixing.Message) ([]mixing.Message
return nil, nil
}

accepted, err := m.cfg.MixPool.AcceptMessage(msg)
source := mixpool.Uint64Source(peer.ID())
accepted, err := m.cfg.MixPool.AcceptMessage(msg, source)

// Remove message from request maps. Either the mixpool already knows
// about it and as such we shouldn't have any more instances of trying
Expand Down
9 changes: 5 additions & 4 deletions internal/rpcserver/interface.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2019-2025 The Decred developers
// Copyright (c) 2019-2026 The Decred developers
// Use of this source code is governed by an ISC
// license that can be found in the LICENSE file.

Expand All @@ -20,6 +20,7 @@ import (
"github.com/decred/dcrd/internal/mining"
"github.com/decred/dcrd/math/uint256"
"github.com/decred/dcrd/mixing"
"github.com/decred/dcrd/mixing/mixpool"
"github.com/decred/dcrd/peer/v3"
"github.com/decred/dcrd/rpc/jsonrpc/types/v4"
"github.com/decred/dcrd/txscript/v4/stdaddr"
Expand Down Expand Up @@ -200,9 +201,9 @@ type SyncManager interface {
// This method may report a false positive, but never a false negative.
RecentlyConfirmedTxn(hash *chainhash.Hash) bool

// SubmitMixMessage submits the mixing message to the network after
// processing it locally.
SubmitMixMessage(msg mixing.Message) error
// AcceptMixMessage attempts to accept a mixing message to the local mixing
// pool.
AcceptMixMessage(msg mixing.Message, src mixpool.Source) error
}

// UtxoEntry represents a utxo entry for use with the RPC server.
Expand Down
6 changes: 4 additions & 2 deletions internal/rpcserver/rpcserver.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Copyright (c) 2013-2016 The btcsuite developers
// Copyright (c) 2015-2025 The Decred developers
// Copyright (c) 2015-2026 The Decred developers
// Use of this source code is governed by an ISC
// license that can be found in the LICENSE file.

Expand Down Expand Up @@ -50,6 +50,7 @@ import (
"github.com/decred/dcrd/internal/mining/cpuminer"
"github.com/decred/dcrd/internal/version"
"github.com/decred/dcrd/mixing"
"github.com/decred/dcrd/mixing/mixpool"
"github.com/decred/dcrd/rpc/jsonrpc/types/v4"
"github.com/decred/dcrd/txscript/v4"
"github.com/decred/dcrd/txscript/v4/stdaddr"
Expand Down Expand Up @@ -4348,7 +4349,8 @@ func handleSendRawMixMessage(_ context.Context, s *Server, cmd interface{}) (int
msg.WriteHash(s.blake256Hasher)
s.blake256HaserMu.Unlock()

err = s.cfg.SyncMgr.SubmitMixMessage(msg)
// Use 0 for the source to represent the local node.
err = s.cfg.SyncMgr.AcceptMixMessage(msg, mixpool.ZeroSource)
if err != nil {
// XXX: consider a better error code/function
str := fmt.Sprintf("Rejected mix message: %s", err)
Expand Down
15 changes: 9 additions & 6 deletions internal/rpcserver/rpcserverhandlers_test.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2020-2025 The Decred developers
// Copyright (c) 2020-2026 The Decred developers
// Use of this source code is governed by an ISC
// license that can be found in the LICENSE file.

Expand Down Expand Up @@ -44,6 +44,7 @@ import (
"github.com/decred/dcrd/internal/version"
"github.com/decred/dcrd/math/uint256"
"github.com/decred/dcrd/mixing"
"github.com/decred/dcrd/mixing/mixpool"
"github.com/decred/dcrd/peer/v3"
"github.com/decred/dcrd/rpc/jsonrpc/types/v4"
"github.com/decred/dcrd/txscript/v4"
Expand Down Expand Up @@ -572,7 +573,7 @@ func (c *testAddrManager) LocalAddresses() []addrmgr.LocalAddr {
type testSyncManager struct {
isCurrent bool
submitBlockErr error
submitMixErr error
acceptMixErr error
syncPeerID int32
syncHeight int64
processTransaction []*dcrutil.Tx
Expand All @@ -592,10 +593,6 @@ func (s *testSyncManager) SubmitBlock(block *dcrutil.Block) error {
return s.submitBlockErr
}

func (s *testSyncManager) SubmitMixMessage(msg mixing.Message) error {
return s.submitMixErr
}

// SyncPeer returns a mocked id of the current peer being synced with.
func (s *testSyncManager) SyncPeerID() int32 {
return s.syncPeerID
Expand All @@ -619,6 +616,12 @@ func (s *testSyncManager) RecentlyConfirmedTxn(hash *chainhash.Hash) bool {
return s.recentlyConfirmedTxn
}

// AcceptMixMessage provides a mock implementation for attempting to accept a
// mixing message to the local mixing pool.
func (s *testSyncManager) AcceptMixMessage(msg mixing.Message, src mixpool.Source) error {
return s.acceptMixErr
}

// testExistsAddresser provides a mock exists addresser by implementing the
// ExistsAddresser interface.
type testExistsAddresser struct {
Expand Down
4 changes: 2 additions & 2 deletions mixing/mixclient/client_test.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2024 The Decred developers
// Copyright (c) 2024-2026 The Decred developers
// Use of this source code is governed by an ISC
// license that can be found in the LICENSE file.

Expand Down Expand Up @@ -114,7 +114,7 @@ func (w *testWallet) SignInput(tx *wire.MsgTx, index int, prevScript []byte) err
}

func (w *testWallet) SubmitMixMessage(ctx context.Context, msg mixing.Message) error {
_, err := w.mixpool.AcceptMessage(msg)
_, err := w.mixpool.AcceptMessage(msg, mixpool.ZeroSource)
return err
}

Expand Down
Loading