This section constructs the net value commitment of an Action, defines the transparent transaction value pool, the balancing value of each pool and the fee, and constructs the binding signature. Proposition 8.10 keeps apart an algebraic identity, under which the binding validating key is a known multiple of the randomness base exactly when a pool balances modulo , and a knowledge statement, under which a valid binding signature forces balance modulo .
Requirement R4 of “Requirements on a shielded payment” (§1.4) is met through the additive homomorphism of the Pedersen commitment (Crypto Guide, §“The Pedersen commitment”, Theorem “Additive homomorphism”). Each Action publishes a commitment to its net value; the group sum of a bundle’s commitments commits to the sum of the net values under the sum of the trapdoors, and a verifier compares that sum with the bundle’s public balancing value (§8.2) without learning any single value.
Let an Action consume a note of value and create a note of value , both in , the value type of Definition “Note” (§4.1); a dummy side has value (§4.4). The net value of the Action is the integer
The value base and the randomness base are
the value-commitment rows of Table 2. For a trapdoor , the net value commitment of the Action is the point
(protocol specification, §“Homomorphic Pedersen commitments (Sapling and Orchard)”).
Both bases have order : the protocol specification types them as points of order (§“Balance and Binding Signature (Orchard)”), a set that excludes (§“Pallas and Vesta”). The specification defines on the signed integers
(§“Commitment”), and a signed integer enters the scalar multiplication as its residue modulo (§2.1). Reduction modulo is injective on this domain, since two of its elements differ by at most . The domain contains every net value, and every signed -bit integer, because (§2.1) gives .
For each Action the author of the transaction draws uniformly from , by , independently of every other value (protocol specification, §“Sending Notes (Orchard)” and §“Homomorphic Pedersen commitments (Sapling and Orchard)”). Unlike , and , which are derived from the note seed (§4.3), the trapdoor is derived from no note, and no note field, note plaintext (§10.1) or transaction field (§11.2) contains it. The author retains every of the bundle; together they determine the binding signing key (§8.3).
The specification types the trapdoor as an integer in (§“Commitment”). As for (§4.1), this volume types it in , the set that samples, since acts only as the scalar of .
With and , the map is the Pedersen commitment of the Crypto Guide (§“The Pedersen commitment”, Construction “Pedersen commitment”), with messages the residues modulo .
Perfect hiding: for uniform on and independent of , the commitment is uniform on , whatever is.
Computational binding: under Assumptions 2.22 and 2.8, no efficient algorithm outputs, except with negligible probability, pairs and of an integer and a trapdoor with and . On the domain of distinct integers are distinct residues, so the same bound excludes openings of one point to two distinct net values.
(i) This is the Crypto Guide’s Theorem “Perfect hiding” (§“The Pedersen commitment”). Since and the group has prime order, is a bijection from onto ; the uniform point stays uniform under translation by the fixed point . (ii) The double-opening algebra of the Crypto Guide’s Theorem “Computational binding under DLog” (same section) gives
a relation with non-zero coefficient on . The two bases are values of at distinct inputs; under Assumption 2.8 they replace the independent generators that the cited construction samples, and the lemma on relations among fixed generators (§2.4) excludes the relation except with negligible probability. The specification requires computational binding and states that the scheme is unconditionally hiding (protocol specification, §“Homomorphic Pedersen commitments (Sapling and Orchard)”). □
Transparent inputs and transparent outputs are the cleartext value transfers of a transaction outside every shielded pool, with public amounts. Each transaction has a transparent transaction value pool: its transparent inputs add their values to it, and its transparent outputs remove theirs. The balancing value of each shielded pool, defined next for the two pools of the Orchard protocol, is also added to it (protocol specification, §“Transactions and Treestates”).
For each pool of the Orchard protocol, the Orchard pool or the Ironwood pool, the balancing value of a transaction is its declared net value, in zatoshi, of the notes of the pool that it consumes minus those that it creates: a signed integer in , encoded in cleartext as the two’s-complement -bit field valueBalanceOrchard or valueBalanceIronwood, of type int64. It is when the transaction has no Action of the pool, and the field is then absent. A positive takes net value out of the pool and adds it to the transparent transaction value pool; a negative one takes value from the transparent transaction value pool into the pool (protocol specification, §“Balance and Binding Signature (Orchard)”; ZIP 229, “Transaction Format”).
In a correctly constructed transaction, equals the sum of the net values of the pool’s Actions. A verifier cannot check this equation directly, since each is hidden in its ; the binding signature (§8.3) enforces it.
The protocol specification, §“Transactions and Treestates”, states the consensus rule: the value remaining in the transparent transaction value pool must be non-negative. For a transaction other than a coinbase transaction (Definition “Coinbase transaction”, §11.2) the remaining value is the transaction fee (ibid.); no transaction field encodes it (ZIP 229, “Transaction Format” and “Non-requirements”). The pool of a coinbase transaction also receives, as implicit inputs, the block subsidy and the fees of the block’s other transactions, and its outputs must consume all of the value in it (protocol specification, §“Transactions and Treestates” and §“Transaction Consensus Rules”). ZIP 317, “Fee calculation”, specifies the conventional fee, which wallets SHOULD pay and which is not a consensus requirement:
where is a sum of per-component contributions, in which each Ironwood-pool Action contributes one (the contribution ). The fee of the worked payment is computed in Example 11.16 (§11.5).
The balancing value is cleartext, so a negative one discloses the amount that enters the pool; the field names no receiving note or address.
Fix a pool of the Orchard protocol and a transaction whose bundle for that pool has Actions, with net values , trapdoors and net value commitments (), and write for the pool’s balancing value.
The binding signing key of the bundle is
(protocol specification, §“Balance and Binding Signature (Orchard)”). By the additive homomorphism (Crypto Guide, §“The Pedersen commitment”, Theorem “Additive homomorphism”),
| (6) |
the integer sum entering as its residue modulo .
The verifier computes, from public fields only, the binding validating key
where the subtracted point is , the commitment with zero trapdoor, and , an element of the domain of , enters as its residue modulo . No transaction field encodes (protocol specification, §“Balance and Binding Signature (Orchard)”).
An opening of a net value commitment is a pair of an integer and a scalar with . In the next proposition a binding signature under a point is a signature valid under in the binding-signature instance of RedPallas, with base (§7.1); Construction “Binding signature” below fixes its use.
For the bundle fixed above:
Identity. If for every and , then
hence if and only if .
Knowledge. Let be an opening of for every , and let satisfy . If is non-zero modulo , then
is the discrete logarithm of to the base , a relation between two values of .
Consequently, under Assumptions 2.22, 2.8 and 7.3, an efficient party that outputs the net value commitments and the balancing value of a bundle, openings of every and a binding signature under the resulting on a message of its choice satisfies , except with negligible probability. The proposition holds for every message.
(i) Expanding each by Definition 8.2 and applying the additive homomorphism gives (6); subtracting gives the identity. Since has prime order , the point is if and only if .
(ii) By the homomorphism, . Equating with gives
and is invertible modulo the prime . This is Part 2 of the proof of the Crypto Guide’s Theorem “The binding signature is a proof of knowledge of ” (§“Binding signatures as a proof of knowledge of a discrete logarithm”), with and the balancing value folded into the key as that section describes after the theorem.
Consequence. Let an efficient party output, with probability , a bundle’s net value commitments and balancing value, openings of every commitment, a message and a binding signature on it under the resulting , with non-zero modulo ; this event is efficiently decidable from the output. If , then satisfies . Otherwise Part 1 of the proof of the same theorem, special soundness with forking in the random-oracle model for (Assumption 7.3), rewinds to two accepting transcripts with a common first component and distinct challenges and extracts with . In this volume the extraction is steps (1) and (4) to (6) of the proof of Proposition 7.12, with no signing queries (), the base in place of and in place of . Key prefixing places the encoding of in the critical query, so both runs sign under the same , and the openings and the balancing value of the first run satisfy the hypothesis of part (ii) for it. If is non-negligible, the extraction succeeds with non-negligible probability, and part (ii) then outputs the discrete logarithm of to the base : a non-trivial relation between values of at distinct inputs, which the lemma on relations among fixed generators (§2.4) excludes except with negligible probability under Assumptions 2.8 and 2.22. No argument uses the value of the message, and no concrete bound is claimed. The security argument of the protocol specification, §“Balance and Binding Signature (Orchard)”, is the deployed counterpart. □
The openings are obtained, and the congruence is promoted to an equality of integers, in Lemma 12.3 and Theorem 12.4 (§12.1).
The binding signature scheme is the binding-signature instance of RedPallas (§7.1): RedPallas on the base , without key re-randomisation; its base differs from the spend-authorisation base . The author of the transaction computes from the trapdoors it retains and signs with it; the verifier recomputes from the public fields and validates the signature under it (protocol specification, §“Binding Signature (Sapling and Orchard)” and §“Balance and Binding Signature (Orchard)”). The signed message is the signature digest constructed in “Transaction digests and signatures” (§11.3); which transaction data the signatures fix is stated there, in Proposition 11.10.
For an honestly constructed bundle with , Proposition 8.10(i) gives , so is a key pair of the instance and the honest signature is accepted (§7.1). Under Assumption 7.3 a valid signature is a proof of knowledge of the discrete logarithm of to the base (Crypto Guide, §“Binding signatures as a proof of knowledge of a discrete logarithm”, Theorem “The binding signature is a proof of knowledge of ”), so, for a party that also outputs openings of every net value commitment, the consequence stated in Proposition 8.10, under Assumptions 2.22, 2.8 and 7.3, makes it certify balance modulo without taking any net value as input: it is computed from , the message and fresh randomness. What the public data of a bundle hide is stated in Theorem 12.12 (§12.4).
The construction runs once for each pool of the Orchard protocol. A transaction carries a balancing value and a binding signature, bindingSigOrchard or bindingSigIronwood, for each pool whose bundle has at least one Action. Each pool’s sums only that pool’s net value commitments and subtracts only that pool’s balancing value; both pools use with the bases and , and . The consensus rule of the protocol specification, §“Transaction Consensus Rules” (ZIP 229, “Consensus Rules”), is: if a pool’s bundle has Actions, its binding signature must be a valid signature of under that pool’s . Validation rejects a non-canonical encoding of the signature’s point component (§7.1; protocol specification, §“RedDSA, RedJubjub, and RedPallas”).