Skip to content

Commit 33098ae

Browse files
committed
merge bitcoin#21160: Move tx inventory into net_processing
1 parent 24205d9 commit 33098ae

25 files changed

+270
-235
lines changed

src/governance/governance.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include <masternode/meta.h>
1818
#include <masternode/node.h>
1919
#include <masternode/sync.h>
20+
#include <net_processing.h>
2021
#include <netfulfilledman.h>
2122
#include <netmessagemaker.h>
2223
#include <protocol.h>
@@ -141,9 +142,9 @@ PeerMsgRet CGovernanceManager::ProcessMessage(CNode& peer, CConnman& connman, Pe
141142

142143
LogPrint(BCLog::GOBJECT, "MNGOVERNANCESYNC -- syncing governance objects to our peer %s\n", peer.GetLogString());
143144
if (nProp == uint256()) {
144-
return SyncObjects(peer, connman);
145+
return SyncObjects(peer, peerman, connman);
145146
} else {
146-
SyncSingleObjVotes(peer, nProp, filter, connman);
147+
SyncSingleObjVotes(peer, peerman, nProp, filter, connman);
147148
}
148149
}
149150

@@ -858,7 +859,7 @@ bool CGovernanceManager::ConfirmInventoryRequest(const CInv& inv)
858859
return true;
859860
}
860861

