-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: expectedContributionPoints #143
base: master
Are you sure you want to change the base?
Conversation
Hi @pegahcarter, no - that's not how it works. For what I understand, based on the way you designed the Contribution system, the Total Contribution Points (tCP) would be the sum of all Given Contribution Points of all Members in a period, plus the "outstanding Contribution Points" at the time of taking the snapshot. Please note that in your initial message, you seem to be using "Performance" in stead of "Participation Score" - Please refer to our public documentation only, and let's stick to our conventions.
|
I appreciate your well-written and thought out response. You have a deep understanding of the protocol and it's very helpful in fine-tuning parameters and formulae. Regarding points raised:
When period
Correct. Code here:
Correct. It's a common practice across Solidity to use 10*18 to reduce rounding, which I've used as equivalent to 100. Code here: contracts/contracts/participationScore/ParticipationScore.sol Lines 265 to 277 in 8398e5d
This is calculated here: contracts/contracts/participationScore/ParticipationScore.sol Lines 161 to 165 in 8398e5d
And this is where I raised the question in this PR. Before this PR, What it sounds like you're saying is that From the docs: "TCP: Total Contributions Points in a Community. Sum of all contributions points available in a community in a given period. " Ultimately, this definition is unclear for me as I don't know if "points available" includes previous periods. After this PR, the definition would be: What do you think?
Correct: contracts/contracts/participationScore/ParticipationScore.sol Lines 168 to 170 in 8398e5d
Agreed. |
Hi @pegahcarter, thanks for the follow-up. Getting to your points:
No, I don't mean the points "created" - but the points that we could define "active."
Based on the above, the only way to calculate continuously the amount of active/available points in a Hub in a given Period is tCP (the total amount of Contribution Points given by all Members of a Hub in a given period) + Outstanding Points.
Here "in a given period" is key. What I mean to say in the definition is that we calculate all CP-based parameters both for Individuals (= the Members: eCP, gCP) and for Hub (= tCP) on a period basis. The Expected Contribution Points of a Member are calculated on a period-basis, and your required eCP as a member in a specific PeriodID will never (or very rarely) be the same of any other past or future period.
I think it's correct, let's use the formula I created above to make sure we are on the same page: Overall, this is an important conversation - I'm glad we are getting there. I understand it's difficult in general, so thank you for your patience and the hard work. |
Okay, sounds good! To summarize:
This works to keep the current period
We should further define Additionally, we should add My impression from this discussion is we can formally define |
Hey Carter:
This doesn't sound right. eCP should always be calculated as
eCP of past periods is no longer relevant, and should not be recalculated or updated. We should just record each Member's previous eCPs at the time of the final calculation (the final "snapshot" we take before moving from a period to the next) so that they can be indexed and queried by us or other 3rd-parties for statistical/analytical reasons. Past eCPs, though, should not be considered for any of the "ongoing period" calculations, and each period's eCP of a Member is independent from any previous one.
Good point, let's call this "growing amount" (the "total given contributions of all members") as
Conceptually is correct, but based on the conventions we used above, I believe it should be rather: |
You're right. eCP should always be calculated as To summarize
|
@Jabyl can you please clarify so I know how to write the variable names? Right now the contracts use:
Are the current variable names sufficient? Please let me know what they should be and I'll update this PR / merge. |
@Jabyl please confirm that
_calcExpectedContributionPoints()
is correct. This function change means that in calculating performance of a member for a previous period, the amount of contribution points the member should earn is compared to the cumulative active (aka outstanding) and given contribution points.