5 #ifndef BITCOIN_VERSIONBITS_H 6 #define BITCOIN_VERSIONBITS_H 107 #endif // BITCOIN_VERSIONBITS_H Display status of an in-progress BIP9 softfork.
virtual int64_t EndTime(const Consensus::Params ¶ms) const =0
int GetStateSinceHeightFor(const CBlockIndex *pindexPrev, const Consensus::Params ¶ms, ThresholdConditionCache &cache) const
Returns the height since when the ThresholdState has started for pindex A based on parent pindexPrev ...
static const int32_t VERSIONBITS_TOP_MASK
What bitmask determines whether versionbits is in use.
int StateSinceHeight(const CBlockIndex *pindexPrev, const Consensus::Params ¶ms, Consensus::DeploymentPos pos) EXCLUSIVE_LOCKS_REQUIRED(!m_mutex)
Get the block height at which the BIP9 deployment switched into the state for the block after pindexP...
virtual bool Condition(const CBlockIndex *pindex, const Consensus::Params ¶ms) const =0
ThresholdConditionCache m_caches [Consensus::MAX_VERSION_BITS_DEPLOYMENTS] GUARDED_BY(m_mutex)
void Clear() EXCLUSIVE_LOCKS_REQUIRED(!m_mutex)
ThresholdState
BIP 9 defines a finite-state-machine to deploy a softfork in multiple stages.
static BIP9Stats Statistics(const CBlockIndex *pindex, const Consensus::Params ¶ms, Consensus::DeploymentPos pos, std::vector< bool > *signalling_blocks=nullptr)
Get the numerical statistics for a given deployment for the signalling period that includes pindex...
int threshold
Number of blocks with the version bit set required to activate the softfork.
static uint32_t Mask(const Consensus::Params ¶ms, Consensus::DeploymentPos pos)
ThresholdState State(const CBlockIndex *pindexPrev, const Consensus::Params ¶ms, Consensus::DeploymentPos pos) EXCLUSIVE_LOCKS_REQUIRED(!m_mutex)
Get the BIP9 state for a given deployment for the block after pindexPrev.
int period
Length of blocks of the BIP9 signalling period.
Abstract class that implements BIP9-style threshold logic, and caches results.
int count
Number of blocks with the version bit set since the beginning of the current period.
Parameters that influence chain consensus.
virtual int Threshold(const Consensus::Params ¶ms) const =0
int32_t ComputeBlockVersion(const CBlockIndex *pindexPrev, const Consensus::Params ¶ms) EXCLUSIVE_LOCKS_REQUIRED(!m_mutex)
Determine what nVersion a new block should use.
std::map< const CBlockIndex *, ThresholdState > ThresholdConditionCache
BIP 9 allows multiple softforks to be deployed in parallel.
#define EXCLUSIVE_LOCKS_REQUIRED(...)
ThresholdState GetStateFor(const CBlockIndex *pindexPrev, const Consensus::Params ¶ms, ThresholdConditionCache &cache) const
Returns the state for pindex A based on parent pindexPrev B.
The block chain is a tree shaped structure starting with the genesis block at the root...
static const int32_t VERSIONBITS_LAST_OLD_BLOCK_VERSION
What block version to use for new blocks (pre versionbits)
static const int32_t VERSIONBITS_TOP_BITS
What bits to set in version for versionbits blocks.
virtual int64_t BeginTime(const Consensus::Params ¶ms) const =0
int elapsed
Number of blocks elapsed since the beginning of the current period.
bool possible
False if there are not enough blocks left in this period to pass activation threshold.
virtual int Period(const Consensus::Params ¶ms) const =0
static const int32_t VERSIONBITS_NUM_BITS
Total bits available for versionbits.
virtual int MinActivationHeight(const Consensus::Params ¶ms) const
BIP9Stats GetStateStatisticsFor(const CBlockIndex *pindex, const Consensus::Params ¶ms, std::vector< bool > *signalling_blocks=nullptr) const
Returns the numerical statistics of an in-progress BIP9 softfork in the period including pindex If pr...