0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-02-02 09:46:52 -05:00

[move-only] Move ComputeBlockVersion from validation to versionbits

This commit is contained in:
Anthony Towns 2021-04-16 18:33:02 +10:00
parent 0cfd6c6a8f
commit 4a69b4dbe0
4 changed files with 21 additions and 19 deletions

View file

@ -1606,20 +1606,6 @@ void StopScriptCheckWorkerThreads()
scriptcheckqueue.StopWorkerThreads();
}
int32_t ComputeBlockVersion(const CBlockIndex* pindexPrev, const Consensus::Params& params)
{
int32_t nVersion = VERSIONBITS_TOP_BITS;
for (int i = 0; i < (int)Consensus::MAX_VERSION_BITS_DEPLOYMENTS; i++) {
ThresholdState state = g_versionbitscache.State(pindexPrev, params, static_cast<Consensus::DeploymentPos>(i));
if (state == ThresholdState::LOCKED_IN || state == ThresholdState::STARTED) {
nVersion |= g_versionbitscache.Mask(params, static_cast<Consensus::DeploymentPos>(i));
}
}
return nVersion;
}
/**
* Threshold condition checker that triggers when unknown versionbits are seen on the network.
*/

View file

@ -1019,11 +1019,6 @@ public:
/** Global variable that points to the active block tree (protected by cs_main) */
extern std::unique_ptr<CBlockTreeDB> pblocktree;
/**
* Determine what nVersion a new block should use.
*/
int32_t ComputeBlockVersion(const CBlockIndex* pindexPrev, const Consensus::Params& params);
using FopenFn = std::function<FILE*(const fs::path&, const char*)>;
/** Dump the mempool to disk. */

View file

@ -212,6 +212,22 @@ uint32_t VersionBitsCache::Mask(const Consensus::Params& params, Consensus::Depl
return VersionBitsConditionChecker(pos).Mask(params);
}
extern VersionBitsCache g_versionbitscache; // removed in next commit
int32_t ComputeBlockVersion(const CBlockIndex* pindexPrev, const Consensus::Params& params)
{
int32_t nVersion = VERSIONBITS_TOP_BITS;
for (int i = 0; i < (int)Consensus::MAX_VERSION_BITS_DEPLOYMENTS; i++) {
ThresholdState state = g_versionbitscache.State(pindexPrev, params, static_cast<Consensus::DeploymentPos>(i));
if (state == ThresholdState::LOCKED_IN || state == ThresholdState::STARTED) {
nVersion |= g_versionbitscache.Mask(params, static_cast<Consensus::DeploymentPos>(i));
}
}
return nVersion;
}
void VersionBitsCache::Clear()
{
LOCK(m_mutex);

View file

@ -96,4 +96,9 @@ public:
void Clear();
};
/**
* Determine what nVersion a new block should use.
*/
int32_t ComputeBlockVersion(const CBlockIndex* pindexPrev, const Consensus::Params& params);
#endif // BITCOIN_VERSIONBITS_H