The Zcash ArboretumThe Complete Arboretum PDF

3 Notes and note commitments

This section extends the Orchard note by one field, the Asset Base (§3.1); extends the note commitment by a case split whose native branch is the Orchard commitment (§3.2); states the derivations of the note’s randomness from its seed and what no live text fixes of them (§3.3); states the field set of the note plaintext (§3.4); and replaces the fixed value base of the net value commitment by the Asset Base (§3.5). It proves hiding and binding of both commitments within and across Assets. Every construction of the section is taken from ZIP 226, which is Draft; the Orchard objects it extends are those of the Ironwood Guide and are cited, not restated.

3.1 The OrchardZSA note

Definition 3.1 (OrchardZSA note).

An OrchardZSA note is a tuple

n=(d,𝗉𝗄𝖽,v,𝖠𝗌𝗌𝖾𝗍𝖡𝖺𝗌𝖾,ρ,ψ,𝗋𝖼𝗆)

of type

𝖭𝗈𝗍𝖾𝖮𝗋𝖼𝗁𝖺𝗋𝖽𝖹𝖲𝖠:= {0,1}88×(ℰ⁢(𝔽p𝖯𝖺𝗅𝗅𝖺𝗌)∖{𝒪})×{0,…,264−1}
×ℰ∗×𝔽p𝖯𝖺𝗅𝗅𝖺𝗌×𝔽p𝖯𝖺𝗅𝗅𝖺𝗌×𝔽p𝖵𝖾𝗌𝗍𝖺,

with ℰ∗=ℰ⁢(𝔽p𝖯𝖺𝗅𝗅𝖺𝗌)∖{𝒪} as in §2.3. It is the note of the Ironwood Guide’s Definition “Note” (§“Notes”) with exactly one added field, the Asset Base 𝖠𝗌𝗌𝖾𝗍𝖡𝖺𝗌𝖾∈ℰ∗ of the note’s Asset: for a Custom Asset the point of Construction 2.10, for the Native Asset the point V𝖮𝗋𝖼𝗁𝖺𝗋𝖽 of Definition 2.15. The components (d,𝗉𝗄𝖽,v,ρ,ψ,𝗋𝖼𝗆) and their types, with 𝗋𝖼𝗆 typed in 𝔽p𝖵𝖾𝗌𝗍𝖺, are those of the cited definition. ZIP 226 types the added field in ℙ∗, a group element that is neither the identity nor ⊥ (Table 1). The value v counts units of the note’s Asset; the Ironwood Guide’s Definition “Unit of value” (the zatoshi) applies only when 𝖠𝗌𝗌𝖾𝗍𝖡𝖺𝗌𝖾=V𝖮𝗋𝖼𝗁𝖺𝗋𝖽 (ZIP 226, “Note Structure and Commitment”; protocol specification, §“Shielded Pools and Notes”). Class: specified.

3.2 Note commitments

Definition 3.2 (OrchardZSA note commitment).

Let n=(d,𝗉𝗄𝖽,v,𝖠𝗌𝗌𝖾𝗍𝖡𝖺𝗌𝖾,ρ,ψ,𝗋𝖼𝗆) be an OrchardZSA note, 𝗀𝖽:=𝖣𝗂𝗏𝖾𝗋𝗌𝗂𝖿𝗒𝖧𝖺𝗌𝗁⁢(d), and

M⁢(n):=𝗀𝖽⋆⁢‖𝗉𝗄𝖽⋆‖⁢LE64⁢(v)⁢‖LE255⁢(ρ)‖⁢LE255⁢(ψ)

the 1086-bit Orchard message of the Ironwood Guide’s Definition “Note commitment”. Let

M𝖹𝖲𝖠⁢(n):=M⁢(n)∥𝖠𝗌𝗌𝖾𝗍𝖡𝖺𝗌𝖾⋆,

where the 256-bit star encoding 𝖠𝗌𝗌𝖾𝗍𝖡𝖺𝗌𝖾⋆ has the bytes 𝖺𝗌𝗌𝖾𝗍⁢_⁢𝖻𝖺𝗌𝖾 of Definition 2.14. The string M𝖹𝖲𝖠⁢(n) has the fixed length 1342: 135 chunks of 10 bits with padding 8, against 109 chunks for M⁢(n), within the chunk bound c=253 of the Ironwood Guide’s Construction “Sinsemilla hash on Pallas”. With the Orchard blinding base and the hash point

