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

Should DKG Threshold be specified for Ritual #3095

Closed
derekpierre opened this issue Apr 21, 2023 · 7 comments
Closed

Should DKG Threshold be specified for Ritual #3095

derekpierre opened this issue Apr 21, 2023 · 7 comments
Assignees

Comments

@derekpierre
Copy link
Member

Currently, the code assumes that the DKG threshold is n_shares // 2 + 1. Is this always the case or should this be configurable (obviously must be > 50%, if configurable)?

(cc @cygnusv , @piotr-roslaniec ).

@cygnusv
Copy link
Member

cygnusv commented May 1, 2023

Thanks for raising this issue! Some comments:

  1. I don't think this should be a user configurable value, it just adds complexity to adopters. We already have some indications that this was a problem with PRE. I think we should investigate and validate a common threshold for all cohort sizes, e.g., 2 * n_shares // 3.
  2. A low threshold, increases the risk of misbehaving cohorts and reduces the probability of cohort unavailability, while with a high threshold, the opposite. In our case,n_shares // 2 + 1 is the absolute minimum value, and for the same reason it's probably a bad choice: we are prioritizing cohort availability over everything else.

(I'm pretty sure we discuss the potential values of this threshold somewhere else, but I can't find it....)

@theref
Copy link
Collaborator

theref commented May 16, 2023

I'm +1 for this not being configurable

@arjunhassard
Copy link
Member

The m-n ratio will be de facto fixed at genesis (nucypher/taco-web#168 (comment)) – so there's zero need for tunability to be surfaced early on.

However, configuring the composition of the cohort is needed to accommodate a wider range of use cases – some may prioritize availability, others collusion-resistance. Even more importantly, it gives adopters now the reassurance that they will be able to edit service-provider parameters for the long-term affordability of infrastructure they can't easily migrate away from. My take from discussing parameter dials with adopters is that they don't yet know what they need – that will become clear as they gain traction. That lack of certainty and associated complexity is evidence for enabling custom cohorts, not precluding them. And, educate adopters on their options.

Plus, not being able to eventually modify the threshold slightly undermines the value of controlling a given public key. Which is relevant to the fee model and free-riding discussion (#3050 (comment))

@derekpierre
Copy link
Member Author

derekpierre commented Jun 14, 2023

  • Can the threshold possibly be stored in the DKGPublicParameters?
  • If we do a cohort refresh down the road from say 16-of-30 to 20-of-30, is that possible or the threshold must remain the same? I think that's possible, but just want to make sure.

cc @piotr-roslaniec , @cygnusv

@piotr-roslaniec
Copy link
Contributor

Can the threshold possibly be stored in the DKGPublicParameters?

I think it could end up in the Coordinator contract in the ritual structure.

Btw. I was going to remove DKGPublicParameters.

cygnusv added a commit to cygnusv/nucypher-contracts that referenced this issue Aug 7, 2023
…or the moment

We currently define it as the lowest value that produces a threshold set that's strictly greater than the 50% of the overall size. 
See nucypher/nucypher#3095
cygnusv added a commit to cygnusv/nucypher-contracts that referenced this issue Aug 21, 2023
…or the moment

We currently define it as the lowest value that produces a threshold set that's strictly greater than the 50% of the overall size.
See nucypher/nucypher#3095
cygnusv added a commit to cygnusv/nucypher-contracts that referenced this issue Aug 25, 2023
…or the moment

We currently define it as the lowest value that produces a threshold set that's strictly greater than the 50% of the overall size.
See nucypher/nucypher#3095
@derekpierre
Copy link
Member Author

nucypher/nucypher-contracts#107 stores the threshold in the Coordinator contract.

This will be closed via #3226 .

@derekpierre
Copy link
Member Author

Closed via #3226.

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

5 participants