861-
void CGovernanceManager::SyncSingleObjVotes(CNode& peer, const uint256& nProp, const CBloomFilter& filter, CConnman& connman)
862+
void CGovernanceManager::SyncSingleObjVotes(CNode& peer, PeerManager& peerman, const uint256& nProp, const CBloomFilter& filter, CConnman& connman)
862863
{
863864
// do not provide any data until our node is synced
864865
if (!Assert(m_mn_sync)->IsSynced()) return;
@@ -899,7 +900,7 @@ void CGovernanceManager::SyncSingleObjVotes(CNode& peer, const uint256& nProp, c
899900
if (filter.contains(nVoteHash) || !vote.IsValid(tip_mn_list, onlyVotingKeyAllowed)) {
900901
continue;
901902
}
902-
peer.PushInventory(CInv(MSG_GOVERNANCE_OBJECT_VOTE, nVoteHash));
903+
peerman.PushInventory(peer.GetId(), CInv(MSG_GOVERNANCE_OBJECT_VOTE, nVoteHash));
903904
++nVoteCount;
904905
}
905906

@@ -908,7 +909,7 @@ void CGovernanceManager::SyncSingleObjVotes(CNode& peer, const uint256& nProp, c
908909
LogPrint(BCLog::GOBJECT, "CGovernanceManager::%s -- sent %d votes to peer=%d\n", __func__, nVoteCount, peer.GetId());
909910
}
910911

911-
PeerMsgRet CGovernanceManager::SyncObjects(CNode& peer, CConnman& connman) const
912+
PeerMsgRet CGovernanceManager::SyncObjects(CNode& peer, PeerManager& peerman, CConnman& connman) const
912913
{
913914
assert(m_netfulfilledman.IsValid());
914915

@@ -959,7 +960,7 @@ PeerMsgRet CGovernanceManager::SyncObjects(CNode& peer, CConnman& connman) const
959960

960961
// Push the inventory budget proposal message over to the other client
961962
LogPrint(BCLog::GOBJECT, "CGovernanceManager::%s -- syncing govobj: %s, peer=%d\n", __func__, strHash, peer.GetId());
962-
peer.PushInventory(CInv(MSG_GOVERNANCE_OBJECT, nHash));
963+
peerman.PushInventory(peer.GetId(), CInv(MSG_GOVERNANCE_OBJECT, nHash));
963964
++nObjCount;
964965
}
965966

src/governance/governance.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -292,8 +292,8 @@ class CGovernanceManager : public GovernanceStore
292292
*/
293293
bool ConfirmInventoryRequest(const CInv& inv);
294294

295-
void SyncSingleObjVotes(CNode& peer, const uint256& nProp, const CBloomFilter& filter, CConnman& connman);
296-
PeerMsgRet SyncObjects(CNode& peer, CConnman& connman) const;
295+
void SyncSingleObjVotes(CNode& peer, PeerManager& peerman, const uint256& nProp, const CBloomFilter& filter, CConnman& connman);
296+
PeerMsgRet SyncObjects(CNode& peer, PeerManager& peerman, CConnman& connman) const;
297297

298298
PeerMsgRet ProcessMessage(CNode& peer, CConnman& connman, PeerManager& peerman, std::string_view msg_type, CDataStream& vRecv);
299299

src/llmq/context.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,13 @@ LLMQContext::LLMQContext(CChainState& chainstate, CConnman& connman, CDeterminis
2929
llmq::quorumBlockProcessor = std::make_unique<llmq::CQuorumBlockProcessor>(chainstate, dmnman, evo_db, peerman);
3030
return llmq::quorumBlockProcessor.get();
3131
}()},
32-
qdkgsman{std::make_unique<llmq::CDKGSessionManager>(*bls_worker, chainstate, connman, dmnman, *dkg_debugman, mn_metaman, *quorum_block_processor, mn_activeman, sporkman, unit_tests, wipe)},
32+
qdkgsman{std::make_unique<llmq::CDKGSessionManager>(*bls_worker, chainstate, connman, dmnman, *dkg_debugman, mn_metaman, *quorum_block_processor, mn_activeman, sporkman, peerman, unit_tests, wipe)},
3333
qman{[&]() -> llmq::CQuorumManager* const {
3434
assert(llmq::quorumManager == nullptr);
3535
llmq::quorumManager = std::make_unique<llmq::CQuorumManager>(*bls_worker, chainstate, connman, dmnman, *qdkgsman, evo_db, *quorum_block_processor, mn_activeman, mn_sync, sporkman);
3636
return llmq::quorumManager.get();
3737
}()},
38-
sigman{std::make_unique<llmq::CSigningManager>(connman, mn_activeman, *llmq::quorumManager, unit_tests, wipe)},
38+
sigman{std::make_unique<llmq::CSigningManager>(connman, mn_activeman, *llmq::quorumManager, peerman, unit_tests, wipe)},
3939
shareman{std::make_unique<llmq::CSigSharesManager>(connman, *sigman, mn_activeman, *llmq::quorumManager, sporkman, peerman)},
4040
clhandler{[&]() -> llmq::CChainLocksHandler* const {
4141
assert(llmq::chainLocksHandler == nullptr);

src/llmq/dkgsession.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include <logging.h>
2121
#include <masternode/meta.h>
2222
#include <masternode/node.h>
23+
#include <net_processing.h>
2324
#include <netmessagemaker.h>
2425
#include <validation.h>
2526
#include <util/irange.h>
@@ -1326,10 +1327,10 @@ void CDKGSession::RelayInvToParticipants(const CInv& inv) const
13261327
myProTxHash.ToString().substr(0, 4), ss.str());
13271328

13281329
std::stringstream ss2;
1329-
connman.ForEachNode([&](CNode* pnode) {
1330+
connman.ForEachNode([&](const CNode* pnode) {
13301331
if (pnode->qwatch ||
13311332
(!pnode->GetVerifiedProRegTxHash().IsNull() && (relayMembers.count(pnode->GetVerifiedProRegTxHash()) != 0))) {
1332-
pnode->PushInventory(inv);
1333+
Assert(m_peerman)->PushInventory(pnode->GetId(), inv);
13331334
}
13341335

13351336
if (pnode->GetVerifiedProRegTxHash().IsNull()) {

src/llmq/dkgsession.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class CDeterministicMN;
2222
class CMasternodeMetaMan;
2323
class CSporkManager;
2424
class UniValue;
25+
class PeerManager;
2526

2627
using CDeterministicMNCPtr = std::shared_ptr<const CDeterministicMN>;
2728

@@ -280,6 +281,7 @@ class CDKGSession
280281
CMasternodeMetaMan& m_mn_metaman;
281282
const CActiveMasternodeManager* const m_mn_activeman;
282283
const CSporkManager& m_sporkman;
284+
const std::unique_ptr<PeerManager>& m_peerman;
283285

284286
const CBlockIndex* m_quorum_base_block_index{nullptr};
285287
int quorumIndex{0};
@@ -322,9 +324,10 @@ class CDKGSession
322324
CDKGSession(const Consensus::LLMQParams& _params, CBLSWorker& _blsWorker, CConnman& _connman,
323325
CDeterministicMNManager& dmnman, CDKGSessionManager& _dkgManager, CDKGDebugManager& _dkgDebugManager,
324326
CMasternodeMetaMan& mn_metaman, const CActiveMasternodeManager* const mn_activeman,
325-
const CSporkManager& sporkman) :
327+
const CSporkManager& sporkman, const std::unique_ptr<PeerManager>& peerman) :
326328
params(_params), blsWorker(_blsWorker), cache(_blsWorker), connman(_connman), m_dmnman(dmnman), dkgManager(_dkgManager),
327-
dkgDebugManager(_dkgDebugManager), m_mn_metaman(mn_metaman), m_mn_activeman(mn_activeman), m_sporkman(sporkman) {}
329+
dkgDebugManager(_dkgDebugManager), m_mn_metaman(mn_metaman), m_mn_activeman(mn_activeman), m_sporkman(sporkman),
330+
m_peerman(peerman) {}
328331

329332
bool Init(gsl::not_null<const CBlockIndex*> pQuorumBaseBlockIndex, Span<CDeterministicMNCPtr> mns, const uint256& _myProTxHash, int _quorumIndex);
330333

src/llmq/dkgsessionhandler.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ namespace llmq
2727
CDKGSessionHandler::CDKGSessionHandler(CBLSWorker& _blsWorker, CChainState& chainstate, CConnman& _connman, CDeterministicMNManager& dmnman,
2828
CDKGDebugManager& _dkgDebugManager, CDKGSessionManager& _dkgManager, CMasternodeMetaMan& mn_metaman,
2929
CQuorumBlockProcessor& _quorumBlockProcessor, const CActiveMasternodeManager* const mn_activeman,
30-
const CSporkManager& sporkman, const Consensus::LLMQParams& _params, int _quorumIndex) :
30+
const CSporkManager& sporkman, const std::unique_ptr<PeerManager>& peerman, const Consensus::LLMQParams& _params, int _quorumIndex) :
3131
blsWorker(_blsWorker),
3232
m_chainstate(chainstate),
3333
connman(_connman),
@@ -38,9 +38,10 @@ CDKGSessionHandler::CDKGSessionHandler(CBLSWorker& _blsWorker, CChainState& chai
3838
quorumBlockProcessor(_quorumBlockProcessor),
3939
m_mn_activeman(mn_activeman),
4040
m_sporkman(sporkman),
41+
m_peerman(peerman),
4142
params(_params),
4243
quorumIndex(_quorumIndex),
43-
curSession(std::make_unique<CDKGSession>(_params, _blsWorker, _connman, dmnman, _dkgManager, _dkgDebugManager, m_mn_metaman, m_mn_activeman, sporkman)),
44+
curSession(std::make_unique<CDKGSession>(_params, _blsWorker, _connman, dmnman, _dkgManager, _dkgDebugManager, m_mn_metaman, m_mn_activeman, sporkman, peerman)),
4445
pendingContributions((size_t)_params.size * 2, MSG_QUORUM_CONTRIB), // we allow size*2 messages as we need to make sure we see bad behavior (double messages)
4546
pendingComplaints((size_t)_params.size * 2, MSG_QUORUM_COMPLAINT),
4647
pendingJustifications((size_t)_params.size * 2, MSG_QUORUM_JUSTIFICATION),
@@ -188,7 +189,7 @@ void CDKGSessionHandler::StopThread()
188189

189190
bool CDKGSessionHandler::InitNewQuorum(const CBlockIndex* pQuorumBaseBlockIndex)
190191
{
191-
curSession = std::make_unique<CDKGSession>(params, blsWorker, connman, m_dmnman, dkgManager, dkgDebugManager, m_mn_metaman, m_mn_activeman, m_sporkman);
192+
curSession = std::make_unique<CDKGSession>(params, blsWorker, connman, m_dmnman, dkgManager, dkgDebugManager, m_mn_metaman, m_mn_activeman, m_sporkman, m_peerman);
192193

193194
if (!DeploymentDIP0003Enforced(pQuorumBaseBlockIndex->nHeight, Params().GetConsensus())) {
194195
return false;

src/llmq/dkgsessionhandler.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ class CDKGSessionHandler
130130
CQuorumBlockProcessor& quorumBlockProcessor;
131131
const CActiveMasternodeManager* const m_mn_activeman;
132132
const CSporkManager& m_sporkman;
133+
const std::unique_ptr<PeerManager>& m_peerman;
133134
const Consensus::LLMQParams params;
134135
const int quorumIndex;
135136

@@ -151,7 +152,7 @@ class CDKGSessionHandler
151152
CDKGSessionHandler(CBLSWorker& _blsWorker, CChainState& chainstate, CConnman& _connman, CDeterministicMNManager& dmnman,
152153
CDKGDebugManager& _dkgDebugManager, CDKGSessionManager& _dkgManager, CMasternodeMetaMan& mn_metaman,
153154
CQuorumBlockProcessor& _quorumBlockProcessor, const CActiveMasternodeManager* const mn_activeman,
154-
const CSporkManager& sporkman, const Consensus::LLMQParams& _params, int _quorumIndex);
155+
const CSporkManager& sporkman, const std::unique_ptr<PeerManager>& peerman, const Consensus::LLMQParams& _params, int _quorumIndex);
155156
~CDKGSessionHandler() = default;
156157

157158
void UpdatedBlockTip(const CBlockIndex *pindexNew);

src/llmq/dkgsessionmgr.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ static const std::string DB_ENC_CONTRIB = "qdkg_E";
2626

2727
CDKGSessionManager::CDKGSessionManager(CBLSWorker& _blsWorker, CChainState& chainstate, CConnman& _connman, CDeterministicMNManager& dmnman,
2828
CDKGDebugManager& _dkgDebugManager, CMasternodeMetaMan& mn_metaman, CQuorumBlockProcessor& _quorumBlockProcessor,
29-
const CActiveMasternodeManager* const mn_activeman, const CSporkManager& sporkman, bool unitTests, bool fWipe) :
29+
const CActiveMasternodeManager* const mn_activeman, const CSporkManager& sporkman,
30+
const std::unique_ptr<PeerManager>& peerman, bool unitTests, bool fWipe) :
3031
db(std::make_unique<CDBWrapper>(unitTests ? "" : (GetDataDir() / "llmq/dkgdb"), 1 << 20, unitTests, fWipe)),
3132
blsWorker(_blsWorker),
3233
m_chainstate(chainstate),
@@ -49,7 +50,8 @@ CDKGSessionManager::CDKGSessionManager(CBLSWorker& _blsWorker, CChainState& chai
4950
for (const auto i : irange::range(session_count)) {
5051
dkgSessionHandlers.emplace(std::piecewise_construct,
5152
std::forward_as_tuple(params.type, i),
52-
std::forward_as_tuple(blsWorker, m_chainstate, connman, dmnman, dkgDebugManager, *this, mn_metaman, quorumBlockProcessor, mn_activeman, spork_manager, params, i));
53+
std::forward_as_tuple(blsWorker, m_chainstate, connman, dmnman, dkgDebugManager, *this, mn_metaman,
54+
quorumBlockProcessor, mn_activeman, spork_manager, peerman, params, i));
5355
}
5456
}
5557
}

src/llmq/dkgsessionmgr.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@ class CDKGSessionManager
6969
public:
7070
CDKGSessionManager(CBLSWorker& _blsWorker, CChainState& chainstate, CConnman& _connman, CDeterministicMNManager& dmnman,
7171
CDKGDebugManager& _dkgDebugManager, CMasternodeMetaMan& mn_metaman, CQuorumBlockProcessor& _quorumBlockProcessor,
72-
const CActiveMasternodeManager* const mn_activeman, const CSporkManager& sporkman, bool unitTests, bool fWipe);
72+
const CActiveMasternodeManager* const mn_activeman, const CSporkManager& sporkman,
73+
const std::unique_ptr<PeerManager>& peerman, bool unitTests, bool fWipe);
7374
~CDKGSessionManager() = default;
7475

7576
void StartThreads();

src/llmq/instantsend.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1452,12 +1452,9 @@ void CInstantSendManager::AskNodesForLockedTx(const uint256& txid, const CConnma
14521452
if (nodesToAskFor.size() >= 4) {
14531453
return;
14541454
}
1455-
if (peerman.CanRelayAddrs(pnode->GetId())) {
1456-
LOCK(pnode->m_tx_relay->cs_tx_inventory);
1457-
if (pnode->m_tx_relay->filterInventoryKnown.contains(txid)) {
1458-
pnode->AddRef();
1459-
nodesToAskFor.emplace_back(pnode);
1460-
}
1455+
if (peerman.IsInvInFilter(pnode->GetId(), txid)) {
1456+
pnode->AddRef();
1457+
nodesToAskFor.emplace_back(pnode);
14611458
}
14621459
};
14631460

0 commit comments

Comments
 (0)