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

The Protocol #64

Open
nopara73 opened this issue Jun 15, 2020 · 34 comments
Open

The Protocol #64

nopara73 opened this issue Jun 15, 2020 · 34 comments

Comments

@nopara73
Copy link
Contributor

nopara73 commented Jun 15, 2020

[Obsolated] See https://github.com/zkSNACKs/WabiSabi/blob/master/protocol.md

@nopara73

This comment has been minimized.

@nopara73

This comment has been minimized.

@yahiheb

This comment has been minimized.

@nopara73

This comment has been minimized.

@MaxHillebrand

This comment has been minimized.

@nopara73

This comment has been minimized.

@nothingmuch

This comment has been minimized.

@nothingmuch

This comment has been minimized.

@nopara73

This comment has been minimized.

@nopara73

This comment has been minimized.

@nopara73

This comment has been minimized.

@nopara73

This comment has been minimized.

@nopara73

This comment has been minimized.

@nopara73

This comment has been minimized.

@nopara73

This comment has been minimized.

@nopara73

This comment has been minimized.

@nothingmuch

This comment has been minimized.

@nothingmuch

This comment has been minimized.

@nopara73

This comment has been minimized.

@nopara73

This comment has been minimized.

@nopara73

This comment has been minimized.

@nopara73

This comment has been minimized.

@nopara73

This comment has been minimized.

@nopara73

This comment has been minimized.

@nopara73

This comment has been minimized.

@nopara73

This comment has been minimized.

@nothingmuch

This comment has been minimized.

@nopara73

This comment has been minimized.

@nopara73

This comment has been minimized.

@nothingmuch
Copy link
Contributor

nothingmuch commented Jun 22, 2020

something that is not clear to me about the state diagram and confirmation: suppose that a round fails, and a restricted round is attempted, and connection confirmation times out without reaching a minimum... should the inputs that did register and confirm be treated differently than the inputs who did not? without a signing phase there is no way to assign blame, but a signing phase may be detrimental for privacy. a malicious user intending to deny service still gets at least one input blamed in that case, since it only applies to retried rounds

@nothingmuch

This comment has been minimized.

@nopara73
Copy link
Contributor Author

Input Registration

  • failing to connection-confirm within alice timeout -> NO punushment
  • failing to connection-confirm within phase timeout -> NO punushment
  • deregister -> NO punushment

Connection Confirmation

  • failing to connection-confirm within alice timeout -> NO punushment
  • failing to connection-confirm within phase timeout -> YES punushment
  • deregister -> refuse

@nopara73

This comment has been minimized.

@nopara73 nopara73 changed the title "Scheduling" The Protocol Jun 24, 2020
@nopara73
Copy link
Contributor Author

nopara73 commented Jun 24, 2020

What is returned for the status request?

Understanding the protocol without knowing what's in CoinJoinStatuses[], based on just the interaction diagram is not possible. This comment clarifies it.

Array

Every element in the CoinJoinStatuses[] array is a status of a currently running round.

Element

The structure of an element in the returned array is the following:

  • Phase
  • RoundId
  • Timeout
  • BlameOf // If it's a blame round, then it is the RoundId of the parent round.
  • PhaseStatus // What else the response contains depends on the current phase.

PhaseStatus in InputRegistration

  • CredentialIssuerParameters
  • RegisteredInputCount
  • MaxRegisteredInputCount
  • FeeRate

CoordinatorParameters

For input registration the user submits a CoordParamSig, which is a signature on the hash of the CoordinatorParameters. It is used to prove ownership of an input, but also to ensure every other participant in the round got the same CoordinatorParameters, thus the server cannot fingerprint them by giving out different parameters to different users. CoordinatorParameters includes RoundId, BlameOf, CredentialIssuerParameters and FeeRate.

PhaseStatus in ConnectionConfirmation

  • ConfirmedInputCount
  • MaxConfirmedInputCount

PhaseStatus in OutputRegistration

  • RegisteredOutputCount
  • RegisteredOutputVolume
  • TotalInputVolume

PhaseStatus in TransactionSigning

  • SignedInputCount
  • MaxSignedInputCount
  • EncryptedUnsignedCoinJoin
  • InputRoundParameterSignatures

PhaseStatus in TransactionBroadcasting

  • CoinJoin

nothingmuch added a commit that referenced this issue Jun 25, 2020
This document describes a concrete but general protocol which uses
WabiSabi credentials to collaboratively create transactions.

The specifics of ransaction structure are out of scope.

The SVG files are generated with `plantuml -tsvg`, and should arguably
not be in the repository, but github will not render plantuml source
files directly.

See also #64
nothingmuch added a commit that referenced this issue Jun 25, 2020
This document describes a concrete but general protocol which uses
WabiSabi credentials to collaboratively create transactions.

The specifics of ransaction structure are out of scope.

The SVG files are generated with `plantuml -tsvg`, and should arguably
not be in the repository, but github will not render plantuml source
files directly.

See also #64
nothingmuch added a commit that referenced this issue Jun 25, 2020
This document describes a concrete but general protocol which uses
WabiSabi credentials to collaboratively create transactions.

The specifics of ransaction structure are out of scope.

The SVG files are generated with `plantuml -tsvg`, and should arguably
not be in the repository, but github will not render plantuml source
files directly.

See also #64
nothingmuch added a commit that referenced this issue Jun 25, 2020
This document describes a concrete but general protocol which uses
WabiSabi credentials to collaboratively create transactions.

The specifics of ransaction structure are out of scope.

The SVG files are generated with `plantuml -tsvg`, and should arguably
not be in the repository, but github will not render plantuml source
files directly.

See also #64

Co-authored-by: nopara73 <adam.ficsor73@gmail.com>
nothingmuch added a commit that referenced this issue Jun 25, 2020
This document describes a concrete but general protocol which uses
WabiSabi credentials to collaboratively create transactions.

The specifics of ransaction structure are out of scope.

The SVG files are generated with `plantuml -tsvg`, and should arguably
not be in the repository, but github will not render plantuml source
files directly.

See also #64

Co-authored-by: nopara73 <adam.ficsor73@gmail.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

No branches or pull requests

4 participants