Skip to content
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

Agoric governance: VoteCounters for >2 options Bounty #6382

Closed
cboydstun opened this issue Oct 4, 2022 · 10 comments · Fixed by #6515
Closed

Agoric governance: VoteCounters for >2 options Bounty #6382

cboydstun opened this issue Oct 4, 2022 · 10 comments · Fixed by #6515
Assignees
Labels
bounty enhancement New feature or request

Comments

@cboydstun
Copy link

cboydstun commented Oct 4, 2022

Description

Create two Agoric governance components using a VoteCounter that correctly evaluates election results from questions with more than two options

A completed bounty includes two separate VoteCounters:

  • VoteCounter evaluates votes for an arbitrary number of options and determines the single winner (plurality of direct votes with a rule for tiebreak)
  • VoteCounter evaluates votes for an arbitrary number of options and determines the top N winners (based on number of direct votes with a rule for tiebreak)

Context

The current implementation of Agoric’s governance uses a VoteCounter that evaluates questions with two possible answers. This should be extended further to multiple possible answers

Acceptance Criteria

A successful bounty will:
Complete the requirements from the description including reasonable edge cases not explicitly defined
Pass code review from Agoric team
Include documented open source code and walkthrough presentation

Time Estimation

2 weeks

Reward

$6,400

Payment will be made in USD (fiat currency) via wire transfer. The developer is responsible for providing their completed tax documents (W9 for US based developers and/or W8 or W8-BEN-E for non-US based developers) and providing their banking details in order to receive payment.

Applicant Assessment Criteria

Important: Please provide a clear workplan for how you will approach this bounty. Use the work plan as an initial demonstration that you would be a good candidate. Bounties will require coordination with the Agoric team, so unfortunately only plans submitted in English will be considered.

Applicants will be assessed based on the following criteria:

  • Issue-specific domain experience
  • Issue-specific technical capability
  • Familiarity with Agoric's platform
  • JavaScript experience
  • Availability and communication

Experience Write-up (1000-1500 words)

As part of completing the bounty, we ask that you write up a short (or long!) summary of your experience building on Agoric. Write-up should:

  • Begin with a compelling, relevant introductory hook statement (<50 words).
  • Clearly explain the specific bounty project (~100 words).
  • Describe how the developer approached the problem (~300 words).
  • Give a step-by-step description of the solution (>500 words && <1000 words).
  • At least three code snippets per write-up. They do not count toward overall word count.
  • Conclude with clear calls to action on developing with Agoric - specifically how any ambition developer reading this piece could do more themselves (~100 words).
  • This is important feedback for us as we evolve the platform.

Review Process

  • Agoric team reviews your submitted workplan on Gitcoin
    • It is best to join our Discord and post your gitcoin name in the bounties channel, so that we can follow up with you. Otherwise, we will write on your gitcoin profile wall and say hello!
  • Agoric contacts you to provide reference projects / sample code for engineering review
  • Introductory call to discuss your plans and expected timeline
  • You join the Agoric Discord bounties channel (if you haven’t done so already)
  • Agoric accepts you on Gitcoin and you get started!

References

@cboydstun cboydstun added enhancement New feature or request bounty labels Oct 4, 2022
@gitcoinbot
Copy link

gitcoinbot commented Oct 5, 2022

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


Work has been started.

These users each claimed they can complete the work by 264 years, 1 month from now.
Please review their action plans below:

1) x5engine has applied to start work (Funders only: approve worker | reject worker).

I would like to create these two Agoric governance components using a VoteCounter and make a compelling solution you'll see interesting and appreciate.

I have completed many bounties in many competitions too.

I will take a stab at this to make it happen.
2) mul53 has been approved to start work.

Hey, I looked at the BinaryVoteCounter code and did some research on how to handle this problem.
My plan will be as follows:

  1. Share my plan to implement with the team
  2. Develop the two voting counters with well documented code and write unit tests for them
  3. Create a PR on the repo for review
    I will be providing frequent updates while i work on this

Learn more on the Gitcoin Issue Details page.

@dckc
Copy link
Member

dckc commented Oct 12, 2022

@mul53
Copy link
Contributor

mul53 commented Oct 17, 2022

@dckc on the second vote counter for the tie break, i see there are many options is there a specific way it should be handled?

@dckc
Copy link
Member

dckc commented Oct 17, 2022

there are many options

could you give an example or two, please, @mul53 ?

@mul53
Copy link
Contributor

mul53 commented Oct 17, 2022

@dckc here are some examples, these are only for the second vote counter with N winners,

  1. Single Transferrable Vote - https://www.votingmatters.org.uk/ISSUE18/I18P6.PDF
  2. Random selection from tied set
  3. Re vote of candidates in tied set

@dckc
Copy link
Member

dckc commented Oct 18, 2022

Please stand by for a few days for a thorough answer on the tie question.

Perhaps for now, use the same rule as the binary vote counter:

If there's a tie and no default, the winner is undefined.

@mul53
Copy link
Contributor

mul53 commented Oct 23, 2022

@dckc new commit mul53@eb40692, who can i also tag for review?

@mul53
Copy link
Contributor

mul53 commented Oct 24, 2022

@cboydstun @jeetraut is it possible to have a look at this? mul53@eb40692

@cboydstun cboydstun removed their assignment Oct 25, 2022
@dckc
Copy link
Member

dckc commented Oct 26, 2022

idea from @Chris-Hibbert :

  • use vote total as a seed for a pseudo-random number generator to choose winner in case of a tie

@mul53
Copy link
Contributor

mul53 commented Oct 31, 2022

@Chris-Hibbert @dckc here is the PR for the work #6515

@mergify mergify bot closed this as completed in #6515 Nov 10, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bounty enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants