Tally governance: where voting in a DAO breaks
Voting in a DAO breaks not at proposal creation but at counting. Tally and Governor calculate quorum from a snapshot of balances at the block when the proposal was submitted: if vote delegation happened later, a wallet with tokens does not count toward quorum.
From the outside, this looks like failure despite clear support, and the quorum threshold remains unreachable amid lively chat activity.
The second class of failures is a stuck proposal. The decision passed but remained queued with a delay: the operational multisig lacks an execution role, the proposer's authority was rotated, and no one is left to execute.
Execution rights scattered across roles, and rolling this back with a new vote will not be quick — quorum and queue must be passed again.
The cost here is not in spent transactions but in trust: the community sees that voting does not turn into a protocol change and stops participating. Activity drops, the next quorum is even harder to assemble, and governance effectively shifts to those with enough weight.
All three scenarios are consequences of configuration, not voter errors: delay, voting window, proposal threshold, and role matrix are set in Governor and are almost never revisited after launch. We examine exactly where DAO voting breaks and how configuration closes it.
What a managed DAO voting loop provides
Governance parameters are set when the Governor contract is deployed and then determine the behavior of the entire voting system.
The quorum threshold sets how many votes must be cast for a decision to be considered adopted, while the proposal submission threshold cuts off the flow of empty initiatives.
The execution delay between adoption and application of a decision gives participants time to exit the protocol or challenge a contentious change.
The Tally dashboard collects the status of each proposal in one place: how many votes for and against, who delegated voting rights, at which block the snapshot of rights was recorded.
Transparency of results becomes verifiable rather than declarative — the numbers in the interface are checked against network data independently of it.
Protection against manipulation is not built on a single mechanism. A snapshot of voting rights at the block preceding the start of voting closes the scheme of buying votes with borrowed funds right before submission.
Quorum is calculated from the total number of tokens, not from votes cast — the scenario where a small share decides amid a silent majority stops working.
The execution period of a proposal also becomes a manageable value: the window between adoption and mandatory application is configured to the project's rhythm — short for operational edits, long for changes affecting the treasury.
Voting participation grows not from persuasion but from predictability of rules: it is visible when voting closes, when the decision takes effect, and how the outcome is verified.
Hence measurable effects — the share of proposals reaching quorum without extension, average time from submission to execution, number of challenged decisions.
Three approaches to integration: platform, custom contract, hybrid
Three approaches differ in who is responsible for vote counting and the entry point for holders. A ready-made voting loop — for example, Tally — takes on indexing contract events, the proposal list, and voting history: a governance workflow appears immediately after connection.
A custom governance contract is written for your logic — quorum thresholds, execution delay, proposal submission order. A hybrid scheme keeps the contract your own while giving display and notifications to the platform.
| Option | When it fits | Limitations |
|---|---|---|
| Ready-made voting loop | Voting logic is standard, launch needed in a short time | Interface and metrics are set by the platform; non-standard proposal types will require customization |
| Custom governance contract | Special rules: custom thresholds, execution via queue, multiple chambers | Interface, event indexing, and support are handled by you |
| Hybrid scheme | Your own logic is already running, a convenient entry point for holders is needed | Monitor compatibility between the contract and platform expectations |
Vote delegation affects all three options: the platform reads delegation accounting from the contract, so check that weights are recalculated at the snapshot moment, not at the moment a vote is cast.
Multi-network governance adds a second loop — if proposals are executed across multiple networks, choose a scheme with an explicit binding of proposal ID to network, otherwise votes and results will begin to mix.
Implementation order: from audit to governance handover
The governance scheme breaks not at voting but at parameters: quorum threshold, execution delay, treasury rights. Therefore implementation follows a six-step route — each step relies on the previous one and is verified before assets fall under contract governance.
- Governance scheme audit. We check how decisions are made now: who submits proposals, what quorum threshold is in effect, where the treasury is held, what roles have already been granted. The output is a map of discrepancies between how the community describes the process and what the code actually executes.
- Role design. We break down authority: proposal author, delayed executor, cancellation role, parameter administrator. Each gets minimally sufficient rights, and multisignature keys are distributed among different participants.
- Contract parameter configuration. Submission threshold, quorum, voting period, execution delay, change step — we select them based on real delegate activity rather than template values.
- Test vote. In a separate network, we run the full cycle: submission, voting, queuing, execution. We check quorum reachability with the actual number of delegates and the correctness of rolling back a rejected decision.
- Treasury migration. We transfer assets and disposal rights to the new governance contract and close old access. First — a controlling share, the remainder after confirmed execution of a test proposal.
- Governance handover. We remove technical keys, give the administrator role to the chosen community structure, and record the parameter change procedure and documentation. After that, parameters are visible and changed through the Tally interface by voting, without our involvement.
Implementation artifacts: configurations, diagrams, procedures
After launch, the entire configuration remains in your repository, not in chat or someone else's control panel. Below is the list of what we hand over along with access and walkthrough: using it, the team can change parameters without reconstructing logic from indirect signs.
- Configuration files: quorum threshold, voting period, execution delay — with comments on what each value changes and what a shift in each direction leads to.
- Role and rights map: who submits, who cancels, who executes, which role is assigned to the multisig, and where the boundary lies between administrative and operational authority.
- Proposal procedure: mandatory description sections, minimum discussion period before voting starts, requirements for the recipient, and the procedure for withdrawing a proposal.
- Participant guide: wallet connection, vote delegation, checking proposal status, actions for a failed transaction.
- Recovery plan: rollback of a failed proposal, procedure for loss of key access, transfer of rights between multisigs.
- Process diagram: the path from draft to execution of an adopted decision, with marked points where human intervention is mandatory.
- Change log: where configuration versions are recorded and how to see who changed thresholds and when.
All artifacts are checked on a test network before handover — the team receives a working configuration, not a description.
Case: share of failed proposals dropped threefold
The participant network was growing, but voting took place in fragmented channels: some voted in chat, some manually sent a transaction, and some holders simply did not notice new decisions.
The share of failed proposals held at about one third — not because the community was against, but because quorum was not reached in time. Time to quorum stretched for days, and proposers withdrew their proposals so as not to waste the voting period.
What was changed in the contract
We configured the Governor contract to the community's real rhythm: the delay before voting starts, its duration, and the quorum threshold were tied to holder activity rather than default values.
The Tally interface was connected to the contract so that the current quorum, status, and time until voting ends were visible in one place. A participant stopped guessing how many votes were missing and could deliberately delegate them before the proposal expired.
The share of failed proposals dropped threefold — from about one third to one tenth. Time to quorum shrank from several days to hours: a proposal no longer "hung" because participants learned about the start of voting immediately.
The number of canceled decisions fell almost to zero — proposers stopped withdrawing initiatives due to the risk of not gathering votes.
We left the voting log and governance parameters open: any participant verifies how quorum was calculated for each proposal. This removes the main source of disputes in governance — distrust of vote counting.
How does platform voting differ from a custom contract?
A ready-made loop like Tally is an add-on over the contract: the service reads Governor events, collects proposals, builds the interface and voting history.
The contract itself remains the source of truth, while the platform gives participants a familiar path: connect a wallet, see active proposals, vote in one click. Launch takes days, but the template sets voting rules, not you.
A custom contract is flexibility in configuring rules at the code level. Quorum threshold, voting window, execution queuing delay, delegation scheme, cancellation right, update procedure — everything is described for your governance model.
Nothing has to be adjusted to someone else's template, but every change goes through a governance procedure — that is your responsibility.
Then there are two practical differences. The cost of participant actions: on the platform they pay only for the vote transaction itself, while in a custom contract you can cut unnecessary storage writes, aggregate delegation, and lower the cost of mass voting.
Speed of changes: the service updates on its own schedule, while a custom contract changes when you need it to.
A separate topic is dependence on the service. If the interface is unavailable, proposals and votes do not disappear: they can be submitted and withdrawn through direct calls.
But for an ordinary token holder, the disappearance of the familiar interface means lost turnout, and low turnout breaks quorum. That is why a hybrid is more often chosen: proven rules from a ready-made template, and critical ones via a custom contract.
Tally governance: technical doubts before implementation
For Tally and a Governor contract, doubts arise not at the level of "does it work or not" but at the level of fine settings.
We examine four questions that come up during design: the fate of already issued tokens, limiting the circle of voters, proposal cancellation, execution delay.
Tokens were already distributed — won't one address get control immediately after launch?
Weight is calculated not by current balance but by a snapshot of state at a selected block. Distribution after the snapshot does not participate in the current cycle, and transfers within one block do not allow voting the same volume twice. If distribution changes, it affects the next cycle and the quorum threshold along with it.
How to limit the circle of voters?
Through an access module: a list of addresses, a stake threshold, or vote delegation. The rule is fixed before the first proposal — remaking it after the fact in favor of one group is both more expensive and more noticeable to the community.
Who can cancel a proposal and why is execution delay needed?
The cancellation right is placed in a separate role — usually to a multisignature scheme rather than a single administrator, and it works only until execution.
The delay between an adopted decision and its application is set separately: during this window, participants have time to react to key compromise. Quorum and threshold are selected so that routine decisions do not stall and contentious ones do not pass by a narrow margin.
Let's review your voting scheme and come back with an estimate
To make the voting scheme audit and work estimate rely on facts rather than guesses, it is enough to attach the configuration of the governance loop to the request.
From it, one can see which Governor parameters will have to be changed, where rights migration will be required, and what in the Tally integration will take most of the time.
- address and version of the Governor instance, network, and the types of proposals that actually go to a vote;
- governance token: accounting standard (fungible or non-fungible), whether delegation is enabled and from which block the weight snapshot is written;
- current parameters: start delay, voting duration, submission threshold, quorum, execution window;
- execution loop: who puts a decision into action — TimelockController or a multisignature wallet;
- delegation scheme: list of delegates, requirements for their publicity, whether vote counting across multiple tokens at once is needed;
- roles and access: who can cancel proposals, pause execution, update the implementation;
- panel preferences: voting only through Tally or a custom proposals page with history and notifications.
In response, you will receive a phased implementation plan, a scope of work with responsibility boundaries, an estimate and timelines, as well as a list of risks and rollback points. Describe the task — we will come back with an estimate and a plan.







