Open to changes but this spec has been up for +3 months on the forum.
We'll need to consider that the Giveth Matching Pool needs at least $500k funds to begin and will need continuous funding afterwards.
To that end we should consider if this should happen before, during or after GIVfi development.
Here's the full post from the forum with my proposed spec :point_down:
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. :diving_mask:
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. :straight_ruler:
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. :bank:
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. :pie:
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. :money_with_wings:
A project that has been "top-ranked" in a round and received GIVmatching funds will become ineligible for the subsequent 5 rounds (10 weeks). :no_entry_sign:
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 :astronaut:
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. :moneybag:
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 :rocket:
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. :balance_scale:
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.
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.
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!
Design a system where top-ranked projects on the platform receive matching funds from the Giveth Matching Pool -
Check out this spec from the forum: https://forum.giveth.io/t/givmatching-idea-generation-on-how-to-distribute-funds/346/19
Open to changes but this spec has been up for +3 months on the forum. We'll need to consider that the Giveth Matching Pool needs at least $500k funds to begin and will need continuous funding afterwards.
To that end we should consider if this should happen before, during or after GIVfi development.
Here's the full post from the forum with my proposed spec :point_down:
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. :diving_mask:
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. :straight_ruler:
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. :bank:
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
. :pie:For example:
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. :money_with_wings:
A project that has been "top-ranked" in a round and received GIVmatching funds will become ineligible for the subsequent 5 rounds (10 weeks). :no_entry_sign:
Parameters
There's a few parameters that we'll need to decide at launch and we could modify between rounds:
The first two states that will define a project's rank are pre-GIVpower launch and post-GIVpower launch.
pre-GIVpower :astronaut:
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. :moneybag:
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 :rocket:
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. :balance_scale:
For example:
Parameters
So we'll introduce two new parameters than can be changed, making our total list of modifiable parameters post GIVpower launch to be:
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.
0
.CHECK IT OUT! :eyes: https://docs.google.com/spreadsheets/d/1jneA_gvTRMgOMgv_KmhJNagqDms1YIudD-0m1I-wnVk/edit?usp=sharing
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!