@loremlabs/quadratic-funding v0.0.5
quadratic-funding
Javascript library for calculating matching fund distribution using the quadratic funding (QF) algorithm.
Quadratic Funding
The way that this payment is calculated is as follows: for any given project, take the square root of each contributor's contribution, add these values together, and take the square of the result. - @VitalikButerin
Number of contributors matters more than amount funded.This pushes power to the edges, away from whales & other central power brokers.This creates more democracy in public goods funding decisions! š¦ -WTF is Quadratic Funding
Quadratic Funding Resources
- WTF is Quadratic Funding in 60s [youtube]
- Quadratic Funding [Blog Post by Vitalik Buterin]
- Quadratic Funding Online Calculator [web]
- A flexible design for funding public goods [pdf]
Install
npm install @loremlabs/quadratic-funding
Usage
When called, calculateQf
will return an array of projects, each with a match
property that is the amount of match funding that should be awarded to that project.
import { calculateQf } from "@loremlabs/quadratic-funding";
// pass in an array of projects, each with an identifier and an array of contributions
const projects = [
{
identifier: "kudos-for-code",
match: 0,
contributions: [
{
amount: 100,
},
],
},
{
identifier: "kudos-for-design",
match: 0,
contributions: [
{
amount: 100,
},
{
amount: 100,
},
],
},
];
// set a matching amount
const matchingAmount = 100;
// calculate the match
const results = calculateQf(projects, matchingAmount);
// now results will include the match amount for each project
console.log(JSON.stringify(qf, null, 2));
Example
See the example
directory for a simple example of how to use the library.
Run example
node example/simple.js table
Should return:
Quadratic Funding
=================
Matching Amount: 100
āāāāāāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāāā¬āāāāāāāā¬āāāāāāāā
ā Project ā Contributions ā Contributions Total ā Match ā Total ā
āāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāā¼āāāāāāāā¼āāāāāāāā¤
ā kudos-for-code ā 1 ā 100 ā 20 ā 120 ā
āāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāā¼āāāāāāāā¼āāāāāāāā¤
ā kudos-for-design ā 2 ā 200 ā 80 ā 280 ā
āāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāāā“āāāāāāāā“āāāāāāāā
Run tests
Tests and coverage are run using Jest. To run the tests, run the following command:
npm run test
Author
š¤ Matt Mankins / Lorem Labs
Twitter: @loremlabs
Twitter: @mankins
- Github: @mankins
Show your support
Give a āļø if this project helped you!