A way to do quadratic funding in polkadot

Treasury spending is the biggest topic in polkadot governance and there are dramas about it. Main problems about current OpenGov treasury spend model include:

  1. Whales are playing too important roles.
  2. Irrational votes.
  3. Possible collusion.
  4. Influence of Low token holders with high contributions is low.
  5. Lack global perspectives, plans and budget about treasury spend.

So it turns out:

  1. Results of most referenda are finally decided by several whales.
  2. Community members may not vote against an unreasonable proposal because they may offend the proposer.
  3. Many community members complain about treasury spend, but what they can do is limited.
  4. Teams are proposing an amount that just depends on their own calculation, not under a global budget or spend plan. So teams don’t have to control their budget if their referenda can keep passing.

Quadratic funding

Following are several tips about how quadratic funding works:

  1. There is a public funding pool for funding rounds.
  2. Different applicants(teams) share this pool by votes they received.
  3. Communities vote on a project by donating their assets to an applicant project.
  4. The more donors and the more funds an applicant project received, the more a project will share the pool.

Here is an example. Projects A, B and C will share 10,000 DOT in total. Finally All of these 3 projects received 1,000 DOT donations, but A has 5 donors(200 DOT each), B has 2 donors(500 DOT each), and C has 20 donors(50 DOT each). Obviously C has broader support, so C shares the most of the pool.

We can learn more from gitcoin which is the biggest quadratic funding platform in the ethereum ecosystem.

Challenges

There are mainly 2 challenges we’ve seen.

  1. Sybil attacks. A project can create many accounts and donate assets to himself.
  2. Incentivisation. A community member will think it a stupid decision to give out their own money while there is a public fund pool, especially when the public fund is not spent reasonably.

For the first challenge, we will introduce voter weights. Each voter(donor) will have a weight calculated by history on chain behaviors and off chain data bindings. So if a voter has more on chain contributions and more off chain proof which can prove it is a real person, he/she will get a higher weight. Attackers’ weight value will be 0, no affection to the final result.

Some ideas can be used for donation(vote) Incentivisation. For example, if a voter donated 50 DOT, there will be a 50% possibility he/she can get 100 DOT as reward. Of course we can set a cap to each voter’s reward to encourage small donations.

How to do it in polkadot

  1. A bounty will be created to hold funding pool assets.
  2. Funding rounds will be created with a predetermined budget. Each round should have a topic for similar projects.
  3. Projects apply to join a funding round and curators will review them.
  4. Communities make donations in a funding round by transferring their assets(DOT) to the applicant project’s address.
  5. Quadratic funding platforms do calculation, audit and submit results to curators. Funds are distributed to applicant projects through child bounties. Rewards are sent to voters.

Main work will include:

  1. A platform should be built which
    • provide UIs for collaborations between applicant projects, voters, curators, etc.
    • do history on chain data indexing for weight calculation.
    • help voters bind their off chain media accounts which can prove they are real persons. This also helps weight calculation.
  2. Decide what rules(both on chain and off chain) can affect voters’ weights.
  3. Make plans to decide reasonable funding rounds.
  4. Do publicity work so projects will come to apply and the community will know it and do donations.

Please check the full slides here.

Some thoughts

  1. Some community members are losing confidence to polkadot due to unreasonable treasury spending. More reasonable treasury spending will help us gain more support.
  2. One of the biggest purposes of democracy is taking advantage of collective intelligence. We should use more board intelligence instead of whales’ intelligence.
  3. I love polkadot, but sorry sometimes I can feel polkadot developers are arrogant when comparing to ethereum because of the technical advantages. IMO we should keep humble and learn the ecosystem building from other ecosystems and increase polkadot’s usability…
10 Likes

Hello man,
My friend @Cyphertux follow me your proposition. I talked about it some months ago but no one follow my idea… I’m so happy you made it.
For the first part this is exactly the principle of quadratic vote you apply which allow small wallet to have big weight. That’s great.
Just if some don’t understand the calcul i explain here :
Project A : They are 5 to vote and so give 200 dots each (1000/5) so that the weight is (5squareroot200)² = 25 * 200 = 5000
Project B : There are 2 voters so each vote with 500 dots (1000/2) so weight will be : (2
squareroot500)² = 4500 = 2000
Project C : There are more voters about 20 and each vote with 50 dots (1000/20) so weight will be :
(20
squareroot50)² = 400 * 50 = 20000
So each person can understand why quadratic vote is so important, it really allow community to have real impact on votes.

Your second part resolv sybill attack with a very smart process :

The problem is that a project can effectively create many accounts so that project or whales could divide their enormous amount of money in lot of account so that they will cheat the process and keep theri weight.
For that you propose that a weight will be associated at each voter and so if an account could be just created it will have a 0 weight so the new weight calcul you propose will be like that :
(weight_voter*squareroot(donation_amount/total_voters)*total_number_voters))²
So that the less weight a voter has, the more it reduces the weight of his vote. If 0 => result is 0.
Another very good point but i would like more explaination about the method of calculating this weight please
If good calcul method it will resolv the Sybill attack too => Great point man

After that there’s the problem of community voters attractivity so that you propose to give some rewards beacause you know that greed is unfortunately never far away!!
Good point too, and so it is a little bit similar too crowdloan process (just for this aspect) but to be thought more i think.

To finish, you propose a kind of method to manage the fund and the redistribution process. Is this possible that you apply on a use case like you did at the beginning of your demonstration on this subject?
To be sure i really understood.

