The Zcash ArboretumThe Complete Arboretum PDF

7 The deployment boundary

This section classifies every component of a Zcash FlyClient in the classes of Definition 1.3. It opens with one table that places each hypothesis of Theorem 5.32 and each obligation of Remark 5.33 in its class, with the cited fact that places it there. The subsections that follow elaborate the rows: the specified commitment and the absence of a specified consumer, the differences between the paper’s commitment and the deployed one, the conditions that the ZIPs impose on any sample check of a Zcash verifier, and the open problems.

7.1 Classification of the security hypotheses

Remark 7.1 (Classification of the hypotheses).

The classes of Definition 1.3 apply to components, not to properties. A property proved in this volume of a specified object is recorded as “the object is specified, and the property is proved here”, never as specified. Table 4 classifies every hypothesis of Theorem 5.32 and every obligation O1 to O6 of Remark 5.33, together with two components of the deployed commitment, the chain commitment (row (1)) and its composition across upgrade epochs (row (4)); O1 and O2 share row (3). Each row gives its class and the cited fact that places it there or, for an assumption on the client’s environment, the source that records it. Hypothesis 1 of the theorem fixes the parameters c, k and δ, whose values an instantiation chooses; rows (7) and (9) classify what those values rest on. The rows read as follows.

  1. (1)

    Chain commitment: specified. It is the epoch-scoped, metadata-bearing, branch-separated epoch tree 𝒯η (Definition 6.2, Construction 6.10), to whose chain-history root every header after the Heartwood activation block commits under Definition 6.22, enforced by consensus (ZIPs 221 and 244; ZIP 258, Draft, whose rules are in force from NU6.3 by Definition 1.2).

  2. (2)

    Collision resistance of the hash functions: the functions are specified, namely personalised BLAKE2b-256 𝗁 for tree nodes, the chain-history root, the authorising-data root and the block commitment hash (ZIPs 221 and 244; protocol specification, §“BLAKE2 Hash Functions”), and SHA-256d for block hashes, hence for leaves (protocol specification, §“Block Header Encoding and Consensus”). Their collision resistance is a standard assumption (Crypto Guide, §“Security notions: preimage, second-preimage, and collision resistance”).

  3. (3)

    O1, binding within one upgrade epoch: the commitment is specified (Definition 6.22), and the property is proved here of the specified object (Proposition 6.13); no normative text fixes the property. O2, fork structure for ZIP 221 trees: open, since it is conditional on a sufficient sample check for those trees, which no specification or result supplies (Proposition 7.4); Lemmas 5.4 and 5.5 are stated for the paper’s construction only. Hypothesis 6 of Theorem 5.32, leaf–internal separation, enters only through Lemma 5.4 and shares the class of O2: it is stated for the paper’s construction, and for ZIP 221 trees no specification or result supplies its counterpart.

  4. (4)

    Composition across upgrade epochs: open. Each upgrade epoch has its own tree (Theorem 6.24), and ZIP 221 states no rule that chains them.

  5. (5)

    The verifier’s anchor, the genesis block in the paper: open (Corollary 6.25).

  6. (6)

    O3, weight binding: the node vector is specified (Definition 6.3), and the binding of the field-8 interval of a leaf to the root and its position within one upgrade epoch is proved here of the specified object (Lemma 3.21(1) with Proposition 6.13). The link from a sampled header to its leaf’s weight is conditional on the same sufficient sample check, and so open. Sampling by the chain’s total work is open, field 8 of a root summing one upgrade epoch (Definition 6.3; Proposition 7.8).

  7. (7)

    Assumption 4.8, the transition checks of O3 (Construction 5.8) and Assumption 5.11 under the Zcash retarget rule, in both of its regimes: open (protocol specification, §“Difficulty adjustment”; ZIP 218, Draft).

  8. (8)

    Assumption 5.20: open for Zcash; no analysis relates the work of individual blocks to the invalid segments of a Zcash fork.

  9. (9)

    O4, catch probability and sample count: designed but unspecified, and proved in the paper’s model under its hypotheses (Theorem 5.21; Proposition 5.22).

  10. (10)

    The random-oracle hypothesis on the sampling hash: open. No ZIP or specification section fixes a sampling hash for Zcash, so the hypothesis has no object; the model is that of the Crypto Guide, §“The random oracle model”.

  11. (11)

    O5, grinding: the transform of Construction 5.27 is designed but unspecified. Its Zcash transcript (header bytes, hash, domain separation, and map from output to weight points across upgrade epochs) and a derivation of the budget R of Assumption 5.28 are open.

  12. (12)

    O6, size: the bound of Corollary 5.34 is designed but unspecified; a Zcash proof format is open.

  13. (13)

    At least one honest prover: an assumption on the client’s connectivity, not a component, so no class applies. ZIP 221, “Security and Privacy Considerations”, summarises the analysis of the paper, not the setting of ZIP 221 itself, as follows: “The security analysis assumes adversary mining power is bounded by a known fraction of combined mining power of honest nodes, and cannot drop or tamper with messages between client and full nodes. It also assumes the client is connected to at least one full node and knows the genesis block.” The bound on mining power is row (7); the absence of dropping or tampering and the connection to at least one full node are this row; knowledge of the genesis block is row (5).

