mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-03-12 18:44:59 +01:00
versionbits: Expose VersionBitsConditionChecker via impl header
This commit is contained in:
parent
e74a7049b4
commit
525c00f91b
2 changed files with 26 additions and 30 deletions
|
@ -189,36 +189,6 @@ int AbstractThresholdConditionChecker::GetStateSinceHeightFor(const CBlockIndex*
|
||||||
return pindexPrev->nHeight + 1;
|
return pindexPrev->nHeight + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Class to implement versionbits logic.
|
|
||||||
*/
|
|
||||||
class VersionBitsConditionChecker : public AbstractThresholdConditionChecker {
|
|
||||||
private:
|
|
||||||
const Consensus::BIP9Deployment& dep;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
int64_t BeginTime() const override { return dep.nStartTime; }
|
|
||||||
int64_t EndTime() const override { return dep.nTimeout; }
|
|
||||||
int MinActivationHeight() const override { return dep.min_activation_height; }
|
|
||||||
int Period() const override { return dep.period; }
|
|
||||||
int Threshold() const override { return dep.threshold; }
|
|
||||||
|
|
||||||
bool Condition(const CBlockIndex* pindex) const override
|
|
||||||
{
|
|
||||||
return (((pindex->nVersion & VERSIONBITS_TOP_MASK) == VERSIONBITS_TOP_BITS) && (pindex->nVersion & Mask()) != 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit VersionBitsConditionChecker(const Consensus::BIP9Deployment& dep) : dep{dep} {}
|
|
||||||
explicit VersionBitsConditionChecker(const Consensus::Params& params, Consensus::DeploymentPos id) : VersionBitsConditionChecker{params.vDeployments[id]} {}
|
|
||||||
|
|
||||||
uint32_t Mask() const { return (uint32_t{1}) << dep.bit; }
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace
|
|
||||||
|
|
||||||
BIP9Info VersionBitsCache::Info(const CBlockIndex& block_index, const Consensus::Params& params, Consensus::DeploymentPos id)
|
BIP9Info VersionBitsCache::Info(const CBlockIndex& block_index, const Consensus::Params& params, Consensus::DeploymentPos id)
|
||||||
{
|
{
|
||||||
BIP9Info result;
|
BIP9Info result;
|
||||||
|
|
|
@ -49,4 +49,30 @@ public:
|
||||||
int GetStateSinceHeightFor(const CBlockIndex* pindexPrev, ThresholdConditionCache& cache) const;
|
int GetStateSinceHeightFor(const CBlockIndex* pindexPrev, ThresholdConditionCache& cache) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class to implement versionbits logic.
|
||||||
|
*/
|
||||||
|
class VersionBitsConditionChecker : public AbstractThresholdConditionChecker {
|
||||||
|
private:
|
||||||
|
const Consensus::BIP9Deployment& dep;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
int64_t BeginTime() const override { return dep.nStartTime; }
|
||||||
|
int64_t EndTime() const override { return dep.nTimeout; }
|
||||||
|
int MinActivationHeight() const override { return dep.min_activation_height; }
|
||||||
|
int Period() const override { return dep.period; }
|
||||||
|
int Threshold() const override { return dep.threshold; }
|
||||||
|
|
||||||
|
bool Condition(const CBlockIndex* pindex) const override
|
||||||
|
{
|
||||||
|
return (((pindex->nVersion & VERSIONBITS_TOP_MASK) == VERSIONBITS_TOP_BITS) && (pindex->nVersion & Mask()) != 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit VersionBitsConditionChecker(const Consensus::BIP9Deployment& dep) : dep{dep} {}
|
||||||
|
explicit VersionBitsConditionChecker(const Consensus::Params& params, Consensus::DeploymentPos id) : VersionBitsConditionChecker{params.vDeployments[id]} {}
|
||||||
|
|
||||||
|
uint32_t Mask() const { return (uint32_t{1}) << dep.bit; }
|
||||||
|
};
|
||||||
|
|
||||||
#endif // BITCOIN_VERSIONBITS_IMPL_H
|
#endif // BITCOIN_VERSIONBITS_IMPL_H
|
||||||
|
|
Loading…
Add table
Reference in a new issue