Segwit has proven more contentious to activate than anticipated(although my read has long been that the technical consensus is clear,despite noisy objections). No matter which method is used toeventually activate segwit, or on what timeline, it would bebeneficial if validating nodes already capable of supporting segwitcould, without further upgrades, eventually participate to theirfullest capacity.BIP9 assignments should reserve a backward compatibility bit which allyet-unknown segwit-compatible proposals may utilize. These futureproposals must be consensus compatible with BIPs 141, 143, & 147,except that they may use different deployment logic.The motivation is so that any validating node software released afterthis BIP9 assignment can eventually understand if segwit is activatedby alternate means, even when the node is itself a legacy version.This is important because the realities of system administration onthe Bitcoin network are that upgrades occur slowly (which is inherentin the security choice of not presenting an auto-upgrade feature).Even though segwit in particular is backwards compatible with oldvalidating nodes, there are still distinct advantages to validatingand generating segregated witness transactions.For example, future BIP9-compatible deployment attempts mightadditionally include a date-dependent UASF fallback. If, eitherduring or after activation, deployment rules also require signalingfor segwit using the backwards-compatible bit here proposed, then(after 95% of recent blocks signal for the alternate segwitdeployment) more legacy nodes would understand and validatetransactions using segregated witnesses.An expiration time of five years seems conservative:// Alternate Deployment 1 of SegWit (BIP141, BIP143, and BIP147)consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT_ALT1].bit = 2;consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT_ALT1].nStartTime= 1510704000; // November 15th, 2017.consensus.vDeployments[Consensus::DEPLOYMENT_SEGWIT_ALT1].nTimeout =1668470400; // November 15th, 2022.Segwit deployment logic would then look like:bool IsWitnessEnabled(const CBlockIndex* pindexPrev,const Consensus::Params& params){LOCK(cs_main);return (VersionBitsState(pindexPrev,params,Consensus::DEPLOYMENT_SEGWIT,versionbitscache)== THRESHOLD_ACTIVE)|| (VersionBitsState(pindexPrev,params,Consensus::DEPLOYMENT_SEGWIT_ALT1,versionbitscache)== THRESHOLD_ACTIVE);}_______________________________________________bitcoin-dev mailing listbitcoin-dev@lists.linuxfoundation.orghttps://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev