The Zcash ArboretumFlyClient Guide PDF

5 The FlyClient protocol

This section constructs the protocol of ePrint 2019/226 in the model of §4, each object before its first use: the header chain commitment and the check applied to one sampled block, two lemmas on forks, the difficulty Merkle mountain range with its node checks, the sampling distribution, the interactive and the non-interactive protocol, the security theorem with its hypotheses and status, and verification after acceptance. Throughout, H:{0,1}∗→{0,1}κ is the hash function of §3, which is also the proof-of-work oracle of Definition 4.1; log is the natural logarithm and AdvHcol⁢(ℬ) the collision advantage of an algorithm ℬ (Crypto Guide, Definition “Collision resistance”, §“Security notions: preimage, second-preimage, and collision resistance”), the security parameter left implicit.

5.1 Header chain commitments and per-sample checks

Blocks are written B0 (the genesis block), B1, B2, …, with Bη the block at height η and hdr⁢(B) the header of B.

Construction 5.1 (Header chain commitment).

Fix an aggregating range (Definition 3.19) under the bagging BagR (Definition 3.5) whose leaf map sends a block B to a node tuple leaf⁢(B) with hash field leaf⁢(B).𝗁=H⁢(hdr⁢(B)). Leaf j of every range is leaf⁢(Bj−1), so leaf j is the block at height j−1. For every height η≥1 let Mη be the range over the η leaves leaf⁢(B0),…,leaf⁢(Bη−1) and 𝗋𝗍η its root tuple. The producer of Bη obtains Mη from Mη−1 by Construction 3.10 applied to leaf⁢(Bη−1), with the parent map par in place of H(⋅∥⋅) (M1 is the single leaf leaf⁢(B0)), and records the hash field 𝗋𝗍η.𝗁 in the header of Bη. The genesis header records no root. A full node accepts Bη only if its header records 𝗋𝗍η.𝗁.

The construction has the following invariant: the header of Bη commits, through one root, to exactly the blocks strictly before it, and a head Bη commits to n=η leaves, n denoting this leaf count below. The root’s fields other than its hash field are not recorded; a verifier recomputes the root tuple from its two children, which the hash field binds (Lemma 3.20). The range of ePrint 2019/226, Section 2, is the instance whose tuples carry the hash field alone; the paper’s difficulty Merkle mountain range is the instance of Definition 5.6. The one further header field is the paper’s only consensus change (Section 4.2). The paper indexes the committing block and its range inconsistently; the invariant fixes one indexing, and the paper’s is not carried. In the classes of Definition 1.3, this commitment from the genesis block is the paper’s design and no Zcash rule specifies it; the specified commitment is the epoch-scoped instance of “The chain-history commitment” (§6), from which nothing is concluded here.

One sample at index j∈{1,…,n} against a head Bη must establish three facts: that the sampled block is leaf j under the head’s root, that the leaf’s tuple is the one its header determines, and that the root in the sampled header commits to exactly the first j−1 of the same leaves.

Construction 5.2 (Per-sample check).

The inputs are a root tuple 𝗋𝗍 with leaf count n and an index 1≤j≤n. The prover sends the header hdrj of the block at height j−1, the tuple vj of leaf j, and its inclusion path π in Mn (Definition 3.13) with every sibling as a full tuple. The verifier performs the following checks.

  1. (a)

    Leaf: vj.𝗁=H⁢(hdrj), and every other field of vj that the leaf map determines from the header alone equals its value computed from hdrj.

  2. (b)

    Inclusion: VerifyR⁢(𝗋𝗍,n,j,vj,π) of Definition 3.13, in the tuple form of Definition 3.19, accepts; the side of each sibling and the path length depthR⁢(n,j) are fixed by (j,n).

  3. (c)

    Prefix: for j≥2, the hash field of PrefixRootR⁢(n,j,π) (Construction 3.16), run with par in place of H(⋅∥⋅), equals the root recorded in hdrj; for j=1, hdr1 equals the genesis header, which the verifier knows.

  4. (d)

    Proof of work: hdrj carries a valid proof of work at the target T it declares, H⁢(hdrj)<T (Definition 4.1).

Any failure rejects.

ePrint 2019/226, Algorithm 2, lists checks (b) and (c); checks (a) and (d) come from its Definition 5 and Section 6.1. Check (b) uses the length rule of Definition 3.13, not that of the paper’s Algorithm 4.

Proposition 5.3 (Soundness of the per-sample check).

Let 𝗋𝗍 be any root tuple, possibly chosen by the adversary, with leaf count n, and let 1≤j≤n. There is an explicit reduction ℬ such that, for every adversary 𝒜 that outputs samples at position j against (𝗋𝗍,n), the probability that every sample passes Construction 5.2 while one of the following fails is at most AdvHcol⁢(ℬ):

  1. (i)

    any two passing samples at position j carry the same leaf tuple and the same header, so the header is bound to position j of the sequence that 𝗋𝗍 commits;

  2. (ii)

    every header-determined field of that leaf tuple is its value computed from that header;

  3. (iii)

    for j≥2, the root recorded in that header is the hash field of a prefix-root tuple that is the same for every passing sample at j, hence a function of (𝗋𝗍,n,j); if 𝗋𝗍 is the root of a consistent labelling over v1,…,vn, it is the root of the consistent labelling over v1,…,vj−1.

Proof.

The reduction ℬ runs 𝒜 and inspects two passing samples (hdr,v,π) and (hdr′,v′,π′) at position j. (i) If (v,π)≠(v′,π′), Lemma 3.20(2), the tuple form of Theorem 3.17 under the prefix-free serialisation of Definition 3.19, yields a collision at the highest step whose inputs differ. If v=v′ but hdr≠hdr′, check (a) gives H⁢(hdr)=v.𝗁=H⁢(hdr′), a collision. (ii) is check (a). (iii) Barring the collisions of (i), π=π′, so the fold of check (c) over the left siblings of π is the same tuple for every passing sample, and check (c) equates its hash field with the recorded root. For a consistent labelling, Lemma 3.15 with Lemma 3.20(3) identifies the fold with the root over v1,…,vj−1, as Theorem 3.14 does for plain values. □

5.2 Forks against a committed chain

A claimed chain C forks from the honest chain at its fork point, the last common block (§4.3). Its head records the root of a range over the leaf tuples v1′,…,vn′ of its blocks, and C places a block B at leaf position j when vj′.𝗁=H⁢(hdr⁢(B)).

Lemma 5.4 (Honest blocks after the fork point).

