Okay everyone, I took a serious stab at trying to figure this out and I came up with a pretty robust solution. Strap in, we’re going deep.
General Overview
With GIVmatching we will take “top-ranked projects” from established bi-weekly rounds and distribute a portion of the funds held in the Giveth Matching Pool to these projects. The metrics for deciding “top-ranked projects” will change depending on where we are in the current Giveth Core Roadmap. More details on that a bit further down.
GIVmatching starts officially when we hit $500,000 worth of funds held inside of the Matching Pool. We will liquidate all holdings at that time into GIV and distribute matching funds exclusively in GIV.
From launch, every 2 weeks we will take a percent of the current GIV holdings in the Matching Pool and set them aside to have as matching funds for a given number of top-ranked projects. This means, without receiving additional funding each round will distribute incrementally less as the GIVmatching supply dwindles.
The top “top-ranked project” will have a set percentage more of maximum matching funding than the bottom “top-ranked” project, with all the projects inbetween calculated proportionally. This is the variance factor
.
For example:
There’s 200,000 GIV in the Matching Pool. We want to distribute 10% (20,000 GIV tokens), we have 10 “top-ranked” projects picked for the round. Our variance factor is 110% so the top project will receive 10% more tokens than the bottom project. The distribution would be as follows, from lowest to highest:
Rank Placement Tokens to Receive Rank #10 1901.29050320353 Rank #9 1924.84130368797 Rank #8 1947.79142148437 Rank #7 1970.13596385686 Rank #6 1991.87176575824 Rank #5 2012.99731160521 Rank #4 2033.51265156975 Rank #3 2053.41931353044 Rank #2 2072.72021177969 Rank #1 2091.41955352388
Donations made to the Matching Pool after launch will be arbitrarily liquidated into GIV at any given moment, decided by the multisig holders, thus keeping the GIV supply periodically topped up.
GIVmatching will provide up to 75% of the USD value of donations as matching funds or if this over the matching funds remaining it will match with whatever funds remain for the given project. The 75% matching is considered the GIVmatching Factor.
A project that has been “top-ranked” in a round and received GIVmatching funds will become ineligible for the subsequent 5 rounds (10 weeks).
Parameters
There’s a few parameters that we’ll need to decide at launch and we could modify between rounds:
- The percentage of remaining Matching Pool GIV to distribute
- The amount of projects to include as “top-ranked”
- The GIVmatching Factor
- The percentage of tokens the top projects gets over the bottom project. (Variance Factor)
- How long a project that has received GIVmatching must wait until it is eligible again
The first two states that will define a project’s rank are pre-GIVpower launch and post-GIVpower launch.
pre-GIVpower
Before the launch of GIVpower the clearest metric we have for ranking projects is USD value of donations received within a given period. Projects must be Verified to be eligible for GIVmatching.
Following the GIVbacks bi-weekly cycle we can get the sum of the USD value of donations received to each project during the given period dates, we’ll take the top slice of highest donated to verified projects, assuming elgibility, and make them eligible for GIVmatching on donations for following 2 week round.
post -GIVpower
After the launch of GIVpower we’ll have a new metric to consider, that will be the average amount of GIVpower staked to a project during a round. We’ll now have this metric in addition to USD value of donations received to consider when ranking projects. GIVmatching will transition to follow the bi-weekly cycle of GIVpower from GIVbacks.
We can dynamically set how much we value one metric over the other by introducing two new parameters: Donation Factor and GIVpower Factor which can increase or decrease the influence of each metric on the final GIVmatching rank of a project.
For example:
We have 10 Projects with the following stats at the end of the round:
Project Donations USD value for Period Average GIVpower Project A 500 1000 Project B 1000 200 Project C 2000 500 Project D 15000 10 Project E 250 60000 Project F 40000 2000 Project G 5000 4000 Project H 6000 7000 Project I 10000 8000 Project J 500 60000 Our Donation Factor is 1 and our GIVpower Factor is 0.5. We multiply the second column by the Donation Factor and the third column by the GIVpower Factor. Our project ranking then looks like this:
Project Final Donation Score Final GIVpower score Total Score Top-project Rank: Project A 500 500 1000 10 Project B 1000 100 1100 9 Project C 2000 250 2250 8 Project D 15000 5 15005 4 Project E 250 30000 30250 3 Project F 40000 1000 41000 1 Project G 5000 2000 7000 7 Project H 6000 3500 9500 6 Project I 10000 4000 14000 5 Project J 500 30000 30500 2
Parameters
So we’ll introduce two new parameters than can be changed, making our total list of modifiable parameters post GIVpower launch to be:
- The percentage of remaining Matching Pool GIV to distribute
- The amount of projects to include as “top-ranked”
- The percentage of tokens the top projects gets over the bottom project. (Variance Factor)
- GIVmatching Factor
- Donation Factor
- GIVpower Factor
Spreadsheets!
It wouldn’t feel right with some good ol’ spreadsheets to play around with some parameters.
You can fork this Google Sheet and get started.
- Tab 1 - Distribution Calculation: How much funds should we distribute each round and to how many projects.
- Tab 2 - Dynamic GIVpower Switch: Weighing USD value of Donations vs. GIVpower and how it affects ranking and thus allocated GIVmatching.
- If you want to test how GIVmatching looks pre-GIVpower simply set the GIVpower factor to
0
.
- If you want to test how GIVmatching looks pre-GIVpower simply set the GIVpower factor to
- Tab 3 - Matching Funds: Bringing it all together, taking the funds available for each round in total, and to each project and simulating how much matching funds a project would receive for a given donation.
CHECK IT OUT!
Major props to Zhiwei for creating the variance factor algorithm and @cquinterom096 for implementing the cusom function script so we can actually play around with it!