2019-NOV-15 Network Upgrade Specification
0.2 DRAFT SUBJECT TO CHANGE
Important: This document is an in-progress draft, and likely to change prior to the 2019-11-15 upgrade
When the median time past  of the most recent 11 blocks (MTP-11) is greater than or equal to UNIX timestamp 1573819200, Bitcoin Cash will execute an upgrade of the network consensus rules according to this specification. Starting from the next block these consensus rules changes will take effect:
- Enable Schnorr signatures for OP_CHECKMULTISIG(VERIFY).
- Enforce minimal push and minimal number encoding rules in Script.
- Enforce NULLDUMMY.
- Change the rule limiting signature operations in script.
The following are not consensus changes, but are recommended changes for Bitcoin Cash implementations:
- Automatic replay protection for future upgrade
Schnorr Signatures for OP_CHECKMULTISIG(VERIFY)
In-progress draft specification: https://github.com/bitcoincashorg/bitcoincash.org/pull/375
Enforce minimal push and minimal number encoding rules in Script.
Enforce existing standardness checks that all data pushes use minimal push operators, and all numbers are encoded minimally, together known as the "MINIMALDATA" rule. This will go into effect at the consensus layer.
In-progress draft specification: https://github.com/bitcoincashorg/bitcoincash.org/pull/376
Enforce that the dummy element in OP_CHECKMULSIG(VERIFY) is a null stack element. This will go into effect at the consensus layer.
NOTE: If the Schnorr Multisig specification (see above) ends up using the dummy element as a bitfield and flag, then this item will be automatically enforced.
TBD. In principle the current heuristic should be replaced with a new rule for the sigops limit should account for signature operations that are actually executed in script.
Automatic Replay Protection
When the median time past  of the most recent 11 blocks (MTP-11) is less than UNIX timestamp 1589544000 (May 2020 upgrade) Bitcoin Cash full nodes MUST enforce the following rule:
forkid to be equal to 0.
When the median time past  of the most recent 11 blocks (MTP-11) is greater than or equal to UNIX timestamp 1589544000 (May 2020 upgrade) Bitcoin Cash full nodes implementing the Nov 2019 consensus rules SHOULD enforce the following change:
forkid to be equal to 0xFF0003. ForkIDs beginning with 0xFF will be reserved for future protocol upgrades.
This particular consensus rule MUST NOT be implemented by Bitcoin Cash wallet software. Wallets that follow the upgrade should not have to change anything.
forkId is defined as per the replay protected sighash specification.