mirror of
https://github.com/dashpay/dash.git
synced 2024-12-27 04:52:59 +01:00
18950f923e
* Allow sub-batch verification in CBLSInsecureBatchVerifier * Implement batch verification of CDKGDebugStatus messages * Use uint8_t for statusBitset in CDKGDebugMemberStatus and CDKGDebugSessionStatus No need to waste one byte per member and per LLMQ type. * Reserve 4k of buffer for CSerializedNetMsg buffer Profiling has shown that a lot of time is spent in resizing the data vector when large messages are involved. * Remove nHeight from CDKGDebugStatus This field changes every block and causes all masternodes to propagate its status for every block, even if nothing DKG related has changed. * Leave out session statuses when we're not a member of that session Otherwise MNs which are not members of DKG sessions will spam the network * Remove receivedFinalCommitment from CDKGDebugSessionStatus This is not bound to a session and thus is prone to spam the network when final commitments are propagated in the finalization phase. * Add "minableCommitments" to "quorum dkgstatus" * Hold cs_main while calling GetMinableCommitment * Abort processing of pending debug messages when spork18 gets disabled * Don't ask for debug messages when we've already seen them "statuses" only contains the current messages but none of the old messages, so nodes kept re-requesting old messages.
38 lines
1.0 KiB
C++
38 lines
1.0 KiB
C++
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
|
// Copyright (c) 2009-2016 The Bitcoin Core developers
|
|
// Distributed under the MIT software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#ifndef BITCOIN_NETMESSAGEMAKER_H
|
|
#define BITCOIN_NETMESSAGEMAKER_H
|
|
|
|
#include "net.h"
|
|
#include "serialize.h"
|
|
|
|
class CNetMsgMaker
|
|
{
|
|
public:
|
|
CNetMsgMaker(int nVersionIn) : nVersion(nVersionIn){}
|
|
|
|
template <typename... Args>
|
|
CSerializedNetMsg Make(int nFlags, std::string sCommand, Args&&... args) const
|
|
{
|
|
CSerializedNetMsg msg;
|
|
msg.command = std::move(sCommand);
|
|
msg.data.reserve(4 * 1024);
|
|
CVectorWriter{ SER_NETWORK, nFlags | nVersion, msg.data, 0, std::forward<Args>(args)... };
|
|
return msg;
|
|
}
|
|
|
|
template <typename... Args>
|
|
CSerializedNetMsg Make(std::string sCommand, Args&&... args) const
|
|
{
|
|
return Make(0, std::move(sCommand), std::forward<Args>(args)...);
|
|
}
|
|
|
|
private:
|
|
const int nVersion;
|
|
};
|
|
|
|
#endif // BITCOIN_NETMESSAGEMAKER_H
|