Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ZIP 244: Add definitions of "effecting data" and "authorizing data" to the Terminology section #651

Open
str4d opened this issue Dec 7, 2022 · 0 comments

Comments

@str4d
Copy link
Collaborator

str4d commented Dec 7, 2022

@hdevalence noted that we hadn't defined these. The definitions I was using when working on ZIP 244 are:

  • "Effecting data" is any data within a transaction that contributes to the effects of applying the transaction to the global state (results in previously-spendable coins or notes becoming spent, creates newly-spendable coins or notes, causes the root of a commitment tree to change, etc.). Any change to this data by definition results in a different transaction.
  • "Authorizing data" is the rest of the data within a transaction. It does not contribute to the effects of the transaction on global state, but allows those effects to take place. This data can be changed arbitrarily without resulting in a different transaction (but the changes may alter whether the transaction is allowed to be applied or not).
hdevalence added a commit to penumbra-zone/penumbra that referenced this issue Dec 16, 2022
Closes #1758

We use the same words as in ZIP-244, namely "effecting" and "authorizing" data, but accidentally use them with opposite meanings, because I misunderstood which was which when originally reading the ZIP.  This is a huge source of conceptual confusion, which will surely lead to bugs.

The correct definitions are here: zcash/zips#651

> * "Effecting data" is any data within a transaction that contributes to the effects of applying the transaction to the global state (results in previously-spendable coins or notes becoming spent, creates newly-spendable coins or notes, causes the root of a commitment tree to change, etc.). Any change to this data by definition results in a different transaction.
> * "Authorizing data" is the rest of the data within a transaction. It does not contribute to the effects of the transaction on global state, but allows those effects to take place. This data can be changed arbitrarily without resulting in a different transaction (but the changes may alter whether the transaction is allowed to be applied or not).

[The points about "results in a different transaction" don't perfectly apply to us, because unlike Zcash, where the transaction hash is defined to be a hash of structured data, using Tendermint means we don't get to control the transaction hash, it's just the hash of the bytes of the transaction encoding]
hdevalence added a commit to penumbra-zone/penumbra that referenced this issue Dec 17, 2022
Closes #1758

We use the same words as in ZIP-244, namely "effecting" and "authorizing" data, but accidentally use them with opposite meanings, because I misunderstood which was which when originally reading the ZIP.  This is a huge source of conceptual confusion, which will surely lead to bugs.

The correct definitions are here: zcash/zips#651

> * "Effecting data" is any data within a transaction that contributes to the effects of applying the transaction to the global state (results in previously-spendable coins or notes becoming spent, creates newly-spendable coins or notes, causes the root of a commitment tree to change, etc.). Any change to this data by definition results in a different transaction.
> * "Authorizing data" is the rest of the data within a transaction. It does not contribute to the effects of the transaction on global state, but allows those effects to take place. This data can be changed arbitrarily without resulting in a different transaction (but the changes may alter whether the transaction is allowed to be applied or not).

[The points about "results in a different transaction" don't perfectly apply to us, because unlike Zcash, where the transaction hash is defined to be a hash of structured data, using Tendermint means we don't get to control the transaction hash, it's just the hash of the bytes of the transaction encoding]
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

No branches or pull requests

1 participant