HD :=𝖦𝗋𝗈𝗎𝗉𝖧𝖺𝗌𝗁⁢(z.cash:Orchard-NoteCommit-r,ε),
M^𝖹𝖲𝖠 :=𝖲𝗂𝗇𝗌𝖾𝗆𝗂𝗅𝗅𝖺𝖧𝖺𝗌𝗁𝖳𝗈𝖯𝗈𝗂𝗇𝗍⁢(z.cash:ZSA-NoteCommit-M,M𝖹𝖲𝖠⁢(n)),

the OrchardZSA note commitment 𝖼𝗆:=𝖭𝗈𝗍𝖾𝖢𝗈𝗆𝗆𝗂𝗍𝗋𝖼𝗆𝖮𝗋𝖼𝗁𝖺𝗋𝖽𝖹𝖲𝖠⁢(n) of n is defined in two branches. In the native branch, 𝖠𝗌𝗌𝖾𝗍𝖡𝖺𝗌𝖾=V𝖮𝗋𝖼𝗁𝖺𝗋𝖽, it is

𝖼𝗆:=𝖭𝗈𝗍𝖾𝖢𝗈𝗆𝗆𝗂𝗍𝗋𝖼𝗆⁢(M⁢(n)),

with 𝖭𝗈𝗍𝖾𝖢𝗈𝗆𝗆𝗂𝗍 the Orchard commitment of the cited definition. In the custom branch, 𝖠𝗌𝗌𝖾𝗍𝖡𝖺𝗌𝖾≠V𝖮𝗋𝖼𝗁𝖺𝗋𝖽, it is

