Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
2 contributors

Users who have contributed to this file

@Mengerian @markblundeberg
67 lines (42 sloc) 2.81 KB
layout title date activation version
specification
2019-NOV-15 Network Upgrade Specification
2019-06-21
1573819200
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

Summary

When the median time past [1] 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 NULLDUMMY

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.

Sigops Limit

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 [2] 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 [1] to be equal to 0.

When the median time past [1] 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:

  • Update forkid [1] 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.

References

[1] The forkId is defined as per the replay protected sighash specification.

You can’t perform that action at this time.