Let the head of C record the hash field of the root of a consistent labelling over v1′,…,vn′. Let B be a block of the honest chain at height η above the fork point, whose header records the hash field of the honest root over the honest leaf tuples v1,…,vη, and let C place B at leaf position j≥2. Suppose that

  1. 1.

    the sequences (v1′.𝗁,…,vj−1′.𝗁) and (v1.𝗁,…,vη.𝗁) differ, possibly in length; and

  2. 2.

    no block header equals ser⁢(ℓ)∥ser⁢(r) for node tuples ℓ,r (leaf–internal separation).

Then from a sample of B that passes Construction 5.2 against the head of C an explicit reduction computes a collision of H, or finds a leaf position i<j of C whose tuple vi′ has hash field H⁢(ser⁢(ℓ)∥ser⁢(r)) for node tuples ℓ,r. A sample at i passes check (a) only on a header hashing to that value, which by hypothesis 2 is a collision. Consequently, barring a collision, either a sample on B rejects or leaf i does, and that block or leaf belongs, in the analysis of §5.4, to the invalid set of the fork.

Proof.

By Proposition 5.3(iii) a passing sample makes the root recorded in hdr⁢(B) equal to the hash field of the root of the consistent labelling of Mj−1 over v1′,…,vj−1′. That value is also the hash field of the honest root of Mη. Descend both labellings from their roots, keeping a pair of nodes with equal hash fields whose leaf subsequences differ in their hash fields. At a pair of internal nodes, equal hash fields H⁢(ser⁢(ℓ)∥ser⁢(r))=H⁢(ser⁢(ℓ′)∥ser⁢(r′)) with (ℓ,r)≠(ℓ′,r′) are a collision by unique decoding (proof of Lemma 3.20); otherwise the children agree as tuples, the leaf subsequences of the left children or of the right children differ, and the descent continues there. Two leaves with equal hash fields do not have different hash-field sequences, so the descent ends at a leaf opposite an internal node. If the leaf is honest, its hash field is H⁢(hdr) for the header hdr of an honest block, and H⁢(hdr)=H⁢(ser⁢(ℓ)∥ser⁢(r)) with distinct inputs by hypothesis 2 is a collision. If the leaf is a leaf vi′ of C, i≤j−1, opposite an honest internal node with children ℓ,r, then vi′.𝗁=H⁢(ser⁢(ℓ)∥ser⁢(r)), which is the second outcome. The descent takes at most max⁡(⌈log2⁡(j−1)⌉,⌈log2⁡η⌉) steps. □

The lemma is ePrint 2019/226, Section 5.1 with Corollary 4 (here Corollary 3.18), extended to a block placed at a height other than its own, where the two roots have different leaf counts and hypothesis 2 is needed. It concerns honest blocks placed after the fork point and states nothing about blocks the adversary mines; those are the subject of the next lemma.

Lemma 5.5 (No reuse of work across the fork point).

Model H as a random oracle with κ-bit outputs (Crypto Guide, §“The random oracle model”), and let at most qH queries to H be made in the experiment, by 𝒜, by the verification of its output, and by the computation of the prefix root at every position of the output fork after its fork point. Call a query H⁢(x) reused if x is the header of a block B of the output fork after its fork point, x records the hash field of the prefix root of the fork at B’s position, and the query precedes the first query whose answer is that recorded value. Then

Pr⁢[𝒜⁢ outputs a fork with a block mined by a reused query]≤qH2⁢ 2−κ+AdvHcol⁢(ℬ)

for an explicit reduction ℬ. Consequently, except with that probability, only adversarial work done after the fork’s prefix is fixed counts against the honest chain.

Proof.

By Construction 5.1 the root recorded in a header after the fork point is the hash field of a tuple over the fork’s prefix; by Proposition 5.3(iii) that tuple is a function of the fork’s root, position and leaf count, barring a collision, which accounts for the term AdvHcol⁢(ℬ). Its hash field is the answer of a query, made at the latest during that computation. A reused query fixes a recorded value r before any query has answer r. The first query with answer r has an input not queried before, since a repeated input returns an earlier answer; its answer is uniform on {0,1}κ and independent of all earlier queries, so it equals one of the at most qH values recorded in earlier query inputs with probability at most qH⁢ 2−κ. The union bound over the at most qH queries (Math Guide, §“The union bound and a birthday calculation”) gives qH2⁢ 2−κ. □

The paper asserts the statement in one sentence (ePrint 2019/226, Section 3.2); the proof above is this volume’s. The bound is in the number of oracle queries, not in the mining rate.

5.3 The difficulty Merkle mountain range

A sampling verifier sees few difficulty transitions, so the transitions it does not see must be constrained by committed aggregates.

Definition 5.6 (Difficulty Merkle mountain range).

The difficulty Merkle mountain range (difficulty MMR) is the instance of Definition 3.19 whose node v is the tuple

v=(v.𝗁,v.𝗐,v.𝗍,v.𝖣𝗌𝗍𝖺𝗋𝗍,v.𝖣𝗇𝖾𝗑𝗍,v.𝗇),

with a serialisation that concatenates injective fixed-width encodings of the six fields, hence prefix-free. For a block B whose header declares target T, the leaf map sets

  • •

    v.𝗁=H⁢(hdr⁢(B));

  • •

    v.𝗐=v.𝖣𝗌𝗍𝖺𝗋𝗍=D⁢(T), the difficulty level of T (Definition 4.2);

  • •

    v.𝗍 the number of rounds between the round recorded by the predecessor of B and the round recorded by B (0 for the genesis block);

  • •

    v.𝖣𝗇𝖾𝗑𝗍 the level of the target that Definition 4.5 assigns to the block after B;

  • •

    v.𝗇=1.

The parent of ℓ and r has hash field H⁢(ser⁢(ℓ)∥ser⁢(r)), over both children’s complete tuples; its fields 𝗐, 𝗍 and 𝗇 are the sums of the children’s; it inherits 𝖣𝗌𝗍𝖺𝗋𝗍 from ℓ and 𝖣𝗇𝖾𝗑𝗍 from r.

