Bitcoin Core
22.99.0
P2P Digital Currency
src
deploymentstatus.cpp
Go to the documentation of this file.
1
// Copyright (c) 2020-2021 The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#include <
deploymentstatus.h
>
6
7
#include <
consensus/params.h
>
8
#include <
versionbits.h
>
9
10
#include <type_traits>
11
12
VersionBitsCache
g_versionbitscache
;
13
14
/* Basic sanity checking for BuriedDeployment/DeploymentPos enums and
15
* ValidDeployment check */
16
17
static_assert(
ValidDeployment
(
Consensus::DEPLOYMENT_TESTDUMMY
),
"sanity check of DeploymentPos failed (TESTDUMMY not valid)"
);
18
static_assert(!
ValidDeployment
(
Consensus::MAX_VERSION_BITS_DEPLOYMENTS
),
"sanity check of DeploymentPos failed (MAX value considered valid)"
);
19
static_assert(!
ValidDeployment
(
static_cast<
Consensus::BuriedDeployment
>
(
Consensus::DEPLOYMENT_TESTDUMMY
)),
"sanity check of BuriedDeployment failed (overlaps with DeploymentPos)"
);
20
21
/* ValidDeployment only checks upper bounds for ensuring validity.
22
* This checks that the lowest possible value or the type is also a
23
* (specific) valid deployment so that lower bounds don't need to be checked.
24
*/
25
26
template
<
typename
T, T x>
27
static
constexpr
bool
is_minimum
()
28
{
29
using
U =
typename
std::underlying_type<T>::type;
30
return
x == std::numeric_limits<U>::min();
31
}
32
33
static_assert(is_minimum<Consensus::BuriedDeployment, Consensus::DEPLOYMENT_HEIGHTINCB>(),
"heightincb is not minimum value for BuriedDeployment"
);
34
static_assert(is_minimum<Consensus::DeploymentPos, Consensus::DEPLOYMENT_TESTDUMMY>(),
"testdummy is not minimum value for DeploymentPos"
);
Consensus::MAX_VERSION_BITS_DEPLOYMENTS
@ MAX_VERSION_BITS_DEPLOYMENTS
Definition:
params.h:32
is_minimum
static constexpr bool is_minimum()
Definition:
deploymentstatus.cpp:27
deploymentstatus.h
g_versionbitscache
VersionBitsCache g_versionbitscache
Global cache for versionbits deployment status.
Definition:
deploymentstatus.cpp:12
Consensus::ValidDeployment
constexpr bool ValidDeployment(BuriedDeployment dep)
Definition:
params.h:26
versionbits.h
Consensus::DEPLOYMENT_TESTDUMMY
@ DEPLOYMENT_TESTDUMMY
Definition:
params.h:29
Consensus::BuriedDeployment
BuriedDeployment
A buried deployment is one where the height of the activation has been hardcoded into the client impl...
Definition:
params.h:18
params.h
VersionBitsCache
BIP 9 allows multiple softforks to be deployed in parallel.
Definition:
versionbits.h:80
Generated on Fri Feb 18 2022 20:03:17 for Bitcoin Core by
1.8.17