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

Address "intended usage" descriptions in the protocol #42

Closed
defuse opened this issue Apr 12, 2016 · 2 comments
Closed

Address "intended usage" descriptions in the protocol #42

defuse opened this issue Apr 12, 2016 · 2 comments

Comments

@defuse
Copy link
Contributor

defuse commented Apr 12, 2016

Eli noted a lot of "intended usage" in our protocol spec. Basically, the protocol.pdf is written from an implementers perspective where the reader is assumed to be the full node and we discuss what the reader should / shouldn't do given what it sees from other parties in the protocol. In order to do a proper security review, the reader needs to make a mental leap along the lines of "I'm like this, and there are a lot of other people like this, but they might not behave exactly like this, and some might behave nothing like this."

We can fix this by separating the protocol into three parts:

  1. Define what a full node's state is. We have the blockchain, the nullifier set, a list of unspent notes, etc.
  2. Define the types of messages full nodes receive. Blocks, which contain transactions, which contain JoinSplits.
  3. Define how those messages affect the full node's state. For example a new block will cause all of its transactions to get "executed" and upon execution a transaction can cause..., and so on.

This is sort of like what the Zerocash paper does, except (1) and (2) aren't separated in the Zerocash paper. An advantage is that there'll be a more 1:1 mapping between sections of the paper and parts of the code (e.g. in (1) we can list the files where those data structures are implemented). A disadvantage is that it would take me a lot longer to understand the protocol if I had to read it this way, which is why it took me so long to understand it from the Zerocash paper, but OTOH I would be able to implement it from the spec without even understanding it.

This is related to #32. I'm not sure if this would address Eli's comments, since transactions still have agency (they're seen as programs running on full node weird machines).

@defuse
Copy link
Contributor Author

defuse commented Apr 12, 2016

This would be a huge change to the spec and I'm not actually proposing we do it, just documenting the idea.

@daira daira modified the milestone: "Final" 1.0 spec Aug 7, 2016
@daira
Copy link
Collaborator

daira commented Aug 7, 2016

I think there are irreconcilable conflicts between this and the abstract/concrete split that @elibensasson wanted, which is what I'm going with.

@daira daira closed this as completed Aug 7, 2016
daira added a commit to daira/zips that referenced this issue Nov 8, 2023
)

This removes the transaction structure fields from ZIP 226 in favour
of adding them to ZIP 230, for the v6 Transaction Format.

---------

Co-authored-by: Deirdre Connolly <durumcrustulum@gmail.com>
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
Co-authored-by: str4d <thestr4d@gmail.com>
Co-authored-by: Paul <lauxpaul@protonmail.com>
Co-authored-by: Antoine Rondelet <rondelet.antoine@gmail.com>
Co-authored-by: Constance Beguier <constance@qed-it.com>
daira added a commit to daira/zips that referenced this issue Feb 7, 2024
)

This removes the transaction structure fields from ZIP 226 in favour
of adding them to ZIP 230, for the v6 Transaction Format.

Co-authored-by: Deirdre Connolly <durumcrustulum@gmail.com>
Co-authored-by: Daira-Emma Hopwood <daira@jacaranda.org>
Co-authored-by: str4d <thestr4d@gmail.com>
Co-authored-by: Paul <lauxpaul@protonmail.com>
Co-authored-by: Antoine Rondelet <rondelet.antoine@gmail.com>
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
Projects
None yet
Development

No branches or pull requests

2 participants