The fields 𝗁, 𝗐, 𝖣𝗌𝗍𝖺𝗋𝗍 and 𝗇 of a leaf are determined by its header alone and are checked by item (a) of Construction 5.2; the fields 𝗍 and 𝖣𝗇𝖾𝗑𝗍 depend on neighbouring blocks and are constrained only by Construction 5.8. The definition makes three precisions against ePrint 2019/226, Definition 7. The paper writes H⁢(l⁢c,r⁢c) without fixing its input; hashing the children’s hash fields alone would leave their other fields unbound. The paper’s “timestamp” 𝗍 is an elapsed time, and its “targets” 𝗐, 𝖣𝗌𝗍𝖺𝗋𝗍 and 𝖣𝗇𝖾𝗑𝗍 are difficulty levels. The paper’s checks name fields tstart, tend and Dend that its Definition 7 never declares; the declared aggregate 𝗍 suffices for every timing check below, so the field set is the declared one. The paper’s data field is omitted, since no check uses it. No encoding of the fields is fixed by the paper.

Lemma 5.7 (Weight binding for the difficulty MMR).

Let a sample at leaf j pass Construction 5.2 against a root 𝗋𝗍 with leaf count n, the shape being fixed by n under BagR. Except with probability AdvHcol⁢(ℬ) for an explicit reduction ℬ:

  1. 1.

    the leaf weight vj.𝗐 is the difficulty level D⁢(T) of the target T at which the header’s proof of work is valid;

  2. 2.

    the interval [W,W+vj.𝗐), with W the sum of the fields 𝗐 of the left siblings on the path, is a function of (𝗋𝗍,n,j).

Proof.

(1) Check (a) sets vj.𝗐=D⁢(T) for the declared target T, check (d) validates the proof of work at that T, and Proposition 5.3(i) and (ii) bind the header and its fields to position j. (2) Lemma 3.21(1). Whether W equals the true prefix weight is part (2) of that lemma, which holds for a consistent labelling only and is not claimed here. □

Construction 5.8 (Node checks).

Assume, with ePrint 2019/226, Section 6.1, that the retarget-epoch length E of Definition 4.5 and the leaf count n are powers of two, so that the retarget epochs are the perfect subtrees of altitude log2⁡E. For every parent p on a sample’s path, with children ℓ and r (one of them a carried sibling), the verifier checks:

  1. 1.

    p=par⁢(ℓ,r) under Definition 5.6;

  2. 2.

    ℓ.𝖣𝗇𝖾𝗑𝗍=r.𝖣𝗌𝗍𝖺𝗋𝗍;

  3. 3.

    for each of ℓ and r, internal consistency:

    1. (a)

      a node v of altitude below log2⁡E lies inside one retarget epoch and has v.𝗐=v.𝗇⋅v.𝖣𝗌𝗍𝖺𝗋𝗍, and v.𝖣𝗇𝖾𝗑𝗍=v.𝖣𝗌𝗍𝖺𝗋𝗍 unless v contains the last block of its epoch;

    2. (b)

      a node v of altitude log2⁡E is one retarget epoch, has v.𝗐=E⋅v.𝖣𝗌𝗍𝖺𝗋𝗍, and v.𝖣𝗇𝖾𝗑𝗍=D(Retarget(2κ/v.𝖣𝗌𝗍𝖺𝗋𝗍,v.𝗍)), the level that Definition 4.5 assigns after an epoch of v.𝗍 rounds at level v.𝖣𝗌𝗍𝖺𝗋𝗍;

    3. (c)

      a node v above altitude log2⁡E is feasible: its (v.𝗍,v.𝗐,v.𝖣𝗌𝗍𝖺𝗋𝗍,v.𝖣𝗇𝖾𝗑𝗍,v.𝗇) is attained by some sequence of clamped retargets (Propositions 5.9 and 5.10).

At the sampled leaf the checks (a) and (d) of Construction 5.2 apply; their effect on 𝗐 and 𝖣𝗌𝗍𝖺𝗋𝗍 is Lemma 5.7. Weight-position check: when a leaf is requested at a point x of cumulative weight, 0≤x<𝗋𝗍.𝗐, the returned leaf j satisfies W≤x<W+vj.𝗐, with W the sum of the fields 𝗐 of the left siblings on its path; this interval is bound to (𝗋𝗍,n,j) by Lemma 3.21(1). Any failure rejects.

The construction is ePrint 2019/226, Section 6.1 (“Difficulty MMR Verification”); the paper states the weight-position check only informally (Section 2).

Proposition 5.9 (Feasibility envelope).

Let consecutive retarget epochs 0,…,z−1 have levels D0=𝖣𝗌𝗍𝖺𝗋𝗍,D1,…,Dz−1, and let Dz=𝖣𝗇𝖾𝗑𝗍=τy⁢𝖣𝗌𝗍𝖺𝗋𝗍, where every retarget obeys the clamp of Definition 4.5, so that De+1/De∈[1/τ,τ]. Then:

  1. 1.

    |y|≤z and, for every e,

    𝖣𝗌𝗍𝖺𝗋𝗍⁢max⁡(τ−e,τy−z+e)≤De≤𝖣𝗌𝗍𝖺𝗋𝗍⁢min⁡(τe,τy+z−e);
  2. 2.

    for integer y with z−y even both envelopes are attained by clamped sequences, so the total weight E⁢∑e<zDe is maximal when the difficulty is raised by τ per epoch and then lowered by τ per epoch to 𝖣𝗇𝖾𝗑𝗍, and minimal when it is lowered first and then raised;

  3. 3.

    an epoch at target T that lowers the difficulty maximally (new target τ⁢T) lasts Δ≥τ⁢E/f rounds, and one that raises it maximally (new target T/τ) lasts Δ≤E/(f⁢τ) rounds.

Proof.

(1) Since |logτ⁡De+1−logτ⁡De|≤1, induction on e from epoch 0 gives |logτ⁡(De/𝖣𝗌𝗍𝖺𝗋𝗍)|≤e, and from epoch z gives |logτ⁡(De/𝖣𝗌𝗍𝖺𝗋𝗍)−y|≤z−e; at e=0 the second bound is |y|≤z. (2) For z−y even the pointwise upper envelope has exponent steps +1 up to e=(y+z)/2 and −1 after, and the lower envelope steps −1 up to e=(z−y)/2 and +1 after; both are clamped, and the weight is increasing in each De. (3) The raw retarget is T⁢Δ⁢f/E (§4.2); the clamp is reached from above when T⁢Δ⁢f/E≥τ⁢T and from below when T⁢Δ⁢f/E≤T/τ. A script checks the sums against brute force over exponent sequences, and the two thresholds. □

Proposition 5.10 (Feasibility bounds).

