I want to accredit members so they can pseudonymously give feedback while still being provably part of a group, without a way to give extra accreditations.
Suppose a group of 100 members (I decide and make public who these members are) want to bit by bit create 100 accounts such that nobody knows which member created which account but without a way of ending up with multiple accounts controlled by any one entity.
I could use blind RSA signatures here but the signing entity - myself - would be able to accredit more accounts than there are members without the members knowing who's legit.
How can I provably limit accounts to one per member of a group?
A more concrete example
- My project discusses projects $X_{1 .. 100}$ on GitHub.
- Each of these projects gets one "peer" token $P_{1 .. 100}$
- Nobody - not even me - can link $P_{n}$ to $X_{n}$
- Nobody can create a token $P_m$ with $m \notin [1, 100]$
- Nobody can create a secondary token for any project
- In my project, tokens would be used on nostr and would ideally commit to a nostr identity (Schnorr public key) to avoid requiring yet another mechanism by which the token identifies a nostr identity as group member
Best idea so far
- Projects that want their token get processed in batches of $n \geq 10$
- Once signed up, I blindly sign $m \leq n$ tokens for them
- tokens are
"[nostr pubkey],[signing round counter]"
- Projects have to use it or lose it: Within 48 hours $k \leq m$ unblinded tokens get revealed by using the nostr pubkeys with the unblinded tokens and signatures. Later reveals are ignored
- $l$ Projects publicly approve their token activation
- If $l \leq k$, round was successful for these $l$ projects
- If now one approved project of the round reveals a different token? We got trolled by two colluding entrants and have to repeat the round without this one project?
- If $l \gt k$:
- We were provably signing more tokens
The interactivity, long ceremony and the reduced anonymity set is bothering me. Also if projects forget or have their keys compromised, how can I renew tokens? Have them all renew once per year unless they want to reveal the match?
I want to send each of these projects something that they can derive a token from themselves whenever they feel like using this.