Open problems (§7.5) derives rows (4), (5), (7), (11) and (12), and the total work of row (6), from cited rules; O2 of row (3), with the header-to-weight link of row (6), and rows (8) and (10) are open for the reasons stated above.

Hypothesis or obligation Class Placed by
(1) chain commitment 𝒯η specified Definition 6.22; ZIPs 221, 244, 258
(2) collision resistance of 𝗁 and SHA-256d functions specified; resistance assumed ZIPs 221, 244; Crypto Guide
(3) O1: binding within one upgrade epoch commitment specified; property proved here Proposition 6.13
O2: fork structure for ZIP 221 trees; hypothesis 6 (leaf–internal separation) open problem Proposition 7.4; sufficiency not claimed
(4) composition across upgrade epochs open problem Theorem 6.24; ZIP 221 silent
(5) anchor of the verifier open problem Corollary 6.25
(6) O3: weight binding node vector specified; interval binding proved here; header-to-weight link and total work open Lemma 3.21(1); Proposition 7.8
(7) (c,L), transition checks, transition rewriting open problem retarget rule of the specification; ZIP 218
(8) discretisation open problem no analysis for Zcash
(9) O4: catch probability, sample count designed but unspecified Theorem 5.21; Proposition 5.22
(10) random oracle for sampling open problem no sampling hash specified
(11) O5: grinding transform designed but unspecified; transcript and R open Construction 5.27; Assumption 5.28
(12) O6: size designed but unspecified; format open Corollary 5.34
(13) at least one honest prover environment; no class ZIP 221, “Security and Privacy Considerations”
Table 4: The components of a Zcash FlyClient, covering every hypothesis of Theorem 5.32 and every obligation of Remark 5.33, with its class under Definition 1.3 and the result or normative text that places it there. Rows are numbered as in Remark 7.1, which states each in full.

The verifier as a whole is designed but unspecified. The protocol of “The FlyClient protocol” (§5) exists with the paper’s theorem in the paper’s model; no ZIP specifies a Zcash instantiation; and the paper’s model does not cover Zcash’s retarget rule. The paper proves security only for its model of retargeting once per retarget epoch (Definition 4.5), places rules that retarget from a moving average outside it, and credits them with heuristic guarantees only (ePrint 2019/226, Section 3.1, pages 7–8); it names Ethereum there and does not name Zcash. ZIP 221, “Security and Privacy Considerations”, names Zcash among the chains “with rapidly adjusting difficulty” that the paper leaves open.

7.2 The specified commitment and its consumers

