@ -27,6 +27,11 @@ ThresholdState AbstractThresholdConditionChecker::GetStateFor(const CBlockIndex*
int64_t nTimeStart = BeginTime ( params ) ;
int64_t nTimeTimeout = EndTime ( params ) ;
// Check if this deployment is always active.
if ( nTimeStart = = Consensus : : BIP9Deployment : : ALWAYS_ACTIVE ) {
return THRESHOLD_ACTIVE ;
}
// A block's state is always the same as that of the first of its period, so it is computed based on a pindexPrev whose height equals a multiple of nPeriod - 1.
if ( pindexPrev ! = nullptr ) {
pindexPrev = pindexPrev - > GetAncestor ( pindexPrev - > nHeight - ( ( pindexPrev - > nHeight + 1 ) % nPeriod ) ) ;
@ -136,6 +141,11 @@ BIP9Stats AbstractThresholdConditionChecker::GetStateStatisticsFor(const CBlockI
int AbstractThresholdConditionChecker : : GetStateSinceHeightFor ( const CBlockIndex * pindexPrev , const Consensus : : Params & params , ThresholdConditionCache & cache ) const
{
int64_t start_time = BeginTime ( params ) ;
if ( start_time = = Consensus : : BIP9Deployment : : ALWAYS_ACTIVE ) {
return 0 ;
}
const ThresholdState initialState = GetStateFor ( pindexPrev , params , cache ) ;
// BIP 9 about state DEFINED: "The genesis block is by definition in this state for each deployment."