𝖼𝗆:={M^𝖹𝖲𝖠+[𝗋𝖼𝗆]⁢HDif ⁢M^𝖹𝖲𝖠≠⊥,⊥otherwise.

In both branches 𝖼𝗆∈ℰ⁢(𝔽p𝖯𝖺𝗅𝗅𝖺𝗌)∪{⊥}, and the extracted note commitment is 𝖼𝗆𝗑:=𝖤𝗑𝗍𝗋𝖺𝖼𝗍ℙ⊥⁢(𝖼𝗆)∈𝔽p𝖯𝖺𝗅𝗅𝖺𝗌∪{⊥}, as for Orchard. The custom branch is not the routed 𝖲𝗂𝗇𝗌𝖾𝗆𝗂𝗅𝗅𝖺𝖢𝗈𝗆𝗆𝗂𝗍 of the Ironwood Guide’s Construction “Sinsemilla commitment and short commitment” for any domain: its hash domain is new, while its blinding base is Orchard’s. The hash base Q⁢(z.cash:ZSA-NoteCommit-M) is a row of Table 3. The new domain hashes the single length 1342, as the Ironwood Guide’s Remark “Fixed length” requires of every domain (ZIP 226, “Note Structure and Commitment”; protocol specification, §“Sinsemilla commitments”). Class: specified.

In the native branch the Asset Base is not an input of the commitment. Hence the OrchardZSA commitment of a note with 𝖠𝗌𝗌𝖾𝗍𝖡𝖺𝗌𝖾=V𝖮𝗋𝖼𝗁𝖺𝗋𝖽 equals, bit for bit, the Orchard commitment of its Orchard components; an Orchard note and a native OrchardZSA note with the same Orchard components have the same 𝖼𝗆𝗑; and every leaf of the Orchard-pool note commitment tree created before OrchardZSA remains a valid opening target. Both branches output in ℰ⁢(𝔽p𝖯𝖺𝗅𝗅𝖺𝗌)∪{⊥}, so custom-branch commitments enter the same tree. Each statement is immediate from Definition 3.2 (ZIP 226, “Note Structure and Commitment” and “Rationale for Note Commitment”).

Proposition 3.3 (Hiding and binding of OrchardZSA note commitments).
  1. (a)

    Hiding with one output distribution. Let 𝗋𝖼𝗆 be uniform on 𝔽p𝖵𝖾𝗌𝗍𝖺 and independent of the content. For every content (d,𝗉𝗄𝖽,v,𝖠𝗌𝗌𝖾𝗍𝖡𝖺𝗌𝖾,ρ,ψ) whose hash point in its branch is not ⊥, the commitment 𝖼𝗆 is uniform on ℰ⁢(𝔽p𝖯𝖺𝗅𝗅𝖺𝗌). Hence the distributions of 𝖼𝗆 and of 𝖼𝗆𝗑 depend neither on the content nor on the branch, and commitments to ZEC and to Custom Assets are identically distributed.

  2. (b)

    Binding. Under the Ironwood Guide’s Assumptions “Discrete logarithms on Pallas” and “GroupHash as a random oracle”, no efficient algorithm outputs, except with negligible probability, OrchardZSA notes n≠n′ with 𝖼𝗆𝗑⁢(n)=𝖼𝗆𝗑⁢(n′)≠⊥; in particular none with 𝖠𝗌𝗌𝖾𝗍𝖡𝖺𝗌𝖾=V𝖮𝗋𝖼𝗁𝖺𝗋𝖽≠𝖠𝗌𝗌𝖾𝗍𝖡𝖺𝗌𝖾′, and none whose contents are equal except for the Asset Base.

  3. (c)

    Under the same assumptions, no efficient algorithm outputs, except with negligible probability, a custom-branch content with M^𝖹𝖲𝖠=⊥.

Status (Definition 1.3): proved here for the specified construction; conditional on no unspecified object. Part (a) is stated for uniform 𝗋𝖼𝗆 and does not cover a derived trapdoor, whose derivation is classified in Remark 3.6.

Proof.

Write

Q𝖮:=Q⁢(z.cash:Orchard-NoteCommit-M),Q𝖹:=Q⁢(z.cash:ZSA-NoteCommit-M).

The generators Q𝖮, Q𝖹, S⁢(0),…,S⁢(1023) and HD are values of 𝖦𝗋𝗈𝗎𝗉𝖧𝖺𝗌𝗁 at pairwise distinct inputs, by Lemma 2.8 and the Ironwood Guide’s table of §“GroupHash, domain separation, and nothing-up-my-sleeve generators”.

(a) In both branches 𝖼𝗆=M^+[𝗋𝖼𝗆]⁢HD, with the same blinding base HD≠𝒪 and a point M^ fixed by the content. The proof of the Ironwood Guide’s Lemma “Hiding and binding of SinsemillaCommit” (i) uses only these two facts, the first established for HD before that volume’s Proposition “Hiding and binding of note commitments”; so 𝖼𝗆 is uniform, whatever the content and the branch. The value 𝖼𝗆𝗑 is a fixed function of 𝖼𝗆.

(b) Step 1. The map from a content to its branch and message is injective except on a diversifier collision: the branch is fixed by whether 𝖠𝗌𝗌𝖾𝗍𝖡𝖺𝗌𝖾=V𝖮𝗋𝖼𝗁𝖺𝗋𝖽; in the native branch the Asset Base is determined, and the message M⁢(n) determines the Orchard components; in the custom branch the message M𝖹𝖲𝖠⁢(n) determines them and, by the injectivity of the star encoding, the Asset Base. A diversifier collision is excluded as in Step 1 of the proof of the Ironwood Guide’s Proposition “Hiding and binding of note commitments” (b). Outside that event, n≠n′ gives distinct branches, or one branch with distinct messages, or one branch and one message with 𝗋𝖼𝗆≠𝗋𝖼𝗆′.

Step 2. Let 𝖼𝗆𝗑⁢(n)=𝖼𝗆𝗑⁢(n′)≠⊥. Both commitments are points, and by the Ironwood Guide’s Lemma “Coordinate extraction identifies opposite points”, 𝖼𝗆′=±𝖼𝗆; both hash points are not ⊥. Three cases remain.

Both native. The Orchard components differ, since the Asset Bases agree, and the Ironwood Guide’s Proposition “Hiding and binding of note commitments” (b) applies.

Both custom. The three steps of the Ironwood Guide’s Proposition “Collision resistance of the Sinsemilla instances” hold for the message length l=1342 and n=135 chunks. Since 2135≤2c≤(p𝖵𝖾𝗌𝗍𝖺−1)/2, every difference χj⁢(m)−χj⁢(m′) of the unfolding in its proof has absolute value below p𝖵𝖾𝗌𝗍𝖺, so χ is injective, and the coefficient 2136 on Q𝖹 in the opposite case is non-zero modulo p𝖵𝖾𝗌𝗍𝖺. Equal points on distinct messages, or opposite points, therefore give a non-trivial relation among Q𝖹, the S⁢(j) and HD. Equal messages with 𝗋𝖼𝗆≠𝗋𝖼𝗆′ and equal points give [𝗋𝖼𝗆−𝗋𝖼𝗆′]⁢HD=𝒪, impossible for HD≠𝒪 in a group of prime order p𝖵𝖾𝗌𝗍𝖺; opposite points on equal messages are the opposite case above.

Across branches. Let n be native and n′ custom, with pieces m and m′ of M⁢(n) and M𝖹𝖲𝖠⁢(n′). Unfolding both hash points gives

[2109]⁢Q𝖮∓[2135]⁢Q𝖹+∑j[χj⁢(m)∓χj⁢(m′)]⁢S⁢(j)+[𝗋𝖼𝗆∓𝗋𝖼𝗆′]⁢HD=𝒪.

The coefficient 2109 on Q𝖮 is non-zero modulo p𝖵𝖾𝗌𝗍𝖺.

In each case the relation is non-trivial among values of 𝖦𝗋𝗈𝗎𝗉𝖧𝖺𝗌𝗁 at distinct inputs, which the Ironwood Guide’s Lemma “Relations among fixed generators” excludes except with negligible probability. The first particular case of (b) is the case across branches; the second is either that case or the case of two custom notes with distinct messages.

(c) Step (2) of the proof of the cited proposition applies to the domain of Q𝖹: an operand 𝒪 arises only if Q𝖹 or some S⁢(j) is 𝒪, itself a non-trivial relation, and an exceptional case at step i yields a relation with coefficient α⁢ 2i−1 on Q𝖹, where α∈{−1,1,2} and 0<|α⁢ 2i−1|≤2135<p𝖵𝖾𝗌𝗍𝖺. The same lemma excludes both. □

ZIP 226 argues the property in rationale only, attributing it to the Sinsemilla hash function (“by definition of the Sinsemilla hash function”, “Rationale for Note Commitment”; see also “Privacy Implications”). The unblinded hash is deterministic and hides nothing; the hiding comes from the term [𝗋𝖼𝗆]⁢HD. The plaintext equivalence of Orchard and native OrchardZSA notes, which is withdrawn ZIP 230 text, is not used.

Remark 3.4 (Contextual distinguishability of commitments).

Commitments are hidden only as group elements. ZIP 226, “Privacy Implications”, states that Orchard note commitments are distinguishable from OrchardZSA note commitments by context, since the two protocols are carried by different transaction versions (in its text, version 5 for Orchard and version 6 for OrchardZSA), whether or not both are active. No current format assigns OrchardZSA a version: version 6 is the format of ZIP 229, “Transaction Format”, which carries Orchard-pool and Ironwood-pool Actions and no ZSA. ZIP 248, “Potential Future Bundle Types”, lists OrchardZSA provisionally as variant 2 of bundle type 3, the Orchard bundle type, whose public variant identifier would likewise separate the two. Within one OrchardZSA bundle, commitments to ZEC and to Custom Assets are identically distributed under a uniform trapdoor (Proposition 3.3(a)); the derived trapdoor, undefined in live text, is not covered (Remark 3.6). The carrier is treated in “The transaction carrier” (§8).

3.3 The note seed and the lead byte

ZIP 226, “Abstract”, is defined relative to the protocol with ZIP 2005 applied, and reads 𝖧𝗋𝖼𝗆, 𝖧ψ and the recoverable plaintexts as ZIP 2005 defines them; it calls ZIP 2005 “Orchard Quantum Recoverability”. ZIP 2005 is now “Ironwood Quantum Recoverability” (Proposed). It is active with NU6.3 and merged into the protocol specification (ZIP 258, “ZIP 2005 activation”; ZIP 2005, “Specification Updates”), and it applies its recoverable plaintext format, lead byte 𝟶⁢𝚡⁢𝟶𝟹, only to Ironwood-pool notes (ZIP 229, “Transaction Format”), while ZIP 226 places OrchardZSA notes in the Orchard pool (Remark 1.7). The two premises no longer coincide. Two constructions depend on them: the lead byte, here, and the seed of split nullifiers, at “Nullifiers of OrchardZSA notes” (§4.2). The derivations of ZIP 2005 are constructed in the Ironwood Guide, §“The note seed: Ironwood derivations (lead byte 𝟶⁢𝚡⁢𝟶𝟹)”, and are cited, not restated.

Definition 3.5 (Seed derivations of an OrchardZSA note).

Let an OrchardZSA note be created with recipient (d,𝗉𝗄𝖽), value v, element ρ∈𝔽p𝖯𝖺𝗅𝗅𝖺𝗌, note seed 𝗋𝗌𝖾𝖾𝖽 uniform on the 32-byte strings, and lead byte 𝗅𝖾𝖺𝖽𝖡𝗒𝗍𝖾. Let ρ¯:=𝖨𝟤𝖫𝖤𝖮𝖲𝖯256⁢(ρ) and 𝗀𝖽:=𝖣𝗂𝗏𝖾𝗋𝗌𝗂𝖿𝗒𝖧𝖺𝗌𝗁⁢(d). Then

ψ :=ToBase⁢(𝖯𝖱𝖥𝖾𝗑𝗉𝖺𝗇𝖽𝗋𝗌𝖾𝖾𝖽⁢([𝟶⁢𝚡⁢𝟶𝟿]∥ρ¯)),
𝗋𝖼𝗆 :=𝖣𝖾𝗋𝗂𝗏𝖾⁢_⁢𝗋𝖼𝗆𝗋𝗌𝖾𝖾𝖽⁢(𝗅𝖾𝖺𝖽𝖡𝗒𝗍𝖾,𝗀𝖽⋆,𝗉𝗄𝖽⋆,v,ρ¯,ψ),

where ψ does not depend on the lead byte, and 𝖣𝖾𝗋𝗂𝗏𝖾⁢_⁢𝗋𝖼𝗆 is defined only for two lead bytes:

𝖣𝖾𝗋𝗂𝗏𝖾⁢_⁢𝗋𝖼𝗆𝗋𝗌𝖾𝖾𝖽⁢(𝗅𝖾𝖺𝖽𝖡𝗒𝗍𝖾,…):={ToScalar⁢(𝖯𝖱𝖥𝖾𝗑𝗉𝖺𝗇𝖽𝗋𝗌𝖾𝖾𝖽⁢([𝟶⁢𝚡⁢𝟶𝟻]∥ρ¯))if ⁢𝗅𝖾𝖺𝖽𝖡𝗒𝗍𝖾=𝟶⁢𝚡⁢𝟶𝟸,the ⁢𝗉𝗋𝖾⁢_⁢𝗋𝖼𝗆⁢ derivationif ⁢𝗅𝖾𝖺𝖽𝖡𝗒𝗍𝖾=𝟶⁢𝚡⁢𝟶𝟹,

the latter being that of the Ironwood Guide’s Construction “Derivations under lead byte 𝟶⁢𝚡⁢𝟶𝟹”. Neither input list contains 𝖠𝗌𝗌𝖾𝗍𝖡𝖺𝗌𝖾. ZIP 226, “Note Structure and Commitment”, requires 𝗅𝖾𝖺𝖽𝖡𝗒𝗍𝖾 to be the placeholder {{𝖹𝖲𝖠𝖫𝖤𝖠𝖣𝖡𝖸𝖳𝖤}} whenever §“Sending Notes (Orchard)” or §“Dummy Notes (Orchard)” of the protocol specification is invoked, directly or indirectly, for an OrchardZSA note. That rule speaks of “the computation of ρ and ψ”; under the amended specification the lead byte enters only 𝖣𝖾𝗋𝗂𝗏𝖾⁢_⁢𝗋𝖼𝗆. The specification admits lead byte 𝟶⁢𝚡⁢𝟶𝟸 in the Orchard pool and 𝟶⁢𝚡⁢𝟶𝟹 in the Ironwood pool only (protocol specification, §“Note Plaintexts and Memo Fields”), and ZIP 2005, “Usage with other proposals requiring note plaintext format changes”, requires such proposals to use a new lead byte value or values. Classes: the derivation of ψ is specified; the derivation of 𝗋𝖼𝗆 and the value of the lead byte are classified in Remark 3.6.

Remark 3.6 (Unassigned lead byte).

Each part carries one class of Definition 1.2.

  1. (i)

    The derivation of ψ is specified.

  2. (ii)

    The derivation of 𝗋𝖼𝗆 is designed but unspecified. A complete design existed: ZIP 226 fixed 𝟶⁢𝚡⁢𝟶𝟹 with 𝖧𝗋𝖼𝗆 before 𝟶⁢𝚡⁢𝟶𝟹 passed to ZIP 2005, and the design needs only a lead byte.

  3. (iii)

    The value of the lead byte is an open problem. The removed design’s 𝟶⁢𝚡⁢𝟶𝟹 is the Ironwood lead byte in live text, a design that conflicts with live text; the placeholders {{𝖹𝖲𝖠𝖫𝖤𝖠𝖣𝖡𝖸𝖳𝖤}} (ZIP 226), {{𝖫𝖤𝖠𝖣𝖡𝖸𝖳𝖤}} (withdrawn ZIP 230) and {{𝖬𝖡𝖫𝖤𝖠𝖣𝖡𝖸𝖳𝖤}} (ZIP 231, “Note plaintext lead byte assignment”) are unassigned.

Until the byte is assigned, the 𝗋𝖼𝗆 of an OrchardZSA note is undefined in live text, and the Ironwood Guide’s Proposition “Hiding under the derived trapdoor” does not transfer. The OrchardZSA Action statement, like the Orchard one, does not check the derivation (Ironwood Guide, Remark “What the statement does not check” (ii)), so for the outputs of a transfer the gap binds only sender and recipient. Its consequence for validators is stated at “Issue Notes” (§6.1).

3.4 The note plaintext

Definition 3.7 (OrchardZSA note plaintext).

The OrchardZSA note plaintext of a created OrchardZSA note carries the fields (𝗅𝖾𝖺𝖽𝖡𝗒𝗍𝖾,d,v,𝗋𝗌𝖾𝖾𝖽,𝗆𝖾𝗆𝗈) of the Ironwood Guide’s Definition “Note plaintext” and, in addition, the 32-byte string 𝖺𝗌𝗌𝖾𝗍⁢_⁢𝖻𝖺𝗌𝖾 of Definition 2.14 (ZIP 226, “Note Structure and Commitment”). The recipient needs 𝖺𝗌𝗌𝖾𝗍⁢_⁢𝖻𝖺𝗌𝖾 to recompute 𝖼𝗆𝗑 by Definition 3.2 and to spend the note. Given an encoding of fixed length and an assigned lead byte, the Ironwood Guide’s Constructions “Encryption to the recipient” and “Trial decryption” apply unchanged. Its acceptance checks (§“Trial decryption and note acceptance”) apply with the lead-byte check and the derivation of 𝗋𝖼𝗆 replaced by those of that lead byte (Remark 3.6), 𝖺𝗌𝗌𝖾𝗍⁢_⁢𝖻𝖺𝗌𝖾 required to decode to a point of ℰ∗, and the recomputed commitment that of Definition 3.2. Classes: the field set is specified; the encoding is an open problem.

ZIP 226 delegates the encoding to ZIP 230, which is Withdrawn. Its layout

𝗅𝖾𝖺𝖽𝖡𝗒𝗍𝖾⁢‖d‖⁢v⁢‖𝗋𝗌𝖾𝖾𝖽‖⁢𝖺𝗌𝗌𝖾𝗍⁢_⁢𝖻𝖺𝗌𝖾∥𝖪𝗆𝖾𝗆𝗈

presupposes the memo key 𝖪𝗆𝖾𝗆𝗈 of ZIP 231, which is now defined only for version-7 transactions (ZIP 231, “Specification”), and a lead byte that live text assigns otherwise (Remark 3.6). No current ZIP defines an OrchardZSA plaintext encoding. The statement of withdrawn ZIP 230 that Orchard and native OrchardZSA notes need not be distinguished in plaintexts carries no weight; the commitment half of that statement follows from Definition 3.2.

3.5 The per-Asset value commitment

Definition 3.8 (Per-Asset value commitment).

Let an Action (Ironwood Guide, Definition “Action”) consume an OrchardZSA note of value v𝗈𝗅𝖽 and create an OrchardZSA note of value v𝗇𝖾𝗐, both with Asset Base 𝖠𝗌𝗌𝖾𝗍𝖡𝖺𝗌𝖾∈ℰ∗. Its net value is the integer

v𝗇𝖾𝗍:=v𝗈𝗅𝖽−v𝗇𝖾𝗐∈{−264+1,…,264−1}.

For 𝗋𝖼𝗏 drawn by the Ironwood Guide’s Construction “Value-commitment trapdoor”, its per-Asset value commitment is

𝖼𝗏𝗇𝖾𝗍:=𝖵𝖺𝗅𝗎𝖾𝖢𝗈𝗆𝗆𝗂𝗍𝗋𝖼𝗏𝖮𝗋𝖼𝗁𝖺𝗋𝖽𝖹𝖲𝖠(𝖠𝗌𝗌𝖾𝗍𝖡𝖺𝗌𝖾,v𝗇𝖾𝗍):=[v𝗇𝖾𝗍modp𝖵𝖾𝗌𝗍𝖺]𝖠𝗌𝗌𝖾𝗍𝖡𝖺𝗌𝖾+[𝗋𝖼𝗏]R𝖮𝗋𝖼𝗁𝖺𝗋𝖽,

with R𝖮𝗋𝖼𝗁𝖺𝗋𝖽 and the reading of v𝗇𝖾𝗍 modulo p𝖵𝖾𝗌𝗍𝖺 as in the Ironwood Guide’s Definition “Net value commitment”. For 𝖠𝗌𝗌𝖾𝗍𝖡𝖺𝗌𝖾=V𝖮𝗋𝖼𝗁𝖺𝗋𝖽 it equals 𝖵𝖺𝗅𝗎𝖾𝖢𝗈𝗆𝗆𝗂𝗍𝗋𝖼𝗏𝖮𝗋𝖼𝗁𝖺𝗋𝖽⁢(v𝗇𝖾𝗍). The only change against Orchard is that the fixed-base multiplication by V𝖮𝗋𝖼𝗁𝖺𝗋𝖽 becomes a variable-base multiplication by the Action’s Asset Base; the randomness term is unchanged. The condition that controls the base is stated in “The OrchardZSA Action statement” (§4.3) (ZIP 226, “Value Commitment”; protocol specification, §“Homomorphic Pedersen commitments (Sapling and Orchard)”). Class: specified.

Lemma 3.9 (Hiding and binding of per-Asset value commitments).
  1. (i)

    Perfect hiding. For every B∈ℰ⁢(𝔽p𝖯𝖺𝗅𝗅𝖺𝗌) and every integer v, with 𝗋𝖼𝗏 uniform on 𝔽p𝖵𝖾𝗌𝗍𝖺 and independent of (B,v), the point [vmodp𝖵𝖾𝗌𝗍𝖺]⁢B+[𝗋𝖼𝗏]⁢R𝖮𝗋𝖼𝗁𝖺𝗋𝖽 is uniform on ℰ⁢(𝔽p𝖯𝖺𝗅𝗅𝖺𝗌).

  2. (ii)

    Binding across bases. Call a base admissible if it is given as the value of 𝖦𝗋𝗈𝗎𝗉𝖧𝖺𝗌𝗁 at the input (z.cash:Orchard-cv,v) or at (z.cash:OrchardZSA,D) for a byte string D. Under the Ironwood Guide’s Assumptions “Discrete logarithms on Pallas” and “GroupHash as a random oracle”, no efficient algorithm outputs, except with negligible probability, two families ((Bi,vi))i and ((Bj′,vj′))j of polynomial size, of admissible bases with integers, and trapdoors 𝗋𝖼𝗏,𝗋𝖼𝗏′, with

    ∑i[vi]⁢Bi+[𝗋𝖼𝗏]⁢R𝖮𝗋𝖼𝗁𝖺𝗋𝖽=∑j[vj′]⁢Bj′+[𝗋𝖼𝗏′]⁢R𝖮𝗋𝖼𝗁𝖺𝗋𝖽

    while the base-value vectors differ: for some group-hash input x, the sum of the vi at bases with input x and the sum of the vj′ at bases with input x differ modulo p𝖵𝖾𝗌𝗍𝖺. For one pair each, (B,v) and (B′,v′) with inputs x and x′, equal commitments force x=x′, hence B=B′, and v≡v′, or else v≡v′≡0(modp𝖵𝖾𝗌𝗍𝖺).

  3. (iii)

    Binding fails for arbitrary bases. For B≠𝒪, v≢0 and v′≢0,v(modp𝖵𝖾𝗌𝗍𝖺), the point B′:=[v⁢v′⁣−1]⁢B satisfies B′∉{𝒪,B} and [v]⁢B=[v′]⁢B′, so the two openings (B,v) and (B′,v′) share every trapdoor and every commitment. Hence the Action statement must control the base.

Status (Definition 1.3): proved here; conditional on no unspecified object.

Proof.

(i) The proof of the Ironwood Guide’s Lemma “Hiding and binding of net value commitments” (i) uses only R𝖮𝗋𝖼𝗁𝖺𝗋𝖽≠𝒪 and the prime order p𝖵𝖾𝗌𝗍𝖺 of the group, not the value base: [𝗋𝖼𝗏]⁢R𝖮𝗋𝖼𝗁𝖺𝗋𝖽 is uniform, and so is its translate by the fixed point [vmodp𝖵𝖾𝗌𝗍𝖺]⁢B.

(ii) Let Px denote the value of 𝖦𝗋𝗈𝗎𝗉𝖧𝖺𝗌𝗁 at input x, and cx the difference, modulo p𝖵𝖾𝗌𝗍𝖺, of the two sums of values at input x. Grouping both sides by input, a double opening gives

∑x[cx]⁢Px+[𝗋𝖼𝗏−𝗋𝖼𝗏′]⁢R𝖮𝗋𝖼𝗁𝖺𝗋𝖽=𝒪

with some cx≠0, the relation of the proof of the Crypto Guide’s Theorem “Properties of the vector commitment” (§“Pedersen vector commitments”). The inputs x are pairwise distinct by construction, and distinct from the input (z.cash:Orchard-cv,r) of R𝖮𝗋𝖼𝗁𝖺𝗋𝖽: the input of V𝖮𝗋𝖼𝗁𝖺𝗋𝖽 differs from it in the message, and every input under z.cash:OrchardZSA differs from both by Lemma 2.8. The relation is therefore non-trivial among values of 𝖦𝗋𝗈𝗎𝗉𝖧𝖺𝗌𝗁 at distinct inputs, and the Ironwood Guide’s Lemma “Relations among fixed generators” excludes it except with negligible probability. For one pair each, x≠x′ gives cx=v and cx′=−v′, non-trivial unless v≡v′≡0; and x=x′ gives cx=v−v′, non-trivial unless v≡v′.

(iii) Direct computation: [v′]⁢B′=[v′⁢v⁢v′⁣−1]⁢B=[v]⁢B; the scalar v⁢v′⁣−1 is neither 0 nor 1 modulo p𝖵𝖾𝗌𝗍𝖺, and B generates the group of prime order p𝖵𝖾𝗌𝗍𝖺, so B′≠𝒪 and B′≠B. □

ZIP 226, “Rationale for Value Commitment”, states the change of value base without a binding argument; Lemma 3.9 supplies it for bases of the admissible form, and part (iii) shows that the form cannot be dropped.