Row (1) of Remark 7.1 is the following. ZIP 221 (Final) specifies the tree, with FlyClient as its stated motivation (ZIP 221, “Motivation”). ZIP 221, “FlyClient Requirements and Recommendations”, designates seven fields for reasoning about the difficulty adjustment over a range of blocks: 𝗇𝖤𝖺𝗋𝗅𝗂𝖾𝗌𝗍𝖳𝗂𝗆𝖾𝗌𝗍𝖺𝗆𝗉, 𝗇𝖫𝖺𝗍𝖾𝗌𝗍𝖳𝗂𝗆𝖾𝗌𝗍𝖺𝗆𝗉, 𝗇𝖤𝖺𝗋𝗅𝗂𝖾𝗌𝗍𝖳𝖺𝗋𝗀𝖾𝗍𝖡𝗂𝗍𝗌, 𝗇𝖫𝖺𝗍𝖾𝗌𝗍𝖳𝖺𝗋𝗀𝖾𝗍𝖡𝗂𝗍𝗌, 𝗇𝖤𝖺𝗋𝗅𝗂𝖾𝗌𝗍𝖧𝖾𝗂𝗀𝗁𝗍, 𝗇𝖫𝖺𝗍𝖾𝗌𝗍𝖧𝖾𝗂𝗀𝗁𝗍 and 𝗇𝖲𝗎𝖻𝖳𝗋𝖾𝖾𝖳𝗈𝗍𝖺𝗅𝖶𝗈𝗋𝗄 (Remark 6.4). The pool roots and transaction counts are its “Non-FlyClient Commitments”. No ZIP or specification section specifies a consumer of the tree, a proof object or a verifier. The specified class depends on no implementation: Definition 1.2 places the fields of ZIP 258 (Draft) in force from NU6.3.

Remark 7.2 (Recomputation against proof verification).

The consensus rule of Definition 6.22 is an equality between the commitment field of a header and a value that the validator recomputes from the chain it holds: 𝗁𝖺𝗌𝗁𝖢𝗁𝖺𝗂𝗇𝖧𝗂𝗌𝗍𝗈𝗋𝗒𝖱𝗈𝗈𝗍⁢(𝒯η) in the Heartwood and Canopy upgrade epochs, and the block commitment hash from NU5 (protocol specification, §“Block Header Encoding and Consensus”; ZIP 221, “Block header semantics and consensus rules”; ZIP 244, “Block Header Changes”). No ZIP or specification section defines an inclusion proof for the tree, a proof object or a verification algorithm. The operation that the paper’s verifier performs, Construction 5.2, is therefore unspecified for Zcash.

No specified light-client protocol consumes the commitment. ZIP 307 (Draft) does not reference ZIP 221, while ZIP 221, “Motivation”, defers the verification of transaction inclusion to ZIP 307: it “follows the usual reference protocol”.

7.3 The paper’s commitment and the deployed commitment

Remark 7.3 (Deltas from the paper’s commitment).

Against Construction 5.1 and Definition 5.6, the deployed commitment differs in five respects.

  1. (1)

    Scope. It is epoch-scoped, not rooted at the genesis block (Theorem 6.24). The one-block delay of Proposition 6.23 is shared with the paper, whose header also commits to exactly the blocks strictly before it.

  2. (2)

    Metadata. The seven FlyClient fields serve the purpose of Definition 5.6 (ePrint 2019/226, Definition 7) without matching it field for field (Remark 6.4); the pool roots and counts have no counterpart.

  3. (3)

    Hashing. Every parent is hashed by the personalised, branch-separated BLAKE2b-256 𝗁(ZcashHistory∥β,ser(ℓ)∥ser(r)) over full serialisations, the root commitment 𝗁𝖺𝗌𝗁𝖢𝗁𝖺𝗂𝗇𝖧𝗂𝗌𝗍𝗈𝗋𝗒𝖱𝗈𝗈𝗍 covering the root’s aggregates, and every leaf carries the SHA-256d block hash; the paper hashes with one generic collision-resistant H (Propositions 6.13 and 6.15).

  4. (4)

    Placement. The root enters through the repurposed commitment field (Definition 6.21), and from NU5 only as the first input of the block commitment hash (Proposition 6.19), whereas the paper adds a header field that can replace the previous block hash (ePrint 2019/226, Section 4.2, page 12).

  5. (5)

    Bagging. The deployed tree bags its peaks by the left fold BagL, the paper by the right fold BagR (ePrint 2019/226, Definition 11). Path tops, prefix folds and the maximal path length therefore differ whenever the leaf count has three or more set bits (Theorem 3.8; Lemma 3.7).

