[Proposal] Improve Sputnik Framework

Project title: Sputnik Improvements Proposal
One-liner: A collection of minor improvements for more creative and flexible governance systems.
Project DAO: Voyager DAO
Challenge area or bounty: “ Better DAO frameworks on NEAR
Slides: Introduction | Voyager
Repo: ~https://github.com/cmwaters/voyager~

Project members

  • Callum Waters (cmwaters.near)

Project summary

The Sputnik DAO contract provides a solid foundation for the governance of organizations on NEAR. This proposal lists a collection of ideas with the aim of exploring more creative and flexible governance systems and extending the current Sputnik framework. This proposal is part of the Open Web Governance Challenge.

  1. Non binary voting choices - Currently, all proposals are based on a binary yes/no voting system (with the addition of a veto vote against spam proposals). While this covers a broad set of use cases, there may be some proposals that benefit from the ability to express more nuanced preferences. An apt example is the creation of bounties. A proposer could allow the members to vote on the amount they think the reward should be and the end result is the weighted medium of everyone’s preferences. Non-binary voting choices could also consist of proposals that want to use multi-choice or ranking of preferences. This would be implemented via modifying the VotePolicy.
  2. Pluggable voting mechanisms or tally functions - This ties partly with the aforementioned idea insofar that in some cases we can’t simply add all the choices together. However, even with binary proposals we may want to experiment with a different form of tallying the votes. One good example is quadratic voting where the the square root of the weight is added.
  3. Better Support for Weight Based Groups - Sputnik uses roles to differentiate between different members in a DAO. This is effective for having permissioned sub groups but doesn’t align so well with the notion of a group of token holders (each with varying wealth). From looking at the codebase, there seems to be some attempt to create more intuitive DAOs using token weights. I would propose to extend this by abstracting out roles from weights; thus members with the same role could conceivably have different weights. In addition, weights should be allowed to be changed and thus follow the contributions (and withdrawals) from the members within the DAO (or based on some other potentially arbitrary metric).
  4. Multi-Message Proposals - This is a somewhat self-explanatory suggestion. Sputnik currently allows only one “action” to occur as a result of a proposal i.e. one transfer or one change of policy or a membership change. In some cases it may be sensible to group together multiple actions in a single proposal.
  5. Quorum - The Sputnik framework requires a minimum participation equal to the threshold of the VotePolicy i.e. if the threshold is 50% then at least 50% of the group must vote yes. A quorum is a variable which sets the minimum amount of participation. In large groups we might be content if only 40% vote (of which at least 50% must approve to pass the proposal). In small groups we may want a 50% threshold but demand that at least 75% vote. By having both a quorum and threshold variables we allow for greater flexibility.
  6. Flexible Defaults - It is implicit in the design of the system that if a member doesn’t vote at all for a proposal that it effectively counts as a “reject” vote. This is sometimes not the desired behavior. In fact, amongst many groups, holding a vote is more a last resort when trying to decide upon something. From this notion, it may be favourable if some kinds of proposals defaulted to “approve”. Thereby most people don’t have to submit their consent, it is automatically assumed and instead only those wishing to “reject” the proposal need to vote.
  7. Withdraw and Amend Proposal - This last proposal allows for some simple UX improvements. In the case of submitting a proposal, it’s possible that the proposer may include a mistake in the description or other elements of the proposal that should be allowed to be amended. It is likely that no ammendments can be made that change the underlying semantics of the proposal but are just for cosmetic changes. Similarly, it may be beneficial to introduce a period at the start of the proposal lifespan where the proposer can quickly withdraw it.

These ideas probably offer varying levels of value with some being more experimental and others more practical. There are also varying tradeoffs when it comes to implementing these changes. However, most of these changes can be made independent from one another so it may also be feasible to just accept a subset of these ideas.

I also acknowledge that this was submitted after the deadline but felt that it was better to submit something late than nothing at all.


Wow! This proposal is really intriguing ~ so many precisely described ways to improve the Sputnik DAO framework. I’m curious to learn how you’d prioritize these ideas. Considering there are 2 weeks of hackathon remaining, what will be your next steps? How might contributors in the Sputnik DAO community provide support?

Don’t worry too much about deadlines. That’s one benefit of Sputnik DAOs ~ every proposal has its own timeline. You only missed the (flexible) deadline for that initial activation week, in which bonus rewards were available for DAOs coordinating hackathon projects. You’re definitely still eligible for the grand prizes of this Governance Challenge, and hackers may continue submitting payout proposals for the Metagov DAO council (and others) to review.

Please don’t hesitate to reach out with any more thoughts or questions. Thank you so much for sharing all this helpful feedback!

I think within the remaining two-week period of the hackathon, I would like to try bundle together an implementation consisting of (1, 2, 3, 5, 6). I see these as roughly overlapping as they all constitute the way voting happens and they way it’s counted. 4 and 7 can be done separately (either by myself if I get the time or someone else in the community if they feel it’s valuable)

1 Like

Hey @cmwaters, are you planning on presenting your project today? We’re online at https://www.airmeet.com/event/de5a63d0-a1f4-11eb-abd7-f5ba22c554bf

Hey, I was unfortunately away yesterday and so wasn’t able to present my project. I would have been really interested to discuss it with people. Here’s an overview of the features I implemented: Features | Voyager. I’m not sure if there are any there you would consider upstreaming to Sputnik but would be happy to help out if so.

1 Like

Hi @cmwaters, you won first place for the “improve SputnikDAO framework” bounty! Your DAO will get a payout when this proposal goes gets passed: SputnikDAO

If you’re not already in the Telegram, you can join it to continue the discussion: