This section constructs the identity of an Asset in dependency order: the issuance key pair, the issuance authorisation signature scheme and the issuer identifier (§2.1); the asset description and the Asset Identifier (§2.2); the Asset Digest, the Asset Base and its byte encoding (§2.3); and the Asset Base of the Native Asset (§2.4). Every construction of the section is taken from ZIP 227 and ZIP 226, both Draft. The results of the section separate Assets computationally: distinct pairs of issuer and description yield distinct Asset Identifiers and distinct Asset Bases, and no Asset Base of a Custom Asset coincides with a fixed generator of the Orchard protocol, except with negligible probability.
Throughout, denotes the set of byte strings of length and the set of byte strings of arbitrary length; denotes concatenation. For a -byte personalisation and a byte string , and denote unkeyed BLAKE2b with personalisation , input and an output of and bytes respectively (protocol specification, §“BLAKE2 Hash Functions”). The former is the function of the Ironwood Guide, §“Transaction digests and signatures”.
The issuance authorising key is a byte string . The issuance validating key is , with the algorithm of Definition 2.2; it lies in , and a key pair is usable only when . The key authorises the issuance of Asset Identifiers by one issuer and is used only by that issuer; the key validates those issuances. Neither key is used for spend authorisation, which remains with the Orchard spend authorising key (ZIP 227, “Issuance Keys” and “Rationale”). Class: specified.
The issuance authorisation signature scheme is a digital signature scheme in the sense of the Crypto Guide’s Definition “Digital signature scheme” (protocol specification, §“Signature”), instantiated as BIP-340 Schnorr signatures over secp256k1 with the standard secp256k1 parameters (Crypto Guide, §“The transparent layer’s schemes: ECDSA and BIP-340 over secp256k1”, Construction “BIP-340 Schnorr over secp256k1, schematically”; cited, not re-derived). Let be the order of the secp256k1 group. The types are
a public key being the -byte big-endian -coordinate of BIP 340. The algorithms are the following.
The algorithm returns the BIP-340 public key of , or exactly when BIP-340 key derivation fails, that is, when read as a big-endian integer is or at least .
The algorithm runs BIP-340 signing on under with auxiliary data and returns its output , or if it fails. With fixed, signing is a deterministic function of .
The algorithm returns if ; otherwise it returns if BIP-340 verification of on under succeeds, and if not.
ZIP 227 writes the verification key in as , although the parameter is named ; the reading is the only one that type-checks. Batch verification MAY be used; precomputation MAY be used if and only if it produces equivalent results (ZIP 227, “Issuance Authorization Signature Scheme”, “Orchard ZSA Issuance Authorization Signature Scheme”, “Derivation of issuance validating key” and “Issuance Authorization Signing and Validation”). Class: specified.
The scheme , with key generation that samples uniformly from conditioned on , and with and modelled as independent random oracles, is existentially unforgeable under chosen-message attack (Crypto Guide, Definition “Existential unforgeability under chosen-message attack”).
The assumption is justified, not proved. The Crypto Guide’s Theorem “EUF-CMA security of Schnorr signatures in the ROM” (§“Security in the random oracle model and the forking lemma”) proves the property for Schnorr signatures under the discrete-logarithm assumption, and that volume’s remark following Construction “BIP-340 Schnorr over secp256k1, schematically” carries the proof to BIP-340 with the tagged challenge hash modelled as a random oracle. With fixed, the nonce is for the secret , where is the BIP-340 secret scalar of , fixed per key. With also modelled as a random oracle, independent of the challenge oracle, the nonce is a fresh uniform value per message to any party ignorant of , and the proof carries over as for deterministic nonces (Crypto Guide, Construction “EdDSA, schematically”).
For , the validating-key encoding is , of bytes, and the issuer identifier is . For , the signature encoding is , of bytes. In both encodings the initial byte names the signature scheme and MUST be , which denotes BIP 340 (ZIP 227, “Derivation of issuance validating key”, “Issuance Authorization Signing and Validation”). The map is injective. Note owners and validators use the identifier to associate an Asset with its issuer; ZIP 227, “Issuer Identifier”, records that the equality may cease to hold once key rotation is specified. Class: specified; its carrier is not.
The encoding occurs only in the field of the Issuance Bundle of “Issuance Actions and Issuance Bundles” (§6.2). No transaction format carrying that field is specified.
An asset description is a byte string chosen by the issuer, carrying any information about the issuance. ZIP 227 requires it to be non-empty and states that it SHOULD be a well-formed UTF-8 code-unit sequence according to Unicode 15.0.0 or later; no maximum length is imposed (ZIP 227, “ZIP 227 Asset Identifiers”). Only its hash (Definition 2.6) is visible to consensus, so neither non-emptiness nor the UTF-8 condition can be enforced by consensus: both are issuer-side conventions. Within the scope of one issuer, distinct Assets are obtained from distinct descriptions. Class: specified.
For an issuer identifier and an asset description , let
The pair is the Asset Identifier and its canonical encoding (ZIP 227, “ZIP 227 Asset Identifiers”). The leading byte of the encoding is a version byte, reserving room for other issuance protocols; it is distinct in role from the scheme byte that begins , so every current encoding begins with two bytes of different meaning. The encoding is injective, since its three components have the fixed lengths , and bytes. Class: specified.
Consider two distinct pairs of issuer identifier and asset description, and , with Asset Identifiers and .
If , then .
If , then , and holds exactly when the two descriptions collide under .
Hence, under the Ironwood Guide’s Assumption “Collision resistance of BLAKE2b”, no efficient algorithm outputs two distinct pairs of issuer and description with equal Asset Identifiers, or with equal encodings , except with negligible probability. Status: proved here for the specified construction; conditional on no unspecified object.
The issuer identifier is a component of , so distinct issuers give distinct pairs, which is claim 1. For one issuer the descriptions differ, and equal identifiers mean equal values on distinct descriptions, a BLAKE2b-256 collision under one personalisation; this is claim 2. An algorithm that outputs such a collision outputs two distinct inputs of with equal values, which the Ironwood Guide’s Assumption “Collision resistance of BLAKE2b” (§“Transaction digests and signatures”) excludes except with negligible probability. Equal encodings imply equal identifiers by the injectivity recorded in Definition 2.6. □
The requirement of ZIP 226, “Asset Identifiers”, that every new Asset have a new and unique Asset Identifier is met by the choice of a new description. ZIP 227, “Rationale”, argues the separation of issuers informally; that argument is a rationale of the ZIP, whose class is designed but unspecified, and Proposition 2.7 supplies its proof. Since the proposition separates Assets only through the issuer and any issuer may reuse any description, ZIP 227, “ZIP 227 Asset Identifiers”, requires that wallets MUST NOT display alone as the name of an Asset (see also ZIP 227, “Displaying Asset Identifier information to users”).
OrchardZSA adds three inputs of to those of the Orchard protocol, which the Ironwood Guide lists in its table of §“GroupHash, domain separation, and nothing-up-my-sleeve generators”. Table 3 lists them as strings, each with the subsection that uses it (ZIP 227, “OrchardZSA Asset Bases”; ZIP 226, “Split Notes” and “Note Structure and Commitment”). The objects they define are constructed at their uses.
| Domain separator | Message | Use | Subsection |
|---|---|---|---|
| z.cash:OrchardZSA | -byte Asset Digest | Asset Base of a Custom Asset | §2.3 |
| z.cash:Orchard | L | additional term of a split nullifier | §4.2 |
| z.cash:SinsemillaQ | z.cash:ZSA-NoteCommit-M | hash base, Custom Asset note commitment | §3.2 |
The input pairs of Table 3 are pairwise distinct and distinct from every input pair of the Ironwood Guide’s table of §“GroupHash, domain separation, and nothing-up-my-sleeve generators”. Hence, under the Ironwood Guide’s Assumption “GroupHash as a random oracle”, the values of at all these pairs are independent uniform points of , and, under that assumption and the Ironwood Guide’s Assumption “Discrete logarithms on Pallas”, that volume’s Lemma “Relations among fixed generators” applies to any polynomial collection of them together with the Orchard generators. Status: proved here; conditional on no unspecified object.
The separator z.cash:OrchardZSA occurs in no row of the Orchard table. Under z.cash:Orchard the Orchard table has only the messages G and K, both distinct from L. Under z.cash:SinsemillaQ it has only the messages z.cash:Orchard-NoteCommit-M, z.cash:Orchard-CommitIvk-M and z.cash:Orchard-MerkleCRH, all distinct from z.cash:ZSA-NoteCommit-M. The three new pairs have pairwise distinct separators or messages. The map from to the input hashed by is injective, as the Ironwood Guide’s Remark “Domain separation” records, so distinct pairs are distinct oracle inputs; the random-oracle assumption then gives independent uniform values, and the cited lemma applies verbatim, its hypothesis being only that the inputs are distinct. □
The Ironwood Guide’s Assumption “Collision resistance of BLAKE2b” concerns the -byte output only. The Asset Digest is a -byte output, hence a separate assumption.
No efficient algorithm outputs, except with negligible probability, two inputs with under one -byte personalisation , in the sense of the Crypto Guide’s Definition “Collision resistance” (§“Security notions: preimage, second-preimage, and collision resistance”).
For the Asset Identifier of a Custom Asset, the Asset Digest is
For let
with the Ironwood Guide’s Construction “GroupHash on Pallas” (protocol specification, §“Group Hash into Pallas and Vesta”); no cofactor is cleared. The separator gives a string within the -byte bound of that construction. The Asset Base of the Asset is
(ZIP 227, “Asset Digests”, “Asset Bases” and “OrchardZSA Asset Bases”). The subscript is dropped when the identifier is clear. The whole chain, from issuer and description to Asset Base, is
Class: specified.
The Asset Identifier is global across the shielded protocols that support Zcash Shielded Assets; the Asset Base is per protocol, the map being instantiated per protocol, here for OrchardZSA (ZIP 227, “Asset Identifier”, “Asset Bases”).
Let . ZIP 226, “Note Structure and Commitment”, types the Asset Base of a note in , as “a valid group element that is not the identity”; ZIP 227 types the Asset Base of an Issue Note (“Issue Note”) and the domain of the issuance state (“Global Issuance State”) likewise. The codomain of , by contrast, is the whole group.
Under the Ironwood Guide’s Assumption “GroupHash as a random oracle”, for every ,
and an algorithm that makes queries to the oracle finds an Asset Identifier whose Asset Base is with probability at most , the inputs of its output being counted among the queries. Status: proved here; conditional on no unspecified object.
In the model each value is uniform on the Pallas group, of order (Ironwood Guide, §“Fields, groups, and encodings”), so it is with probability . A union bound over the queries gives the second claim. □
The map has no case for the identity, and ZIP 227 states no rule for an issuance whose derived Asset Base is . The typing in of the Asset Base of an Issue Note and of the domain of the issuance state makes such an issuance unconstructible, hence invalid. Class: specified; the rejection follows from the normative typing in , and ZIP 227 states no separate rule. By Lemma 2.11 the event has negligible probability.
Let the Ironwood Guide’s Assumption “GroupHash as a random oracle” hold, and consider an algorithm that makes queries to , the inputs of its output being counted among the queries.
The map is not injective; “unique” in ZIP 226, “Note Structure and Commitment”, means only that it is deterministic.
If the algorithm outputs with equal Asset Bases, then either it has found a collision of on distinct encodings, or it is in an event of probability at most .
It outputs an Asset Identifier whose Asset Base equals one of fixed generators, among them , and , each the value of at an input of the Orchard table or of Table 3 other than the first row, with probability at most .
Hence, under Assumption 2.9, the Ironwood Guide’s Assumptions “Collision resistance of BLAKE2b” and “GroupHash as a random oracle”, and by Proposition 2.7, distinct pairs yield distinct Asset Bases, and no Asset Base of a Custom Asset is an Orchard generator, except with negligible probability. Status: proved here for the specified chain; conditional on no unspecified object.
Claim 1. The map is defined on all pairs in , of which there are more than , and takes values in a group of prime order ; it is therefore not injective. It is a composition of deterministic maps.
Claim 2. By the injectivity of (Definition 2.6), distinct identifiers have distinct encodings; equal digests of distinct encodings are a BLAKE2b-512 collision under ZSA-Asset-Digest. Otherwise the digests are distinct, hence distinct oracle inputs under z.cash:OrchardZSA, whose values are independent uniform points in the model. Among queried inputs two share a value with probability at most .
Claim 3. By Lemma 2.8 every input under z.cash:OrchardZSA differs from the inputs of the generators, so each queried Asset Base is uniform and independent of them, and equals a given one with probability . A union bound over the queries and the generators gives .
The final sentence composes claims 2 and 3 with Proposition 2.7: distinct pairs of issuer and description yield distinct identifiers except with negligible probability, distinct identifiers yield distinct Asset Bases except with negligible probability by claim 2 and Assumption 2.9, and the bounds of claims 2 and 3 are negligible for polynomial and . □
The byte encoding of an Asset Base is the -byte string
with and the star encoding those of the Ironwood Guide, §“Fields, groups, and encodings”, Definitions “Integer and byte encodings” and “Star encoding” (ZIP 226, “Note Structure and Commitment”). It is typed as a byte string throughout, although ZIP 226 also types it as a bit string in its clause on the note plaintext. The encoding is canonical on the Pallas group, by the canonicity of the star encoding established after the same Definition; ZIP 226 notes that canonicity may fail for future shielded protocols. Class: specified; its carrier is not.
The placements of in a note plaintext and in the entries of a burn set are encodings of ZIP 230, which is Withdrawn; they are not specified.
| Object | Bytes | Defined in | Source |
|---|---|---|---|
| Definition 2.2 | ZIP 227, “Derivation of issuance validating key” | ||
| Definition 2.4 | ZIP 227, “Issuer Identifier” | ||
| Definition 2.4 | ZIP 227, “Issuance Authorization Signing and Validation” | ||
| Definition 2.6 | ZIP 227, “ZIP 227 Asset Identifiers” | ||
| Definition 2.6 | ZIP 227, “ZIP 227 Asset Identifiers” | ||
| Construction 2.10 | ZIP 227, “Asset Digests” | ||
| Definition 2.14 | ZIP 226, “Note Structure and Commitment” |
Every formula of the chain is specified, in Draft ZIP text: the issuance keys and , the identifier , the hash , the identifier and its encoding, the Asset Digest, the Asset Base, its encoding and the Native Asset Base of §2.4. The identity case is specified, by typing (Remark 2.12). The encodings that would carry the chain on chain belong to the carrier.
The Native Asset, ZEC on Mainnet and TAZ on Testnet (ZIP 227, “Terminology”), has no Asset Identifier under ZIP 227 and does not pass through the chain of Construction 2.10. Its Asset Base is fixed as
the value base of the Ironwood Guide’s Definition “Net value commitment” (§“Value commitments”), where and its companion are constructed; they are cited, not re-derived. ZIP 226, “Asset Identifiers” and “Value Commitment”, writes the definition for ZEC; its burn rules (“Burn Mechanism”, “Additional Consensus Rules for the assetBurn set”) identify the Native Asset, ZEC or TAZ, with the base . Class: specified.
The value commitment and the note commitment of a Native Asset note are computed by the Orchard formulas. Two things differ: the derivation of takes the OrchardZSA lead byte (Remark 3.6), and the note plaintext carries (Definition 3.7; ZIP 226, “Note Structure and Commitment”). The value commitment of ZIP 226, “Value Commitment”, is , which at the base is the Orchard net value commitment of the cited Definition. The note commitment of ZIP 226, “Note Structure and Commitment”, is by its case split the Orchard note commitment when the Asset Base is ; the case split is stated in “Note commitments” (§3.2). The base is a group-hash output under a separator distinct from z.cash:OrchardZSA, so by Proposition 2.13 no Asset Base of a Custom Asset equals it, except with negligible probability.