boltlabs-inc / tss-ecdsa

An implementation of a threshold ECDSA signature scheme
Other
11 stars 5 forks source link

Improve Documentation of `ParticipantId`s #524

Open gatoWololo opened 4 months ago

gatoWololo commented 4 months ago

Our current documentation of ParticipantIds is:

An identifier for a Participant. All Participants in a session must agree on the ParticipantIdentifiers. That is, these are not local identifiers controlled by a single Participant; they are unique, agreed-upon identifiers for the Participants in a session. Each entity participating in a session should have a different ParticipantIdentifier. ParticipantIdentifiers can be used across multiple sessions. For example, if a set of participants run keygen, auxinfo, and then compute several signatures, they can use the same set of identifiers for each of those sessions. However, a single ParticipantIdentifier should not be used to represent different entities (even in different sessions with non-overlapping participant sets!). ParticipantIdentifiers should be unique within a deployment, but they don't necessarily have to be globally unique.

Up to now, I thought that ParticipantIds where ephemeral objects which we could arbitrarily choose to run a subprotocol: e.g. keygen and then forget about them. It turns out that the same set of ParticipantIds must be used to for all sub-protocols for a given key. This is somewhat implied by the documentation:

if a set of participants run keygen, auxinfo, and then compute several signatures, they can use the same set of identifiers for each of those sessions

Note the above say "they can use the same same of id..." but it should actually say "they must use...". We should improve the documentation for ParticipantIds.

Notes, Suggested Improvements, Questions: