The consensus rules are explained differently in different specifications. That's probably how we ended up with different checks.
We think these specifications are all equivalent on mainnet and testnet.
Zcash Specification, section 3.9:
[Pre-Canopy] The block subsidy is composed of a miner subsidy and a Founders’ Reward.
[Canopy onward] The block subsidy is composed of a miner subsidy and a series of funding streams.
ZIP 207:
Once the Canopy network upgrade activates:
The existing consensus rule for payment of the Founders' Reward is no longer active. (This would be the case under the preexisting consensus rules for Mainnet, but not for Testnet.)
ZIP 214:
Since ZIP 1014 specifies that the Zcash Development Fund starts at the first halving, the activation height of Canopy on Mainnet therefore SHALL be 1046400.
ZIP 214 also specifies the exact start and end heights for funding streams: https://zips.z.cash/zip-0214#specification
ZIP 1014:
Starting at the first Zcash halving in 2020, until the second halving in 2024, 20% of the block subsidy of each block SHALL be allocated to a "Dev Fund" that consists of the following three slices
It appears that ZIP 1014 only applies to mainnet, but that's not explicitly stated in the document.
_Originally posted by @teor2345 in https://github.com/ZcashFoundation/zebra/pull/1170#discussion_r510005695_
It appears that ZIP 1014 only applies to mainnet, but that's not explicitly stated in the document.
This is a bug in ZIP 1014. Thanks for pointing it out.
Note that ZIPs 207 and 214, along with the protocol spec, are what are describing the consensus rules. They're supposed to be consistent with ZIP 1014, but it's the former two ZIPs and the spec that reflect what zcashd implements.
It appears that ZIP 1014 only applies to mainnet
This is correct. ZIP 1014 deals with how to fund ongoing development, and testnet funds won't achieve that. ZIP 214 is explicit about why it defines the ZIP 1014-outlined funding streams for both mainnet and testnet:
The primary requirement of this ZIP is to make changes to consensus rules necessary and sufficient to implement the intent of ZIP 1014.
The Zcash Development Fund distributes funding in ZEC obtained from block subsidies on Mainnet. This ZIP should also specify corresponding rules, addresses, and activation height for Testnet, in order to allow testing and auditing of the design and implementation within sufficient lead time before activation on Mainnet.
Perhaps we need a separate category or indicator to outline ZIPs that describe social-level consensus but don't actually specify chain consensus rules, so that implementations like zebra don't interpret them as the actual consensus rules. I guess the ZIP 10XX series is intended for that, but it's not spelled out anywhere AFAIK.
ZIP 1014 is a Consensus ZIP in the sense of imposing requirements that should be realized by other ZIPs that define consensus rules. I've changed its category (and that of the other dev fund ZIPs) to "Consensus Process".
This was fixed in ZIP 1014 by https://github.com/zcash/zips/pull/419 .
Thanks for the update! Closing...
Most helpful comment
This is correct. ZIP 1014 deals with how to fund ongoing development, and testnet funds won't achieve that. ZIP 214 is explicit about why it defines the ZIP 1014-outlined funding streams for both mainnet and testnet:
Perhaps we need a separate category or indicator to outline ZIPs that describe social-level consensus but don't actually specify chain consensus rules, so that implementations like zebra don't interpret them as the actual consensus rules. I guess the
ZIP 10XXseries is intended for that, but it's not spelled out anywhere AFAIK.