Skip to content
ZIPs.tools

ZIP 2008

Update to `FS_FPF_ZCG_H3` address list

  • Draft
Proposal metadata
ID
2008
Status
Draft
Category
Consensus
Owners
  • Jack Grigg
Created
2026-09-24
License
MIT
Contents
  1. Terminology
  2. Abstract
  3. Motivation
  4. Requirements
  5. Specification
  6. Changes to ZIP 207
  7. Changes to the Zcash Protocol Specification
  8. Changes to ZIP 214
  9. Activation constraint
  10. Consensus node implementor note
  11. Rationale
  12. Deployment
  13. Reference implementation
  14. References
  15. Footnotes
Preamble
ZIP
2008
Title
Update to `FS_FPF_ZCG_H3` address list
Status
Draft
Category
Consensus
Created
2026-09-24
License
MIT

Terminology

The key words "MUST" and "MAY" in this document are to be interpreted as described in BCP 14 1 when, and only when, they appear in all capitals.

The term NU7ActivationHeight is to be interpreted as defined in ZIP 218 2.

Abstract

This ZIP updates the address list for the FS_FPF_ZCG_H3 funding stream, reflecting operational changes by the recipient.

Motivation

The recipient of the FS_FPF_ZCG_H3 funding stream notified the ZIP Editors that there was a need to receive the funding stream into a new address. This change can only happen at network upgrade boundaries, because the funding stream recipient addresses are part of the consensus rules.

Requirements

  • Funding stream outputs for FS_FPF_ZCG_H3 start being received at the new address shortly after the NU activates that deploys this ZIP.

Specification

Changes to ZIP 207

In "Funding streams" 3, after the paragraph starting with:

As of Revision 1_, each recipient identifier MUST be...

add:

As of Revision 2_, each recipient identifier MUST be either the string encoding of a transparent P2PKH or P2SH address or of a Sapling address (as specified in [#protocol-transparentaddrencoding]_ or [#protocol-saplingpaymentaddrencoding]_) or the identifier DEFERRED_POOL\mathsf{DEFERRED\_POOL}.

In "Consensus rules" 3, at the end of rule 4, add:

As of Revision 2_, the "prescribed way" to pay a transparent P2PKH address is to use OP_DUP OP_HASH160 <keyHash> OP_EQUALVERIFY OP_CHECKSIG as the output's scriptPubKey, where <keyHash> is the direct push of the 20-byte public-key hash decoded from the recipient's Base58Check address. No other script encoding satisfies this funding-stream payment rule.

In "References" 3, add:

.. [#zip-2008] `ZIP 2008: Update to FS_FPF_ZCG_H3 address list <zip-2008.md>`_

Changes to the Zcash Protocol Specification

In § 7.10 'Payment of Funding Streams, Deferred Lockbox, and Lockbox Disbursement', from NU7 activation, extend the permitted funding-stream recipient types to include transparent P2PKH addresses. Add the P2PKH prescribed payment rule above alongside the existing P2SH and shielded payment rules. The amount and distinct output requirements are unchanged.

Changes to ZIP 214

In "Abstract" 4, replace the end of the paragraph on Revision 3:

streams at the third halving.

with:

streams at the third halving, and updates the ``FS_FPF_ZCG_H3`` recipient
address per ZIP 2008 [#zip-2008]_.

In "Mainnet Recipients for Revision 2" 4, replace the section heading with:

Mainnet Recipients for `Revision 2`_ and `Revision 3`_
------------------------------------------------------

and replace:

FS_FPF_ZCG_H3.AddressList[0..35] = ["t3cFfPt1Bcvgez9ZbMBFWeZsskxTkPzGCow"] * 36

with:

N = FundingStream[FS_FPF_ZCG_H3].AddressIndex(NU7ActivationHeight - 1) + 1
FS_FPF_ZCG_H3.AddressList[0..N-1] = ["t3cFfPt1Bcvgez9ZbMBFWeZsskxTkPzGCow"] * N
FS_FPF_ZCG_H3.AddressList[N..35] = ["t1MkHnkxVjNpNbCrSs3AJ8J7ZSp6NTYiUcG"] * (36 - N)

In the paragraph that follows, replace "address list remains valid" with "address list length remains valid", and after that paragraph add the following note:

Note: The addresses ``FS_FPF_ZCG_H3.AddressList[N..35]`` were altered
in `Revision 3`_ by the NU7 upgrade in ZIP 2008 [#zip-2008]_.

In "References" 4, add:

.. [#zip-2008] `ZIP 2008: Update to FS_FPF_ZCG_H3 address list <zip-2008.md>`_

Activation constraint

The Mainnet NU7 activation height MUST be chosen such that 0≤N<360 \leq N < 36. This ensures that at least one remaining funding period selects the new address. With the current funding schedule and the multiple-of-three activation constraint, the latest permitted Mainnet activation height is 4,371,399.

Consensus node implementor note

Once a mainnet activation height has been specified in ZIP 259 5, implementations MAY use a fixed array of addresses in the correct sequence, instead of dynamically calculating N.

Rationale

The ZIP modifies the existing address list such that the new address will start being used from the first funding period that begins after NU7 activation. This means that depending on the precise value of NU7ActivationHeight, the updated address might begin usage anywhere from "immediately" to "about a month" after activation. This approach was chosen for its simplicity, given the lack of time before NU7 activation. An alternative approach that instead changed the address at NU activation would require more significant changes to ZIP 214 4 (and possibly ZIP 207 3).

Deployment

This ZIP is proposed to be deployed with NU7 5.

Reference implementation

  • Zebra: 6
  • Zakura: 7

References

Footnotes

  1. Information on BCP 14 — "RFC 2119: Key words for use in RFCs to Indicate Requirement Levels" and "RFC 8174: Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words" ↩

  2. ZIP 218: 25-second Block Target Spacing ↩

  3. ZIP 207: Funding Streams ↩ ↩2 ↩3 ↩4

  4. ZIP 214: Consensus rules for a Zcash Development Fund ↩ ↩2 ↩3 ↩4

  5. ZIP 259: Deployment of the NU7 Network Upgrade ↩ ↩2

  6. Zebra PR 11527: feat(nu7)!: prepare ZIP 259 deployment and ZIP 2008 payouts ↩

  7. Zakura PR 1201: feat(consensus): rotate NU7 FPF address (ZIP 2008) ↩

Citation graph

Hover or tap a node to see its title and citations.
Loading citation graph…
ZIP 2008: Update to `FS_FPF_ZCG_H3` address list · ZIPs.tools