0.0.5 ā€¢ Published 1 year ago

@loremlabs/quadratic-funding v0.0.5

Weekly downloads
-
License
Kudos-MIT
Repository
-
Last release
1 year ago

quadratic-funding

Version License: Kudos--MIT Twitter: loremlabs

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

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

Show your support

Give a ā­ļø if this project helped you!