In the setting of Proposition 5.9, let y be an integer with y≥0 and z−y even. If a node spanning the z epochs is attained by a clamped sequence, then

  1. 1.

    y≤z (Proposition 5.9(1));

  2. 2.

    𝗐≤E⁢𝖣𝗌𝗍𝖺𝗋𝗍⁢(τ+1)⁢τ(y+z)/2−τ1+y−1τ−1;

  3. 3.

    𝗐≥E⁢𝖣𝗌𝗍𝖺𝗋𝗍⁢τy+τ−(τ+1)⁢τ−(z−y)/2τ−1;

  4. 4.

    if y=z, then 𝗍≤z⁢E/(f⁢τ).

Proof.

Bounds (2) and (3) are the geometric sums of the envelopes of Proposition 5.9(2); at y=z both reduce to (τz−1)/(τ−1). For (4), y=z forces a maximal raise in each of the z epochs, each of at most E/(f⁢τ) rounds by Proposition 5.9(3). A script confirms that the closed forms equal the brute-force extremes in all 123 cases with τ∈{2,4,3/2}, 1≤z≤11, 0≤y≤z and z−y even; at τ=4, y=0, z=2 they give 5 and 5/4 per unit of E. □

The paper states these checks with k and n in place of y and z, which here are the catch parameter and the leaf count (ePrint 2019/226, Section 6.1, pp. 18–19). Three departures are made. The printed lower bound has exponent (y+z)/2 in place of −(z−y)/2 and is then negative, −5 against the corrected 5/4 at τ=4, y=0, z=2. The printed bounds count one level per epoch, whereas the leaf rule 𝗐=𝖣𝗌𝗍𝖺𝗋𝗍 sums per block, so both scale by E. The printed upper summation overcounts by τz at y=z, where its closed form is right. The paper further requires that 𝗍 cover the epochs in which the difficulty is lowered, without a formula, and calls the cases of non-integer and negative y “similar” without stating them. The conditions above are necessary, not sufficient: the general feasibility predicate that item 3(c) of Construction 5.8 requires is not given by the paper.

Assumption 5.11 (Transition rewriting).

In the model of Definition 4.1, for every adversary 𝒜 that with non-negligible probability p outputs a chain C accepted by the node checks on every sample, some of whose difficulty transitions violate Definition 4.5, there is an adversary 𝒜′ that makes the same number of oracle queries, respects the retarget rule, and with probability at least p−𝗇𝖾𝗀𝗅⁢(κ) outputs a chain C′ whose validly mined blocks occupy the same positions as those of C.

The assumption is the statement of ePrint 2019/226, Lemma 4, taken as a hypothesis because its proof is a sketch. It handles subtrees whose aggregates are inconsistent with their children, which Lemma 3.21(2) does not cover. The paper’s proof strategy is as follows. Let x′ be the highest node on a claimed path at which the node checks fail. Every path through x′, or carrying it as a sibling, rejects, so barring a collision every leaf of the subtree M′ under the parent of x′ is unsampleable without rejection. The adversary 𝒜′ replaces the transitions inside M′ by clamped ones consistent with the aggregates (𝗐,𝗍,𝖣𝗌𝗍𝖺𝗋𝗍,𝖣𝗇𝖾𝗑𝗍,𝗇) of the root of M′, which is possible because that node passes the feasibility check and the leaves of M′, being invalid, need no proof of work; this is repeated until no invalid transition remains. The paper writes “consistency with x0” where the parent of x′ is meant.

Remark 5.12 (Gaps in the rewriting argument).

(1) The feasibility step presumes a complete feasibility predicate, which the paper gives only in the simplified setting of Proposition 5.10. (2) Rewriting the leaves of M′ changes every later root and hence every later header, so 𝒜′ must fix the rewrite before it mines the later valid blocks, and must mine them anew; the paper asserts without a simulation argument that this succeeds with probability at least p−𝗇𝖾𝗀𝗅⁢(κ). (3) “The same valid blocks” holds for positions, not for header contents. Assumption 5.11 is therefore the paper’s claim, not a result of this volume.

5.4 The sampling distribution

Uniform sampling fails on forks near the tip: almost every uniform sample lands before a late fork point, where the two chains agree. If the fork point were known, each sample after it would be invalid with probability at least 1−c under Assumption 4.8.

Construction 5.13 (Dyadic-suffix sampling).

At constant difficulty, over a claimed chain of n blocks and with u samples per interval, the verifier draws, for every integer i with 0≤i<log2⁡n, u samples uniformly and independently from the last n/2i blocks, and checks every one of the last min⁡(L,u) blocks.

The samples do not depend on the prover’s answers, so the protocol is one-shot and public-coin (Crypto Guide, §“Interactive protocols, proofs, and arguments”). The construction is ePrint 2019/226, Section 5.3, with u in place of the paper’s k.

Lemma 5.14 (Dyadic miss probability).

Under Assumption 4.8, at constant difficulty, for every fork point a and every fork from a of more than L blocks whose total work after a is at least that of the honest chain, the probability that the u⁢log2⁡n samples of Construction 5.13 include no invalid block of the fork is at most ((1+c)/2)u, except with probability negligible in λ.

Proof.

Let the fork point be a and choose i with (2i−1)⁢n/2i≤a<(2i+1−1)⁢n/2i+1. The interval of the last n′=n/2i blocks then contains a in its first half, so the fork length l=n−a satisfies l>n′/2, and by Assumption 4.8, at constant difficulty, the interval holds at least (1−c)⁢l>(1−c)⁢n′/2 invalid blocks. Each of its u independent uniform samples misses them with probability at most 1−(1−c)/2=(1+c)/2, and the samples of the other intervals are discarded. A script checks the bound for c∈{0.25,0.5,0.9}, u∈{1,5,20} and intervals of 8, 64 and 1,024 blocks. □

The lemma is ePrint 2019/226, Lemma 2. A fork of at most min⁡(L,u) blocks lies in the checked suffix. When u<L, a fork of l blocks with u<l≤L is covered by neither clause, since Assumption 4.8 does not constrain it; the construction is sound for u≥L, or with the last L blocks checked in full.

Definition 5.15 (Continuum model and catch probability).

The claimed chain is the interval [0,1] in relative cumulative work: a block whose cumulative-work interval is [W,W+w) within total committed work ω occupies [W/ω,(W+w)/ω); genesis is at 0 and the head at 1. A fork point is a point a∈[0,1). By Assumption 4.8 in its operative form, the adversary designates an invalid set S⊆[a,1] of Lebesgue measure at least (1−c)⁢(1−a); every such S is admissible. A sampling density is a probability density φ on [0,1] (Math Guide, §“Beyond finite spaces: countable additivity, limits, and densities”). When a suffix [1−δ,1] is checked in full, a set S that meets it in positive measure is caught with probability 1, and any other S is caught by one draw with probability ∫Sφ. The single-draw catch probability at a is the infimum pφ⁢(a) of these probabilities over admissible S. For Q independent draws (Math Guide, §“Conditional probability and independence”) against a set S fixed before the draws, all miss with probability (1−∫Sφ)Q≤(1−pφ⁢(a))Q. The design problem is to choose φ to maximise mina⁡pφ⁢(a).

