This section constructs the nullifier of a note, the nullifier sets that consensus maintains per pool, and the rule that makes the nullifier of each consumed note the element of the note created in the same Action. It proves two properties of the construction: uniqueness, from discrete logarithms on Pallas with modelled as a random oracle; and, for keys generated with , unlinkability, from these two assumptions, the pseudorandomness of Poseidon and of PRF expansion, and the joint hiding of the viewing keys. It also states what each key tier can compute from nullifiers.
Requirement R3 of “Requirements on a shielded payment” (§1.4) excludes a second consumption of a note without a public list of consumed notes. Each note therefore determines a nullifier, a tag published when the note is consumed, and a verifier (§1.2) rejects a nullifier already in the nullifier set of its pool (§6.2). The construction must make the nullifier
deterministic: a function of the note and of the nullifier deriving key of the key that owns it, so that a second consumption publishes the same value; and
unlinkable: to a party without , the published value reveals nothing about the note’s commitment or address.
Let be the Poseidon permutation of width over the Pallas base field, used as a sponge of rate and capacity , with S-box , full and partial rounds (Crypto Guide, §“Arithmetisation-friendly hashing: Poseidon”, Constructions “The sponge construction” and “The Poseidon permutation”, Example “The Orchard Poseidon instance”). Its round constants and MDS matrix are those of the protocol specification, §“ Function”, and are not reproduced. In constant-input-length mode the hash is
where is the projection onto the first component; the capacity element encodes the input length , so no padding is needed (same citations). The nullifier PRF is
keyed by the nullifier deriving key of “The spending key and the spend-side secrets” (§3.1; protocol specification, §“Pseudo Random Functions”).
For uniform on , no efficient adversary with adaptive oracle access distinguishes from a uniformly random function , except with negligible advantage: this is the game of Definition “Pseudorandom function” (§2.3; Crypto Guide, §“Pseudorandom functions and permutations”) with key, input and output sets . It is the security requirement that the protocol specification, §“Pseudo Random Functions”, places on keyed by its first argument. Its status is cryptanalytic: it is supported by the analysis of the Poseidon round function (protocol specification, §“ Function”, notes) and has no reduction to a standard problem (Crypto Guide, Example “The Orchard Poseidon instance”). Of the results of this section only Proposition 6.10 uses it; Proposition 6.8 uses no property of , and the volume proves no unlinkability result for nullifiers without this assumption.
Let , the nullifier base, a fixed generator of Table 2. For and a point ,
where
the sum of the two field elements is taken as its representative in , and that integer multiplies . The nullifier of a note whose note commitment (Definition 4.4) is not , under the nullifier deriving key of the key that owns , is
(protocol specification, §“Computing values and Nullifiers”).
The protocol specification attaches two notes to the definition (§“Computing values and Nullifiers”). First, the sum is reduced modulo intentionally, although the scalar field of the Pallas group is . Since (§2.1), the representative in is a scalar without further reduction, by the injective reading of §2.1, and the multiplier of ranges over of the scalars. Second, the inputs and must be those of the note committed to by .
For a fixed the nullifier is a function of the fields and of the note and of its commitment , so a note has exactly one nullifier under the of its owner. That every accepted consumption of the note publishes this value is Lemma 12.5, proved in “Double-spend resistance” (§12.2) from the Action statement, defined in “The Action statement” (§9.2). The point is added to before extraction. For notes of one key with pairwise distinct , the key generated with , the multipliers are jointly pseudorandom to an efficient party that holds the incoming viewing key and but not , so the extracted values give it no usable information on the commitments or on the address; Proposition 6.10 states this exactly, under Assumption 6.2 and the further assumptions it names. The element enters as the input of the PRF and as an additive term of the multiplier. Both are fixed when the note is created: by “Nullifier chaining” (§6.3), and by the derivation of §4.3.
Each verifier maintains, for each shielded pool, a nullifier set, part of that pool’s treestate (“Anchors”, §5.2). Every Action publishes one nullifier, that of its consumed note, real or dummy (§4.4), and the nullifiers published by the Actions of valid transactions are inserted into the nullifier set of their pool (protocol specification, §“Nullifiers” and §“Nullifier Sets”). The consensus rule of §“Nullifier Sets” is that a nullifier must not repeat, either within a transaction or across transactions in a valid block chain; a nullifier is compared only with nullifiers of its own pool, so equal values in two pools do not repeat a nullifier (the specification treats the pools’ nullifiers as disjoint).
Both pools use the one derivation of Definition 6.3, with the same PRF and the same nullifier base: the nullifier construction belongs to the Orchard protocol, not to a pool (ZIP 229, Terminology). The Orchard pool and the Ironwood pool keep separate nullifier sets, as they keep separate note commitment trees, anchors and value pool balances (ZIP 229, Rationale, “Separate state”; protocol specification, §“Nullifier Sets”). The nullifier of an Ironwood-pool Action is inserted into, and checked against, the nullifier set of the Ironwood pool only.
Equal nullifier values in the two pools do not violate the consensus rule, so every uniqueness property derived from it holds within one pool. In particular the uniqueness of the elements proved in “Double-spend resistance” (Corollary 12.7) is uniqueness within a pool, not across the two pools.
In every Action the sender sets the element of the created note to the nullifier that the same Action publishes for its consumed note,
and encodes it as the -byte string . When the Action consumes no real note, its consumed side is a dummy note (Definition “Dummy notes”, §4.4), and the nullifier of that dummy note is (protocol specification, §“Sending Notes (Orchard)”, §“Dummy Notes (Orchard)” and §“Faerie Gold attack and fix”).
Every Action has a consumed side (Definition “Action”, §4.4), so every note that an Action creates is constructed with equal to the nullifier of that Action’s consumed note. The leaves that enter a pool’s note commitment tree are the extracted commitments of notes created by that pool’s Actions (“The Merkle hash and the tree”, §5.1), so the rule covers every note whose extracted commitment enters the tree. The consumed dummy note is not created by an Action: its is of a uniformly random point of the Pallas group (§4.4).
The derivations of §4.3 take the chained as input: with ,
and is derived from the string , which contains and the encoding of . Hence and are functions of and of the nullifier that the note’s own Action publishes, and is a function of these and of the remaining note fields.
A Faerie Gold attack is one in which a sender creates several notes to one recipient that share a nullifier, so that only one of them can be spent (protocol specification, §“Faerie Gold attack and fix”). What a verifier can rely on, the uniqueness of the elements within a pool and resistance to the Faerie Gold attack, is proved in “Double-spend resistance” (Corollary 12.7) from the nullifier-set rule and the Action statement, defined in “The Action statement” (§9.2). This subsection states the rule that an honest sender follows and draws no conclusion about accepted notes from it.
Under Assumptions 2.22 and 2.8, no efficient adversary outputs, except with negligible probability, two notes and and two nullifier deriving keys , all of its choice, whose note commitments and are not and satisfy and
The adversary may hold every nullifier deriving key, and and are admitted. Since two distinct notes have distinct commitments except with negligible probability (Proposition 4.5(b)), the same holds for two distinct notes in place of two distinct commitments.
The adversary supplies both openings, so no knowledge extraction is used. Let its output satisfy the conditions, and write
for the nullifier base and for the hash base and the blinding base of (Definition 4.4). A reduction that runs the adversary computes and likewise; the pieces and of the messages and , which have chunks of bits (Table 4); and , . Every coefficient below is therefore known to it, the PRF outputs included, and no property of is used.
Equal nullifiers are equal extracted coordinates, so by Lemma 2.4
Since , its hash point is not , and by the unrolled form (1) of the proof of Proposition 2.24,
and likewise for . Substituting gives, with coefficients in and , read as scalars,
| (3) |
The relation is non-trivial in each case.
If , the coefficient of is , non-zero modulo because .
If and , then , and modulo by step (1) of the proof of Proposition 2.24 (); some coefficient of an is non-zero.
If and , then , since equal messages and equal trapdoors give ; the coefficient of is non-zero.
The points , , and are values of on pairwise distinct inputs (Table 2). The reduction outputs these inputs with the coefficients of (3), a non-trivial relation with known coefficients. By the lemma on relations among fixed generators (§2.4), the reduction behind Proposition 2.24, this happens with negligible probability under Assumptions 2.22 and 2.8. The specification records that its Sinsemilla collision argument extends to additional terms with independent bases for this purpose (protocol specification, §“Sinsemilla Hash Function”, Security argument, note; §“Faerie Gold attack and fix”).
For distinct notes whose commitments are not , equal commitments have negligible probability by Proposition 4.5(b), and distinct commitments are the case above. □
The proposition uses no pseudorandomness of , and none could be used: the adversary holds the PRF keys, and the reduction knows every coefficient. It does not require distinct elements , which the specification’s security requirement assumes (§“Computing values and Nullifiers”). Two notes with equal commitments are equal except with negligible probability (Proposition 4.5(b)) and so have equal nullifiers under one . Excluding equal commitments among the notes of a pool is the role of the chaining rule of §6.3, as Corollary 12.7 proves.
Let a key be generated with from a uniform spending key, as in §3.1 and §3.2, with nullifier deriving key . An adversary receives the incoming viewing key and the point of the key, but not . It then submits, adaptively, notes , , of its choice, with pairwise distinct and note commitments , and after each submission receives an answer:
in the real game, ;
in the ideal game, for uniform on , independent of each other and of all else.
It outputs a bit. Let , which is below , the statistical distance between the uniform distribution on , read in , and the uniform distribution on . Then the difference of the probabilities that it outputs in the two games is at most
where , and are the largest advantages against Assumptions 2.12 (through Lemma 2.15), 3.13 and 6.2 of the algorithms built from the adversary in the proof, and is the probability that a single draw of key generation from a uniform spending key is rejected plus the probability that or for independent uniform , with the hash point of on (§3.2). The term is negligible under Assumptions 2.12, 2.22 and 2.8 (Lemma “Rejection in key generation”, §3.2); the bound is therefore negligible for every efficient adversary, whose number of queries is polynomial, under these assumptions and Assumptions 3.13 and 6.2. When , the point is uniform on whatever is, so the ideal answers are independent of the notes and of each other; in the model of Assumption 2.8, has probability .
Write . The proof passes from the real game through hybrid games ; each hop changes the probability of the output by at most the amount stated (Crypto Guide, §“The hybrid argument”, Lemma “Hybrid lemma”), and each reduction runs the adversary and the rest of the game.
Hybrid : idealised key. The key is generated by a single draw from a uniform , without rejection, at the cost of the probability that the draw is rejected (Lemma “Rejection in key generation”, §3.2). Then is replaced by independent uniform elements of , and , from which the other components are derived as in §3.1 and §3.2. By Lemma 2.15, this costs at most plus the three reduction distances, each below (§2.3): the three inputs of have distinct lead bytes, and the game is an efficient function of the triple, which derives , and , runs the adversary and answers each query with the nullifier under .
Hybrid : joint hiding. When , the pair is replaced by , for uniform on and a uniform -byte string, independent of all else. The cost is at most . The reduction for Assumption 3.13 draws and itself; for the pair lies in the domain of the assumption (§3.1). It receives a triple for that pair, passes its first two components to the adversary as and , together with , and answers every query with the nullifier under its own . Giving costs nothing, because after the scalar is independent of and the assumption holds for every fixed .
Hybrid : independent viewing keys. The pair is replaced, whatever is, by for a uniform point and a uniform -byte string , independent of all else. When and the hash point of the message is not , the commitment point is uniform on by Lemma 2.26(i), its blinding base not being (§3.2), so the two games are identically distributed conditioned on that event, which depends on only. The cost is at most the probability that or , the remaining part of . In the key enters the game only through the answers: , and are independent of it.
Hybrid : random function. The function is replaced by a uniformly random function . The cost is at most : the reduction for Assumption 6.2 runs with its oracle in place of , since , uniform on , is used nowhere else. In the -th answer is with . The are pairwise distinct, so, with sampled lazily, is uniform on and independent of everything the adversary has received when it submits . Translation by is a bijection modulo , so is uniform on and independent of that view, whatever is.
Hybrid : uniform scalars. For in turn, the scalar , read in (§2.1), is replaced by uniform on . The two distributions differ by on each of the residues and by on each of the other scalars, so their statistical distance is
The rest of the game is a randomised function of the view before the -th answer and of the replaced value, which is independent of that view; each step therefore costs at most , and the steps at most (Math Guide, §“Statistical distance”, Theorem “Properties of statistical distance”, parts (2) and (4)).
In the answers are those of the ideal game, and the key material is that of . Neither in nor in the ideal game do the answers depend on the key, so the hops of , and , taken in reverse order with the answers of the ideal game, lead from to the ideal game at the same costs. Summing the costs of both passes gives the bound. The last statement of the proposition holds because, for , the map is a bijection from onto the group of prime order , and translation by is a bijection of the group; under Assumption 2.8 the point is uniform. □
The specification describes the nullifier as combining elliptic-curve cryptography with the Poseidon-based PRF so as to give privacy defence in depth against a weakness in either (protocol specification, §“Faerie Gold attack and fix”). It states that, under the weaker assumption that preserves sufficient entropy from and , the construction would remain unlinkable under a decisional Diffie–Hellman assumption on Pallas even if the Poseidon-based PRF were distinguishable from an ideal PRF (§“ Function”, note; Crypto Guide, §“Diffie–Hellman: computational and decisional”, Definition “Decisional Diffie–Hellman, DDH”; the form assumed in this volume is Assumption 3.16). The volume records this as the specification’s design statement and derives no result from it; Proposition 6.10 relies on Assumption 6.2 instead.
For keys with , the key tiers of Proposition 3.18 (“Capability separation”) have the following powers over nullifiers. The full viewing key contains . Its holder computes for every note of the key whose fields it knows, and tests whether that value is in the nullifier set of the note’s pool; that every accepted consumption of the note publishes this value is Lemma 12.5. It does so without spending authority, since the full viewing key yields no (Proposition 3.18(a)). A holder of only the incoming viewing key cannot link a nullifier to its note, for notes with pairwise distinct , by Proposition 6.10.
Proposition 6.10 gives nothing against a holder of , which includes every holder of the full viewing key: such a holder recomputes, and so links, the nullifier of every note of the key whose fields it knows. It does not concern links through other public data, such as timing or the structure of the transaction; the privacy of an Action, with its preconditions, is Theorem 12.12, in “Privacy” (§12.4).