mirror of
				https://github.com/bitcoin/bips.git
				synced 2025-10-27 14:09:10 +00:00 
			
		
		
		
	Stop BIP 148 enforced signalling if SegWit is Locked-In State
This commit is contained in:
		
							parent
							
								
									2a97af80db
								
							
						
					
					
						commit
						1352c367a1
					
				| @ -37,14 +37,22 @@ While this BIP is active, all blocks must set the nVersion header top 3 bits to | |||||||
| === Reference implementation === | === Reference implementation === | ||||||
| 
 | 
 | ||||||
| <pre> | <pre> | ||||||
|  | // Check if Segregated Witness is Locked In | ||||||
|  | bool IsWitnessLockedIn(const CBlockIndex* pindexPrev, const Consensus::Params& params) | ||||||
|  | { | ||||||
|  |     LOCK(cs_main); | ||||||
|  |     return (VersionBitsState(pindexPrev, params, Consensus::DEPLOYMENT_SEGWIT, versionbitscache) == THRESHOLD_LOCKED_IN); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // BIP148 mandatory segwit signalling. | // BIP148 mandatory segwit signalling. | ||||||
| int64_t nMedianTimePast = pindex->GetMedianTimePast(); | int64_t nMedianTimePast = pindex->GetMedianTimePast(); | ||||||
| if ( (nMedianTimePast >= 1501545600) &&  // Tue 01 Aug 2017 00:00:00 UTC | if ( (nMedianTimePast >= 1501545600) &&  // Tue 01 Aug 2017 00:00:00 UTC | ||||||
|      (nMedianTimePast <= 1510704000) &&  // Wed 15 Nov 2017 00:00:00 UTC |      (nMedianTimePast <= 1510704000) &&  // Wed 15 Nov 2017 00:00:00 UTC | ||||||
|      (!IsWitnessEnabled(pindex->pprev, chainparams.GetConsensus())) )  // Segwit is not active |      (!IsWitnessLockedIn(pindex->pprev, chainparams.GetConsensus()) &&  // Segwit is not locked in | ||||||
|  |       !IsWitnessEnabled(pindex->pprev, chainparams.GetConsensus())) )   // and is not active. | ||||||
| { | { | ||||||
|     bool fVersionBits = (pindex->nVersion & VERSIONBITS_TOP_MASK) == VERSIONBITS_TOP_BITS; // BIP9 bit set |     bool fVersionBits = (pindex->nVersion & VERSIONBITS_TOP_MASK) == VERSIONBITS_TOP_BITS; | ||||||
|     bool fSegbit = (pindex->nVersion & VersionBitsMask(chainparams.GetConsensus(), Consensus::DEPLOYMENT_SEGWIT)) != 0; // segwit bit set |     bool fSegbit = (pindex->nVersion & VersionBitsMask(chainparams.GetConsensus(), Consensus::DEPLOYMENT_SEGWIT)) != 0; | ||||||
|     if (!(fVersionBits && fSegbit)) { |     if (!(fVersionBits && fSegbit)) { | ||||||
|         return state.DoS(0, error("ConnectBlock(): relayed block must signal for segwit, please upgrade"), REJECT_INVALID, "bad-no-segwit"); |         return state.DoS(0, error("ConnectBlock(): relayed block must signal for segwit, please upgrade"), REJECT_INVALID, "bad-no-segwit"); | ||||||
|     } |     } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user