mirror of
https://github.com/bitcoin/bips.git
synced 2025-05-12 12:03:29 +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