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

WIP add examples/gno.land/p/governance #319

Draft
wants to merge 29 commits into
base: master
Choose a base branch
from

Conversation

ltzmaxwell
Copy link
Contributor

1、a new package helps building governance: propose, vote ,execute, etc;
2、more test needed, some TODOs;

@ltzmaxwell ltzmaxwell changed the title governance package add examples/gno.land/p/governance Aug 14, 2022
@moul moul marked this pull request as draft August 14, 2022 23:25
@moul moul added this to the 💡Someday/Maybe milestone Oct 20, 2022
@ajnavarro
Copy link
Contributor

Hi @ltzmaxwell

Can we help somehow here to move this forward? thanks!

@ltzmaxwell
Copy link
Contributor Author

Hi, @ajnavarro ,

So glad you can help.
We had some discussion in #503.
I'd like to push this forward as long as we have a concrete scope on this work, a unified arch design. WDYT?

@ajnavarro
Copy link
Contributor

Hi @ltzmaxwell

Yes, let's wait on this until we have the final definition at #503

@github-actions github-actions bot added the 🧾 package/realm Tag used for new Realms or Packages. label Aug 1, 2023
@ltzmaxwell
Copy link
Contributor Author

ltzmaxwell commented Aug 25, 2023

Brief Introduction

Governor(gno.land/p/demo/gor) is package providing ablilities to build a DAO, which generally faciliates membership/comittee management, and propose->vote->execution flows. Currently the gno.land/r/demo/groups is used as a membership impl with some modifications.

Governor package is used to build DAOs like eval_dao and contrib_dao(gno.land/r/demo/dao).

In the context, eval_dao is mainly focusing on evaluation on contributions, members in eval_dao is given equally 1:1 voting power(or any value you define), which is initially set during the DAO creation by setting weight of a member. As soon as an evaluation is done, proper amount of tokens will be transferred to the contributor from pool.

Contributors are members of contrib_dao, formed in a tierred membership system, that voting power of each member is identified by it's weight, instead of a fixed value, it is calculated by tokens one hold, by a customizable helper to get proper tier one should reside, also through a snapshot mechanism to avoid flash loan issues.

@adr-sk
Copy link
Contributor

adr-sk commented Aug 25, 2023

Hey @ltzmaxwell , we reviewed your work with our devs and we've laid out what's already been completed, and what needs to be completed.

Current Concepts (Comment on This PR)

  • The Governor Package (gno.land/p/demo/gor): A pure package (module) for building a DAO
  • eval_dao: The DAO responsible for evaluating contributions (1 vote per account)
  • contrib_dao: The DAO responsible for governing the gno.land chain (1 vote per token)

Current Specs

p/demo/gor/
ㅣ
ㅣ─ checkpoints/
ㅣ     ㄴ  checkpoints.gno : Creates checkpoints based on block heights (Used for balance snapshots)
ㅣ
ㅣ─ counters/
ㅣ     ㄴ  counters.gno : Counts the Nonce of addresses (A security measure to prevent replay attacks)
ㅣ
ㅣ─ governor/
ㅣ     ㄴ dao_votes.gno : Implements the voting feature. Offers 4 options > Against, For, Abstain, NWV
ㅣ     ㄴ deposit.gno : Implements the deposit feature. The burn function exists as a placeholder as of now.
ㅣ     ㄴ governor.gno : Implements features for creating and specifying the specs of a DAO.
ㅣ     ㄴ governor_settings.gno : Implements features for managing the configs of a DAO such as voting period, quorum, etc.
ㅣ     ㄴ membership.gno : Implements features for DAO membership management such as inviting, removing members, etc.
ㅣ     ㄴ propose.gno : Implements the status, structure, and types of proposals that can be submitted.
ㅣ
ㅣ─ snapshot_token/
ㅣ     ㄴ iss_token.gno : The interface of the snapshot contract.
ㅣ     ㄴ snapshot_token.gno : Implements features to check, mint, burn, transfer, and delegate voting power of/from an account.

The Action Plan
It seems like the basic functions of the module have been well-developed. Great work! 👍

I'm assuming you're looking for help with the policy-related/systematic side of the Contributors DAO such as specifying and documenting the criteria for memberships, voting power distribution between tiers, the quorum, etc. Am I on the right track?

If so, I propose we move forward in the following steps:

  1. Pick up from issue #503 to renew the documentation on the specs/policies (Maybe we can refer to Manfred's recent talks and slides)
  2. Request for a review from the core team and active community members such as Ray Qin (Piux) for finalization.
  3. Develop missing features on gor based on the finalized specs.
  4. Once gor is complete, we use it to create the MVP of the Contributor DAO realm.

I think I can deliver Task 1 by early next week, and work on Task 2 afterwards. Maybe we can get some help from other devs from the core team or the community with the review for 3 & 4. Let me know what you think!

@adr-sk
Copy link
Contributor

adr-sk commented Aug 28, 2023

Hey @ltzmaxwell , the proposal on Issue #503 has been updated. I think we now need a review from members of the core team and the community before we proceed with the development. Tagging some giga brains for help🙏

@jaekwon @michelleellen @moul @zivkovicmilos @MichaelFrazzy @piux2

@MichaelFrazzy
Copy link

Looks incredibly useful so far! Went through the first couple files, will continue reviewing them all tonight and tomorrow. Happy to send over the current working version of the VotingPower equation at any point as well

@adr-sk
Copy link
Contributor

adr-sk commented Aug 29, 2023

I'd love to take a look at the equation! If it's already somewhere on GitHub, could you please point me to the repo? If not, all of my contact info is in my GitHub profile, so feel free to share the file in whichever way works best for you. Thank you 🙂

@MichaelFrazzy
Copy link

MichaelFrazzy commented Aug 29, 2023

@adr-sk it's largely the same geometric series equation from your proposal/issue in February if I am remembering correctly! Except it is 7 tier and we are currently using 51% instead of 66% or 2/3rd. Also Tier 1 looks like it's going to be fixed at 51% of VotingPower no matter what now.

Still finalizing what is going to be used as the constant though... maybe 45%-49% or potentially even reverting back to 2/3rd. I'll have a long issue up as soon as it gets reviewed this or next week where I reference your original issue, but until then:

M + M0.51 + M(0.51)^2 + M*(0.51)^3 + M*(0.51)^4 + M*(0.51)^5 = 0.49

  • Tier 1: 51% total voting power

  • Tier 2: 24.99% total voting power

  • Tier 3: 12.1451% total voting power

  • Tier 4: 6.194101% total voting power

  • Tier 5: 3.16911151% total voting power

  • Tier 6: 1.616206868% total voting power

  • Tier 7: 0.825265623% total voting power

Side note, it's also looking like WORX has superseded GNOSH as the point system name moving forward.

@adr-sk
Copy link
Contributor

adr-sk commented Aug 31, 2023

@MichaelFrazzy Thank you for your comment! Reviews like this are really helpful. I've updated the proposal to incorporate your suggestions.

In terms of finalizing the specs, I guess it makes sense for us to wait until the issue that you're preparing comes up. Hopefully, we can gather more reviews from other members in the meantime. What do you think?

@jaekwon jaekwon changed the title add examples/gno.land/p/governance WIP add examples/gno.land/p/governance Dec 18, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🧾 package/realm Tag used for new Realms or Packages.
Projects
Status: No status
Status: 🌟 Wanted for Launch
Development

Successfully merging this pull request may close these issues.

6 participants