ZIP 221, “Tree Node specification”, states: “Other than the metadata commitments, the MMR tree’s construction is standard.” Items (1), (3), (4) and (5) record the respects in which the deployed construction also differs from the paper’s.

7.4 A Zcash verifier

The verifier is designed but unspecified (Remark 7.1). The conditions below are obligations that ZIPs 221 and 244 impose on any sample check for ZIP 221 trees; they are not a construction of this volume, and no Zcash verifier is specified here. A sample check for ZIP 221 trees is a deterministic algorithm that takes the header of a head, an index j and a prover’s message, and accepts or rejects; its purpose is to establish, for the head’s epoch tree, the conclusions of Proposition 5.3 and Lemma 5.7. A condition is necessary when some message that meets every other condition and violates it also violates such a conclusion, so that a check that does not reject that message fails the conclusion.

Proposition 7.4 (Necessary conditions of a Zcash sample check).

Let the head Bη, η>AH, commit to 𝒯η with n=η−α⁢(η) leaves, let β encode b⁢(𝒯η), and let a sample be leaf j of 𝒯η, 1≤j≤n, the block at height α⁢(η)+j−1, with received header hdrj. Each of the following conditions, the height clause of (ii) and the parsing clause of (iv) excepted, is necessary for a sample check for ZIP 221 trees. Sufficiency is not claimed. The height clause of (ii) is required for the leaf’s stated heights to match its position (Lemma 6.6); parsing under the field vector is the hypothesis under which Proposition 6.13 and Lemma 3.20(2) apply; the necessity of neither is claimed.

  1. (i)

    Field 1 of the leaf equals 𝖡𝗅𝗈𝖼𝗄𝖧𝖺𝗌𝗁⁢(hdrj), the SHA-256d hash of the full received header, Equihash solution included (Lemma 6.7).

  2. (ii)

    Fields 2 and 3 of the leaf equal the field 𝗇𝖳𝗂𝗆𝖾 of hdrj, fields 4 and 5 its field 𝗇𝖡𝗂𝗍𝗌; field 8 equals the work ⌊2256/(𝖳𝗈𝖳𝖺𝗋𝗀𝖾𝗍⁢(𝗇𝖡𝗂𝗍𝗌)+1)⌋ of that 𝗇𝖡𝗂𝗍𝗌; and fields 9 and 10 equal α⁢(η)+j−1, the height that the position fixes, the header carrying no height (Definition 2.3).

  3. (iii)

    The header hdrj satisfies proof of work in the sense of Definition 2.3: a valid Equihash solution, and the difficulty filter at the target 𝖳𝗈𝖳𝖺𝗋𝗀𝖾𝗍⁢(𝗇𝖡𝗂𝗍𝗌) it declares.

  4. (iv)

    The sampled leaf of (i) and (ii) and the path siblings are received as full node serialisations, parsed under the field vector of Definition 6.5 for the upgrade epoch beginning at α⁢(η). Starting from that leaf, every parent is recomputed: field 1 as 𝗁(ZcashHistory∥β,ser(ℓ)∥ser(r)) (Construction 6.10), the other fields by the parent rule of Definition 6.3. The recomputed root node yields 𝗁𝖺𝗌𝗁𝖢𝗁𝖺𝗂𝗇𝖧𝗂𝗌𝗍𝗈𝗋𝗒𝖱𝗈𝗈𝗍⁢(𝒯η), which is compared with the head’s commitment field under Definition 6.22: directly in the Heartwood and Canopy upgrade epochs, and from NU5 through Proposition 6.19 with the head’s 𝗁𝖺𝗌𝗁𝖠𝗎𝗍𝗁𝖣𝖺𝗍𝖺𝖱𝗈𝗈𝗍.

  5. (v)

    The sides and the length of the path are those that j and n fix under BagL, the length being depthL⁢(n,j) (Lemma 3.7).

  6. (vi)

    For j≥2: the root node ρ output by PrefixRootL⁢(n,j,π) (Construction 3.16), run on the path π with the parent rule in place of H(⋅∥⋅), is the claimed root node of 𝒯α⁢(η)+j−1, and the value

    r=𝗁⁢(ZcashHistory∥β,ser⁢(ρ))

    is accepted against the commitment field of hdrj under Definition 6.22: r equals that field in the Heartwood and Canopy upgrade epochs, and from NU5 r is accepted by Proposition 6.19 with the 𝗁𝖺𝗌𝗁𝖠𝗎𝗍𝗁𝖣𝖺𝗍𝖺𝖱𝗈𝗈𝗍 of the sampled block.

