On Sat, May 13, 2017 at 1:26 AM, Luke Dashjr wrote: > Versionbits change/lose their meaning after the deployment timeout. For > this > reason, the timeout must be specified so the check is skipped when that > occurs. > To add a timeout a user can optionally bundle a pair of similar transactions. One with the transaction version bits set and a second with a locktime set. The effect is the same. Also, doing it the way you describe would fail to enforce that BIP9 is > actually in use for the block version; you could simply add that as an > additional condition, but it seems pretty hacky since you wouldn't be able > to > upgrade versionbits anymore... > My formal condition does include a check for the block version (I've corrected the constants below): (txVersion & 0xe0000000 != 0x200000000) || (*(blkVersion & 0xe0000000 = 0x200000000)* && (blkVersion & txVersion = txVersion)) Nothing here prevents upgrading versionbits AFAICT. Any txVersion that does not begin with 0b001 is unconditionally acceptable and available for further soft-forking.