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 1 Voting Rule #6

Closed AngelaKTE closed 1 month ago

AngelaKTE commented 1 month ago

Status:

✅ Our specification: correct, confirmed by Jonas

✅ Implemented in our model: https://github.com/GovXS/OP-Evaluating-Voting-Design-Tradeoffs-for-Retro-Funding-RESEARCH-/blob/main/model/VotingRules.py

✅ Verification Model Input/Output: https://github.com/GovXS/OP-Evaluating-Voting-Design-Tradeoffs-for-Retro-Funding-RESEARCH-/blob/main/voting_rule_verification/verification.ipynb

Formal Model

Screenshot 2024-08-14 at 16.14.55.png

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

References

OP Spreadsheet with Round 1 results (copy for our project team): https://docs.google.com/spreadsheets/d/1h6R9Ycxmi7Z3BsBtDeOUCEuxHzxOmWyBgRsjqURpMIM/edit?usp=sharing
OP Official documentation

https://community.optimism.io/citizens-house/rounds/retropgf-1

Discord messages with logic #1 https://discord.com/channels/@me/1243490189884784693/1268516007178407987

2 https://discord.com/channels/@me/1243490189884784693/1268571083443929109

Round 1 review (incl extending badgeholders, sectret ballots etc.)
https://vitalik.eth.limo/general/2021/11/16/retro1.html


Notes:

Here's a copy of the notes made in Discord https://discord.com/channels/@me/1243490189884784693/1268516007178407987

Went over our definition of Quadratic Voting and calculation of Round1 results. Disclaimer: the sheet Jonas shared is not accessible anymore, I requested access again to verify what I have. For now:

- our definition of the mechanism is correct.

- to the implementation we have to consider 2 steps, I try to clarify below @Idrees535 so that you can check against your implementation:

Step 1/Calculate votes distribution For any project, sum up the votes across all voters. Note: in Quadratic Voting, the "vote" of a voter (number of tokens a voter distributes) to a project x(i,p) can never be equal to the total number of tokens available to this voter c because of the squared cost of the voting! In our case, voters have a fixed maximum of token c (defined by OP), they can't "buy" additional tokens. Hence what we need, and what's not specified yet in our doc, is how to calculate the vote (output) based on the the voter input x(i,p) so that the QV condition (quadratic cost) is fullfilled. The spreadsheet shared does not give the specification, if I remember correctly.

Step 2/ Calculate funding allocation Put the votes a project received (see Step 1) in relation to all votes cast, and distribute the available budget B accordingly.

I'll get back with more details once I had the chance to check the spreadsheet again, happy to jump on a call to discuss then @Idrees535

and 2nd message: https://discord.com/channels/@me/1243490189884784693/1268571083443929109

OP IMPLEMENTATION (ACCORDING TO THE SPREADSHEET SHARED https://docs.google.com/spreadsheets/d/1-Xx3adyqg5eBEvDc0lJJ1w2pEYyNMIQ3VgoR5uYMz4s/edit?usp=sharing)

Step 1/Calculate votes distribution In the spreadsheet, we don’t see how the votes distribution per voter is calculated, that’s why I suggest we follow our own definition, see above, and I'll clarify with Jonas. For now, let’s call the output of Step 1 x’ (i,p).

Step 2:
Calculate funding allocationCalculate funding allocation

Step2a:

- calculate v(p), the sum of all votes per project: v(p) = sum of x’ (i,p)

- Then, calculate the allocation share with respect to the total number of votes distributed to all projects, let’s call it vt(p):

vt(p) = v(p) / sum of v(p)

Step 2b: calculate the funding allocation in USD based on the Total Budget B: a(p) = B*vt(p)

Tasks


Notes:

Screenshot 2024-08-14 at 16.24.56.png

linear[bot] commented 1 month ago

GOV-15 Verify that our model reproduces OP voting results correctly