near-daos / sputnik-dao-contract

Smart contracts for https://app.astrodao.com
https://astrodao.com/
MIT License
108 stars 81 forks source link

Proposal Deadline introduced #102

Open zavodil opened 2 years ago

zavodil commented 2 years ago

Please review how we can introduce time-based voting by setting deadline parameter for proposals. It means that proposal will be finalised after the deadline even without a majority vote. It may me useful for a really large DAOs. I don't know Sputnik DAO structure in details so may be my implementation is naive.

TrevorJTClarke commented 2 years ago

@zavodil will need to review more in depth, but I believe this is actually duplicate logic. Maybe @constantindogaru has more insights, but the DAO policy configures a proposal_period that proposals utilize a check against.

See: https://github.com/near-daos/sputnik-dao-contract/blob/main/sputnikdao2/src/policy.rs#L156 and: https://github.com/near-daos/sputnik-dao-contract/blob/main/sputnikdao2/src/policy.rs#L397

I think a better approach would be to extend the use of this proposal_period, with constraints configured by DAO.

zavodil commented 2 years ago

@zavodil will need to review more in depth, but I believe this is actually duplicate logic. Maybe @constantindogaru has more insights, but the DAO policy configures a proposal_period that proposals utilize a check against.

See: https://github.com/near-daos/sputnik-dao-contract/blob/main/sputnikdao2/src/policy.rs#L156 and: https://github.com/near-daos/sputnik-dao-contract/blob/main/sputnikdao2/src/policy.rs#L397

I think a better approach would be to extend the use of this proposal_period, with constraints configured by DAO.

Yep I saw it, but current implementation of proposal_period is leading to proposal expiration only, my intension was to resolve proposal instead, that's why I introduced a new optional variable.

ctindogaru commented 2 years ago

Hey @zavodil, I understand your point, but this shouldn't be needed. If the DAO is set up correctly, only certain members can vote on proposals and they should reach consensus on all of them. If the proposal hits the deadline and no consensus has been reached, it means there was a problem with the proposal itself or the DAO configuration (maybe more/less members should have the right to vote).

Now, assuming that we implement what you're suggesting, please review the following scenario:

The idea is that you need consensus for a proposal to pass, you cannot rely on the deadline.

zavodil commented 2 years ago

@ctindogaru Thank you for your feedback! Current DAO design is great for compact DAO (as you said in your example: 2-3 persons). My intention is to empower a really large DAO with hundreds of participants/councils, in which case it will be completely impossible to hit a quorum and deadline proposals might come into play. Parameter min_deadline_period could be set in a DAO config, it could be longer than 3 days for DAO with huge budgets.