BIP 8 - replace FAILING with MUST_SIGNAL #950
Updated with some of the comments addressed, and a little restructuring. (EDIT: and rebased on master)
Corresponding patch at https://github.com/ajtowns/bitcoin/commits/202008-bip8-pr950 -- it's on top of @luke-jr's bip8 branch rebased onto master and with some warnings/errors fixed.
This removes the FAILING state and replaces compulsory signalling during LOCKED_IN with compulsory signalling during a new MUST_SIGNAL phase during the last retarget period prior to the timeout height. Also reduces the amount of blocks that are required to signal to match the threshold. This ensures that if a deployment occurs using bip8 with lockinontimeout=false and timeoutheight=N, that a later deployment using bip8 with lockinontimeout=true and timeoutheight=K, where K<N that any chain where LOCKED_IN is reached prior to height K, will be accepted as valid by nodes using either set of deployment parameters. It also ensures that the soft-fork's changed rules are only enforced on chain a retarget period after signalling indicates enforcement is expected (which was not previously the case if the FAILING to ACTIVE transition took place).