Proof.

For each condition, a message that meets the other five and violates it also violates the conclusion named.

  1. (i)

    An honest header with valid proof of work, paired with a leaf whose field 1 is the hash of a different, unmined block of the claimed tree. The proof of work checked is not that of the committed block, contrary to Proposition 5.3(i) and Lemma 5.7(1).

  2. (ii)

    An honest header paired with a leaf of inflated field 8, in a tree that the adversary builds over such leaves under a head that it mines, so that every path verifies. The header-determined fields are not those of the header, contrary to Proposition 5.3(ii), and the interval that Lemma 3.21(1) binds belongs to a forged weight.

  3. (iii)

    A tree built over fabricated headers without valid solutions. Every other condition is met by construction, and unmined headers pass, contrary to Lemma 5.7(1).

  4. (iv)

    If a node is taken in any other form, the fields that do not enter the recomputation are unbound. With the siblings supplied as field-1 digests and the path checked on field 1 alone, the siblings’ field 8, which fixes the interval of Lemma 3.21, and the leaf’s pool fields (6, 7 and, where the vector carries them, 11 to 17), which its header does not determine, are chosen freely; two passing samples at j then carry distinct leaf tuples, contrary to Proposition 5.3(i). If the recomputation starts from a node other than the leaf matched in (i) and (ii), the matched header is bound to nothing. Proposition 6.13 binds full serialisations only.

  5. (v)

    The single-block tuple of a leaf placed at a position where the shape MnL has an internal node: a tree with fewer than n leaves then passes, and a tuple committed at another depth is accepted as leaf j. Theorem 3.17, which assumes the shape fixed by n and the bagging order, does not apply.

  6. (vi)

    Honest blocks, mined on the honest chain after the fork point, appended as leaves of the fork’s tree. They pass (i) to (v), while their own commitments bind the honest prefix, not the fork’s first j−1 leaves, contrary to Proposition 5.3(iii). This is the case that Lemma 5.4 excludes by the prefix check.

No condition is shown sufficient. □

The conditions are the ZIP 221 counterparts of the checks of Construction 5.2: (i) and (ii) of check (a), (iii) of check (d), (iv) and (v) of check (b), and (vi) of check (c). Three further statements bound their reach. For j=1 the sample is the block Bα⁢(η). For α⁢(η)>AH it is an activation block, which commits to the completed tree of the previous upgrade epoch (Theorem 6.24); for α⁢(η)=AH it carries the sentinel of Definition 6.12 (Corollary 6.25). In both cases its prefix check belongs to epoch composition, which is open. The consensus condition 𝗇𝖡𝗂𝗍𝗌=𝖳𝗁𝗋𝖾𝗌𝗁𝗈𝗅𝖽𝖡𝗂𝗍𝗌⁢(α⁢(η)+j−1) of Definition 2.3 depends on preceding headers and is not decided by one sample; it is the object of the transition checks of row (7), which are open. And condition (iv) makes Proposition 6.13 apply, but the fork structure of row (3) additionally needs a sufficient check, which is open.

Example 7.5 (Per-sample size).

The size is evaluated at the scale of one upgrade epoch, since n is the leaf count of one epoch tree and never the length of the chain. The message of Proposition 7.4 for one sample consists of the 1,487-byte header (§2.1), the sampled leaf’s own serialisation of at most 317 bytes (Definition 6.5), at most ⌊log2⁡n⌋+popcount⁢(n)−1 siblings of at most 317 bytes each (Lemma 3.7), and the 32 bytes of the sampled block’s 𝗁𝖺𝗌𝗁𝖠𝗎𝗍𝗁𝖣𝖺𝗍𝖺𝖱𝗈𝗈𝗍. For n=220 a path has at most 20 siblings, and a sample at most