Thank you so much man and ready to make my contribution if necessary

However, I do have some points for reflection on the areas of application of this concept. The advantage and disadvantage of decentralization and this model is that it gives weight to each of us. On the other hand, not everyone in the voters necessarily understands everything and doesn’t this pose a problem on structural subjects strong at the technical level or others? I don’t know, maybe it could be applied everywhere except on some “dangerous” it subjects? To think about :slight_smile:

Have a nice day and Let’s go DOT

1 Like

Yeah, in my slide I propose an idea(not a solution) about reward. I think there can be many ways to give reward, like token reward directly, event privileges, NFT, on-chain reward like gas discount, coretime sale discount, etc. We can enrich reward ways step by step, depending on future collaborations with the whole ecosystem.

The biggest challenge IMO is the community participation. The whole quadratic funding will make sense only if the community understand it and we have enough projects and community donators.

Plan and possible steps:

  • A wish for change referendum to gain the community consensus。
  • A bounty to hold fund for QF.
  • Find curators who will organize fund rounds, reach projects, do publicity/education work and final audit.
  • Development
    • UI for collaborations between projects, curators and donators.
    • Indexers which will calculate donator address on chain factor of vote weight.
    • Off chain social information bind for off chain factor of vote weight.
    • Research and integration of identity solution.
  • Find a proper fund topic and start the 1st round.

My team’s strength is very limited. I’d hope more understand and support from the community.

3 Likes

Thank you very much for starting this discussion. I think this is a must for the ecosystem. As a contributor to AwesomeDot, I found out that developers build important tools and libraries and after not getting funded from OpenGov, they simply halt the project. This will create and open opportunities to many teams.

Wliyongfeng and his team is the best choice to build this platform. They have a proven track record to build cool products for Polkadot ecosystem.

2 Likes

I’m not full agree with your answer.
Why?
Because i think that Devs have to present a strong project with strong fundamentals before treasury eventually help them.
When you build there’s not only code but budget providing to think about and build.
Too much projects count on treasury to help them, as in web2 i think that they will have to present their project to community including all aspects and more than anything not to rely on cash but to make a loan from the Polkadot treasury as in real life.
This would make them much more responsible and would certainly lead to less waste. When will we develop an application to make loans in Dot? That’s a solution!!

We’ve submitted a wish for change referendum #1321.

I agree with this view.

Disclaimer: I’m not a DOT hodler (I’m on a project on another Substrate chain), but I love this forum because I look for - and every week find - examples of poor governance, conflict of interest, reckless spending, etc.

Today I spotted this gem :sweat_smile: :

DAOplomats are not compensated for coordinating this engagement. We are, however, part of the Uniswap DAO’s delegate incentives programme, which compensates for our engagement in governance at the Uniswap DAO.

It’s unbelievable what goes on here, and it’s even more unbelievable that there’s so little resistance to it (which is even worse, because it shows few people even bother to stop it because many use or hope to “work the system” the same way). The above works exactly the way political parties work with cronies and lobbyists.

My objective is to spot these examples, learn what not to do and be able to reject such attempts in my DAO. We share some the same tools (have a Council, democracy votes, tips).

Some comments to the OP:

That’s one of my objectives on my network for CY25: use reasonable incentives to increase the use of on-chain identities, not just for validators but also nominators and voters. Maybe add a tiny boost to votes proportional to the completeness of their on-chain identity?

I suspect countering sybil attacks and vote incentivization won’t be very effective: people will farm small accounts and create fake activity on social media, either by outsourcing or automating.

Personally I think tools for better insights can help. I am interested in creating “voting record” reports for whales and maybe more (I haven’t started doing anything yet, but I plan to start looking for various Graph QL examples for Substrate chains, and modify those for voting-related queries/reports). Many dislike chain analytics because it diminishes privacy, but anyone who votes on the use of common resources should expect scrutiny.
(For wallets that use tokens/assets/apps and simply transfer stuff from A to B, I don’t care about analyzing their activity.)

My only objection is “irrational votes”. The way democracy works, “irrational vote that wins” is considered rational. Maybe replace that with “undisclosed conflict of interest” votes?
I’d like to have a “statement of interest” (can be a checkbox) for all involved, including curators, so that people properly record their conflict of interest or lose reputation (or funding) when/if it gets discovered at a later stage.

As an aside, if you build this it would be nice if the UI be modular so that it can be adjusted for use by other Substrate chains.

QF is definitely a GREAT way to distribute funding, for all the reasons @wliyongfeng mentions in the first post. Though, it should be “part” of the funding mix - NOT a replacement for direct funding.

And yes, there are a bunch of gotchas involved though - from developing the UI for project submission and voting/contributing to dealing with bots and sybil attacks.

At my previous gig, I was involved with the QF program we ran for the Cosmos Hub:

The program was fairly well received, with the current QF round having 1560 contributors. We even have MACI voting (where you vote with your “staking power”, without actually contributing tokens - which is used as a signal for the QF distribution, but less weighty than those who contribute tokens).

This is all to say - the exact dynamics of the QF distribution and anti-sybil mechanisms is beyond me - but I highly recommend connecting with the DoraHacks team.

At the very least, to share notes. But perhaps DoraHacks can simply add in support for Polkadot and parachains, without needing to recreate the whole system.

Do hit me up if you need an intro