GovXS / Evaluating-Voting-Design-Tradeoffs-for-Retro-Funding

Measure how different Retro Funding voting designs perform against a number of requirements aimed at optimizing different objectives. Achieved by simulating different types of voter behavior and applying formal reasoning.
MIT License
0 stars 0 forks source link

Verify OP Round 4 Voting Rule #11

Closed AngelaKTE closed 1 week ago

AngelaKTE commented 1 month ago

Status

✅ Our specification: We'll use R4a simplified:

r4: OP RetroPGF Round 4- Median Impact Metric Score

r4a: OP RetroPGF Round 4- Simplified - Capped Median

✅ Confirmation by Jonas for simplified version

🔴 ➡️ Verification Model Input/Output: TBD?

Formal Model (Simplified Version)

Screenshot 2024-08-14 at 16.38.52.png

Screenshot 2024-08-14 at 16.39.12.png

see: https://www.overleaf.com/project/667bebbdb70211dfcff39701

Description

Input:

Funding Allocation:

Step 1/ Score per badgeholder:

Calculate Impact Metric Share:

weighted_metric=gas_fees *IF(EQ(is_oss,TRUE),1.8,1)

impact_metric_share=weighted_metric /sum(project_1_weighted_metric)

The first step in calculation project allocation begins with calculating each projects impact_metric_share which is defined as the score of a project on a given metric devided by the sum of all projects scores on the metric. This result is multiplied by the open source (OS) multiplier when the project is noted as open source. This calculation is then repeated for each impact metric individually by project and badgeholder.

Calculate total score by project and badgeholder : This is completed by multiplying the project's metric impact_metric_share by each badgeholder's impact metric weighting and adding toegther the results.

` Score(P) = impactMetric1Share*weight + impactMetric2Share*weight.... `

Cap per badgeholder: The total score (or allocation) for each project/badgeholder combo is then capped to a maximum score of 500k OP per project with any remaining OP above this amount distributed to remaining badgeholder's projects. Redistribution score per badgeholder: The redistribution of OP is proportional to the score they've received. Normalization score per badgeholder: The capped badgeholder scores are then normalised to sum up to 10M OP.

R4 simplified: For the simplified version, we skip this step, and start with votes that are capped to 500K. We randomly generate values between 0-500.

Step 2/ Median across all badgeholders: Calculate Median of scores across all badgeholders, Cap: then results are again capped Redistribution: the excess tokens are redistributed proportional to the score they received Normalization: and Normalization: normalised to result in funding allocation (final_median_scores)

Step 3/ Apply min score:

Filter out projects with final_median_scores below 1000 OP remove recipients below 1000 OP

Calculate new median of remaining projects (filtered_median_scores)

Cap: then results are again capped

Redistribution: the excess tokens are redistributed proportional to the score they received

Normalization: and normalize again to match max. funding 10Ms

References

Public Documentation: https://community.optimism.io/citizens-house/rounds/retropgf-4

⭐️ Total Process: https://github.com/ethereum-optimism/op-analytics/blob/main/rpgf/rpgf4/rpgf4_voting_calculator.ipynb

Input Voting data (score per impact metric): https://github.com/ethereum-optimism/op-analytics/blob/main/rpgf/rpgf4/data/Voting%20data%20export%20final.csv Impact Metric by project https://github.com/ethereum-optimism/op-analytics/blob/main/rpgf/rpgf4/data/op_rf4_impact_metrics_by_project%20(1).csv Output Round 4 results: https://github.com/ethereum-optimism/op-analytics/blob/main/rpgf/rpgf4/results/Retro_Funding_4_results.csv

Methodology: In detail: General: https://github.com/ethereum-optimism/op-analytics/blob/main/rpgf/rpgf4/data/README.md

Badgeholder Wallets: https://github.com/ethereum-optimism/op-analytics/blob/main/rpgf/rpgf4/data/RPGF4_badgeholders.csv

Impact Metrics: https://github.com/ethereum-optimism/op-analytics/blob/main/rpgf/rpgf4/data/op_rf4_impact_metrics_by_project%20(1).csv

Voting Interface

https://gov.optimism.io/t/retro-funding-4-impact-metrics-a-collective-experiment/8226/6


Notes:

Screenshot 2024-08-22 at 18.02.28.png

linear[bot] commented 1 month ago
GOV-20 Verify OP Round 4 Voting Rule

#### Description Specify how we calculate the vote distribution applying … **Specification (add Overleaf)** see: [https://www.overleaf.com/project/667bebbdb70211dfcff39701](https://www.overleaf.com/project/667bebbdb70211dfcff39701) #### References (links) --- #### Notes: Notes in Discord if needed

AngelaKTE commented 1 month ago

@idrees535 please verify your implementation against the data shared in "References"

AngelaKTE commented 1 month ago

Let me first check what's relevant for us…

AngelaKTE commented 3 weeks ago

Verification of correct implementation:

Based on actual voting results in R4, we can deduct the following rules: a) funding final allocation <=500K? CORRECT, according to https://github.com/ethereum-optimism/op-analytics/blob/main/rpgf/rpgf4/results/Retro_Funding_4_results.csv

b) was it possible to allocate zero tokens in r4?

AngelaKTE commented 1 week ago