This has been one of the most discussed topics in our Telegram, so it’s only fitting that it be the first topic on the forum.
The issue, in brief, is that there is a finite number of recipient slots available for each MACI round (as limited by the coordinator’s computing power). That limit is currently 5^5 = 3,125
.
To help prevent the system being gamed, and to ensure that legitimate projects are able to register as recipients, we will need a curation mechanism.
In our initial PoC rounds, we will simply whitelist a group of recipient projects that we manually select. But we will need something more robust and permissionless once we hit MVP rounds and beyond.
Some ideas that have been suggested:
-
Forked version of everest.link:
The current version does not provide onchain access to categories or receiving addresses, so it is not suitable. But we could create a fork of it that includes this data on chain.
Everest has the nice property of the metadata being readily available in their subgraph.
However, there are also concerns with having existing projects curate as they have a strong financial incentive to deny any new entries to the list, even if they are valid. -
Append-only registry with registration fee:
Recipients pay a fee to register each round. After paying the fee, they are added to the recipient list. The target registration price should be such that buying all of the slots costs more than the total matching pool, thus there is no financial incentive to buy all of the slots in the round. The registration price could be set manually by the contract owner to start with, potentially being replaced with something that adjusts automatically in future. -
Curation by external jury: as described by Kirill on GitHub
Recipients could add themselves to the recipient list each round. They must deposit a stake to do so, and so long as no one raises a challenge, they get it back at the end of the round. If someone challenges the project during the challenge period, an external jury (Kleros or Aragon court) is used to determine if the recipient is valid.
Recipients on the registry are also ranked by age and past value received, to determine priority into subsequent rounds.
Let’s carry on the discussion here.