Lemma 5.16 (Best response).

Let φ be non-decreasing on an interval [a,b] with b≤1, and let 0≤m≤b−a. Among measurable S⊆[a,b] of measure m, the integral ∫Sφ is minimal for S=[a,a+m]. Hence against a density non-decreasing on [a,1−δ], with [1−δ,1] checked in full, an adversary forking at a≤1−δ/c places its valid weight last, and its invalid set is [a,1−(1−a)⁢c].

Proof.

With I=[a,a+m], ∫Sφ−∫Iφ=∫S∖Iφ−∫I∖Sφ; the two sets have equal measure, S∖I lies right of a+m and I∖S left of it, and φ is non-decreasing, so the difference is non-negative. A set meeting the suffix in positive measure is caught with certainty, so the adversary’s best set lies in [a,1−δ] and has the least admissible measure (1−c)⁢(1−a); it ends at a+(1−c)⁢(1−a)=1−(1−a)⁢c≤1−δ. □

Construction 5.17 (Indifference density).

Equal catch probability at every fork point, that is Φ⁢(1−c⁢(1−a))−Φ⁢(a) constant in a for an antiderivative Φ of φ, gives on differentiation

φ⁢(a)=c⁢φ⁢(1−c⁢(1−a)).

The function φ⁢(ξ)=K/(1−ξ) solves it. With K=(1−c)/c every invalid segment [a,1−c⁢(1−a)] has mass (c−1)⁢log⁡(c)/c, which is log⁡2≈0.693147 at c=1/2. The equation fixes φ only up to a factor periodic in log⁡(1−ξ) with period log⁡(1/c). The function is not integrable on [0,1], its mass on [0,1−ϵ] being K⁢log⁡(1/ϵ), so it is not a density there.

The segment mass is K⁢(log⁡(1−a)−log⁡(c⁢(1−a)))=−K⁢log⁡c; a script checks it for c∈{0.3,0.5,0.9} and a∈{0,0.2,0.7}, and the divergence. The construction is ePrint 2019/226, Section 5.4, p. 16.

Construction 5.18 (FlyClient sampling density).

Fix 0<c<1 and δ∈(0,c]; the suffix [1−δ,1] is checked in full. The FlyClient sampling density is