1,487+317+20⋅317+32=8,176⁢ bytes,

of which the header is 18.2 per cent. For n=220−1, with 20 peaks, a path has at most 38 siblings, and a sample at most

1,487+317+38⋅317+32=13,882⁢ bytes,

of which the header is 10.7 per cent. The leaf’s fields fixed by its header and its position, 1 to 5 and 8 to 10, could be omitted by a proof format, which is open. The figures are computed by script.

7.5 Open problems

The following open items, each a row of Remark 7.1 except the serving interface, are derived below from cited rules: epoch composition, the anchor below the Heartwood activation height, total work, the proof format, the serving interface, the Fiat–Shamir transcript, and the security analysis under Zcash’s retarget rule with its NU7 regime. Composition with compact-block scanning follows. Availability of prover data is not a protocol question.

Remark 7.6 (Epoch composition).

Epoch trees are hashed under distinct branch IDs, and each complete root is committed only by the next activation header (Theorem 6.24). No specified rule chains them, and ZIP 221, “Specification”, is silent. Composition is needed for prefix proofs and for difficulty checks: the averaging window and the median-time span of the first blocks of an upgrade epoch reach into the previous upgrade epoch (protocol specification, §“Difficulty adjustment”), so a transition check at an upgrade boundary needs two epoch trees. Proposition 5.38 needs an inclusion path of the accepted head against the later head’s root, and so applies within one epoch tree. Across epoch trees it does not apply: no tree of a later upgrade epoch contains a leaf of an earlier one (Definition 6.2), and only the activation header commits to the completed earlier tree. No design exists: the item is open.

Remark 7.7 (Anchor).

The anchor below the Heartwood activation height is open, by Corollary 6.25.

Proposition 7.8 (No committed node aggregates total work).

Let η>AH.

  1. (a)

    If SHA-256d is collision resistant, the header of Bη commits through 𝗁𝖺𝗌𝗁𝖯𝗋𝖾𝗏𝖡𝗅𝗈𝖼𝗄 to the headers of B0,…,Bη−1, hence to their fields 𝗇𝖡𝗂𝗍𝗌 and to the total work ω of that chain (§2.1; the model’s counterpart is Definition 4.2).

  2. (b)

    For every node v of 𝒯η, field 8 is the sum modulo 2256 of the work of the blocks at heights v.𝗇𝖤𝖺𝗋𝗅𝗂𝖾𝗌𝗍𝖧𝖾𝗂𝗀𝗁𝗍 to v.𝗇𝖫𝖺𝗍𝖾𝗌𝗍𝖧𝖾𝗂𝗀𝗁𝗍, all in [α⁢(η),η−1]; field 8 of no node of 𝒯η depends on B0,…,Bα⁢(η)−1.

  3. (c)

    Hence no inclusion path against the root to which Bη commits opens ω. Sampling by the chain’s cumulative work (Definition 5.19) and the acceptance rule need field 8 of the root of every completed epoch tree 𝒯A, AH<A≤α⁢(η) an activation height, each committed only by BA (Theorem 6.24), together with the work of the blocks below AH, which no tree commits (Corollary 6.25).

No ZIP addresses the item; it is open.

Proof.

(a) The block hash covers the whole header, 𝗇𝖡𝗂𝗍𝗌 and 𝗁𝖺𝗌𝗁𝖯𝗋𝖾𝗏𝖡𝗅𝗈𝖼𝗄 included (Definition 2.3); induction down the chain, a divergence yielding a collision of SHA-256d. (b) Field 8 of a leaf is its block’s work and that of an internal node the sum of its children’s (Definition 6.3); the leaves of 𝒯η are Bα⁢(η),…,Bη−1 (Definition 6.2); the height range of v is that of Lemma 6.6. (c) A path opens only fields of nodes of 𝒯η, and by (b) the only work-valued field, field 8, sums work over leaves of 𝒯η; the pool-root fields depend on earlier blocks, but through treestates, from which work is not computed. The work of each block is at least 1, since 𝖳𝗈𝖳𝖺𝗋𝗀𝖾𝗍⁢(𝗇𝖡𝗂𝗍𝗌)+1≤2256, so ω exceeds the work of the leaves of 𝒯η whenever α⁢(η)>0. The remaining work is committed only as stated, by Theorem 6.24 and Corollary 6.25. ZIP 221, “Tree Node specification”, assumes that cumulative chain work stays below 2256, which makes each modular sum exact (Lemma 3.21(2)). □

