/root/bitcoin/src/deploymentstatus.h
Line | Count | Source (jump to first uncovered line) |
1 | | // Copyright (c) 2020-2022 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 | | #ifndef BITCOIN_DEPLOYMENTSTATUS_H |
6 | | #define BITCOIN_DEPLOYMENTSTATUS_H |
7 | | |
8 | | #include <chain.h> |
9 | | #include <versionbits.h> |
10 | | |
11 | | #include <limits> |
12 | | |
13 | | /** Determine if a deployment is active for the next block */ |
14 | | inline bool DeploymentActiveAfter(const CBlockIndex* pindexPrev, const Consensus::Params& params, Consensus::BuriedDeployment dep, [[maybe_unused]] VersionBitsCache& versionbitscache) |
15 | 8.30k | { |
16 | 8.30k | assert(Consensus::ValidDeployment(dep)); |
17 | 8.30k | return (pindexPrev == nullptr ? 0 : pindexPrev->nHeight + 1) >= params.DeploymentHeight(dep); |
18 | 8.30k | } |
19 | | |
20 | | inline bool DeploymentActiveAfter(const CBlockIndex* pindexPrev, const Consensus::Params& params, Consensus::DeploymentPos dep, VersionBitsCache& versionbitscache) |
21 | 0 | { |
22 | 0 | assert(Consensus::ValidDeployment(dep)); |
23 | 0 | return ThresholdState::ACTIVE == versionbitscache.State(pindexPrev, params, dep); |
24 | 0 | } |
25 | | |
26 | | /** Determine if a deployment is active for this block */ |
27 | | inline bool DeploymentActiveAt(const CBlockIndex& index, const Consensus::Params& params, Consensus::BuriedDeployment dep, [[maybe_unused]] VersionBitsCache& versionbitscache) |
28 | 0 | { |
29 | 0 | assert(Consensus::ValidDeployment(dep)); |
30 | 0 | return index.nHeight >= params.DeploymentHeight(dep); |
31 | 0 | } |
32 | | |
33 | | inline bool DeploymentActiveAt(const CBlockIndex& index, const Consensus::Params& params, Consensus::DeploymentPos dep, VersionBitsCache& versionbitscache) |
34 | 0 | { |
35 | 0 | assert(Consensus::ValidDeployment(dep)); |
36 | 0 | return DeploymentActiveAfter(index.pprev, params, dep, versionbitscache); |
37 | 0 | } |
38 | | |
39 | | /** Determine if a deployment is enabled (can ever be active) */ |
40 | | inline bool DeploymentEnabled(const Consensus::Params& params, Consensus::BuriedDeployment dep) |
41 | 0 | { |
42 | 0 | assert(Consensus::ValidDeployment(dep)); |
43 | 0 | return params.DeploymentHeight(dep) != std::numeric_limits<int>::max(); |
44 | 0 | } |
45 | | |
46 | | inline bool DeploymentEnabled(const Consensus::Params& params, Consensus::DeploymentPos dep) |
47 | 0 | { |
48 | 0 | assert(Consensus::ValidDeployment(dep)); |
49 | 0 | return params.vDeployments[dep].nStartTime != Consensus::BIP9Deployment::NEVER_ACTIVE; |
50 | 0 | } |
51 | | |
52 | | #endif // BITCOIN_DEPLOYMENTSTATUS_H |