g⁢(ξ)={1(ξ−1)⁢log⁡δ0≤ξ≤1−δ,0otherwise,G⁢(ξ)=log⁡(1−ξ)log⁡δ(0≤ξ≤1−δ).

Both factors of the denominator are negative, so g>0 on its support, and g is increasing there; G is its distribution function, with G⁢(1−δ)=1. For a≤(c−δ)/c the invalid segment [a,1−(1−a)⁢c] lies in [0,1−δ] and has catch probability

G⁢(1−(1−a)⁢c)−G⁢(a)=log⁡clog⁡δ,

which is 1/k at δ=ck. For a>(c−δ)/c every admissible invalid set meets the checked suffix in positive measure, and the fork is caught with probability 1.

Normalisation, G and the catch probability are direct integrations. For the last clause, [a,1−δ] has measure 1−δ−a<(1−c)⁢(1−a) exactly when a>1−δ/c=(c−δ)/c. A script checks normalisation, G and the catch probability 1/k for c∈{0.25,0.3,0.5,0.75,0.9} and 2≤k≤9. The density is ePrint 2019/226, Section 5.4, p. 16; Figure 3 shows it.

Refer to caption
Figure 3: The FlyClient sampling density g of Construction 5.18 for c=1/2 and k=4, so δ=1/16 and g⁢(ξ)=1/((1−ξ)⁢log⁡16) on [0,15/16]. The amber strip is the suffix [15/16,1], checked in full, on which g vanishes. The four shaded segments [1−ci,1−ci+1], i=0,…,3, are the invalid sets of an adversary forking at 1−ci with its valid weight last; each has mass 1/4 under g, and together they tile the support, which is the proof of Theorem 5.21(1).
Definition 5.19 (Sampling map).

Let the head’s root tuple 𝗋𝗍 carry committed work 𝗋𝗍.𝗐, with leaf count n. The sampling map sends a uniform U∈[0,1] to the point ξ=1−δU, the inverse of G at U, so that ξ has density g; it sends ξ to the point x=ξ⋅𝗋𝗍.𝗐 of cumulative work, and x to the leaf j whose interval [W,W+vj.𝗐) contains x. That interval is bound to (𝗋𝗍,n,j) by Lemma 3.21(1) and is checked by the weight-position check of Construction 5.8. The checked suffix is the set of blocks whose interval meets [(1−δ)⁢𝗋𝗍.𝗐,𝗋𝗍.𝗐), together with the last L blocks and the head.

Assumption 5.20 (Discretisation).

For every chain C output by an adversary respecting Definition 4.5, and for the fork point a of C against the honest chain, if C has more than L blocks after a and total work after a at least that of the honest chain, then one draw of Definition 5.19 returns an invalid block, or a block on which the per-sample check fails, with probability at least pg⁢(a) of Definition 5.15 minus a function negligible in κ; the Q draws are independent.

The paper asserts that the continuum analysis “still produces a good distribution for the discrete case” (ePrint 2019/226, Section 5.4) and gives no proof; the hypothesis is named here.

Theorem 5.21 (Optimal sampling distribution).

Let 0<c<1, let k≥1 be real and δ=ck. Suppose that the suffix [1−δ,1] is checked in full and that the adversary’s valid weight after any fork point a is at most a c fraction. Then:

  1. 1.

    if k is an integer, for every sampling density φ, mina⁡pφ⁢(a)≤1/k;

  2. 2.

    the density g of Construction 5.18 attains mina⁡pg⁢(a)=1/k, against every placement of the invalid weight.

Proof.

(1) Tiling. At the fork points ai=1−ci, i=0,…,k−1, the placement with valid weight last is available to the adversary against every φ, and leaves the invalid segment [1−ci,1−ci+1], of measure ci⁢(1−c)=(1−c)⁢(1−ai), inside [0,1−δ]. These k segments tile [0,1−ck]=[0,1−δ], so 1≥∑i∫[1−ci,1−ci+1]φ≥k⁢mini⁡pφ⁢(ai). No monotonicity of φ is used. (2) The density g is increasing on [0,1−δ], so for a≤(c−δ)/c Lemma 5.16 makes [a,1−(1−a)⁢c] the adversary’s best set, whose catch probability is 1/k by Construction 5.18; later fork points meet the suffix and are caught with probability 1. A script checks the k tiling masses. □

The theorem is ePrint 2019/226, Theorem 2, pp. 16–17. The paper prints c∈(0,1], where log⁡δ=0 at c=1 and g is undefined; the domain here is 0<c<1. The paper’s proof sums over k+1 segments, i=0,…,k, the last of which lies in the checked suffix; the range is i=0,…,k−1. The paper’s Lemma 3, a monotonicity lemma, is not needed.

Proposition 5.22 (Sample count).

Let k>1. Then Q independent draws from g all miss an optimally placed invalid set with probability at most (1−1/k)Q, and

(1−1/k)Q≤2−σ⇔Q≥σlog2⁡(1/(1−1/k)).

At constant difficulty with the last L=ck⁢n blocks checked, k=log1/c⁡(n/L) and the least such Q is Θ⁢(σ⁢k), which is O⁢(σ⁢log1/c⁡n); for constant L it satisfies

limn→∞Qσ⁢logc⁡(1/2)⁢log⁡n=1.

Here σ is the statistical exponent, not the security parameter.

Proof.

The miss bound is Definition 5.15 with Theorem 5.21(2); the equivalence follows on taking logarithms. Since log2⁡(1/(1−1/k))=1/(k⁢log⁡2)+O⁢(1/k2), the least Q satisfies Q∼σ⁢k⁢log⁡2=σ⁢logc⁡(1/2)⁢log⁡(n/L), and log⁡(n/L)/log⁡n→1 for constant L. A script cross-checks the least Q against exact rational arithmetic for 2≤k≤9 at σ=50. □

The proposition is ePrint 2019/226, Section 5.4 (“Optimizing the Proof Size”), p. 17.

Remark 5.23 (Domain of the catch parameter).

At k=1, δ=c: one draw suffices in the continuum model, and log2⁡(1/(1−1/k)) is undefined, so Proposition 5.22 is stated for k>1. For k<1, δ>c and the checked suffix catches every adversary; the paper assumes k≥1 without loss of generality. For non-integer k>1, Construction 5.18 still gives catch probability log⁡c/log⁡δ=1/k and hence the sample bound. The tiling of part (1) of Theorem 5.21 needs integral k.

Remark 5.24 (Length of the checked suffix).

Under variable difficulty the suffix checked in full is the weight fraction δ, and a sound instantiation makes it contain at least the last L blocks, as Definition 5.19 does (Remark 4.10). The length L is bounded below by the L of the (c,L) assumption in force and trades against Q: a larger L means a larger δ, a smaller k and fewer samples. The asymptotic size bound holds for constant L; within it, L may be chosen numerically. Which (c,L) holds for Zcash is classified in “The deployment boundary” (§7).

Example 5.25 (Sample counts).

At c=1/2 and σ=50, with k=log2⁡(n/L), the least Q with (1−1/k)Q≤2−50 is as follows.

n L k bound Q
220 100 13.36 445.3 446
222 100 15.36 514.7 515
222 1,000 12.03 399.5 400
224 100 17.36 584.0 585
226 100 19.36 653.4 654

Every k here is non-integer, so Remark 5.23 applies: the counts are sufficient, and their optimality is not claimed.

5.5 The interactive protocol

Construction 5.26 (Interactive FlyClient).

The parties are a verifier 𝒱 in the setting of Definition 4.16, which knows the genesis block B0, and provers 𝒫1,…,𝒫m, at least one of them honest. The parameters are c, L, a real k>1, δ=ck and Q. The ranges are difficulty MMRs (Definition 5.6) committed by Construction 5.1.

  1. 1.

    Each prover sends its head Bη, whose header records 𝗋𝗍n.𝗁 over B0,…,Bη−1, together with the two children of the root tuple (for n=1, the single leaf tuple). The verifier recomputes the root tuple 𝗋𝗍 with par, rejects unless 𝗋𝗍.𝗁 equals the recorded value, and reads n=𝗋𝗍.𝗇 and the claimed total work ω=𝗋𝗍.𝗐+D⁢(Thead), where Thead is the target the head declares.

  2. 2.

    If all heads are identical, 𝒱 accepts that head.

  3. 3.

    Otherwise 𝒱 orders the claims by claimed total work, heaviest first, and for each prover draws Q independent uniforms, maps each to a point of cumulative work by Definition 5.19, and requests the leaf at each point.

  4. 4.

    For each requested point the prover returns the header, the leaf tuple and its inclusion path with full node tuples. The sample must pass Construction 5.2, whose checks (a) and (d) require a proof of work valid at a target that the difficulty-MMR fields declare, and Construction 5.8 on every node of its path, including the weight-position check that the drawn point lies in the returned leaf’s interval.

  5. 5.

    The prover sends the checked suffix of Definition 5.19, and 𝒱 checks it in full: every block passes the per-sample and node checks, and consecutive blocks, the head included, satisfy the linkage and target conditions of Definition 4.14, the target of each block being the one that the field 𝖣𝗇𝖾𝗑𝗍 of its predecessor’s leaf declares.

  6. 6.

    Any failure rejects that prover. Among the surviving claims 𝒱 accepts the heaviest, outputting its head and claimed total work; claims equivalent under Definition 4.15 count as one claim.

The construction is ePrint 2019/226, Algorithms 1 and 2 with Definition 5 and Sections 5.3, 5.4 and 6.1. Step 5 belongs to the protocol by Sections 5.3 and 5.4 of the paper, although its Algorithm 1 omits it. For claims of different weight the paper delegates the comparison to the generic verifier of Kiayias, Miller and Zindros (“Non-interactive proofs of proof-of-work”), which checks the longest claim first; under variable difficulty the order is by claimed total work, as in step 3.

5.6 The non-interactive protocol

Construction 5.27 (Non-interactive FlyClient).

Construction 5.26 is public-coin and one-round: the only message of 𝒱 is its sampling coins, which do not depend on the provers’ answers. The non-interactive protocol applies the Fiat–Shamir transform (Crypto Guide, §“The Fiat–Shamir transform: from interactive to non-interactive”), the challenge hashing the instance. Let 𝒪 be a random oracle (Crypto Guide, §“The random oracle model”); the uniforms are Ui=𝒪⁢(H⁢(hdr⁢(Bη)),i), i=1,…,Q, read as points of [0,1), seeded by the proof-of-work output of the head. Through 𝗋𝗍n the head commits to the whole claimed chain.

  1. 1.

    Prover. It computes U1,…,UQ from its head and the sampled leaves by Definition 5.19, and sends one message: the head with the root’s children, for each i the sampled header, leaf tuple and inclusion path with full node tuples, and the checked suffix.

  2. 2.

    Verifier. For each proof received it recomputes U1,…,UQ from the head and runs steps 1 and 4 to 6 of Construction 5.26 on the points they determine.

The paper suggests a standard hash (ePrint 2019/226, Section 6.2) and fixes no domain separation, no map from hash outputs to points and no proof encoding. In the classes of Definition 1.3 the construction is designed but unspecified for Zcash.

Assumption 5.28 (Head-recomputation budget).

During one execution the adversary produces at most R heads that carry a valid proof of work.

Assumption 4.8 bounds the validly mined weight of a fork, not the number of head recomputations, and does not imply Assumption 5.28. The paper’s budget R=c⁢n (“our security assumption gives a concrete bound on the number of PoW puzzles the adversary can solve, which is c⁢n”, ePrint 2019/226, Section 6.2) is asserted, not derived.

Proposition 5.29 (Grinding bound).

Assume Assumptions 5.28, 5.20, 5.11 and 4.8, let 𝒪 be a random oracle, let H be the random oracle of Definition 4.1, with κ-bit outputs, and let k>1. Let at most q𝒪 queries to 𝒪 and qH queries to H be made. The probability that an adversary makes Construction 5.27 accept a claimed chain whose fork is not caught is at most

R⁢(1−1/k)Q+q𝒪⁢qH⁢ 2−κ+AdvHcol⁢(ℬ)+𝗇𝖾𝗀𝗅⁢(κ)

for an explicit reduction ℬ. Hence

Q>σ+log2⁡Rlog2⁡(1/(1−1/k))

suffices for failure probability below 2−σ plus negligible terms. This Q is Θ⁢((σ+log⁡R)⁢k) and, at constant difficulty with constant L, Θ⁢((σ+log⁡R)⁢log1/c⁡n); it exceeds the interactive count of Proposition 5.22 by the log2⁡R bits of grinding.

Proof.

Each head with a valid proof of work fixes, through 𝗋𝗍n, the claimed chain and its invalid set before its challenge 𝒪⁢(H⁢(hdr⁢(Bη)),⋅) is known, barring a collision of H (Proposition 5.3). The challenge of a header cannot be computed before H⁢(hdr) is queried, and that same query decides validity. Since 𝒪 is independent of H, the challenges of the at most R valid heads are uniform and independent of which heads are valid, except when 𝒪 was queried at a value before it arose as an H-output, which has probability at most q𝒪⁢qH⁢ 2−κ. So by Assumption 5.20 and Theorem 5.21 the Q samples of each valid head all miss with probability at most (1−1/k)Q plus a negligible term. A head without a valid proof of work fails step 5 of Construction 5.26. By Assumption 5.28 at most R heads qualify, and the union bound (Math Guide, §“The union bound and a birthday calculation”) gives the bound. The threshold follows on taking logarithms, and its order as in the proof of Proposition 5.22. □

The bound is proved here because the Crypto Guide proves Fiat–Shamir security only for Sigma protocols (§“The Fiat–Shamir transform: from interactive to non-interactive”); the argument above uses only that the challenge is a random-oracle image of the proof-of-work output of a header committing to the whole instance. Seeded by the header itself, the challenge could be evaluated before the proof of work is attempted, and an adversary could mine only heads whose samples miss.

Example 5.30 (Grinding cost).

At c=1/2, σ=50, L=100 and n=222, k=log2⁡(n/L)≈15.36. Proposition 5.22 gives Q≥514.7, so 515 samples. With the paper’s R=c⁢n=221 the budget adds 21 bits, and Proposition 5.29 gives Q>730.8, so 731 samples. At the other (n,L) of Example 5.25, namely (220,100), (222,1,000), (224,100) and (226,100), the non-interactive counts are 615, 568, 853 and 981.

Proposition 5.31 (Transferability).

A proof of Construction 5.27 is publicly verifiable: its verification uses only the proof, the genesis block and the public oracles, so any party can relay it unchanged, and it convinces every verifier that the original convinces. For a given head the sampled points are deterministic; under a canonical proof encoding there is therefore one proof per head, which one party can compute for every verifier.

Proof.

The verifier’s decision is a deterministic function of the proof and public data, and the points are a function of the head. □

The paper’s statement that “there only exists a single valid non-interactive proof” (ePrint 2019/226, Section 8.1) holds only under a canonical encoding, which no ZIP specifies. ZIP 221, “Security and Privacy Considerations” records that, because FlyClient proofs are non-interactive and publicly verifiable, “they could be shared among many light clients after the initial server interaction”.

5.7 The security theorem

Theorem 5.32 (FlyClient security and succinctness).

Assume:

  1. 1.

    0<c<1, a real k>1 and δ=ck;

  2. 2.

    the variable-difficulty backbone model (Definition 4.1), in which every adversary is a (c,L)-adversary (Assumption 4.8);

  3. 3.

    H collision resistant and, as in Definition 4.1, a random oracle, and the sampling oracle 𝒪 a random oracle;

  4. 4.

    Assumptions 5.28, 5.20, 5.11 and 4.4;

  5. 5.

    a verifier that knows only the genesis block, and at least one honest prover (Definition 4.16);

  6. 6.

    no block header equals ser⁢(ℓ)∥ser⁢(r) for node tuples ℓ,r (leaf–internal separation, hypothesis 2 of Lemma 5.4).

Then an adversary wins the game of Definition 4.17 against Construction 5.27 with probability at most R⁢(1−1/k)Q plus negligible terms, which is at most 2−σ plus negligible terms when Q satisfies Proposition 5.29. Proofs have

O⁢(Lδ+(σ+log⁡R)⁢k⁢log⁡n)

headers and hashes, where Lδ is the number of blocks of the checked suffix. The construction is succinct (Definition 4.18) whenever Lδ, k and log⁡R are O⁢(polylog⁢(n)), in particular at constant difficulty with constant L and δ=L/n, where Lδ=L and k=log1/c⁡(n/L); there, with the paper’s R=c⁢n, the size is O⁢(L+(σ+log⁡n)⁢log1/c⁡(n)⁢log⁡n).

Proof structure.

The proof composes the obligations O1 to O6 of Remark 5.33, following the five steps of ePrint 2019/226, Section 6.3. (0) The honest prover’s proof passes every check: its labelling is consistent, its transitions are clamped, and Lemma 3.21(2) makes each weight interval its true prefix weight. (1) Assumption 5.11 replaces an adversary with invalid transitions by one that respects the retarget rule, to which Assumption 4.8 applies (O3). (2) O1 pins every sampled answer to one committed chain; O2 makes every block after the fork point adversarial, or places a leaf of the fork in its invalid set, and makes its validly mined weight post-fork; O3 binds each sampled leaf’s weight interval to the root, while the agreement of that interval with the chain’s true prefix weight rests on the node checks and Assumption 5.11. (3) O4: a fork heavier than the honest chain and longer than L blocks is caught by one draw with probability at least 1/k, and a fork within the checked suffix with certainty. (4) O5: the Fiat–Shamir step with the grinding bound. (5) O6: the size count. Agreement of honest full nodes on the prefix up to the last ℓ blocks, the second clause of Definition 4.17, is Assumption 4.4. □

The theorem is ePrint 2019/226, Theorem 1 (p. 10, restated p. 20); ZIP 221, “Security and Privacy Considerations” restates its honest-connection and genesis hypotheses. The paper states the size as O⁢(L+λ⁢log1/c⁡(n)⁢log⁡n). That equals the constant-difficulty bound above with R=c⁢n only when log⁡n=O⁢(λ), for instance for n polynomial in λ; under the convention that n grows with σ fixed, the theorem states the log⁡R form and no stronger bound.

Remark 5.33 (Proof obligations).

Each obligation is listed with the results that discharge it.

  1. O1

    Binding: Theorem 3.17, Corollary 3.18, Lemma 3.20 and Proposition 5.3.

  2. O2

    Fork structure: Lemmas 5.4 and 5.5.

  3. O3

    Weight binding and transitions: Lemma 5.7, Construction 5.8 and, for subtrees whose aggregates are inconsistent, Assumption 5.11.

  4. O4

    Catch probability and sample count: Theorem 5.21, Definition 5.19, Assumption 5.20 and Proposition 5.22.

  5. O5

    Grinding: Proposition 5.29, which fixes the non-interactive Q.

  6. O6

    Size: Corollary 5.34.

Corollary 5.34 (Proof size).

For the interactive protocol with Q from Proposition 5.22, constant L and constant difficulty, a proof has size O⁢(σ⁢log⁡n⁢log1/c⁡n+L): Q=Θ⁢(σ⁢log1/c⁡n) samples, each a header and a path of at most ⌈log2⁡n⌉ nodes under BagR (Lemma 3.7), and the L suffix blocks. For the non-interactive protocol, with Q from Proposition 5.29, σ is replaced by σ+log2⁡R.

Proof.

Multiply Q by the cost of one sample. The suffix blocks form a contiguous run of leaves ending at leaf n, so the union of their paths has O⁢(L+log⁡n) nodes and is sent once. □

The corollary is ePrint 2019/226, Corollary 2 (Section 5.4), which states Θ; the matching lower bound is not proved here.

Remark 5.35 (Status of the security theorem).

Theorem 5.32 is the paper’s conditional claim, not an independently completed proof. Deriving the (c,L) assumption from the backbone parameters is open (Remark 4.13); the paper’s Lemma 1 is invalid as printed (Remark 4.11); its Lemma 4 is a sketch with recorded gaps and enters as Assumption 5.11; the step from the continuum to blocks is Assumption 5.20; and the budget R=c⁢n is asserted. Proved in this volume are binding (O1), fork structure (O2) under leaf–internal separation, the binding of sampled weight intervals to the root, optimality, the sample count and the grinding bound.

5.8 Verification after acceptance

Proposition 5.36 (Inclusion after acceptance).

Let a head Bη with root tuple 𝗋𝗍n be accepted. Membership of the block at height j−1 in the accepted chain is established by one inclusion path of leaf j against 𝗋𝗍n, and membership of a transaction in that block by one further Merkle path against the transaction root its header carries; no intermediate header is needed. Both are binding barring a collision.

Proof.

For the block, Proposition 5.3(i); for the transaction path, Crypto Guide, §“Soundness: forging a path implies a collision”. □

The proposition is ePrint 2019/226, Sections 1 and 4.2.

Proposition 5.37 (Verification against a fresh head).

A client may run the protocol against the freshest heads and store one recent block B∗ of its previously accepted chain lying more than 2⁢ℓ blocks below that chain’s head. Let the height of B∗ be less than that of the newly accepted head minus ℓ. Under the hypotheses of Theorem 5.32, except with its soundness error, the accepted head’s committed range contains B∗ at its height, which the client checks by one inclusion path (Proposition 5.36); a head is rejected if a sample exposes an invalid block.

Proof.

By Theorem 5.32 both accepted chains are equivalent up to their last ℓ blocks to chains of honest full nodes. A head Bη commits to heights 0 to η−1, so clause (b) of Definition 4.17 at the earlier round places B∗ in every honest chain of that round with its last ℓ blocks removed, and Assumption 4.4 places it in every later honest chain. The height of B∗ is below that of the new head minus ℓ, so B∗ lies in the part of the new committed chain that clause (b) makes a prefix of an honest chain. □

The paper states without qualification that the range of a fresh head “cannot contain invalid blocks and it must contain all stable blocks” (ePrint 2019/226, Section 4.2, “Unstable Blocks”); that sentence is not carried.

Proposition 5.38 (Subchain proofs, the paper’s claim).

Assume the hypotheses of Theorem 5.32. Suppose a verifier accepted a valid proof for a chain with head Bη when the honest chain had that head, and later, when the honest chain has head Bη′, η′>η, receives a subproof for the blocks from Bη to Bη′, sampled as an instance of the protocol with Bη in place of genesis, together with one inclusion path showing that Bη lies in the range committed by Bη′. Then, except with the soundness error of Theorem 5.32 for the instance from Bη, it accepts no chain that a verifier given a full proof for height η′ would reject. The instance from Bη, which samples only leaves after Bη of a range committed from B0, is the paper’s design (ePrint 2019/226, Section 8.2) and is not constructed here.

Proof idea.

This is ePrint 2019/226, Theorem 3 (Section 8.2), with the paper’s proof idea. A fork after Bη faces a fresh instance of the protocol with Bη as genesis. A fork before Bη fails the inclusion path, since the verifier’s Bη is not in the adversary’s range, barring a collision (Proposition 5.36). □

The proposition concerns one commitment range from the genesis block.