Sep 29 2023 21:32 — 3 min read

Quadratic funding

#blockchain #governance #algorithm


The formula

Based on ideas of Quadratic Voting we can apply them in building a crowdfunding product by using Quadratic Funding. Now let’s remember this formula1:

Vip((icip)2)V_{i}^p \left(\left(\sum_{i}\sqrt{c_{i}^p}\right)^2\right) \notag
  • VipV_{i}^p (FpF^p): the currency-equivalent utility citizen ii receives if the funding level of public good pp is FpF^p.
  • Each citizen ii can make contributions to the funding of each public good pp out of her personal resources cipc_{i}^p.
  • Assumption public goods pp are the products the community aims to develop.

Let’s say we have a fund that the community contributes to every day, and at the end of each quarter we need to vote and decide which products to build next.

Suppose, the fund has collected $25,000 and there are 3 projects (A,B,C)\left(A, B, C\right) - after considering feasibility and necessity - that need to be built. Our job now is to allocate the fund to projects appropriately. One of the approaches will be to let community votes, the project will receive a share amount corresponding to the community’s vote numbers.

Project AProject BProject C
Funding$19$28$125
No. of Contributors425
Amount Contributed$1, $5, $6, $7$20, $8$100, $7, $1, $15, $2

Follow formula above: Matched amount for Project A:

MatchedA=(1+5+6+7)2$69.41\begin{alignat}{3} Matched_{A} &= \left(\sqrt{1} + \sqrt{5} + \sqrt{6} + \sqrt{7}\right)^2 &\approx \$69.41 \notag \end{alignat}

Similarly, Project B and Project C will get matched amount:

MatchedB=(20+8)2$53.30MatchedC=(100+7+1+15+2)2$358.46\begin{align} Matched_{B} &= \left(\sqrt{20} + \sqrt{8}\right)^2 &\approx \$53.30 \notag \notag \\ \notag \\ Matched_{C} &= \left(\sqrt{100} + \sqrt{7} + \sqrt{1} + \sqrt{15} + \sqrt{2}\right)^2 &\approx \$358.46 \notag \end{align}

So that, with a value funding pool of $25,000, shared amount of each project would be:

SharedA=(69.4169.41+53.30+358.46)×25000$3,606.31SharedB=(53.3069.41+53.30+358.46)×25000$2,769.30SharedC=(358.4669.41+53.30+358.46)×25000$18,624.39\begin{alignat}{3} &Shared_{A} &= \left(\frac{69.41}{69.41+53.30+358.46}\right) \times 25000 &\approx \$ 3,606.31 \\ \notag \\ &Shared_{B} &= \left(\frac{53.30}{69.41+53.30+358.46}\right) \times 25000 &\approx \$2,769.30 \\ \notag \\ &Shared_{C} &= \left(\frac{358.46}{69.41+53.30+358.46}\right) \times 25000 &\approx \$18,624.39 \end{alignat}

The way to allocate capital according to this formula focuses on the number of voters rather than the total amount contributed, so even though project B received more contributed assets, because the number of contributors was only 2, the final shared assets from the fund was ~23% smaller than project A received.

How to apply Quadratic Funding

You want to use Quadratic Funding if

  • You want to encourage the community to contribute, because as I said, the more people who support the project, the better the project’s chances of receiving a large share fund regardless of how much they contribute.
  • In order to have a large number of people who love and contribute to the project, the projects themselves also need to be built with a focus on quality.
  • Prevent large donors from manipulating the game to distort the amount of fund allocated to projects, creating a fairer game.

You do not want to use Quadratic Funding if

  • The protocol only has 2 options to vote, applying Quadratic Funding only makes it difficult and does not bring any effect.
  • Most of member of community doesn’t have much knowledge or opinions, and is easily led, so contributors tend to be based on emotional interest instead of considering the utility of the product.
  • Protocol just wants it simply, 1P1V.

Footnotes

  1. This formula was mentioned by Vitalik Buterin, Zo¨e Hitzig, E. Glen Weyl in the paper A Flexible Design for Funding Public Goods https://arxiv.org/pdf/1809.06421.pdf