Skip to content

[ZIP 227, ZIP 230] Update of issuance validating key (ik) to issuer identifier (issuer)#1048

Merged
6 commits merged intozcash:mainfrom
QED-it:zsa1
Jul 29, 2025
Merged

[ZIP 227, ZIP 230] Update of issuance validating key (ik) to issuer identifier (issuer)#1048
6 commits merged intozcash:mainfrom
QED-it:zsa1

Conversation

@vivek-arte
Copy link
Contributor

@vivek-arte vivek-arte commented Jun 30, 2025

This PR makes the changes in ZIP 227 and ZIP 230 to rename the issuance validating key (ik) as the issuer identifier (issuer).

The motivation for this is to make the terms clearer in case of a future addition of key rotation to the issuance of ZSAs -- in which case the current key for issuance validation might not be the original key that identifies the issuer and connects it to the Asset Identifier.

The PR also includes changes to the corresponding image files for the diagrams that have been affected.
It also addresses the comments made by @daira here and here for greater clarity in the encodings of the issuer identifier and issuance authorization signature encodings.

vivek-arte and others added 4 commits June 27, 2025 22:20
This PR updates the diagram of the relation between the issuance
validating key, asset description and asset identifier to correctly
describe the changes made in zcash#1042. It also responds to two
comments that were added post the merge of that PR.
… to `issuer`, and renaming it to "issuer identifier" (#114)

This PR makes the changes mentioned in ZIP 227, ZIP 230, and the
relevant image files.

* $\mathsf{ik} := \mathtt{0x00} || \textit{PubKey}(\mathsf{isk})$
* Return $\bot$ if the $\textit{PubKey}$ algorithm invocation fails, otherwise return $\mathsf{ik}$.
* $\mathsf{issuer} := \mathtt{0x00} || \textit{PubKey}(\mathsf{isk})$
Copy link
Collaborator

@daira daira Jul 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* $\mathsf{issuer} := \mathtt{0x00} || \textit{PubKey}(\mathsf{isk})$
* $\mathsf{issuer} := \mathsf{ik} := \mathtt{0x00} || \textit{PubKey}(\mathsf{isk})$

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done slightly differently, in QED-it#116.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Update: The above PR is merged and the changes are now in this branch.

* $\mathsf{ik} := \mathtt{0x00} || \textit{PubKey}(\mathsf{isk})$
* Return $\bot$ if the $\textit{PubKey}$ algorithm invocation fails, otherwise return $\mathsf{ik}$.
* $\mathsf{issuer} := \mathtt{0x00} || \textit{PubKey}(\mathsf{isk})$
* Return $\bot$ if the $\textit{PubKey}$ algorithm invocation fails, otherwise return $\mathsf{issuer}$.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* Return $\bot$ if the $\textit{PubKey}$ algorithm invocation fails, otherwise return $\mathsf{issuer}$.
* Return $\bot$ if the $\textit{PubKey}$ algorithm invocation fails, otherwise return $\mathsf{ik}$, which is also the issuer identifier $\mathsf{issuer}$.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As above, done slightly differently in QED-it#116.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Update: The above PR is merged and the changes are now in this branch.

Copy link
Collaborator

@daira daira left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed with @arya2, @SamHSmith, and Andrew Reese in today's ZIP sync. Changes requested.



Define $\mathsf{IssueAuthSig.Validate} \;{\small ⦂}\; (\mathsf{ik} \;{\small ⦂}\; \mathsf{IssueAuthSig.Public}) \times (M \;{\small ⦂}\; \mathsf{IssueAuthSig.Message}) \times (\text{σ} \;{\small ⦂}\; \mathsf{IssueAuthSig.Signature}) \to \mathbb{B}$ as:
Define $\mathsf{IssueAuthSig.Validate} \;{\small ⦂}\; (\mathsf{issuer} \;{\small ⦂}\; \mathsf{IssueAuthSig.Public}) \times (M \;{\small ⦂}\; \mathsf{IssueAuthSig.Message}) \times (\text{σ} \;{\small ⦂}\; \mathsf{IssueAuthSig.Signature}) \to \mathbb{B}$ as:
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be using $\mathsf{ik}$ instead of $\mathsf{issuer}$ as well, made this change in QED-it#116.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Update: The above PR is merged and the changes are now in this branch.


* Return $0$ if $\text{σ} = \bot$.
* Parse $\text{σ}$ as $\mathtt{0x00} || \mathsf{sig}$ and parse $\mathsf{ik}$ as $\mathtt{0x00} || \mathsf{key}$. Return $0$ if the parsing fails.
* Parse $\text{σ}$ as $\mathtt{0x00} || \mathsf{sig}$ and parse $\mathsf{issuer}$ as $\mathtt{0x00} || \mathsf{key}$. Return $0$ if the parsing fails.
Copy link
Contributor Author

@vivek-arte vivek-arte Jul 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using $\mathsf{ik}$ as above in QED-it#116.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Update: The above PR is merged and the changes are now in this branch.

@daira
Copy link
Collaborator

daira commented Jul 8, 2025

Why a separate PR QED-it#116 ? It would be easier to review that all the relevant changes have been made if they were added to this PR.

This PR makes the changes requested in zcash#1048.
This PR makes updates to ZIP 246 (aka the V6 SIGHASH algorithm) based on
the changes being made as a part of zcash#1048. A minor broken link is
also fixed.
@vivek-arte
Copy link
Contributor Author

vivek-arte commented Jul 8, 2025

I made the changes internally in QED-it#116 so that we could review anything I missed before pushing to this PR. That's been done and the PR has been merged to this branch, so the requested changes can be reviewed here now.

@daira daira closed this pull request by merging all changes into zcash:main in 1016834 Jul 29, 2025
ConstanceBeguier added a commit to QED-it/orchard that referenced this pull request Sep 1, 2025
…es (#182)

This PR makes the updates to the encoding of the issuance validating key
and the issuance authorization signature, as done in the specification
in zcash/zips#1042, along with the further updates in zcash/zips#1048
and zcash/zips#1053.

The test vectors are updated in QED-it/zcash-test-vectors#31.

---------

Co-authored-by: Constance Beguier <constance@qed-it.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants