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

About MuSig2 #207

Closed
ozankaymak opened this issue Aug 8, 2024 · 4 comments
Closed

About MuSig2 #207

ozankaymak opened this issue Aug 8, 2024 · 4 comments
Assignees
Labels
enhancement New feature or request

Comments

@ozankaymak
Copy link
Contributor

Proposal Description

The current MuSig2 functionality implementations are working; however, there are two main problems:

  • We have to do conversions everywhere due to type incompatibility,
  • We are unable to use XOnlyPublicKeys directly, so we have to use PublicKeys.
@ozankaymak ozankaymak added the enhancement New feature or request label Aug 8, 2024
@ozankaymak
Copy link
Contributor Author

Apparently, we have to use the original public keys directly. The best explanation I could come up with is this:
At the first round, when the verifiers are aggregating their public keys, they also commit their exact public keys as they are. If we try to use them as their x-only public key counterparts, and take their parities to be even (as it is in here) by default, then while committing to the public keys for the generation of the aggregated public key, hash operations will produce different outputs, hence the failure in the spending of the UTXO with the final signature, since the final signature would be given for a wrong aggregated public key.
Therefore, for now, we have to use public keys directly for MuSig2 operations.

@ozankaymak
Copy link
Contributor Author

A possible but IMO infeasible solution would be to enforce all the verifiers to use public keys that have even parities by default. But this is in general inconvenient and does not seem to be a good practice.

@ozankaymak
Copy link
Contributor Author

Regarding the type conversions, I think it is the best to use secp256k1 crate and its functions in general, since it is for general-purpose use.

@ekrembal
Copy link
Member

Closed in favor of #339

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants