Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Tally is the software layer for tokenized organizations. Winning teams use Tally to launch tokens, govern protocols, and grow with staking
Launch once, build forever.
Tally's system is designed with flexibility in mind. You can launch just the token, pair it with staking and governance from day one, or progressively enable those components later. This modularity ensures technical teams aren’t locked into premature decisions while still laying a foundation for future expansion.
From contract deployment to governance activation, Tally supports your team across every phase of launch:
ERC20 token contract deployment (mint/burn, cap, upgradeable, etc.)
Optional components: transfer restrictions, vesting, lockups
Multichain support (bridged or canonical setups)
Progressive rollout flows: e.g. claim site + staking before transferability
Optional governance setup and delegation frameworks
Tally's contracts are widely used and actively maintained. They're deployed across Ethereum mainnet and major L2s and used in production by protocols like Hyperlane, ZKsync, Wormhole, and more. Security and regular audits are first principles in Tally's deployment process.
Tally offers branded, custom-built claim and staking frontends tailored to your protocol. UI and UX are developed in close collaboration with your team to ensure brand alignment and user clarity.
Tally helps your team prepare for a clean launch:
Pre-launch links and interfaces
Educational and onboarding materials
Page scaffolding
Tally offers protocols the ability to launch tokens with governance from day 1. Launching with governance includes everything in the traditional token launch package. Teams can also add governance at a future date.
Tally provides a comprehensive governance solution. These features are complete and ready to be used by the community.
Custom Domain: A version of our governance platform that can be hosted at a custom domain.
Voting: Secure, transparent, and efficient voting mechanisms to ensure that all governance decisions reflect the will of the community.
Proposal Execution: Automated execution of approved proposals.
Proposal Drafting and Collaboration: Collaborative proposal creation through tools designed to enable multiple contributors to work together seamlessly.
Proposal Creation with Arbitrary Executables: Proposals can be created with customizable executable actions, allowing for a wide range of governance activities and decisions to be automated and enforced onchain.
No-Code Transfers: Easy and secure fund transfers within the community without requiring any coding skills.
Notifications: Real-time notifications about important events, proposals, and decisions within the community.
DAO Analytics: Detailed analytics and insights into community activities, member engagement, proposal outcomes, and overall performance.
Gnosis Safe Management: Gnosis Safe integration for secure and efficient management of community funds and assets.
Wallet Support: Native support for a wide range of wallets, ensuring accessibility and convenience for all community members.
Public API: Tally's comprehensive public API can power custom governance applications and integrate with other tools and platforms within the Ethereum ecosystem.
Tally will deploy your governance smart contracts, including Governor with Flexible Voting extension and Timelock. These will operate with your governance token seamlessly.
Advising on Governance Parameters: Establishing robust governance parameters is essential for effective decentralized governance. Tally will provide detailed guidance on setting the following key parameters to ensure smooth and effective operation of your governance system:
Proposal Threshold
Quorum Requirement
Voting Period
Voting Delay
Execution Delay
Tally provides a comprehensive Delegate Registration flow, designed to streamline delegate acquisition.
Governance Launch Announcement: Tally will launch a targeted campaign ~1 week prior to the launch, with a dedicated launch page (e.g.,https://www.tally.xyz/gov/DAOname) to build awareness.
Delegate Sign-up Process: Tally will implement an intuitive sign-up flow for users interested in becoming delegates.
When delegation is not part of the initial claim process, the likelihood of subsequent delegation diminishes significantly. Inactive tokens sitting in wallets hinders active governance participation and that’s why we really recommend delegation go hand in hand with airdrop claim flow.
To ensure a smooth and convenient transition from token claim to active governance participation, Tally provides a post-claim delegation experience.
Custom Token Claim Interface: Tally will create a custom UI for users to claim the governance token and immediately delegate their tokens to ensure governance participation from the onset.
Seamless Delegate Discovery and Selection: Tally will develop a user-friendly interface that guides token holders through the process of discovering and selecting delegates, immediately following the token claim experience.
Delegate Profile Pre-population: Tally will automatically populate delegate profiles with information gathered during the call for delegates phase, streamlining the selection process for token holders.
Transparent Voting Power Display: Tally will provide users with clear insights into their voting power alongside detailed information on incoming and outgoing delegations.
Tally has the largest media presence in the onchain governance space, with DAO Talk podcast, The Tally Newsletter, our Twitter, and the Tally blog. We are excited to leverage these platforms to spread the word about the protocol's launch, vision and strategy, and needs for delegation.
Tally provides the infrastructure and guidance to launch and operate tokens at any stage. Whether you’re shipping tokens with governance on day one or rolling out in phases, Tally's platform is built on years of helping the industry's largest protocols successfully launch tokens . We’ve supported launches like Hyperlane, , Arbitrum, ZKsync, and more.
Additionally, Tally can integrate with tooling like , or other vesting and lockup providers depending on your needs. Some components may require coordination across teams.
Token with ERC20 Votes Deployment: Tally will deploy your token, a non-fungible, non-transferable token that can be minted and revoked by the Governor. ensures that your governance token supports vote delegation and efficient tracking of voting power over time.
Governor and Timelock Contracts Deployment: Tally will deploy the . The Governor contract facilitates the proposal and voting process, while the Timelock contract enforces a delay between the proposal's passage and its execution.
Our flexible voting setup prepares you for more advanced governance structures. With flexible voting, you can implement sophisticated governance models, such as and partial delegation, in the future. This adaptability is crucial for evolving governance needs, ensuring that your system can grow and adapt as the community scales.
Newsletter Announcements: Tally will feature the protocol's call for delegates in , reaching an audience of over 1500 governance enthusiasts and potential delegates.
Tally will interview the DAO's core team members and highlight launch in an exclusive episode.
Tally will spotlight the protocol and its vision.
Tally will co-market the DAO's launch through strategic tweets and retweets.
Tally will co-create a blog article about the DAO's governance disseminated through Tally’s established blog and reshared through our communication networks.
A custom claim page is essential for a successful token launch. Tally’s custom claim pages provide a secure, branded gateway for distribution while protecting users from scams and phishing attempts. Custom claim pages create trust, brand uniformity, and a solid foundation to ensure a smooth token launch campaign.
Tally creates a custom UI for users to claim the governance token and immediately delegate their tokens to ensure governance participation from the onset.
Included: Custom Domain, Delegate Registration
Tally provides a comprehensive Delegate Registration flow, designed to streamline delegate acquisition.
Tally will launch a targeted campaign ~1 week prior to the launch, with a dedicated launch page (e.g. https://www.tally.xyz/gov/DAOname) to build awareness.
Tally will implement an intuitive sign-up flow for users interested in becoming delegates.
Tally will feature the DAO's call for delegates in The Tally Newsletter, reaching an audience of over 1500 governance enthusiasts and potential delegates
Tally will host an in-depth podcast interview with a key protocol leader(s) to publish via the DAO Talk podcast feed.
To ensure a smooth and convenient transition from token claim to active governance participation, Tally provides a post-claim delegation experience to enhance user engagement and simplify the delegation process.
Tally will create a custom UI for users to claim the governance token and immediately delegate their tokens to ensure governance participation from the onset.
Tally will develop a user-friendly interface that guides token holders through the process of discovering and selecting delegates, immediately following the token claim experience.
Tally will automatically populate delegate profiles with information gathered during the call for delegates phase, streamlining the selection process for token holders.
Tally will provide users with clear insights into their voting power alongside detailed information on incoming and outgoing delegations.
A Governor contract expects a particular interface from its token contract. An OpenZeppelin Governor requires a token contract that implements the ERC20Votes interface or the ERC721Votes interface.
If the token is already deployed and it cannot be upgraded, the best workaround is to deploy a token wrapper contract that adds the voting interface to an existing token.
Users will have to wrap their tokens to vote, and then unwrap them to use them in places that expect the unwrapped version. They may also be confused about where their token went after wrapping if their wallet doesn’t know about the wrapped version.
One thing to note is that setting up voting already requires setup: token holders have to delegate their votes – even to themselves – before voting. The wrapping step could be combined with delegation to keep the process simpler for token holders.
Interested in adding governor to an existing token? Reach out to
Staking is the crypto-native way to align protocols with token holders
Blockchain protocols need sustainable token economics and aligned holders to succeed.
Value accrual offers several key benefits:
Stakeholder alignment: Align tokenholders with protocol success
Sustainable tokenomics: Establish a foundation for ongoing value creation
Enhanced retention: Encourage long-term participation in the ecosystem
Protocol resilience: Secure the protocol with economic assets
Protocols must move beyond initial hype cycles. Value accrual mechanisms help by distributing value directly to participants who secure and govern the network.
Tally's value accrual product is a complete staking solution for protocols.
Staking on Tally distributes protocol revenue or native issuance to tokenholders. It's the foundation for open, trust-minimized systems.
Optionally, the rewards can be incentives for particular actions. Rewards can depend on particular behavior, like validating the network, long-term holding or governance activity.
Tally staking offers:
Flexible staking infrastructure: Implement staking for your protocol’s specific needs.
Tally's solution works for protocols at any stage. It supports new token launches and established projects. This guide covers both strategic direction and technical details.
1. Staking contracts distribute rewards over time
Rewards can come from anywhere. The most common sources are 1) protocol revenue and 2) issuance of the protocol's native token. The rewards can be in any ERC20 token or even in more than one token.
Tally's staking contracts distribute rewards among eligible staking users over time.
2. Tokenholders stake protocol tokens for a share of the rewards
Tokenholders stake the staking token: the protocol's native token. Then, they earn a share of the rewards proportional to their share of all staked tokens over time. They can stake, claim rewards, and unstake at any time.
Staking supports governance. If the staking token is also a governance token, holders can use their staked tokens in governance. That way, tokenholders don't have to choose between governance and receiving rewards.
Optionally, the staking system can have eligibility criteria stipulate particular actions from tokenholders to get rewards. For example, it could require that staked tokens be active in governance to earn rewards. There's a large design space for incentivizing token-aligned services.
: Distribute rewards from protocol revenue, treasury assets, token emissions, or all of the above!
: Staking is compatible with governance, so that holders don’t have to choose between rewards and governance. Optionally, rewards can be conditional on active participation in governance.
: Pay stakers and operators to validate protocol security.
: Increase rewards for long-term alignment with stake streaks.
Launch a new token with built-in utility, or enhance your existing tokenomics. Either way, Tally's product provides the foundation for sustainable economic alignment. Get in touch with our implementation and sales team to learn more: .
Tally's value accrual product offers several key features that help protocols create sustainable tokenomics. Each feature addresses specific protocol needs and can be customized to fit your goals.
Tally's staking system allows protocols to return protocol fees to token stakers. This creates direct economic alignment between protocol usage and token holder rewards.
How it works:
Protocol governance decides what percentage of fees to distribute to stakers
Fee distribution can be automated through smart contracts
Rewards can be paid in native tokens, ETH, stablecoins, or other assets
Unlike other staking systems that force users to choose between earning yield and participating in governance, Tally's solution supports both.
How it works:
Staked tokens can delegate their voting power
Optionally, rewards depend on the tokens being active in governance
Other protocols like Rarible and Arbitrum are exploring making staking rewards conditional on delegating to an active delegate, further incentivizing governance participation.
Tally's staking system is compatible with staking and restaking protocols that provide validated services.
How it works:
Native tokens can be used to secure actively validated services
Compatible with protocols like EigenLayer and Symbiotic
Aligns token holder incentives with network security
Stake streaks reward long-term holders, creating incentives for extended token holding periods and reducing market volatility.
How it works:
Stakers' earning power increases over time
Rewards scale based on continuous staking duration
Encourages long-term protocol alignment, and reduces token velocity
Customer example: , allowing token holders to benefit directly from protocol growth and usage.
Customer example: Obol implemented staking with governance integration, ensuring their stakers can earn rewards while still contributing to protocol governance decisions. Read the OBOL case study .
The REWARD_INTERVAL is configurable when deploying a new reward source. When there’s a new reward, the staking system updates everyone’s reward schedules based on earning power. The rewards are distributed over a period of time, the REWARD_DURATION.
Yes, stakers can create multiple staking positions. Each staking position can have its own delegate.
Yes! Staking is compatible with standard governance tokens and Governor contracts out-of-the-box.
The staking system delegates the voting power of staked governance tokens. It uses the same methods that regular tokenholders do, so no changes to the underlying system are needed.
The underlying governance token handles snapshotting. Staker puts the governance tokens for each delegate into a separate account, called a “surrogate”. Then, it calls delegate() on the underlying governance token to distribute voting power. This way, the underlying governance system does not have to change.
The current version of Staker lets tokenholders withdraw instantly. Withdrawal delays create an incentive for dangerous LSTs, which can blow up if there’s a duration mismatch.
Yes! The LST can delegate its voting power directly, like a normal governance token. If the holder doesn't delegate the votes, the LST uses the delegation strategy instead. That way, LST voting power is always active in governance.
Liquidity risk is minimal, because unstaking is instant. If there is a price difference between TOKEN and stTOKEN, arbitrageurs can arbitrage it away.
Yes, that's one of the primary motivations. LST holders can have it all. They can participate in governance, earn rewards for doing so, and use their position as collateral. The LST is a rebasing token, but it's easy to wrap it into a non-rebasing LST.
The underlying governance does. e.g. Arbitrum governance would pick the delegation strategy for `stARB`. If Arbitrum governance does not approve one, Tally Protocol's governance picks a default.
Delegation strategies have no special powers that might present a danger. Token holders are free to change delegation strategies at any time. Poorly implemented delegation strategies do not pose a feedback loop danger. In the worst case, users withdraw their tokens or delegate them by hand.
Small organizations and communities that are just getting started with governance can utilize Tally’s “add a DAO” feature and deploy their own governance. For a full list of standard Tally features click .
If you are interested in Tally's advanced features, contact our sales team .
Yes, see – for example –
Governing protocols on multiple chains
Your DAO, everywhere. MultiGov lets DAOs meet token holders where they are. DAO members can govern an on-chain DAO from any chain. MultiGov supports DAOs on Solana, Ethereum and EVM-compatible L2s. Multichain DAOs will lower barriers to participation and reach users everywhere.
Until now, DAOs operated their governance on a single chain.
On L1
Many of the oldest and largest DAOs have their token, Governor and treasury all on Ethereum mainnet. Rising L1 gas costs make that setup increasingly expensive. MultiGov gives voters a way to lower gas costs.
On a single L2
Newer protocol DAOs might launch on one network. Once they find product-market fit there, they often want to expand to other ones. MultiGov gives protocols a way to meet users where they are.
Save on gas costs
Govern protocol across chains
Meet community where they are
DAO can follow the protocol to new networks
MultiGov DAOs use a hub-and-spoke model. This model combines well-understood building blocks – governor, token bridges, and message-passing.
On each "spokes" of a MultiGov DAO, there's a bridged gov token and a spoke Governor. The bridged gov token keeps track of voting power on that chain. When there is a proposal, the voters on that spoke chain vote on a spoke Governor. Votes on each spoke Governor can be aggregated and bridged back to the hub chain.
The Wormhole DAO, powered by $W token holders, will be the first to use this pioneering multichain governance system. Wormhole's DAO will enable token holders on any supported chain to engage in the governance process. This approach to governance will enhance the user experience, making community contributions easier.
Tally has partnered with on MultiGov, which powers multichain governance for DAOs.
On the "hub" chain, the DAO has a standard and with the . The hub can be any supported EVM chain. Tokenholders can choose bridge their hub governance tokens to spoke chains.
To learn more about how DAOs can use MultiGov, watch Tally CTO Raf Solari’s ETH Denver 2024 talk on Multichain DAOs
If you’re interested in implementing MultiGov for your protocol, reach out to our sales team at
Tally is the software layer for tokenized organizations. Winning teams use Tally to launch tokens, govern protocols, and grow with staking. Foundations, delegates, and token holders use Tally to manage $81+ billion in value for onchain protocols.
Launching a token is a public commitment that sets the foundation for an organization’s economic model, governance structure, and long-term credibility. Tally ensures teams launch tokens the right way with secure, modular contracts; a clear, phased rollout path; and purpose-built interfaces for claims, staking, and governance. Whether you're issuing a governance token or building utility into your protocol, Tally gives you the tools to do it cleanly, transparently, and at scale.
With Governance Launch, Tally deploys the protocol’s governance smart contracts, including Governor and Timelock. These smart contracts enable fully decentralized onchain governance.
Tally will deploy your token, a non-fungible, non-transferable token that can be minted and revoked by the Governor. ERC20Votes extension ensures that your governance token supports vote delegation and efficient tracking of voting power over time.
Tally will deploy the Governor and Timelock contracts. The Governor contract facilitates the proposal and voting process, while the Timelock contract enforces a delay between the proposal's passage and its execution.
Flexible Voting Tally’s flexible voting setup prepares protocols for more advanced governance structures. Flexible voting enables sophisticated governance models like MultiGov and partial delegation.
Tally provides detailed guidance on setting key parameters to ensure smooth and effective operation of the protocol’s governance system:
Proposal Threshold, Quorum Requirement, Voting Period, Voting Delay, & Execution Delay, and more.
Make voting more capital efficient, cheaper or more private
This new building block allows arbitrary delegate contracts to be developed which can unlock all kinds of new use cases, such as:
Voting with tokens while earning yield in DeFi
Voting on L2 with bridged tokens
Shielded voting (i.e. secret/private voting)
Cheaper subsidized signature based voting
The Scopelift team built a Flexible Voting extention with support from Uniswap Grants Program. For implementation details, check out :
Tally is looking for partners to integrate support for this extension. If you're considering deploying a Governor with flexible voting, reach out to us at
Value Accrual: The process by which a token captures and distributes value generated by an associated protocol or network, creating sustainable tokenomics.
Staking: The act of locking up tokens in a smart contract to participate in network validation, governance, or earning rewards.
Tokenomics: The economic model of a token, including its supply, distribution, utility, and incentive mechanisms.
Rewards: Tokens or other assets distributed to participants for contributing to the network, such as through staking.
Yield: The rate of return earned on staked tokens, typically expressed as an annual percentage.
Staker Contract: The main smart contract that manages token deposits, withdrawals, and rewards distribution.
Earning Power: A metric that determines a staker's proportional claim on rewards, which may be equal to or modified from their staked amount.
Earning Power Calculator: A component that determines how rewards are distributed to stakers based on various criteria.
Reward Notifier: A contract that informs the staking system about new rewards and triggers their distribution.
Delegation Surrogate: A contract that holds staked tokens and delegates their voting power to a specified address.
Reward Stream: The mechanism by which rewards are distributed gradually over time rather than all at once.
Reward Duration: The time period over which rewards are distributed (default 30 days in the Tally system).
Delegation: Assigning voting power to a specific address without transferring token ownership.
Delegatee: The address that receives voting power through delegation.
Governance Token: A token that grants voting rights in a protocol's governance system.
Governance Staking: Staking that preserves governance voting rights while earning rewards.
Auto-Delegation: A system that automatically delegates voting power according to configurable rules.
Liquid Staking Token (LST): A token representing a staked position that can be transferred or used in DeFi while the underlying tokens remain staked.
stGOV: Tally's liquid staking token implementation for governance tokens.
Rebasing LST: A liquid staking token whose balance automatically increases as rewards accrue.
Fixed LST: A liquid staking token with a fixed balance where the token-to-underlying exchange rate changes as rewards accrue.
Withdraw Gate: A contract that enforces a configurable delay when unstaking to prevent reward gaming.
Reward Source: The origin of rewards distributed to stakers (e.g., protocol fees, treasury, or token emissions).
Protocol Revenue: Fees generated by a protocol's operations that can be distributed to stakers.
Stake Streak: A mechanism that increases rewards based on how long a user has been staking continuously.
Bump: The process of updating a deposit's earning power, which may be incentivized with a small reward.
Reward Rate: The speed at which rewards are distributed per unit of time.
Oracle-Based Earning Power: A system where external data feeds influence staking rewards, such as delegatee activity scores.
Overwhelming Support Auto-Delegate: A delegation strategy that only votes on proposals with significant consensus.
Dual Staking: The ability to use staked tokens for multiple purposes simultaneously, such as with EigenLayer.
Restaking: Using already-staked tokens to secure additional protocols or services.
ERC20: The standard interface for fungible tokens on Ethereum.
ERC20Votes: An extension to ERC20 that supports vote delegation.
EIP-2612: A standard allowing gasless approvals using signed messages.
Permit: A function that processes signed approvals without requiring separate transactions.
OnBehalf: Methods that allow actions to be performed on behalf of users via signatures.
Regardless of voting system used (on or off chain, weighted by users or token holdings), the vote itself doesn't trigger execution of the proposal's effects. Instead, the vote serves as instructions for the multisig signers to execute the proposal using their admin priveledges.
is typically paired with a signal voting mechanism to maintain legitimacy. As an example, Yearn, Synthetix, and Sushiswap all use the Snapshot voting tool to let token holders make key decisions and delegate authority.
After considering a proposal in the community's discussion venue, a signal vote will be held to assess support. While this typically involves voting with Snapshot, in some cases communities may use onchain signal voting (eg. early Yearn ) or off chain voting which is weighted by user accounts instead of token holdings (eg. polls in Discourse forums or Discord).
Tally supports a variety of onchain voting mechanisms.
Private voting encrypts individual votes onchain while maintaining verifiable final results. Votes are encrypted when cast and only decrypted after the voting period ends, revealing the final tally while preserving voter privacy.
Private voting can be implemented on top of a Governor with Flexible Voting. Implement the in the Governor, then deploy a shielded pool that uses zero-knowledge proofs or MPC to keep votes private. Voters can move votes into the pool, then the pool sends its vote totals back to the Governor without revealing the votes.
Additional Reading:
Use diff checker to identify any possible differences between an existing Snapshot Proposal and a new onchain proposal made on Tally.
Users can create an onchain proposals of a snapshot proposal on the Tally platform. Voters should use the diff checker to view check what differences are made, if any, in the new onchain proposal on Tally.
Partial delegation is a voting mechanism that allows token holders to split voting power across multiple delegates rather than assigning it all to a single delegate. For example, if a user controls 1000 tokens, the user could delegate 400 tokens to Delegate A, 400 tokens to Delegate B, and self-delegate the remaining tokens.
Additional Reading:
Node integration: Tally integrates the network's (and testnet's) archive node RPC endpoints with our indexers.
Self-serve DAO addition: Tally adds support for the new network in our self-serve flow, allowing new DAOs on this network to be easily added to our platform.
Block explorer integration: Tally integrates the network's block explorer into our system for seamless transaction and address lookups.
API support: Tally provides API access to the network's data for all DAOs added to the platform.
If you're interested in having your network integrated, please contact Tally’s sales team (sales@tally.xyz) with the required information. Once Tally has the necessary details, the integration process can begin as soon as the next business day.
For any questions or assistance during the integration process, please reach out to our dedicated support team via email at support@tally.xyz.
Decentralize multi-sig control of your DAO.
Council elections are a pivotal aspect of decentralized governance, ensuring that the guardianship of a DAO remains in the hands of its community. Elections serve as a testament to the democratic ethos of DAOs, allowing stakeholders to have a say in selecting the individuals who will be at the forefront of safeguarding their interests.
Through a transparent and structured process, they aim to identify and empower those with the expertise, vision, and commitment to navigate the challenges that may arise, all while upholding the principles and objectives of the DAO. It's not just about choosing leaders; it's about reinforcing trust, fostering accountability, and ensuring that the DAO's security apparatus remains robust and responsive.
With Tally's custom-built council elections, elevate your DAO's council elections to the highest standards of excellence and integrity.
In the rapidly evolving world of DAOs, a council serves as a mechanism for stability and security. It consists of designated members with the authority to make necessary changes to the protocol during emergencies. The council's role is not only to govern but also to address potential threats, ensuring the DAO's security and adaptability.
A council is comprised of a certain number of members who are entrusted with the responsibility of making urgent modifications to the protocol during emergencies. Their roles are usually outlined as follows:
Emergency Actions: Addressing critical situations that demand immediate attention, such as potential risks to users' funds. To execute emergency actions, a consensus of a certain number of members is required.
Routine Operations: Apart from emergencies, the council also supervises routine software updates, maintenance, and parameter adjustments, which are considered as "Non-Emergency Actions".
To ensure accountability and infusion of fresh perspectives, the members of the Security Council are elected democratically on a semi-annual basis. Tally can customize all aspects of the election process. Typically, it is structured as follows:
Nomination: Initially, contenders register to become nominees, requiring a certain percentage of votes.
Compliance Period: A period for the foundation to vet the nominees.
Election Period: A period where delegates vote for the nominees, with the voting weight decreasing linearly over the last two weeks.
Results and Implementation: Following the election, the top nominees become the new members of the Security Council, with the results undergoing various time locks before the new members are integrated into the council.
A Security Council operates within a framework that emphasizes security by design, incorporating the following elements:
Constrained Access: Access to the Upgrade Executor, a core component of the governance system, is strictly limited to prevent unauthorized or malicious activities.
Reuse of Existing Architecture: Leveraging existing secure infrastructure to avoid the introduction of new contracts that would require additional security measures.
Adherence to Specifications: The implementation strictly adheres to the guidelines outlined in the DAO's official documentation, ensuring the intended security properties are met.
As a stakeholder in a DAO, the establishment of a Security Council—and an efficiently run election—should matter to you for several reasons:
Security and Integrity: A council acts as a safeguard, protecting the system and its users from potential threats and vulnerabilities.
Adaptability: It ensures that the DAO remains versatile and capable of adapting to changing circumstances without compromising its foundational principles.
Democratic Governance: Elections at regular intervals foster a democratic environment, allowing for the inclusion of new skills and perspectives, and preventing the entrenchment of power.
Resilience: In the face of emergencies, a council's swift actions help maintain the stability and functionality of the DAO, thereby preserving users' trust and investments.
Interested in learning more? Email to set up a chat with our team!
Users can easily draft proposals using proposal templates that are set up by their DAO. Instead of manually locating, copying, and pasting a contract address for a custom action, users can conveniently create a proposal using their DAO’s custom contract address book. Additionally, proposals created using proposal templates are also more easily identifiable on the proposal page since they have human readable names.
To implement proposal templates for your organization, reach out to us at .
Remove barriers to DAO governance participation with gasless transactions.
Every blockchain interaction - whether casting a vote, delegating voting power, or creating governance proposals - requires participants to pay transaction fees (commonly known as "gas fees") on the underlying blockchain network. These fees represent a significant barrier to participation, potentially excluding valuable contributors and skewing governance decisions toward those with greater financial resources.
Relay is a sponsorship system where DAOs can cover the transaction costs for their members' governance activities like voting and delegating. DAOs can now cover the costs that would otherwise prevent members from participating in crucial decisions.
The technical foundation of Relay rests on OpenZeppelin Defender, a trusted security framework in the blockchain world. When a DAO enables Relay, they set aside a specific budget for governance transactions. As members participate in governance activities, Relay automatically handles the complex process of paying transaction fees, making the experience seamless for users - they can simply focus on making thoughtful governance decisions.
Tally maintains this service through a small fee on each transaction, ensuring the system remains sustainable while keeping costs manageable for DAOs. This approach is similar to how payment processors charge small fees to maintain their infrastructure while providing valuable services.
Tally has processed hundreds of thousands of governance transactions, with associated gas fees reaching hundreds of thousands of dollars. These numbers represent not just costs, but potential barriers to participation. Each transaction fee could have been a reason for a valuable member to stay silent instead of contributing their perspective.
When DAOs sponsor transactions through Relay, they're making a powerful statement about their values. They're saying that every voice matters, regardless of a member's ability or willingness to pay gas fees. This commitment to inclusivity strengthens the entire governance ecosystem in several ways:
Enhanced Participation Metrics: By eliminating financial barriers, DAOs can expect increased engagement across their membership base, leading to more representative governance decisions.
Demographic Diversification: The removal of transaction cost barriers enables participation from a broader spectrum of community members, including those in regions where gas fees might represent a significant expense.
Governance Efficiency: With reduced friction in the voting and proposal processes, DAOs can achieve quicker decision-making cycles while maintaining high participation rates.
Long-term Sustainability: By investing in their members' ability to participate, DAOs strengthen their governance mechanisms and ensure continued operational vitality.
For DAOs interested in implementing gasless voting and delegation with Relay, Tally's team can be reached at to discuss specific needs and implementation details.
Optimistic Governance lets a small group of decision-makers propose changes, subject to a veto from the larger DAO. This accelerates operational efficiency by automating routine decisions while maintaining appropriate oversight.
It's best to build Optimistic Governance on battle-tested governance contracts like Governor and Timelock. These modular contracts plug into a rich ecosystem of DAO apps and tools like Tally.
To implement Optimistic Governance, combine battle-tested governance contracts:
One Council NFT contract that determines membership in the Optimistic Council.
One ERC20 contract that determines voting power for vetoes.
Two Governor contracts, the Optimistic Governor and the Veto Governor.
One Timelock contract that holds the DAO assets and/or protocol.
The Optimistic Governor has PROPOSER_ROLE
role on the Timelock
The Veto Governor hasCANCELLER_ROLE
role on the Timelock. The veto Governor's voting period must be shorter than the timelock delay, so that it can cancel proposals in time
If you would like to work with Tally to set up Optimistic Governance for your DAO, email to chat with our team!
Both Governors implement "." Once a majority votes in favor, the voting ends. The Governor can send the proposal or veto to the timelock immediately
Tally's frontend will need to connect the Veto Governor to the Optimistic Governor, so let us know at if you are interested in an Optimistic setup.
Voting has for many delegates on Ethereum L1. Tally provides the infrastructure for DAOs to fund a budget for gasless voting and execute voting transactions via a relayer service. The mechanism operates seamlessly as the allocated budget is submitted to Tally for the facilitation of these transactions.
To learn more about how relay works & why it's important read the
Currently DAO sponsors gasless voting on Tally will be live as of April 4, 2024.
Relay enables free delegation for eligible token holders.
Token holders can delegate their voting power, whether to themselves or a trusted delegate, with Relay generously covering the associated gas fees for these delegation transactions. The mechanism operates seamlessly as DAOs allocate a dedicated budget to Tally for the facilitation of these transactions.
However, certain restrictions are in place to ensure fair participation. To utilize this gasless delegation service, token holders must meet specific criteria, including holding the minimum token requirements stipulated by each DAO. For token holders who do not meet these eligibility criteria, conventional delegation remains an option, with the responsibility of covering gas fees falling on the individual.
Tally will only relay for token holders who hold at least a minimum number of governance tokens. The minimums vary per DAO: 10 ENS, 10 UNI, 30 GTC, 40 ARB, or 50 POOL.
Tally will only relay a delegation transaction once per wallet per DAO.
Cross-post proposals to Discourse with Tally's forum bot.
If you'd like Tally's forum bot to post when voting starts and ends to a Discourse forum, email to chat with our team.
Through our integration with Karma, Tally makes it easy to distinguish high quality delegates from less active delegates.
Delegates receive a karma score in their delegate profile reflective of how actively they participate in governance. Users can see the percentage of how often a delegate participates in governance both on and offchain, as well as how active they are in the DAO’s forums.
To get the Karma integration set up for your community, contact us at .
Standard features are free to use on Tally.
Secure, transparent, and efficient voting mechanisms to ensure that all governance decisions reflect the will of the community.
Automated execution of approved proposals.
Collaborative proposal creation through tools designed to enable multiple contributors to work together seamlessly.
Proposals can be created with customizable executable actions.
Easy and secure fund transfers within the DAO without requiring any coding skills.
Native support for a wide range of wallets, ensuring accessibility and convenience for all DAO members.
Tally's comprehensive public API can power custom governance applications and integrate with other tools and platforms within the EVM ecosystem.
Detailed analytics and insights into DAO activities, member engagement, proposal outcomes, and overall performance.
Currently, there is no cost for adding a DAO yourself on Tally however, a 0.25% fee will apply when proposals are executed. This fee does not apply for customers who partner with Tally for custom governance.
For assitance during the integration process, please reach out to our dedicated support team via email at support@tally.xyz.
Explore your DAO's homepage.
The DAO page shows details about a specific DAO, including current and past proposals, assets, and delegates.
On the DAO Home page, key information & metrics are shown. You'll also see a button to Delegate vote on the right hand side along with your voting power information.
The Proposals page shows a list of proposals associated with the DAO. Any active proposals will be shown at the top, with a chronological list of past proposals below. Click Load more to see more.
Click on a proposal to go to the relevant Proposal Page.
The Community page offers an overview of the DAO's delegates. The Top Delegates chart shows the current top 5 delegates' voting power over time,
Clicking on a delegate's name will take you to the relevant Tally Profile.
The Treasury page displays information on the DAO's top assets.
Below, the Gnosis Safes section displays information on any linked Gnosis Safes. Click on a Safe to access its Gnosis Safe Page.
You can access Contract Parameters from the More section.
The Admins section at the bottom shows the - users who are able to update settings on the Tally DAO Page.
To empower communities that utilize Gnosis Safe, Tally enables users to create or link a Safe to your DAO.
Gnosis Safe is a smart contract multi-sig wallet running on Ethereum that requires a minimum number of people to approve a transaction before it can occur. This added layer of security helps to protect against the loss or theft of funds.
Creating a Gnosis Safe on Tally creates the exact same instance of Gnosis’s smart contract that Gnosis’s own app does, with the added benefit of managing it from the same Tally DAO that you may be using for Governor and Tokenless DAOs. Having your Gnosis Safe linked on Tally will also allow users to take advantage of Tally features such as the Create Proposal tool and Recipes.
A decentralized voting application
Tally Zero is a completely decentralized voting application that uses React and IPFS via thirdweb. This app allows you to connect to any governor address and vote on a proposal in a completely decentralized way.
Tally Zero is built using React and IPFS via ThirdWeb, which ensures that the application is completely decentralized. This means that it does not rely on any central authority or single point of failure, making it resilient and secure.
Onchain Voting on the application allows users to connect to any governor address and vote on a proposal in a completely decentralized manner. This ensures that the voting process is transparent, secure, and tamper-proof.
Tally Zero is designed to be a zero-dependency application. This means that it does not rely on any external services or applications to function. Even if other front ends are down, Tally Zero will still be operational, ensuring that people can always vote onchain.
The application is deployed on IPFS, a peer-to-peer hypermedia protocol designed to make the web faster, safer, and more open. This ensures that the application is accessible from anywhere in the world and is resistant to censorship.
In June 2023, AWS had a compute outage that affected Tally during a big vote in Aribtrum DAO. Voting through the outage was made possible by Tally Zero.
is a completely decentralized voting application designed to facilitate onchain voting via the InterPlanetary File System (IPFS) through thirdweb. It serves as a fundamental tool to ensure that people can always vote onchain, even if all the more complex front ends, such as Tally and Boardroom, are down.
Get the full story .
The Tally API is in open beta!
Whether you're a developer, a data enthusiast, or an organization aiming to integrate governance into your platform, the Tally API is designed with you in mind.
Comprehensive Data Access: Dive deep into the world of Governor DAOs. From listing Governors to exploring on-chain proposals and accounts with delegations, we've got you covered.
Versatility: Dreaming of building a notification system for DAO proposals? Or perhaps integrating governance mechanics into your next big game? The Tally API supports a myriad of applications.
Ease of Use: With our GraphQL-based API, you only request the data you need. Plus, with GraphQL's self-documenting nature, you'll find it a breeze to navigate and understand our API's capabilities.
Robust Support: Our community and support channels are always ready to assist. Whether you're just getting started or need advanced technical support, we're here for you in our Discord.
You'll need to include that API key as an HTTP header with every request, i.e. {"Api-Key": "YOUR_KEY_HERE"}
Note that the playground also includes undocumented endpoints. Using them is not recommended for production apps, because they are subject to change without notice.
Once you've signed in to Tally, you can click your profile name at the top right to access the profile drop-down menu.
The Your DAOs page shows all the DAOs you're a member of.
Your DAOs shows a list of all of the DAOs you're a member of, split into two sections: DAOs you manage (DAOs where you have the SuperAdmin or Admin role), and DAO memberships. Click on any DAO to navigate to its DAO Page.
A Tally Profile shows details about that wallet's DAO Memberships and POAPs. It also includes information the user has added via Settings.
At the top, you'll see a voter's display name, wallet address, and linked Twitter account. You'll also see a Delegate button, which allows you to delegate your voting power to that address.
Below, you'll see that voter's DAO Memberships, with information on their voting power and delegations for each DAO.
The POAPs section displays POAPs held by the address.
Update the information shown on your Tally Profile by accessing Settings from the drop-down menu or clicking the Edit Profile button from your Tally Profile.
Click the Edit button to make changes.
The information you enter in Settings is public to everyone. The data in your Tally Profile is a mix of onchain data and off-chain data. Editing your Tally Profile adds off-chain data to the onchain data for your address. In some cases, it overrides the onchain data (e.g. your Tally name and avatar override your address’s ENS name and avatar, if any).
Update your Tally username.
Choose a PFP from your wallet or upload an image.
Update your Bio to tell us a bit about you!
Link your Twitter account.
Generate a Tally API key. Visit our API Portal to learn more!
Click Log out to sign out of your Tally Profile.
The makes it easy to query onchain data about Governor DAOs. List Governors, onchain proposals, and accounts with delegations. Use the API to build notifications, dig into voter data or build governance right into your game or app.
Interested in learning more? Email to set up a chat with our team!
To get started, you'll need an API key. Sign in to Tally. On your , see the "Tally API" section. Generate an API key, and keep it somewhere safe.
To get started quickly, check out the . This simple React app uses Tally's API to list DAOs and their proposals.
The public API is documented on . The API is a graphql API lets you request exactly the data you need.
One big advantage of graphql is that it's self-documenting. Check out the . You'll need to add your API key in the "Request Headers" section, like this: {"Api-key": "YOUR_KEY_HERE"}
Free Tally API keys are rate-limited to ~1 request per second. If you'd like to switch to the paid tier to increase your rate limit, reach out on the .
Take action in your DAO by initiating an onchain proposal on Tally.
To submit an onchain proposal, you must have sufficient voting power to meet the DAO's Proposal threshold. This figure can be found on each DAO Page by expanding the Contract Parameters section near the top of the page.
If you haven't yet connected your wallet, Tally will prompt you to do so. Most governance frameworks require a proposal threshold - a minimum amount of voting power - to create a proposal. Make sure you connect with the tokens required to create a proposal in it. Then click Continue.
Enter a Title for your proposal, then add a Description. Explain the intent behind the proposal and include any helpful context for the voters.
Add actions to be executed if the proposal passes. You can select Tally's Transfer Tokens recipe for a proposal that calls for the transfer of tokens, or select the Custom Action button.
Note: Governor Alpha/Bravo has a limit of 10 actions. There is no limit for OpenZeppelin Governor.
If you choose the Transfer tokens recipe, enter the Target wallet address, select the Token you would like to transfer, and enter the Value of the token you would like to transfer. Enter a Memo to describe the purpose of the transfer, and optionally, upload a Media image such as an invoice. Tally will populate an infographic as a preview of the recipe.
For a Custom action, enter the Target contract address or upload your ABI file if the contract is not on Etherscan. Select the desired Contract method, and enter the call data for that method.
Actionless Proposals: If you choose to skip this step, and create a proposal with no actions, a transfer of 0 ETH to you (the proposer) will be added, as Governor requires one executable action for the proposal to be submitted onchain.
Preview your proposal, then select Save draft or Publish. If you're ready to submit the proposal onchain, you'll also need to sign the transaction to the chain using your wallet. Draft proposals are created offchain and can later be submitted onchain at any time. Draft proposals can be created and submitted by different users.
Having successful validations will give proposers, voters, and executors confidence that the proposal is valid. The Proposal Simulations feature is currently in beta and runs via the Tenderly Simulator API. Tally simulates the execution of the proposal assuming it is successful and queued on a fork of your DAO's network. From there, Tally runs each executable payload, impersonating the treasury (usually the timelock).
When creating a proposal on Tally, the API will automatically run a simulation for the executable payload provided. You can view the result of this simulation in the Executable code tab of the proposal details. Each function will have its own result.
If one function fails, it is likely that the proposal execution will fail. If the function failed, click View raw result to inspect the response from the Tenderly Simulator API for additional insights. If the function fails or in cases when state changes may impact the success of a function, you may also want to re-run the simulation of the proposal.
For example, a DAO proposes to transfer 1 ETH to an address, but their treasury has 0 ETH. As you might expect, the simulation result fails. From there, the DAO funds their treasury with 2 ETH; click Re-run to re-simulate the proposal. You should now expect a successful proposal!
Visit the of the DAO you'd like to create a proposal for, then click the Create new proposal button at the top of the page.
You can put any onchain action into a Tally proposal using Custom Actions.
Custom Actions on Tally provide a versatile way to create and manage DAO proposals with complex requirements. These actions enable users to execute a variety of operations within a single proposal. Custom actions include any onchain action that Tally does not have a custom UI for (ex: token transfers).
Tally has recipe books for the following custom actions:
Each action involves targeting specific contract addresses, selecting appropriate contract methods, and setting calldata according to the needs of the specific operation being proposed. This flexibility allows for a wide range of governance activities to be conducted seamlessly.
To include custom actions in your proposal on Tally, enter the Target contract address or upload your ABI file if the contract is not on Etherscan. Select the desired Contract method, and enter the call data for that method.
Learn how to propose deploying Uniswap v3 on a fresh EVM chain using Tally.
You can make a proposal on Tally to deploy Uniswap v3 on a fresh EVM chain.
The first step of launching Uniswap V3 on a fresh EVM chain is to deploy the smart contracts that comprise the protocol. To simplify this process, Uniswap Labs has devised deployment scripts and management CLI, ensuring a smooth rollout of the required contracts onto a new EVM chain.
Simply set up and fund a deployment account to cover the gas charges (estimating 40-50M gas). Then, execute a single command within the CLI. This will sequentially deploy each contract, marking checkpoints that can be rolled back if complications arise.
Make a proposal on Tally using Custom Actions.
Target contract address: 0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41 (the public ENS resolver address)
Contract method: setText
Calldatas:
node: 0x0b9638d2c5bd4528d603562a1fa1e734fe1b88e680f448d779531e9bc2b55f12 (the hash of v3deployments.uniswap.eth)
key: network key of chain you're deploying to
value: address of v3 factory on that network
Resources
Learn how to propose token grants with Hedgey on Tally.
Grants by Hedgey come in a few forms, so it is important to decide beforehand which version is most appropriate for your grant needs. Grants is at its core a simple distribution mechanism to distribute tokens to the grantees, with a public dashboard, and bake in time based milestones when the grantees will receive the tokens. Grants can be either revocable, or non-revocable, include ability to participate in governance with Tally, or can prevented from governance participation. Other key features include linear (streaming) or periodic time-based distribution schedules.
For your grants distribution, you will need to make a decision on whether grants are revocable or not. A good rule of thumb is that for retroactive public goods funding, and other retroactive grants mechanisms, the milestones have already been achieved; so, the non-revocable grant is a great distribution mechanism to distribute tokens over time automatically, instead of simply disbursing tokens directly.
Conversely, revocable grants are a solution for grantees that are expected to perform tasks and achieve milestones, or distribute incentives and rewards, in the future. With a revocable grant, if the grantee does not meet their milestones, or for any other reason, the DAO can claw back the tokens from the grantee based on their vesting schedule - which is often configured to align with the time based milestones.
Before creating the grants proposal, you should prepare the data that will be pasted into Tally and be delivered to the Hedgey smart contract upon execution of the approved proposal.
Token Contract Address: <ERC-20 Token Contract Address>
Hedgey Batch Contract Address: 0x3466EB008EDD8d5052446293D1a7D212cb65C646
Hedgey Grants Contract: <Hedgey Smart contract - depends on revocable & voting grid below>
Distribution Frequency / Period: This determines (in seconds) how frequently tokens are distributed to grantees. For the “streaming” version, this would be 1, where a small amount of tokens is distributed and claimable each second. Here are some other handy periods:
Grant Recipients Details:
Recipient Address
Total amount of Tokens to be distributed
Start date (in unix time)
Cliff date (in unix time)
Rate: the amount of tokens that vest in each period
With your prepared data at hand, navigate to the Tally portal and create your proposal. In the "Custom Actions" section, you will need to input two actions: the first is the ERC-20 token allowance approval, and the second is the actual Hedgey Grants creation transaction.
Target Contract address: the Address of your DAO Token or ERC-20 Token to be used for grants
Contract method: ‘approve’
Calldatas: spender: 0x3466EB008EDD8d5052446293D1a7D212cb65C646 (the Hedgey Batch Planner contract address)
amount: the total amount that you will deploy in the grants batch
Paste in the BatchPlanner contract 0x3466EB008EDD8d5052446293D1a7D212cb65C646, and then we need to select one of two methods.
If you are distributing Revocable Grants, choose the “batchVestingPlans” method. If you are distributing Non-revocable Grants, choose the “batchLockingPlans” method.
Inputs are as follows:
Locker: <Hedgey Contract Address>
Token: address of your DAO token
totalAmount: the total amount of tokens to be distributed to grant recipients
Plans: this is an array (tuple) of each grants plan, which you can paste in the details of each recipient individually
Recipient: address of grant recipient
Amount: total amount of tokens they will granted (include decimals)
Start: Unix time stamp of when the unlocking will start
Cliff: Unix time stamp of an optional cliff, if no cliff you can input 0 or the start date
Rate: The amount of tokens that unlock each period - use the spreadsheet helper
Period: the seconds in the period for vesting
vestingAdmin: the admin of the vesting plans who can revoke plans - only for revocable grants
adminTransferOBO: this allows the vestingAdmin to transfer plans on the recipients behalf in the case of emergency
mintType: 7; this is a specific number for the Hedgey dApp to display things properly
For non-revocable grants, still use mintType 7, but the vestingAdmin and adminTransferOBO functions will not be required.
Learn how to propose token vesting plans with Hedgey on Tally.
Key features include linear/periodic unlock strategies, onchain governance voting, customizable dates, governance rights to vesting tokens, admin features for transferring vesting plans, delegation of vesting plans to multiple addresses, and beneficiaries' ability to claim tokens at their discretion. The contracts are fully onchain, ensuring interaction even without Hedgey UIs.
You can create vesting plans one at a time or multiple in the same transaction. You need to add 2 custom actions to a proposal.
The first custom action is to approve the allowance for the Hedgey contract to spend the tokens to create vesting plans.
Target contract address: the address of your DAO governance token, or whatever token you are planning to use for vesting
Contract method: approve
Calldatas:
spender: 0x3466EB008EDD8d5052446293D1a7D212cb65C646 (the Hedgey Batch Planner contract address)
amount: the total amount that you will deploy in the vesting batch
Create a second custom action with the following.
Target contract address: 0x3466EB008EDD8d5052446293D1a7D212cb65C646
Contract method: batchVestingPlans
Then, input the parameters as follows:
Locker: 0x1bb64AF7FE05fc69c740609267d2AbE3e119Ef82 (address of the vesting plans contract)
Token: address of your DAO token
totalAmount: the total amount of tokens to be distributed to vesting recipients
Plans: this is an array (tuple) of each grants plan, which you can paste in the details of each recipient individually
Recipient: address of grant recipient
Amount: total amount of tokens they will granted (include decimals)
Start: Unix time stamp of when the unlocking will start
Cliff: Unix time stamp of an optional cliff, if no cliff you can input 0 or the start date
Rate: The amount of tokens that unlock each period - use the spreadsheet helper
Period: the seconds in the period for vesting, so for instance use a 1 for a streaming style period.
vestingAdmin: the admin of the vesting plans who can revoke plans
adminTransferOBO: this allows the vestingAdmin to transfer plans on the recipients behalf in the case of emergency
mintType: 7; this is a specific number for the Hedgey dApp to display things properly.
Note all of the plans batched need to have the same period and vesting admin.
Consider the following example:
If you have a specified total amount of tokens, for example 100,000, that you are distributing with a 2-year vesting term, the calculation for streaming would be different than for monthly payments.
For streaming: The vesting term spans 63,072,000 seconds, as there are 31,536,000 seconds in a year. Assuming your token has 18 decimals, you would calculate the rate of token distribution per second as follows: (100,000 * (10^18)) / 63,072,000 = 1,585,489,599,188,230. If your token has a different number of decimals, replace 18 with the appropriate number in the formula.
For monthly payments: Over a 2-year vesting term, there are 24 discrete periods (months). The calculation for the rate of token distribution per month would be: (100,000 / 24) * (10^18) = 4,167 * (10^18). This implies that 4,167 tokens will vest each month. However, in the last month, only 4,159 tokens will vest to complete the total distribution of 100,000 tokens.
of Uniswap v3 deployment on Celo
for ChainIDs
Using , you can make a proposal for your DAO to distribute grants directly to grant recipients. Token Grants allow your DAO to distribute tokens for incentives, and other reward mechanisms to spur ecosystem development, decentralization, and proliferation.
You can use and make a copy to help you create the plans, input the items in orange, and then you’ll have your finished Tuple of Plans in cell B6 to copy into Tally.
Using , you can make a proposal for ERC-20 token vesting plans. Token vesting plans allow onchain teams to issue vesting token plans to members, mirroring traditional vesting with features like cliffs, flexible schedules, and backdated start dates. It's fully onchain, revocable, and customized for onchain teams' needs.
Hedgey Grants Contracts
Revocable
Not Revocable
Allows Tally Governance
0x1bb64AF7FE05fc69c740609267d2AbE3e119Ef82
0x73cD8626b3cD47B009E68380720CFE6679A3Ec3D
No Tally Governance
0x2CDE9919e81b20B4B33DD562a48a84b54C48F00C
0x1961A23409CA59EEDCA6a99c97E4087DaD752486
Frequency
Value for Period
Streaming / Linear per second
1
Daily
86,400
Weekly
604,800
Every 2 Weeks
1,209,600
Monthly
2,628,000
Quarterly
7,884,000
Annually
31,536,000
Test proposals appear on the DAO homepage indefinitely. Tally does not delete test proposals to maintain operational security.
Learn how to propose streaming payments with Sablier on Tally.
Streaming refers to the continuous transfer of tokens over time from one account to another. Instead of sending a lump sum of tokens in a single transaction, streaming allows for the gradual and real-time transfer of funds.
To call Sablier's contract, there are three steps:
Enter that address into Tally's Custom action.
Pick the method that you want to call.
Before interacting with the Sablier contracts, the first step is to approve the spending of the token you are looking to use. If you want to stream DAI, for example, you will need to approve the spending of a certain amount of DAI. This is not done in our own contracts, but instead, in the contract of the token you are looking to spend.
The ERC-20 implementation has a function called approve
, which is the function we are going to call. Let’s say we want to stream 3141 DAI. The approval call will look like this:
In the example above, the Signature
field highlights the function to be called. In the Calldata
field, the address
field is the contract address of the Sablier contract you are looking to interact with, and uint256
is the amount of tokens you are looking to spend, decimals included.
This is important. Different tokens have different amounts of decimals. For example, USDC has 6 decimals and DAI has 18 decimals.
If the token you are looking to spend has 18 decimals, as is the case with DAI, you will need to add eighteen 0s to the amount you are looking to spend. If you want to stream 542 DAI, that means that the actual amount you will need to put in will be 542000000000000000000
.
Note: If the amount you are trying to send already has decimals (for example, 124.5 DAI), you will need to subtract the amount of decimals in the amount from the amount of 0s that you need to add. To make this clearer, if you are looking to stream 124.5 DAI, meaning an amount with 1 decimal, you will only need to add seventeen 0s as opposed to eighteen, as there is already a decimal included in the amount. In this case, the deposit amount will look like this: 124500000000000000000."
Finally, the Target
value is the contract address of the token you are looking to stream, with the Value
field having no relevance here given we won’t spend any ETH in this transaction; we are merely approving the spending of a certain ERC-20 token.
On every chain Sablier is deployed on, there are two contracts you can interact with to create streams:
SablierV2LockupLinear: allows you to create linear streams, with or without cliffs.
SablierV2LockupDynamic: allows you to create streams with dynamic payment curves, including non-linear ones.
We have approved the spending of our token, so we can create the actual stream now.
In this example, we will focus on LockupLinear as opposed to LockupDynamic, as interacting with the latter is harder. We recommend reaching out to the Sablier team if you are interested in doing that.
There are two ways to create a stream in LockupLinear:
CreateWithDurations: allows you to create a stream that will start as soon as the stream creation transaction is included in the blockchain, which will run for a specific duration.
CreateWithRange: allows you to create a stream that will start on a specific date and will end on a specific date.
Both ways support cliffs, and differ only slightly in the way you call them programmatically in Sablier's contracts.
Here is an example of what a function call with CreateWithRange
looks like:
As in the previous spending approval example, the Signature
field highlights the function we are calling. The Target
field represents the contract we are calling, which in this case is the SablierV2LockupLinear contract on Mainnet. And as in our last example, the Value
field can be set to 0
.
We will now take an interest in the Calldata
field, and specifically the tuple
it contains.
The structure of the tuple is as follows:
Let’s go over them one by one:
sender address: this is the address you are funding the stream with, which will also have the ability to cancel the stream.
recipient address: the address you are looking to stream the funds to. They will be able to subsequently withdraw funds from the stream.
amount (decimals included): the amount of tokens you are looking to stream, with decimals included, as previously explained. Numbers have to be sent between quotation marks, meaning if a parameter's value is 100.0, it should be written as "100.0".
token contract address: the contract address of the ERC-20 token you are looking to stream.
cancelable (true/false): whether or not the stream should be cancelable. We will go over this more in a minute.
transferable (true/false): whether or not the stream is transferable to someone else. We will go over this more in a minute.
start date (unix timestamp): the start date of the stream, as a UNIX timestamp. The Unix Timestamp is in seconds, not to be confused with milliseconds.
cliff date (unix timestamp): the cliff date of the stream, as a UNIX timestamp. We will go over this more in a minute.
end date (unix timestamp): the end date of the stream.
broker address: the broker address. If you don’t know what this is, you don't need it. Simply set it to 0x0000000000000000000000000000000000000000
as laid out in the example.
broker fee: the broker fee. Again, if you don’t know what this is, you don’t need it. Simply set it to 0
.
Regarding cancelation, all streams in Sablier V2 have a cancelation setting.
If it’s set to true
, that means that the stream can be canceled at any time by the stream creator. The stream creator is the DAO. Canceling the stream will stop it and return the funds which haven’t yet been streamed over to the stream creator. If the DAO wants to cancel a cancellable stream, generally that will require another proposal.
If it’s set to false
, the stream is non-cancelable, which means that it cannot be stopped. The recipient is then guaranteed to receive the funds in the stream, no matter what happens. Setting the stream as non-cancelable is an irreversible action, there’s no way to make it cancelable afterwards.
Regarding transferability, all streams in Sablier V2 are represented by an NFT owned by the stream recipient. Whoever owns the NFT is the recipient of the stream.
If transferability is set to true, the NFT (and by extension the stream) is transferable to someone else. This means the recipient could send the stream over to another address they own, or they could send it over to someone else. It also means the stream could be sold on OpenSea by the recipient without the vesting period being over. Or they could theoretically borrow against it in an NFT lending protocol by using it as collateral.
If transferability is set to false, the NFT cannot be transferred to someone else. The recipient will not be able to sell it to someone else on a marketplace like OpenSea, and they won’t be able to borrow against it in an NFT lending protocol.
Regarding the cliff date, it’s a cut-off point for releasing assets. Prior to the cliff, the recipient cannot withdraw, though assets continue to accrue in the stream. If you don’t want a cliff, you simply set the same date there as the start date.
If you want a cliff, you can set a date in the future depending on how long you want your cliff to last. If you want a 1-month cliff, and your stream starts on January 1st, your will cliff date will need to be on February 1st.
CreateWithDuration
differs only slightly, as can be seen in the following tuple
:
As you may have noticed, the only different part is the following section:
Instead of having a start date, cliff date, and end date, as in CreateWithRange
, the CreateWithDurations
function only requires a cliff duration (in seconds), and the total stream duration (also in seconds).
There is no start date or end date required, as the stream will start as soon as the stream creation transaction is validated. Once that’s done, the stream starts and will last for the total
duration.
How to create a DAO swap proposal on Tally
Upon proposal passage and execution, the proposal puts the Milkman market order onchain.
CoW solvers compete to fill the order at the best price.
Tally offers simplified tuple arrays in Custom Actions.
Tally's Custom Action builder supports the tuple[]
type, called tuple arrays.
The tuple
type in Soldity is a data structure that contains a fixed number of elements, each of which can be of a different type. For instance, a tuple can contain an integer, a string, and a boolean value all together. The tuple[]
type, called a "tuple array", contains a list of tuples.
To create a proposal with a tuple array, add Custom Actions to your proposal. Then, use the imported ABI. Tally will infer the type from the ABI and help build the tuple array.
If a tuple or tuple array is nested in another tuple, enter the nested tuple(s) in plaintext with brackets. This tuple builder contains two nested tuple arrays, contactDetails
and chains
, and one nested tuple bountyTerms
:
To add tuple arrays and tuples, enter them in plaintext:
Common questions about Swaps, asked and answered.
Upon proposal creation, you will receive a quote from CoW based on current market conditions. However, market conditions may change by the time of proposal execution, and a new quote from CoW will be used to create your order.
The default price checker on Tally uses Uniswap v3 as a price oracle and sets a max slippage. Custom price checkers can implement any logic they want.
Tally's default price checker uses the Uniswap V3 oracle to get market prices.
If you select this price checker, Tally suggests a max slippage and picks the Uniswap pair(s) to use for the price oracle.
If there is not a direct path (e.g. COMP<>USDT), Tally will try to make a “bridge” with two pairs, e.g. COMP->WETH->USDT instead of COMP->USDT. If that doesn’t work, you’ll have to make a custom price checker route.
Note that steps 3-7 happen after the Governor proposal.
You want to sell 5 COMP to buy USDT
You create an order with Milkman. You set the price checker to use the Uniswap v3 oracle oracle and to accept 10% slippage.
That milkman order goes onchain. Solvers compete to offer the best price for your order.
The best offer from CoW solvers is 100 USDT for 5 COMP.
The price checker uses the Uniswap v3 oracle. The Uni v3 price is 21 USDT for 1 COMP.
The price checker confirms that the best offer is greater than the market price with slippage. Here’s the logic:
The offer of
100 USDT / 5 COMP = 20 USDT per COMP
is greater than the price checker’s limit of
21 USDT per COMP * 0.9 slippage = 18.9 COMP
The price checker allows the order to execute on CoW protocol
If no solver comes up with a price greater than 90% of the oracle’s market price, then the order will sit unfilled until someone does. This order can also be canceled by whoever has the cancel role. In the context of a Governor proposal, that’s the DAO, as it is the entity that request the swap.
You will need to find the contract address of a price checker and encode the data it can use to determine if the order gets a good price, usually slippage and a swap path. You may need to find a custom price checker that Custom price checkers can do anything, though.
A Swap Recipe usually includes two executable calls.
approve
Milkman to spend sell token
requestSwapExactTokensForTokens
on Milkman
deposit
ETH to WETH contract
approve
Milkman to spend WETH
requestSwapExactTokensForTokens
on Milkman
When casting a vote for a swap, you should check the receipt for accuracy.
The quoted price provides a rough estimate of current market conditions before a swap is filled. The path and slippage show how the price checker will calculate the market price and how much slippage to accept.
After a swap is executed successfully, the Swap Receipt will link to the CoW order and to the order contract.
To cancel an order, the Governor must call cancel
on Milkman via an onchain proposal. Only the governor has authority to cancel an order. Canceling the order returns the assets that were for sale to the treasury.
This means that the order isn’t placed yet. The governor proposal has not yet been executed. Once the proposal has been executed, it will create an order on CoW via Milkman.
Solvers pay gas to take an order. If the gas costs are large compared to the size of the trade, you’ll need high slippage to ensure that the solvers can make a profit after gas costs.
Mitigating friction in the governance process
Want some feedback on your proposal before it goes live? Keen to write it and have someone else submit it?
Draft proposals provide a more efficient and flexible way to get things done in DAOs. Draft proposals allow DAO contributors to save their proposals offchain in an easily digestible format for review before submitting them onchain.
Gather Feedback: Users can easily gather feedback on DAO proposals before submitting them onchain.
Retain Context: All draft proposal metadata is recorded and included in the onchain proposal when submitted.
Flexibility in Submission: Draft proposals are created offchain and can later be submitted onchain at any time. This makes it possible for different stakeholders to create the proposal and ultimately submit it.
If you've created a draft that you are no longer interested in using, you can delete it from the Preview screen: just open the overflow menu in the top right and select "Delete draft".
Using , you can make a proposal on Tally to stream ERC-20 tokens.
Streaming can be used for vesting, airdrops, grants, payroll, etc. You can read more about the benefits of streaming for organizations and .
Find the on your DAO's network.
More can be read about the different types of streams . Depending on which contract you are looking to interact with, and on which chain you are will be doing so, the contract addresses will change. Head over to find the right contract address.
Empower your DAO by creating an onchain proposal on Tally using the Swaps recipe! This tool allows DAOs to exchange tokens directly from their treasuries, facilitating treasury diversification. These DAO Swaps are powered by .
A DAO member formulates a swap proposal, specifying the assets to trade and the amount to sell. The UI provides an for the trade.
After running validations, the recipe prepares code – including a call to – for execution upon proposal execution.
An offchain listens for the swap request and forwards it to the CoW protocol.
The quotes come from, which estimates current prices from onchain sources. As the order executes in the future, prices may vary.
ensures that your order only executes if the market price is close, using a price oracle and a slippage parameter.
enables smart contracts, like Governor, to place CoW Swap market orders onchain. Milkman's price checker ensures that orders only fill at prices close to the market price.
If the price checker rejects fills with unfavorable prices, the assets to sell remain in the Milkman order contract. To return those funds to the DAO's treasury, the Milkman order needs to be canceled with another onchain proposal. See .
If the trade sells ETH, the funds must first be deposited for , since swap pairs must be ERC20s.
Tally enables crosschain governance with Advanced Execution.
Advanced execution refers to the execution of actions specified in a proposal as soon as it is passed.
In a basic execution scenario, a proposal, once approved by the DAO members, would need to be manually executed by someone, usually a DAO member or a designated executor. This manual step can introduce delays and is dependent on human intervention.
On the other hand, advanced execution involves setting up smart contracts and automated processes to execute the actions specified in a proposal as soon as it is approved. This can include sending funds to a specified address, but can also involve more complex actions such as interacting with other smart contracts, triggering certain functions, or even a series of actions that need to be executed in a specific order.
One common use case for advanced execution involves interacting with a cross-chain bridge in a situation where the exact cost of the transaction is not known in advance. For example, a DAO may have a timelock contract that currently has no funds in it, and they need to send an instruction to a cross-chain bridge. However, the bridge charges a fee for moving messages from one blockchain to another, and the exact cost of this fee is not known until the transaction is executed. As a result, it is not possible to specify the fee when creating the proposal.
In such scenarios, advanced execution can be extremely useful as it allows the DAO to write the smart contract code in such a way that the necessary funds (e.g., ETH) can be sent to the execute function at the time of execution, which then gets forwarded to the timelock contract, and ultimately to the final destination (the cross-chain bridge).
Advanced execution works by allowing the smart contract underlying a proposal to include more sophisticated logic and actions that can be executed automatically once the proposal is approved.
In the example above, the smart contract code for the proposal could be written to include a function that sends ETH to the execute
function of the contract. This ETH would then be forwarded to the timelock contract, and then to the final destination (the cross-chain bridge). This way, even though the exact fee for the cross-chain bridge is not known at the time of creating the proposal, the necessary funds can still be sent at the time of execution.
When a proposal is created, then you can enter some ETH value to send in the Custom Action’s recipe.
To use advanced execution, you need to include the necessary logic and actions in the smart contract code underlying the proposal.
When creating a proposal, you can specify the amount of ETH (or any other token) to be sent as part of the Custom Action’s recipe. This is the set of instructions that will be executed if the proposal is approved.
For example, you could specify that a certain amount of ETH should be sent to the execute function of the contract as part of the Custom Action’s recipe. This ETH would then be forwarded to the timelock contract and then to the final destination as specified in the smart contract code.
Explore delegates for any DAO directly on Tally and decide how to delegate your vote!
Select Community.
You can search by ENS name or wallet address. You can sort delegates by Voting Power and Received Delegations. You can also choose a Focus Area from the All Focus Areas dropdown menu.
Click the Delegate button to easily delegate your voting power to that DAO member, or click on their profile name to learn more about their participation in the DAO.
Tally is the best place to explore DAO delegates.
Tally is the home for DAO delegation, on Tally you can:
To vote in a Governor DAO you must delegate tokens to yourself or to another address.
Easily explore all delegates in a DAO. Filter by voting power, popular delegates, or the issues you care about (Public Goods, Security, and more).
Create a delegate statement, link your twitter, and signal to voters what issues you care about.
How to queue, execute, and cancel proposals
Besides creating and voting on proposals, users can also: queue, execute, and cancel.
Once voting ends, a proposal is not complete. If a proposal passes, additional steps are required before execution. A successful Governor proposal still needs to be queued—if the DAO uses a Timelock—and then executed.
Once a proposal passes, you can queue and execute it from the same place you voted:
Queue prepares a proposal for execution. The queue action sends the proposal to the Timelock contract, which starts the countdown until the proposal can be executed.
Someone needs to call the queue()
function because the EVM (Ethereum Virtual Machine) does not support scheduled or automatic calls. Every call must be kicked off by a user.
If a Governor does not have a Timelock, then proposals don’t need to be queued. They can be executed as soon as the proposal passes.
Generally, anyone can queue a proposal that has passed! The only exception is that some custom Governor contracts limit who can call queue()
.
Generally, anyone can execute a proposal that has passed! The only exception is when a custom Governor contract limits who can call execute()
.
In some situations it is important to send ETH at the same time as executing a proposal (for example, when paying the Toll for sending a crosschain message to a bridge). In this case, it may be necessary to send ETH as part of the execution of the proposal.
To cancel a proposal, click the three-dot menu to access additional actions. You can also copy the proposal's URL and view contextual information.
It depends! There isn’t a standard version of cancel logic across Governor implementations. Governor Alpha, Governor Bravo and OpenZeppelin Governor each have different behavior.
OpenZeppelin Governor
OpenZeppelin Governor leaves the cancellation up to the developer implementing the contract. Many DAOs implement a Canceller
role that gives a list of addresses the power to cancel proposals.
Governor Alpha
If the proposer’s voting power drops below the voting threshold, anyone can cancel that proposal.
Governor Bravo
Same as Governor Alpha. Also, the proposer can always cancel their proposal.
Not if it’s the exact same one. To re-submit a proposal, create a new proposal with the same executable code.
To navigate to the Delegates page, click Community in the .
Queuing, executing, and canceling proposals can all be accomplished directly from the .
This depends on the Timelock Delay of the Timelock contract. You can check that delay on Etherscan until Tally adds it to the .
Executing a proposal runs its function calls onchain. Each proposal is associated with one or more function calls, which are visible in the Executable Code
section of the . These calls can do things like transfer assets from the treasury, update parameters of the Governor itself, change or upgrade a DeFi protocol, or call another smart contract.
Note that tokens you own are not active for voting until you delegate. You must delegate to yourself if you wish to vote on proposals directly with your own tokens.
Click on the Vote button in the upper right corner of the page.
In the Voting pop up, choose your vote— For, Against, or Abstain. (Note that Abstain isn't an option in all DAOs, depending on their contract setup.) If you'd like, add a comment to explain the reason for your vote to the rest of your DAO. Once you're done, click Submit.
Confirm and sign the transaction via your connected wallet (example below shows MetaMask confirmation).
Tally may still be indexing the vote—check back in a bit!
In order to vote on a proposal, first make sure that you've and !
Select the active proposal that you'd like to vote on to navigate to its .
For DAOs that use the , only delegated tokens can participate in voting. If you want to vote on proposals directly, you need to delegate your voting power to your own address. Check out our doc for a step-by-step guide!
Still not seeing what you'd expect? Join our and open a ticket in #support.
Campaign for delegations on Tally by creating a delegation statement.
Ready to become a DAO delegate? Tell DAO members what you stand for by creating a delegation statement.
Click on the DAO you want to create a statement for.
You'll see a Delegation Statement for that DAO directly beneath the header. Click Edit.
Click Edit at the top right of the Delegation Statement box.
The next page allows you to populate your Delegate Profile. Click the box to indicate you're actively seeking delegations, then use the text editor to write and preview your full delegation statement. At the bottom, you can auto-generate a summary using AI, or choose to enter it manually.
Create a Delegate Profile.
Click the Save button at the top right to share your delegate statement live on Tally.
From your , click on the DAO you want to create a statement for.
For DAOs that use the Governor contract, only delegated tokens can participate in voting. What does this mean for you, a token holder?
You must delegate your tokens to participate in voting. You may choose to delegate to others or to yourself.
If you wish to vote on proposals directly, delegate your voting power to your own address. Or, you can delegate your voting power to another community member and let them vote on your behalf. You can update your delegation at anytime.
Note: To vote on a proposal, votes must be delegated BEFORE the proposal is live. For security reasons, votes delegated during a proposal period cannot be used until the next proposal.
At any point, you have the complete freedom to re-delegate your tokens to a different address by following the same steps you initially used to delegate your tokens. This flexibility ensures that you can adapt to changing circumstances and align your delegation with your current preferences or strategies.
Additionally, you also have the option to undelegate your tokens, thereby reclaiming your voting power to participate directly in the decision-making process. This may be important if a vote you feel particularly strongly about comes up; you can take a more active role in the governance of the DAO whenever you feel it is necessary or appropriate.
You can also delegate your voting power to a specific address directly on their .
Navigate to your by clicking your profile name at the top right and selecting Profile from the drop-down.
Tally enables onchain transactions via Safe, including submitting proposals, voting, and delegating.
All onchain transactions as Safe are supported and sent via the Safe transaction service instead of the connected EOA. Currently, the following transactions are supported:
Submit proposal from the create proposal flow
Submit proposal from draft page
Vote on proposal
Queue proposal
Execute proposal
Delegate voting power
We are also working on support for the following transactions as Safe:
Vote in Council election
Register for Council election
Claim airdrop
Stake governance tokens on Tally.
Governance tokens like Uniswap's UNI and Wormhole's W can be staked for potential future rewards.
Before making onchain transactions as Safe, you must be .
To learn more about staking, visit .
You can access staking for UNI on the . Note that rewards have not been turned on yet.
To stake W tokens, visit the for staking on EVM chains. Note that staking for Wormhole is also known as delegating voting power.
To stake on Solana, use the .
Get email notifications about DAO proposals
Subscribe to Tally Notifications to get emails when there's a new proposal in a DAO you follow. Tally supports the following types of notifications:
New proposal - receive an email when a new proposal begins.
Proposals ending soon - if you have not voted on a proposal, receive an email when it has 24 hours remaining before votes close
Notification on voting results - receive an email when a proposal ends with the final results
Type it into the modal.
We will send one-time verification code to the address you provided to ensure it is accurate. Check your email inbox for a message from us containing the OTP. It may take a moment to arrive.
Return to the Notifications Center and input the code you received.
Click confirm to complete the email verification process.
Navigate to the home page.
Search for the DAO you want to receive email notifications from.
Press the purple subscribe button.
You will receive a notification that you have successfully subscribed to email notifications from the specific DAO.
Navigate to the home page.
Search for the DAO you want to unsubscribe from email notifications.
Press the unsubscribe button
You will receive a notification that you have successfully unsubscribed from email notifications from the specific DAO.
Click on your profile picture located at the top of the page. This will take you to the .
Tally allows users to perform onchain transactions while signed in as Safe. You can also update your multisig Safe's profile on Tally.
In order to sign in with your Safe, you must first sign in with your personal wallet that is an owner of the Safe. Then, from the profile drop-down menu, select Sign in as Safe:
Next, select the Safe you want to sign in as from the menu:
Now you can update your Safe's profile and make onchain transactions. To learn more about making onchain transactions using your Safe, see Use Tally with a Gnosis Safe.
To switch back to your personal profile, simply select Switch to... from the profile drop-down menu.
You can also sign in as Safe using WalletConnect from the Safe mobile app, following:
Navigate to the desired DAO page.
Scroll to the Proposal section
Choose the active proposal to vote.
Submit your vote.
(recommended)
Create SubDAOs and manage Grants Programs using the Zodiac Governor module.
Once integrated, the Governor DAO becomes a privileged member of the Safe. This privilege includes the ability to add or remove signers on the safe, giving the Governor DAO full control over membership.
The Governor DAO maintains control over the Safe's funds. It can spend money and execute transactions, allowing the parent DAO to maintain executive authority over its subsidiary structures.
This design opens up several unique opportunities for DAO management:
It allows for the creation of SubDAOs, where a committee of experts act as signers on the multisig. Even while they operate independently, the parent DAO retains ultimate authority.
It is an ideal mechanism for delegating funds to Grants programs. The DAO maintains authority over both the funds and the Grants program administrators, ensuring a chain of responsibility.
It helps in avoiding centralization dangers, where Grants program administrators could potentially misuse funds without any onchain recourse.
It offers a solution to political disagreements among signers, preventing funds loss due to indecision or conflict.
It serves as a vital component in the operation of decentralized Grants programs.
Instead of directly transferring funds to the Gnosis safe, the DAO gives the Gnosis safe a spend approval of a certain amount. For instance, rather than transferring $1 million from the treasury, the DAO could give the Gnosis safe a Spend Approval of $1 million. This ensures that the funds only leave the DAO when the multi-sig signers create a transaction. As a result, the funds always remain under the control of the DAO.
Select your existing parent DAO token during the creation flow.
Create a new Governor for the SubDAO with your desired parameters for oversight. You can use the same parameters as the parent DAO or opt for different ones to match your specific needs.
The Safe App will automatically create your Governor SubDAO and add it to your multisig.
A couple of steps are needed to get your new SubDAO fully represented on Tally.
Link the contract address of the Multisig that was created via the Zodiac Governor Module to your Parent DAO, making it easily visible from the parent DAO on Tally.
Zodiac is a collection of tools built according to an open standard by the team behind Gnosis Safe. The Zodiac open standard enables DAOs to act more like constellations, connecting protocols, platforms, and chains, no longer confined to monolithic designs. To learn more about the ideas behind Zodiac, visit the or read the.
The facilitates the management and control of Gnosis Safes by a DAO. With the Zodiac Governor module, a DAO can become a privileged member of the Safe, allowing it to manage signers and execute transactions. This page will guide you through the use case of creating SubDAOs and managing Grants Programs using the Zodiac Governor module.
Use the to initiate the creation of a Grants Oversight DAO, and follow the steps below:
Copy the contract address of the Governor that was created by the Zodiac Governor Module no-code tool and .
How to upgrade a multi-sig to a fully onchain DAO.
This upgrade path is particularly useful for progressively decentralizing a DAO. Often, a multisig makes sense for a newer DAO with a smaller treasury. As the stakeholder set expands, organization might find that it needs the security and decentralization of onchain proposals.
This Zodiac upgrade path makes it easy to progressively convert the Safe into a Governor without moving all assets and permissions between contracts.
from Tally and from Zodiac put together this video walkthrough about how to upgrade a Gnosis Safe to an onchain Governor on Tally:
Security Council elections are a pivotal aspect of decentralized governance, ensuring that the guardianship of a DAO remains in the hands of its community.
Step 3: Complete contender registration flow.
Step 4: Sign message and submit transaction.
Step 2: Connect ledger via Wallet Connect.
Step 3: Complete contender registration flow.
Step 4: Follow the prompts and sign message in Wallet Connect,
Step 5: Follow the prompts and sign transaction in Wallet Connect,
Step 1: Navigate to security council .
Step 2: .
Step 1: Navigate to security council .
If you need additional support please contact support@tally.xyz or message Tally on.
A typical Governor DAO uses three contracts: a token contract, a Governor contract, and a timelock contract.
Tally is built on top of the . Tally indexes the onchain data from and enables users to make calls to Governor smart contracts running autonomously on the blockchain.
To be compatible with the Tally app, we recommend you use OpenZeppelin's . This modular, battle-tested system of DAO smart contracts gives token holders control of their DAO onchain.
How to configure and deploy Governor DAOs
How to deploy a Governor contract to use with Tally
Helpful Links from OpenZeppelin
Core logic is determined by the Governor contract. When deploying a Governor, you need to chose:
How voting power is determined
How many votes are needed for quorum
What options people have when casting a vote and how those votes are counted
What type of token should be used to vote
These parameters must be set for the Governor contract:
votingDelay: how long after a proposal is created that voting power is fixed (a larger delay gives users time to unstake tokens)
votingPeriod: how long a proposal remains open to vote
A proposal threshold can also be set, which restricts proposal creation to accounts with enough voting power.
Check out our guide to ensure your OpenZeppelin Governor is compatible with the Tally platform:
Tally offers an all-in-one guide explaining how to use Governor in the PDF below.
You can use Tally's open-source to get started.
You can write your own module or choose one from .
The includes guides and a detailed API reference for learning about developing secure smart contract systems.
You may also find the useful for configuring a smart contract.
Include ERC20Votes to future-proof a token for onchain governance
If you are deploying a token that might govern a DAO in the future, include voting methods. It's easy and safe to add them up front. It's much harder to upgrade or wrap the token to add them later.
Open Zeppelin's ERC20Votes extension is safe and self-contained. It has been audited and is currently deployed in thousands of token contracts.
The main tradeoff is gas usage. Fortunately, users can make that decision themselves.
Users can choose to activate their voting power by calling delegate
. When an account is delegated, transfers
will also update voting power. That update uses extra gas. Users who do a lot of transfers can always undelegate their tokens to save gas by delegating to the zero address.
Deploy your token with . That means providing voting methods, getVotes
and getPastVotes
. Governors can call those voting methods when counting votes on proposals.
is a canonical implementation of EIP-5805. – or a custom Governor contract – uses the extension to calculate voting power.
, the leading DAO smart contact setup.
Add a DAO to an existing ERC20 token or NFT
How to add a Governor to a token
Why does Governor need the voting interface?
If a token may someday be useful for running an onchain DAO, deploy it with a voting interface for future Governor compatibility. If the token is already deployed and it cannot be upgraded, the best workaround is to deploy a wrapper token contract that adds the voting interface to an existing token.
A token wrapper does come with tradeoffs. Users will have to wrap their tokens to vote, and then unwrap them to use them in places that expect the unwrapped version. They may also be confused about where their token went after wrapping if their wallet doesn’t know about the wrapped version.
One thing to note is that setting up voting already requires setup: token holders have to delegate their votes – even to themselves – before voting. The wrapping step could be combined with delegation to keep the process simpler for tokenholders.
The `ERC20Votes`/`ERC721Votes` logic on the token contract is responsible for voting power bookkeeping that can’t be done on another contract. That bookkeeping involves several things: updating voting power when there’s a delegation or transfer, taking a snapshot of the voting power at the start of each proposal, and emitting event logs for indexers whenever there’s a change in delegation or voting power.
Each `transfer()` and `delegate()` call updates the counts of voting power, so that it’s computationally cheap to save a voting power snapshot for a proposal. Governor needs a voting power snapshot to prevent double-voting. It would be too computationally expensive for an external contract like Governor to keep track of which tokens have already voted without a snapshot, because an attacker could move around tokens to vote multiple times with the same token.
A Governor contract expects a particular interface from its token contract. requires a token contract that implements the or the .
Deploy an OpenZeppelin token contract that includes both and . Then, point the Governor wrapper contract instead of the token contract.
For more information, see that walks through the process of deploying a Governor for an existing token.
How to make your Token and Governor contract compatible with Tally
Tally supports DAOs on Ethereum, Polygon, Optimism, Arbitrum, Avalanche, Base, Moonbeam, Scroll, BNB Chain, Gnosis, and various testnets.
Tally connects with the on-chain contracts for your DAO in two places. Tally’s servers index the onchain data, and Tally’s web3 site helps users make calls directly to the contracts running on the blockchain.
If you do need to change something, check the dependencies here in the docs to make sure that your changes are compatible with Tally’s data indexing and web3 calls.
Here, we describe the interface that your contracts need to follow to be compatible with Tally. The easiest way to be compatible is to fork without changing anything.
Networks supported on the Tally interface.
Tally currently supports these EVM-compatible networks:
Ethereum
Ethereum Mainnet
Ethereum Sepolia Testnet
Ethereum Holesky Testnet
Polygon
Polygon Mainnet
Polygon zkEVM
Polygon zkEVM Testnet
Polygon Amoy Testnet
Binance Smart Chain
Binance Smart Chain Mainnet
Binance Smart Chain Testnet
Arbitrum
Arbitrum One
Arbitrum Nova
Arbitrum Sepolia Testnet
Optimism
Optimism Mainnet
Avalanche
Avalanche C-Chain
Avalanche Fuji Testnet
Gnosis Chain
Gnosis Chain Mainnet
Base
Base Mainnet
Base Sepolia Testnet
Scroll
Scroll Sepolia Testnet
Scroll Mainnet
Moonbeam
Moonbeam Mainnet
ZKsync
ZKsync Era Mainnet
ZKsync Sepolia Testnet
Celo
Celo Mainnet
Linea
Linea Mainnet
Linea Testnet
Mantle
Mantle Mainnet
Mantle Sepolia Testnet
Kroma
Kroma Mainnet
Kroma Testnet Sepolia
Iota
ShimmerEVM Testnet
Immutable
Immutable zkEVM Mainnet
Immutable zkEVM Testnet
Blast
Blast Mainnet
Blast Sepolia Testnet
OKX
X Layer Mainnet
X Layer Testnet
Lisk
Lisk Sepolia Testnet
Zircuit
Zircuit Mainnet
Darwinia
Darwinia Mainnet
Crab
Crab Mainnet
Mode Network
Mode Mainnet
Gravity
Gravity Alpha Mainnet
Morph
Morph Holesky
Berachain
Berachain bArtio Testnet
Cyber
Cyber Mainnet
Kinto
Kinto Mainnet
RARI
RARI Chain Mainnet
Vana
Vana Mainnet
Vana Moksha Testnet
ZetaChain
ZetaChain Athens 3 Testnet
Rootstock
Rootstock Mainnet
Rootstock Testnet
Corn
Corn Maizenet
Corn Testnet
To support a chain, Tally has several must-have dependencies:
EVM-compatible Network
A full node for user web3 calls
An archive node with a high rate limit for indexing
A block explorer with an Etherscan-compatible API
In addition, these nice-to-have dependencies will unlock all the features and improve the UX:
Support from major wallets for the network
Compatibility considerations when implementing OpenZeppelin governor
Tally's API listens to event logs from Governor contracts when indexing them. Your contract will need to maintain the same event signatures that OZ Governor implements:
Tally's frontend app helps users make web3 calls to your Governor contract. The app lets users create Proposals as well as vote on, queue and execute them. In addition, the app reads state from the contract with function calls.
To be compatible with Tally, your Governor will need these function signatures:
If your OpenZeppelin governor contract uses a Timelock, it will also need this signature:
Tally needs the quorum to calculate if a proposal has passed. That means that Tally requires the Governor to have a quorum()
function:
Optionally, Tally also supports the quorumNumerator()
and quorumDenominator()
functions. Governors with quorums that are a function of token supply should implement these functions:
If the Governor is missing either quorumNumerator()
or quorumDenominator()
, Tally falls back to the quorum()
function and assumes that the quorum is fixed.
Tally needs to know the voting delay to calculate when voting starts without polling the blockchain. A votingDelay()
function on Governor is required:
Tally needs to know the voting period to calculate when a proposal finishes voting without polling the blockchain. A votingPeriod()
function on Governor is required:
Tally's app expects the following proposal states. If your Governor uses a custom proposal lifecycle, those states won't show up correctly on on Tally:
Governors can change their own parameters, like proposal times and the amount of voting power required to create and pass proposals. To make sure that Tally indexes your Governor's parameter changes, implement these event signatures:
If your OpenZeppelin governor contract uses a Timelock, it will also need this event:
Tally handles the ProposalExtended
event, which is emitted by governors that implement the PreventLateQuorum
extension:
To be compatible with the Tally app we recommend you to use OpenZeppelin's library . If you want to implement changes to this base contract, here is the interface that you should follow to make sure your contract works with our app.
Since Governor v4.9, all voting contracts (including and ) rely on for clock management. The Governor will automatically detect the clock mode used by the token and adapt to it. There is no need to override anything in the Governor contract. You can learn more about compatibility of your token and Governor contract with clock mode .
Tally checks the contract lock using the standard. We accept blocknumber
and timestamp
clock modes.Specifically, Tally expects Governor and token contracts to implement a CLOCK_MODE()
function that returns either mode=blocknumber&from=default
or mode=blocknumber&from=<CAIP-2-ID>
. If the call to the governor's CLOCK_MODE()
method returns mode=timestamp
then proposal start and end times will be interpreted as unix timestamps otherwise they will be interpreted as block numbers.
If you're interested in support for another contract clock, Tally would need to do some custom work. Get in touch with .
How to deploy a Governor Bravo or Alpha that's compatible with Tally
If you're already using a direct fork of Governor Bravo, then your DAO should work with Tally out of the box. If you insist on making changes to the base contract, then you can use this guide to make sure that your changes are compatible with Tally's API and web interface.
Tally's API listens to event logs from Governor contracts when indexing them. Your contract will need to maintain the same event signatures that OZ Governor implements:
Tally's frontend app helps users make web3 calls to your Governor contract. The app lets users create Proposals as well as vote on, queue and execute them.
To be compatible with Tally, your Governor will need these function signatures:
The Tally app need reads state from the public getters of these state variables:
Tally needs the quorum to figure out whether a proposal passed.
Tally expects a quorum
constant:
For Governor Bravo, Tally uses the voting delay to know when voting starts. Governor Alpha does not have a voting delay. For Governor Bravo, a votingDelay
constant on Governor is required:
Tally uses the voting period to correctly show the end of voting. A votingPeriod()
constant on Governor is required:
Tally's app expects the following proposal states. If your Governor uses a custom proposal lifecycle, those states won't show up correctly on on Tally:
Governors can change their own parameters, like proposal times and the amount of voting power required to create and pass proposals. To make sure that Tally indexes your Governor's parameter changes, implement these event signatures:
How to make an ERC-20 or ERC-721 token contract that will work with onchain governance.
Specifically, Tally needs the following methods and event signatures for indexing and web3 calls:
Tally's API listens to event logs from token contracts when indexing them. Your token contract will need to maintain the same event signatures:
Your contract will need to support transfer events, too. Tally works with both ERC20 transfer events and ERC721 events.
The Tally frontend helps users make these function calls to delegate their votes:
The token contract must implement the name()
function, so that Tally knows what to call the token.
The token contract must implement a symbol()
function, so that Tally knows the short name of the token.
ERC20 token contracts must implement a decimals()
function, so that Tally can correctly render token balances:
How to set Proposal Threshold, Quorum, Voting Period, Voting Delay, and Timelock Delay
A Governor contract has several important parameters that affect the lifecycles of its proposals. Think about these parameters as a balancing act between ease of passing proposals and security against malicious proposals. That’s an important – and tough – tradeoff to get right!
Here's a guide to picking these parameters to set a DAO up for success by picking the right parameters:
Be careful at the start, though. If the parameters are set too high, it will be hard to make the onchain proposal that updates the parameters!
The Proposal Threshold is the amount of voting power that an account needs to make a proposal. Governors on Tally usually set the threshold to somewhere between 0% and 2% of circulating token supply.
The purpose of the threshold is to prevent spam proposals and to make sure that anyone making a proposal has either direct economic exposure or trust from delegators. Some DAOs set the proposal threshold to 0 to lower the barriers to participating.
Picking a good Proposal Threshold depends on the distribution of delegated voting power, which might be hard to know before the DAO gets off the ground. Once the distribution of voting power is known, it’s a good idea to have a medium-size group of delegates over the threshold. DAOs on Tally typically set their Proposal Threshold to a place where at least 5-10 delegates have enough voting power to make a proposal.
The Quorum is the amount of `For` votes – sometimes also including the amount of `Abstain` votes – for a proposal.
Picking a good quorum is tough, because it depends on voter turnout, which might be hard to know in advance. A too-high quorum might make it impossible for a Governor to pass *any* proposals! On the other hand, too-low quorum might open up the Governor to spam attacks, where an attacker repeatedly submits a malicious proposal and forces other voters to repeatedly vote it down.
For Governors on Tally, the quorum is usually somewhere in the range of 1-10% of circulating token supply.
The voting period is how voting lasts on each proposal. At the end of the voting period, the proposal has passed or failed. Most DAOs pick a period between 3 and 7 days.
Less than 3 days, and someone can try to sneak through a proposal on a weekend or during a period of low activity. Something closer to 7 days gives everyone time to review a proposal.
The voting delay is the amount of time between when a proposal is submitted and when it goes up for voting. Most Governors have a voting delay of 0. The Governors that do have one usually pick a period of one day or less.
The delay gives token holders time to delegate their voting power before the vote starts or buy more votes. Governor takes a snapshot of all the voting power at the start of voting. Delegation and balance changes after that don’t affect voting power. That said, most DAOs decide that this extra time for managing votes isn’t worth slowing down the proposal.
The timelock delay is the minimum amount of time between when a proposal posses and when it can be executed. There’s a big agility vs. security tradeoff here, so DAOs pick values all the way from 0 days to 7 days for their timelock delay.
Tally recommends picking a delay of 0 for Governors that only manage a treasury. The security benefit of a delay isn’t as relevant. The exception is if the Timelock has someone with an emergency veto/cancel role. In that case, they probably want at least 3 days to react to potentially malicious proposals.
For Governors that control a DeFi protocol where users might want to withdraw their funds before a big protocol change, we usually see timelock delays closer to 7 days.
Tally supports and Alpha, but we consider it deprecated. If you are deploying a new Governor, we recommend OZ Governor is more actively maintained and has all of Bravo's features.
Note that the uses a function instead of a constant for quorum.
Note that the uses a function instead of a constant for voting delay.
Note that the uses a function instead of a constant for voting period.
Tally expects tokens to implement the relevant standard, like or . Also, Tally needs the token contract to implement the for delegation and voting power checkpointing.
Your token contract also needs to implement voting and delegation functions. If you are using an ERC20 token, you can use the or the extensions from the OpenZeppelin token contracts library.
If you're using an ERC71 token, you can use OpenZeppelin's draft extension.
If there isn't anyone more voting power than the proposal threshold, one option is to have people to delegate to an Autonomous Proposal, which is a smart contract that can make a proposal when it gets enough delegations. Learn more about autonomous proposals in .
Ready to add your DAO's governance to Tally? All you need is a deployed and a few minutes to get started.
Select the Get Started button on the Tally homepage (or ), select Deploy myself, then select Deploy contracts yourself.
Keep your DAO's details on Tally up-to-date.
To access the DAO Settings page, click the Settings button in the header of your DAO Page.
From the Basics tab of DAO Settings, you can update all of your DAO's information, including its logo, name, description, and links. You can also include Contact Information for your DAO.
From the Safes tab, you can create or link a Gnosis Safe:
Manage your DAO.
The user who adds a DAO to Tally will automatically be granted Admin privileges. If you have an older Governor DAO, it may not have an Admin — reach out to us to start the process of adding one!
Admins for a given DAO are displayed at the bottom of the DAO Page:
Adjust DAO settings, including logo, description, and links.
Appoint additional Admins and Superadmins.
Controlling multisig Safes with Governor
Governor is composable with Gnosis Safe, which has led to an emerging ecosystem of Governor <> Safe integrations that enable new DAO use cases. Below, we describe how you can implement DAO use cases using Governor with Gnosis Safe.
If you have the role for your DAO, you can update the settings of your DAO Page on Tally.
From the Admins tab, view your DAO's . If you have the Superadmin role, you can also add these roles for other wallet addresses.
.
All .
No Admin in your DAO? Reach out via chat support on the or the #support channel in the .
Create SubDAOs and manage Grants Programs using the Zodiac Governor module.
Once integrated, the Governor DAO becomes a privileged member of the Safe. This privilege includes the ability to add or remove signers on the safe, giving the Governor DAO full control over membership.
The Governor DAO maintains control over the Safe's funds. It can spend money and execute transactions, allowing the parent DAO to maintain executive authority over its subsidiary structures.
This design opens up several unique opportunities for DAO management:
It allows for the creation of SubDAOs, where a committee of experts act as signers on the multisig. Even while they operate independently, the parent DAO retains ultimate authority.
It is an ideal mechanism for delegating funds to Grants programs. The DAO maintains authority over both the funds and the Grants program administrators, ensuring a chain of responsibility.
It helps in avoiding centralization dangers, where Grants program administrators could potentially misuse funds without any onchain recourse.
It offers a solution to political disagreements among signers, preventing funds loss due to indecision or conflict.
It serves as a vital component in the operation of decentralized Grants programs.
Instead of directly transferring funds to the Gnosis safe, the DAO gives the Gnosis safe a spend approval of a certain amount. For instance, rather than transferring $1 million from the treasury, the DAO could give the Gnosis safe a Spend Approval of $1 million. This ensures that the funds only leave the DAO when the multi-sig signers create a transaction. As a result, the funds always remain under the control of the DAO.
Creating a SubDAO for grants oversight or multisig management is straightforward.
Select your existing parent DAO token during the creation flow.
Create a new Governor for the SubDAO with your desired parameters for oversight. You can use the same parameters as the parent DAO or opt for different ones to match your specific needs.
The Safe App will automatically create your Governor SubDAO and add it to your multisig.
Finally, a couple of steps are needed to get your new SubDAO fully represented on Tally.
Understand what Gnosis Safes are and how they work on Tally.
Gnosis Safe is a smart contract multi-sig wallet running on Ethereum that requires a minimum number of people to approve a transaction before it can occur. This added layer of security helps to protect against the loss or theft of funds.
Gnosis Safes are commonly used to manage pooled DAO funds. DAOs often require a certain number of members to sign off on any fund transfers. DAO actions are generally voted upon by all members and then executed by the core group of signers.
A multi-sig Gnosis Safe works by requiring multiple signatures, or "keys," in order to execute a transaction. When the safe is created, the user specifies the number of keys that are required to sign a transaction before it is executed.
To submit a transaction with a Gnosis Safe, you would first need to create the transaction on the Ethereum network. This can typically be done using a wallet or other Ethereum-enabled application. Once the transaction has been created, it must be signed by the required number of keys associated with the safe. This process typically involves each key holder using their own private key to sign the transaction. Once the transaction has been signed by the required number of keys, it can be submitted to the Ethereum network to be executed.
An Owner is a signer of the of the Gnosis Safe smart contract wallet. Owner accounts sign off on transactions on the Gnosis Safe smart contract, such as transferring funds from the wallet.
The threshold is the number of signers required to confirm a transaction. Once the threshold of owner accounts have confirmed a transaction, the Safe transaction can be executed.
Delegates are non-owners that are authorized to initiate transactions for a specific Safe which then would show up on the official Gnosis Safe interfaces. Delegates need to be authorized by an owner of a Safe.
To empower DAOs that use Gnosis Safes, Tally allows users to create or link their Safes to your DAO.
Creating a Gnosis Safe on Tally creates the exact same instance of Gnosis’s smart contract that Gnosis’s own app does, with the added benefit of managing it from the same Tally DAO that you may be using for Governor and Tokenless DAOs. Having your Gnosis Safe linked on Tally will also allow users to take advantage of Tally features such as the Create Proposal tool and Recipes.
Select the Safe's network, give it a name, and enter its address. Then simply click Link Safe!
Zodiac is a collection of tools built according to an open standard by the team behind Gnosis Safe. The Zodiac open standard enables DAOs to act more like constellations, connecting protocols, platforms, and chains, no longer confined to monolithic designs. To learn more about the ideas behind Zodiac, visit the or read the .
The facilitates the management and control of Gnosis Safes by a DAO. With the Zodiac Governor module, a DAO can become a privileged member of the Safe, allowing it to manage signers and execute transactions. This page will guide you through the use case of creating SubDAOs and managing Grants Programs using the Zodiac Governor module.
Use the to initiate the creation of a Grants Oversight DAO, and follow the steps below:
Copy the contract address of the Governor that was created by the Zodiac Governor Module no-code tool and .
of the multisig that was created via the Zodiac Governor Module to your Parent DAO, making it easily visible from the parent DAO on Tally.
It's easy to create or link a Gnosis Safe on Tally from . Learn more about Gnosis Safes below, or skip right to the .
Gnosis Safe supports Ether and all assets that fully comply with the . This includes assets such as DAI, USDC, UNI, and many others.
Delegates can be viewed, added and removed via the .
To create a new Gnosis Safe, simply select the Create Safe button from the Safes tab of the page.
Select the Safe's network, give it a name, add and set its . Then click the Create Safe button!
To link an existing Gnosis Safe, select the Link Safe button from the Safes tab of the page.
How to upgrade a multi-sig to a fully onchain DAO
This upgrade path is particularly useful for progressively decentralizing a DAO. Often, a multisig makes sense for a newer DAO with a smaller treasury. As the stakeholder set expands, organization might find that it needs the security and decentralization of onchain proposals.
This Zodiac upgrade path makes it easy to progressively convert the Safe into a Governor without moving all assets and permissions between contracts.
from Tally and from Zodiac put together this video walkthrough about how to upgrade a Gnosis Safe to an onchain Governor on Tally:
Set up Tally's staking system: prerequisites, reward sources, and considerations for successful deployment.
The simplest version of staking requires just two things, a staking token and a reward source.
Holders stake the staking token for rewards.
The admin of staking distributes rewards to stakers.
The staking token and the reward source must be ERC20 tokens. The reward token can be the same as the staking token.
If the staking token is also a governance token - i.e. it implements ERC20Votes -
then governance works with the staking system. Staking passes through voting power to the underlying governance token. No changes are needed on the governance system.
Many protocols launch staking with their token launch. Combining the two offers several benefits:
Immediate utility for new tokens
Higher staking conversion rates
Reduced initial selling pressure
Clear value proposition for tokenholders
Tally helps protocols launch tokens with integrated staking capabilities. Our token launch flow allows tokenholders to stake immediately after receiving tokens.
This integrated approach:
Improves conversion rates
Increases the amount staked
Establishes sustainable tokenomics from day one
Your implementation approach depends on your protocol's stage and needs:
Implement staking alongside your token launch
Design tokenomics with value accrual in mind from day one
Create a complete economic loop between usage, fees, and rewards
Add staking to create utility for existing tokens
Connect protocol revenue streams to reward stakers
Consider a phased approach to test and adjust parameters
Once you've considered these prerequisites and options:
Decide on your reward source and notifier approach
Define your staking parameters
Optionally, staking rewards can depend on an . Calculators can increase or decreases rewards based on any criteria. Even offchain criteria can be used, with an oracle.
Learn more about how Tally helped Obol combine token launch with staking launch .
Review the in the next section
for support with your implementation
Learn how to deploy, configure and operate Tally staking contracts.
Understand how Tally's staking contracts work under the hood
To implement Tally's staking system, you'll need the following:
Compatible tokens:
A standard ERC20 token to use as the staking token. Typically, the staking token is the native token of the protocol, like UNI.
One or more ERC20 tokens to distribute as rewards. e.g. WETH or the native token of the protocol for inflationary rewards.
Note: Rebasing tokens or non-standard ERC20 tokens won't work.
Reward source:
Rewards come from protocol revenue, treasury funds, or minting new tokens.
Deploy with Tally's assistance
For the fastest and most reliable implementation:
Tell Tally about your staking and reward tokens
Tally will guide you through the deployment process
Get a fully-configured staking user interface on Tally
Here's an architecture diagram of the staking smart contracts:
Staking is out-of-the-box compatible with existing `ERC20Votes` governance tokens. It supports `ERC20Votes` delegation with the "surrogate factory" pattern. Staking creates a surrogate contract for each delegate. It delegates voting power in each surrogate to the delegate.
When Staker receives rewards, it distributes them over a period of time, e.g. 30 days. Distributing over time gives unstaked tokenholders a chance to stake. A smooth schedule also minimizes discontinuities from flash staking.
Any instance of Staker needs these pieces to work.
Staker Contract: The main contract that handles staking, reward distribution, and voting power delegation
Earning Power Calculator: Determines how rewards are distributed to stakers
Delegation Surrogate: Manages governance voting power for staked tokens
Reward Notifier(s): Connect reward sources to the staking system
Instances of Staker can add these extensions for extra features.
StakerPermitAndStake: Adds EIP-2612 permit functionality for better UX
StakerOnBehalf: Enables signature-based execution of staking actions
StakerCapDeposits: Enforces a cap on the total stake amount
The LST, also called stGOV, is the easiest way to get rewards from staking.
The LST is, of course, liquid. Staking positions can be transferred without unstaking.
The LST auto-compounds rewards. Holders will automatically accrue the rewards without having to call claim()
The LST keeps governance power active. When the LST is in DeFi, cold storage, or a centralized exchange, the LST provides a backup plan for governance power.
The Staker
contract is the core of the system. It manages:
Staking deposits and withdrawals
Reward distribution over time
Delegation of voting power
Earning power calculation
Staker uses a streaming reward mechanism, where rewards are added as lump sums, then distributed evenly over time. This gives stakers time to respond to changes in reward rates.
Staker uses a concept called "Earning Power" to distribute rewards. Every depositor gets Earning Power. Their share of the reward is their earning power divided by the total earning power in Staker, over time. The earning power calculator determines which depositors are eligible for rewards and how much they earn
Flat Earning Power
Oracle-based Earning Power
An oracle puts scores onchain
The calculator turns earning power on and off based on whether an address's score exceeds a configurable threshold
Staker uses the earning power over time to distribute rewards.
. Tally provides two implementations:
Tally's system distributes rewards through a stream mechanism:
Rewards periodically enter the staking system as lump sums
Those rewards stream to stakers over time
Stakers earn proportional to their staked amount
This approach gives stakers time to respond to changes in rewards.
Reward notifiers connect different token sources to the staking system. Tally provides three standard notifiers:
ERC20 transfer() Direct token transfers from a treasury or revenue source
ERC20 transferFrom() Approved transfers from a separate contract or wallet
Each notifier handles capturing rewards from your chosen source and adding them to the staking reward pool.
Reward notifiers are responsible for informing the staking contract about new rewards:
Staker uses the “surrogate pattern” to make staking compatible with governance tokens. That way, tokenholders don’t have to choose between earning rewards and doing governance.
Staker creates a surrogate contract for each delegate (address receiving voting power)
Surrogate deposits and withdrawals are fully controlled by the staking system. Staker does all the accounting.
The surrogate contract holds staked tokens and delegates all its voting power to the chosen delegatee. That way, staking is compatible with the underlying governance token.
Note that these surrogate contracts allow tokenholders to split up their voting power. i.e. partial delegation
Create custom earning power calculators to incentivize specific behaviors:
Activity-based rewards: Require governance participation to earn full rewards.
Time-weighted staking: Increase rewards for long-term stakers
Protocol usage rewards: Tie rewards to protocol usage
Admin controls:
The admin of the staking contracts can’t touch staked assets. They do control some system parameters:
Add and remove reward sources, by enabling and disabling reward notifiers
Set the eligibility criteria for rewards, by changing the earning power calculator
Change the emergency pause guardian.
Override eligibility for a particular address.
Set claim fee parameters
Upgrade strategy:
These contracts could be deployed immutable or with the upgradeable proxy pattern
To migrate an immutable Staker:
Deploy a new staking contract
Send rewards there
Have tokenholders migrate to the new one
To upgrade-in-place a proxy contract:
Use initializers instead of constructors for key params at deployment
Check the storage slots carefully to avoid corrupting state
Emergency measures:
The oracle-based calculator has failsafes in case the oracle misbehaves or goes offline:
If the oracle misbehaves by posting incorrect scores, a `PauseGuardian` can pause the system, reverting it to flat earning power.
If the oracle goes offline, the calculator also automatically reverts to using flat earning power.
The oracle can be replaced by Staker's admin.
Deposit: ~100,000-150,000 gas
Claiming rewards: ~60,000-100,000 gas
Withdrawal: ~80,000-120,000 gas
For optimal performance:
Distribute rewards at reasonable intervals, e.g., weekly or monthly
The earning power calculator should wait between updates, e.g. daily
The earning power calculator shouldn’t make lots of small updates, especially networks with high gas costs
Anyone can update earning power as it changes, but someone needs to do it. Staker provides “tips” as incentive for bots to do updates. If MEV bots do not know about the incentive, consider running the staker bots script directly.
These incentives don’t work testnets or for tokens with no market value.
Guide to auto-delegates in stGOV
When users stake governance tokens with the LST, they can actively delegate their voting power to specific delegates. However, in situations where tokens are held in DeFi protocols, cold storage, or centralized exchanges, direct delegation becomes challenging. This is where auto-delegates come in.
Auto-delegates provide a backup mechanism for governance participation when stGOV tokens are not actively delegated by their holders. They ensure that governance power doesn't become "stranded" and maintains active participation in the protocol's governance.
Auto-delegates solve several critical problems:
Preventing Governance Power Loss: Without auto-delegates, voting power from stGOV tokens held in DeFi or exchanges would be effectively lost to governance.
Maintaining Quorum: Auto-delegates help ensure sufficient voting participation to reach quorum for important proposals.
Protecting Against Capture: A well-designed auto-delegate strategy prevents governance capture when a large portion of tokens are inactive.
Reflecting Community Consensus: Auto-delegates can be configured to vote according to established community values and preferences.
The simplest approach is to not use an auto-delegate at all, effectively sending the voting power to a "burn" address.
Characteristics:
Voting power from non-delegated tokens is completely removed from governance
Simplest implementation with no additional code or maintenance
Reduces total active voting power, potentially making quorum easier to achieve
May lead to governance power concentration among active delegators
Best for:
Protocols prioritizing active participation only
Situations where you want to penalize inactive token holders
Communities with high active governance participation already
Characteristics:
Only votes when proposals have reached a configurable threshold of support
Helps high-consensus proposals cross the finish line
Won't vote on controversial proposals, i.e. those with mixed support.
Key Parameters:
subQuorumBips
: The percentage of the quorum that proposals must have already achieved from FOR votes
supportThreshold
: The required ratio of FOR votes to (FOR + AGAINST) votes
votingWindow
: The timeframe before a proposal's deadline when the auto-delegate can vote
Best for:
Governance systems seeking to maintain quorum while respecting community consensus
Protocols wanting to avoid governance deadlock on broadly supported proposals
Communities with lower active participation rates
Protocols can create custom auto-delegates tailored to their specific governance needs and philosophy.
Potential Custom Implementations:
Delegate Council Auto-Delegate: Follows voting decisions made by a trusted council or experts
Meta-Governance Auto-Delegate: Votes based on a meta-governance system
Configuring a liquid staking token
Tally can deploy a convenient liquid staking token on top of the direct staking system, Staker. Token holders can stake their tokens in the LST. The LST automates claiming rewards and delegating governance power. It's like what stETH does for ETH staking.
Holder stake tokens to receive LST tokens.
Optionally, they can delegate the governance token voting power
The LST contract claims Staker's rewards regularly.
The rewards are auctioned off for more of the staked token, which is added to each user's staked position. e.g. a deposit worth 100 GOV tokens might grow to be worth 105 GOV tokens.
Holders can redeem their liquid staking tokens for the underlying staked token at any time. The LST has a short withdrawal delay to prevent MEV extraction.
Stakers - any holder of the staking token can stake for rewards
Owner - manages the fee switch
DelegateAdmin - controls the auto-delegate
Searchers - anyone, such as MEV searchers, can be a "crank turner" to push rewards through the system to stakers.
The owner can change the fee, up to a hardcoded MAX_FEE_BIPS
.
The fee is collecting on rewards. When a reward is distributed from the underlying staking system to stakers, the fee is applied to the reward amount.
The fee is only collected on rewards. There's no fee on deposits, staked assets, or withdrawals.
Each LST deployment consists of two ERC-20 tokens that distribute rewards through the same underlying accounting system.
Each deployment of the stGOV system includes both style of tokens, but a project may choose to emphasize one or the other, or to put both front and center for their users. Generally, fixed balance tokens are preferred by integrators and custody providers.
Integrate Tally's staking contract into a DeFi protocol
Tally staking lets holders earn rewards, participate in governance, and use their assets in DeFi. This guide outlines considerations for add the LST to a lending market, AMM, or restaking system.
The LST is a stanrdard ERC20 token with no "weird" features like rebasing. The integration will be similar to other ERC20 tokens.
Note: FixedGovLST uses a rebasing LST internally. Integrating against the underlying rebasing LST is not recommended!
The LST contracts has been audited twice, in both a private audit and a public contest.
The underlying direct staking system , Staker, has also been audited twice, with both a private audit and a public contest.
Price oracle integration
If the LST does not have a native price oracle, the price can be inferred from the price of the underlying staked token's price.
Note: If the LST has a withdrawal delay, there is a potential duration mismatch between the LST and staked token. It's not safe to infer the price from the underlying token in that case, because the LST's and staked token's prices could diverge.
Liquidity considerations
The LST is transferrable, so it will have its own liquidity. The underlying staked token also has liquidity. Because the LST can be unstaked for the underlying token, risk analysts should also consider the liquidity of the underlying token.
Programatic liquidations should consider the liquidity of both assets and whether there is a withdrawal delay.
LST Governance
The LST and the underlying Staker contract both have limited admin roles.
In general, the admins cannot take staked assets or accrued rewards. They can change the reward schedule, the rules for reward eligibility, and turn on the fee switch.
Slashing Risk
The default version of the staking system does not have any slashing features.
Upgradeability
The staking contracts are designed to be immutable. However, like any smart contract, staking can be deployed as an upgradeable proxy.
If they're deployed that way, DeFi integrators should understand the upgrade path for the system.
Tally is currently compatible with the following chains:
Ethereum
Arbitrum
Avalanche
Base
Blast
BNB Smart Chain
Celo
Corn
Cyber
Darwinia
Filecoin
Flow Mainnet
Gnosis
Gravity Alpha
Immutable
IOTA EVM
Kinto
Kroma
Linea
Lisk
Mantle
Mode
Moonbeam
Nova
Optimism
Polygon
Polygon zkEVM
PulseChain
RARI Chain
Rootstock Mainnet
Scroll
ShimmerEVM Mainnet
Vana Mainnet
Viction
X Layer
Zircuit
Learn about decentralized governance from overviews of key concepts, individual protocols, and voting system frameworks.
Tips for deploying and debugging the Staker system.
Insufficient reward balance:
Ensure reward tokens are transferred to the staking contract before notification
Check that the reward notifier has sufficient balance or approval
Oracle operations
If using an oracle-based calculator, tools like OpenZeppelin Defender can push earning power updates onchain
The PauseGuardian should monitor the oracle’s updates and react quickly if the oracle goes offline or posts incorrect earning power
Earning power not updating:
Earning power doesn’t automatically update.
Anyone can run a bot to update earning power. There’s an economic incentive for MEV searchers to do updates, but they might not know about the incentive.
Tally Security Vulnerability Disclosure Policy
At Tally, we take security seriously and value the contributions of security researchers who help keep our platform and users safe. This policy provides guidelines for conducting security research and reporting vulnerabilities responsibly.
To report a vulnerability, reach out to security@tally.xyz
Main application at tally.xyz
Associated subdomains
API endpoints
Web application functionality
Authentication mechanisms
Smart contract interactions
Denial of Service (DoS) attacks
Spam attacks
Social engineering attacks
Physical security attacks
Third-party applications or websites
Issues already reported by another researcher
Issues in third-party dependencies that are already publicly known
Do No Harm:
Do not attempt to access, modify, or delete data belonging to other users
Do not attempt to degrade or disrupt our services
Do not use automated scanning tools without explicit permission
Do not attempt to phish or social engineer our employees or users
Testing Requirements:
Only test against accounts you own or have explicit permission to test
Create a separate test account for security research
Do not test in a way that could impact other users or the platform's stability
Immediately stop testing if you encounter sensitive user data
Detailed description of the vulnerability
Steps to reproduce
Proof of concept
Impact assessment
Suggested remediation (if any)
Response Timeline:
Initial acknowledgment: Within 24 hours
Triage and severity assessment: Within 3 business days
Regular updates on fix progress: Every 5 business days
Resolution timeline based on severity:
Critical: 7 days
High: 30 days
Medium: 60 days
Low: 90 days
Rewards are based on severity and quality of report:
Critical:
Direct loss of user funds
Smart contract vulnerabilities leading to theft
Remote code execution
Access to private keys or sensitive credentials*
High:
Authentication bypass
Significant disclosure of private information
Injecting malicious transactions for users to sign
Stored cross-site scripting
Session hijacking
Medium:
Reflected cross-site scripting
Cross-site request forgery
Smart contract vulnerabilities affecting liveness
Low:
Missing security headers
Non-sensitive user data exposure
Race conditions without direct security impact
*Note that public environment variables such as RPC endpoints are not considered sensitive.
Please allow us 90 days before public disclosure
Coordinate disclosure timing with our security team
We encourage responsible disclosure through our bug bounty email address
Credit will be given to researchers who follow these guidelines
We will not pursue legal action against researchers who:
Follow this responsible disclosure policy
Make good faith efforts to avoid privacy violations, destruction of data, and interruption or degradation of our services
Do not exploit vulnerabilities beyond the minimum necessary to demonstrate the vulnerability
This policy may be updated from time to time. Please review it before starting any security research or submitting reports.
Contact Tally's team at
See the
The staking contracts have modules for , hooking up , and . Protocol teams can assemble a staking system from these audited pieces.
Staker is built on. Unistaker is based on Synthetix's.
UniStaker and Staker have been audited several times. The audit reports are.
The backup is a configurable strategy for keeping voting power active in governance. For example, see the , which only votes on proposals that have lots of consensus.
Access the open-source .
: Simple 1:1 mapping where earning power equals staked amount.
: More advanced calculator where earning power depends on the delegate's activity score. Here’s how it works:
ERC20 mint() -Newly minted tokens from an inflationary schedule
holds rewards directly and distributes them by calling transfer()
relies on an approve()
, so that it can call transferFrom()
on the reward source
calls mint()
on a token contract.
This option, implemented in , only votes on proposals that have strong support, but haven't yet reached quorum.
If you'd like help building a custom delegate, . We'd love to help.
The LST contracts deposit the staked tokens in Staker. The LST assigns the voting power to the holder's chosen delegate, if any. Otherwise, it assigns the voting power using the delegate
The can be configured by governance. This keeps the default voting power aligned with the DAO and mitigates capture risk.
- Implements a rebasing style liquid staking token similar to stETH. One LST token is worth one of the underlying staked token, and each user's balance is updated dynamically.
- Implements a fixed balance vault-style staking token. A user's balance does not change, but also does not map 1:1 with the underlying staked token. Instead, the number of underlying tokens a user may claim in exchange for their position goes up over time.
For more information about the LST contracts, see the
See below for details about how a DeFi protocol can integrate the from the .
Staker is built on UniStaker.
The is built on top of a . The rebasing LSTs can be unstaked 1:1 for the underlying staked token. Here's how to pull the underlying staked token balance in Solidity:
ZKsync Era If you would like to integrate your chain with Tally email us at .
We recommend running the scripts in the repo as a backup, in case the MEV searchers don’t.
Initial Report: Submit your findings through our secure bug reporting platform or email with:
Primary Contact:
Critical
$5,000-$25,000
High
$2,500-$5,000
Medium
$500-$2,000
Low
$100-500
Decentralized governance applies traditional governance concepts in a way that allows for direct input from users.
Decentralized governance refers to frameworks for managing collective action and common resources outside of the existing legal system.
Economic activity has traditionally been organized via companies - legal entities capable of entering into agreements and controlling property. These common agreements and assets are managed via a system of corporate governance; executive officers control day to day operations while answering to the board of directors, who in turn report to shareholders. Any disputes are escalated to the traditional court system.
The rules of decentralized organizations are primarily enforced by code, rather than the legal system. This gives decentralized systems greater predictability as changing laws or governments don't impact the organization. But it also requires greater care in designing governance mechanisms, as token holders can't rely on the courts to address minority shareholder protections or other needs.
Decentralized governance often involves more direct voting as compared to companies; token holders can vote on executive actions and parameter changes instead of delegating their power to a board of directors and executive officers. This empowers participants, but can also lead to voter apathy and less organizational agility due to the sheer volume of issues to review.
Decentralized governance vests power directly with token holders, removing exeuctive teams that could become targets of censorship, manipulation, or bribery. Relying on code for executing agreements also reduces reliance on external legal systems.
Discussion venues are typically open to all, giving token holders, protocol users, and the broader community an opportunity to share their thoughts. And some protocols distribute governance rights to their users as an incentive, which can further align interests over time.
In decentralized organizations, users can directly participate in governance.
User participation in governance helps create deeper alignment between protocol stakeholders. Some governance systems offer financial incentives for contributions such as voting, writing forum posts, or submitting proposals. Finally, decentralized governance offers the opportunity to pursue personal interests while having an outsize impact in a vibrant and growing ecosystem.
While the decentralized governance space is full of opportunities to contribute, as a new user it can be tough to know where to start.
The Education section of this Gitbook is a great entry point, offering general information about governance mechanisms and prominent decentralized protocols.
As you find projects and communities that interest you, the next step towards valuable participation is learning more about their systems and governance processes:
Read the protocol documentation and blog
Try using the system yourself
Visit the community's forum to see current discussions and proposals
Ask questions in the community chat, usually on Discord
Once you have a good understanding of how things work, you'll be able to follow each community's particular norms and procedures for contributing and making governance changes.
Both the base layer and application layer governance are crucial for the proper functioning and evolution of a blockchain network.
Governance is a critical aspect of any decentralized network as it ensures that the network can adapt, evolve, and operate efficiently without a central authority. The governance of a blockchain network can be broadly categorized into two layers: the Base Layer Governance and the Application Layer Governance.
The base layer refers to the blockchain consensus mechanism itself. This is the foundational layer of a blockchain network that includes the blockchain protocol, consensus algorithm, and the native cryptocurrency. The base layer governance involves decisions and changes related to the core protocol of the blockchain, such as changes in the consensus algorithm, block size, and transaction fees.
The consensus mechanism is a set of rules and processes that nodes in a blockchain network must follow to agree on the current state of the blockchain. Different blockchain networks use different consensus mechanisms, such as Proof of Work (PoW), Proof of Stake (PoS), or Delegated Proof of Stake (DPoS).
Protocol changes refer to any modifications made to the underlying code of the blockchain. These changes can include bug fixes, improvements, or new features. Protocol changes often require a majority of nodes to agree and implement the changes, which may result in a hard fork or a soft fork.
The application layer consists of all of the various decentralized apps (dApps) built atop the underlying blockchain. Examples of application layer governance systems include Decentralized Finance (DeFi) protocols and general-purpose decentralized autonomous organizations (DAOs). The application layer governance involves decisions and changes related to the dApps and smart contracts built on the blockchain.
DeFi protocols are financial services, such as lending, borrowing, or asset trading, that are built on blockchain technology. The governance of DeFi protocols often involves decisions related to the parameters of the protocol, such as interest rates, collateral requirements, and fee structures.
DAOs are organizations represented by rules encoded as a computer program that is transparent, controlled by organization members and not influenced by a central government. DAOs aim to codify the rules and decision-making processes of an organization, eliminating the need for documents and people in formalized roles.
Learn about what decentralized governance is and why it matters.
First, let's get down the basics.
The section assumes users have a general understanding of cryptocurrency, along with some familiarity with the Ethereum ecosystem in particular (most governance protocols currently exist on Ethereum).
If you find that you're still a little unclear, check out the external resources below.
Onchain voting is trustless; offchain voting is not.
Onchain voting refers to governance systems where individual votes are submitted as transactions, and recorded directly on the blockchain. Submitting onchain requires users to pay a transaction fee for each vote.
Smart contracts can be designed to execute proposals automatically based on the outcome of onchain votes, removing the need for a trusted third party or core team to enact vote results. Examples of onchain voting systems include MakerDAO, Aave, and protocols built on Compound's governance framework.
More secure than offchain voting
No trusted third party is required to count or enact votes
Passed proposals can be executed automatically
Works well for approving protocol changes or other high-risk votes
Offchain voting refers to governance systems where individual votes are not submitted as blockchain transactions. No transaction fees are necessary for offchain votes.
In token weighted voting schemes, users are prompted to sign messages with their wallet to vote, and the resulting data is stored via a decentralized file storage system such as IPFS or Arweave. While this storage mechanism reduces risk of vote tampering, a trusted third party is still needed to accurately count the votes and enact the results onchain using admin privileges. The most prominent offchain voting system, Snapshot, has been adopted as a voting tool by several protocols including Yearn Finance and Sushiswap.
Some protocols also occasionally use non token weighted polls, which give each user one vote regardless of token holdings. Examples include polls in Discourse forums and Discord chats. These polls are vulnerable to manipulation, but can be helpful in gauging community sentiment earlier in the development process before proposals are put up for token holder voting.
No transaction fees required to vote
Offchain votes can be recorded via decentralized data storage systems, reducing risk of vote tampering
Works well for sentiment polls or other low-risk votes
Several protocols are experimenting with using both offchain and onchain votes in different parts of the governance process. For example, CurveDAO uses Snapshot offchain voting for initial sentiment polls of token holders, and only proposals that successfully pass the polling stage are put up for an onchain vote. Hybrid approaches like this can help reduce transaction fee expenses while still leaving token holders in full control of system functions.
: Overview of blockchain technology.
: List of educational resources curated by the Ethereum Foundation.
: Community resource for learning about Ethereum.
: User-friendly overview of how Ethereum works.
: Depth of information about decentralized finance.
: User-focused product guides and tutorials.
: Coverage of DeFi projects and events.
: Interviews, deep dives on projects, and educational resources.
: Content platform focusing on decentralized finance.
: DeFi-focused newsletter and interview series.
: Community newsletter focused on o-chain data and analysis.
: Daily coverage of decentralized finance.
: Concise roundup of the Ethereum ecosystem.
Aragon and Snapshot are also implementing "optimistic voting," which allows for offchain poll results to be executed onchain and uses Aragon Court as a security mechanism. More information is available in the .
Different networks may use different methods of governance execution, depending on their needs and goals.
The execution of governance decisions is a critical aspect of any decentralized network as it ensures that the network can adapt, evolve, and operate efficiently without a central authority. There are several methods through which governance decisions can be executed in a decentralized network.
Onchain governance involves the use of the blockchain itself to make and implement decisions. This method involves the use of smart contracts and the blockchain's native cryptocurrency to propose, vote on, and implement changes.
In token-based voting, the holders of the network's native token participate in the decision-making process by voting on proposals. The weight of a participant's vote is often proportional to the amount of tokens they hold. Once a proposal receives the required number of votes, it can be implemented on the network.
In delegated voting, token holders can delegate their voting power to a representative who votes on their behalf. This method is often used in networks that use Delegated Proof of Stake (DPoS) as their consensus mechanism.
Offchain governance involves decision-making processes that occur outside of the blockchain. This method often involves discussions, debates, and voting that take place on online forums, social media, and other communication platforms.
Core developer meetings involve the developers who maintain and update the network's codebase. These meetings often involve discussions on bug fixes, improvements, and new features. The decisions made in these meetings are then implemented in the network's code.
A User-Activated Soft Fork is a method where the users of a network, rather than the miners, enforce a change in the network's rules. This method is often used as a last resort when there is a disagreement between the network's users and miners.
Hybrid governance involves a combination of both onchain and offchain governance methods. This approach aims to leverage the strengths of both methods to create a more robust and flexible governance system.
In this method, a DAO is used to propose and vote on changes using onchain governance. However, discussions and debates on the proposals occur offchain, often on online forums or communication platforms.