Currently, the Encointer Association runs an onboarding program for new communities and decides who is allowed to register on mainnet (and what communities should be purged). Permissioning is necessary for bootrstrapping the network because, otherwise, an attacker could squat entire geographic areas and prevent real communites because of minimal distance requirements of cycle gathering locations. However, we have always envisioned this process to be unpermissioned and most likely based on a web-of-trust among communities.
Here, I’d like to put one idea up for discussion, how this could work:
- an emerging community newCC signals the intention of registering on mainnet by submitting their CID to an onchain onboarding pipeline. The CID includes the geohash of the bootrapping gathering location along with the hash of the bootstrappers’ accounts. Therefore, submitting a CID allows prospective bootstrappers to prove membership and location claim to others, without already registering the community
- A global quadratic vote among all active communities is taken out. If approved, newCC is whitelisted
- newCC registers its community and can start bootstrappingg
Why quadratic voting?
Encointer is committed to subsidiary democracy. Onboarding of new communities is a global-scope matter, so all the communities should have a say
If we vote based on one-person-one-vote, that means that the decision is dominated by the largest communities and the interests of minorities might be harmed.
If we vote based on one-community-on-vote, we treat communities of 10 members the same like communities with 1M members, which will make it hard for the big communities to accept new ones in the first place, because they will have to consider the weakened security of global decisions
Quadratic voting is a very powerful way to protect the interests of minorities while still leveraging the security coming from large communities. “Quadratic” is actually just one possible choice of tradeoff on a continuum of exponents from “one community one vote” all the way to “largest community decides”, so the exponent could even be a protocol parameter.
The suggested design up for discussion would be:
Each community decides on the matter with its own decision making process (we should assume that not all communities will have the same process of decision making). The design which is currently implemented would give each reputable a vote weighted by the number of attendances withing the reputation lifetime. Therefore, more active members have more say (currently proportional, but also here, sqrt weighting could be interesting)
The global balloting is based on the results in all active communities, weighted by the square root (or any exponent to be set by governance) of the total number of reputables per community.
Technically, we’d need an implementation of global democracy and onboarding whitelisting on Encointer parachain and UI. This should be possible with reasonable dev effort. The complexity lies in the education and behaviour of users, not in its implementation
What is at stake?
Voting power without any skin in the game would not be legitimate. So, why should one deny/approve new communities on the other side of the world? Decisions will likely come down to just endorsing Encointer as such and always voting Aye without doing due diligence on the people that want to start a community.
The most obvious attack would be to register a bot community and growing it at no cost to millions or billions of bot members, effectively taking over global democracy on Encointer and possibly jamming the network with transactions. Therefore, there is a real interest for everyone, to do due diligence on new communities.
But: There is no way how one can verify future behavior of a bootstrapper set of 10 real people applying to register a new community. Therefore, trust should not be one-off, but rather continuously re-established.
We may need to make voters put their money where their mouth is: Just accepting a new community on the network may not be sufficient. People should accept each other’s community currencies, then there is a real risk and motivation to do due diligence continuously. We could require communities to establish exchanges among their community currencies. If a community grows without establishing any exchanges with other communities, we could curtail their tx quota (or not allow to pay tx fees in that currency) or put other restrictions for that community.
As this is still a relatively unbaked braindump, I’d like to open the discussion on this IMO very important but not very urgent topic