Part (b) does not contradict the statement of (a) that every header commits to the total work: that commitment is through the linkage of every header, which a sampling verifier does not receive.

Remark 7.9 (Proof format).

The proof format is open; no ZIP or specification section defines one. From NU5 any format carries, for every header whose commitment it opens, the 32-byte 𝗁𝖺𝗌𝗁𝖠𝗎𝗍𝗁𝖣𝖺𝗍𝖺𝖱𝗈𝗈𝗍 needed to reopen the block commitment hash (Proposition 6.19).

Remark 7.10 (Serving interface).

The serving interface is open: no ZIP or specification section defines a message for requesting or serving tree nodes, inclusion paths or assembled proofs. Availability of prover data is not a protocol question. Every node, and hence every inclusion path, of 𝒯η is a function of the chain up to its last leaf Bη−1, not of the blocks of the upgrade epoch alone, since the pool-root fields (6, 7, 12, 13, 15 and 16) are roots of final treestates, which depend on every note commitment since the activation of the pool (Definition 6.3; Construction 6.10; ZIP 221, “Tree Node specification”; ZIP 258, “Changes to ZIP 221”). Any party that holds that chain computes them; what is unspecified is the message.

Remark 7.11 (Transcript).

The transcript is open. Construction 5.27 derives the sampling randomness from a hash of the head (ePrint 2019/226, Section 6.2). For Zcash no ZIP or specification section fixes the header bytes, the hash, the domain separation or the map from output to weight points across upgrade epochs, so Proposition 5.29 has no Zcash instance.

Remark 7.12 (Security analysis).

The security analysis is open. Zcash retargets after every block from an averaging window with median-time spans, damping and asymmetric clamps, which is not Definition 4.5. The blocks of the upgrade epochs from Heartwood through NU6.3 are governed by a 17-block window at a 75-second target spacing (protocol specification, §“Difficulty adjustment”); NU7 as specified uses 102 blocks at 25 seconds (ZIP 218, Draft, “Averaging window”; Consensus Guide, §“Difficulty in motion”). Neither regime is covered by Theorem 5.32, and the paper contains no derivation of (c,L) from either (Remark 4.13). The published analysis of a Zcash instantiation (Perazzo and Capecchi, arXiv 2604.26736, Section IV-A, Definition IV.1) assumes its adversarial work budget rather than deriving it from the retarget rule, so it does not close the gap; it is recorded here because the open classification must account for it. ZIP 221, “Security and Privacy Considerations”, records that the paper leaves such chains with only heuristic guarantees, that “The use of these fields has not been analysed in the academic security literature”, and that “A more in-depth security analysis of FlyClient should be performed before designing a FlyClient-based light client ecosystem for Zcash”. No ZIP addresses the gap.

Remark 7.13 (NU7).

ZIP 218 (Draft) changes the target spacing from 75 to 25 seconds, the averaging window from 17 to 102 blocks and the expected stale rate (ZIP 218, “Block target spacing”, “Averaging window”, “Stale block rate”). These bear on the (c,L) that an instantiation could assume, not on Theorem 5.21, which is stated in c and δ. Transition checks must use the height-dependent spacing and window, span two regimes across one more upgrade boundary (Corollary 6.26), and meet first adjustments that ZIP 218, “Effect on difficulty adjustment”, expects to be limited by 𝖯𝗈𝖶𝖬𝖺𝗑𝖠𝖽𝗃𝗎𝗌𝗍𝖣𝗈𝗐𝗇 (Consensus Guide, §“NU7: 25-second blocks and bounded shielded work”).

Remark 7.14 (Compact-block scanning).

Composition with compact-block scanning is open. A FlyClient replaces trust in the header chain, not in the channel through which a wallet detects its transactions (ZIP 307, Draft).