mirror of
https://github.com/Xahau/xahaud.git
synced 2026-08-23 00:10:54 +00:00
perf(consensus): gate RNG SHAMap fetches on sub-state
During ConvergingTx all RNG data arrives via proposal leaves, so fetching a peer's commitSet before we've built our own just generates unnecessary traffic. Only fetch commitSetHash once in ConvergingCommit+, and entropySetHash once in ConvergingReveal.
This commit is contained in:
@@ -855,13 +855,20 @@ Consensus<Adaptor>::peerProposalInternal(
|
||||
newPeerProp.prevLedger(),
|
||||
newPeerPos.signature());
|
||||
|
||||
// Trigger fetch for unknown RNG set hashes
|
||||
// Trigger fetch for unknown RNG set hashes, but only once we've
|
||||
// built our own local set for diffing. During ConvergingTx all
|
||||
// data arrives via proposal leaves — fetching a peer's commitSet
|
||||
// before we have our own just generates unnecessary traffic.
|
||||
if constexpr (requires(Adaptor & a) {
|
||||
a.fetchRngSetIfNeeded(std::optional<uint256>{});
|
||||
})
|
||||
{
|
||||
adaptor_.fetchRngSetIfNeeded(newPeerProp.position().commitSetHash);
|
||||
adaptor_.fetchRngSetIfNeeded(newPeerProp.position().entropySetHash);
|
||||
if (estState_ != EstablishState::ConvergingTx)
|
||||
adaptor_.fetchRngSetIfNeeded(
|
||||
newPeerProp.position().commitSetHash);
|
||||
if (estState_ == EstablishState::ConvergingReveal)
|
||||
adaptor_.fetchRngSetIfNeeded(
|
||||
newPeerProp.position().entropySetHash);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user