Frequently Asked Questions

This note provides a detailed exploration of implementing a smart contract-based Decentralized Autonomous Organization (DAO) for quarterly charity voting, with the specific constraint that no charity can win more than once a year. The analysis is grounded in the principles of blockchain technology, DAO governance, and smart contract functionality, drawing from existing practices and theoretical frameworks, as discussed in various online resources such as DAO Basicsand Philanthropy DAOs.

Background and Context
A DAO is a decentralized organization governed by its members through smart contracts on a blockchain, such as Ethereum. Smart contracts are self-executing programs that automate and enforce rules without intermediaries. The use case here involves voting on a quarterly basis to select a charity for donation, with a key constraint ensuring no charity wins more than once annually. This setup aligns with emerging trends in philanthropy DAOs, such as Giveth Future of Giving, which focus on decentralized charitable giving, and early discussions on platforms like Reddit, as seen in the post about an Ethereum-based charitable DAO (Charity DAO on Reddit).

Detailed Process Flow
The implementation involves several phases, each managed by the smart contract to ensure transparency and compliance with the rules. Below is a breakdown of the process:

  • Membership and Token Integration: Members of the DAO hold tokens, which represent their voting power. These tokens are typically managed by a separate token contract, with the DAO smart contract querying balances via functions like balanceOf. This integration ensures that voting power is proportional to token holdings, a common practice in DAOs as noted in DAO Basics.
  • Voting Period Management: Voting periods occur every quarter, approximately every 90 days, initiated by a function callable by any member once sufficient time has passed since the last period. Each voting period includes:
  • Proposal Phase: Lasts for a set duration, such as one week, where members can propose charities. The smart contract checks eligibility by ensuring the charity has not won in the past 365 days.
  • Voting Phase: Follows the proposal phase, lasting another week, where members cast votes for proposed charities. Votes are weighted by the member's token balance, retrieved from the token contract.
  • Charity Proposal and Eligibility: When proposing a charity, members provide details such as the charity's name, unique ID, and wallet address for receiving funds. The smart contract verifies eligibility by checking the charityLastWinTimestamp mapping against the current block timestamp, ensuring no win within the last year. If eligible, the charity is added to the list of candidates for the current voting period. This prevents ineligible charities from being voted on, aligning with the constraint.
  • Voting Mechanism: During the voting phase, members call a function to vote for a charity, with their vote weighted by their token balance. The smart contract tracks votes in a mapping, ensuring each member votes only once per period. The tallying process sums the token balances of voters for each charity, determining the winner as the one with the highest total weight.
  • Determining and Executing the Winner: After the voting phase ends, a function determines the winner by comparing vote totals. In case of ties, a rule (e.g., selecting the charity with the smallest ID) breaks the tie. The smart contract transfers a predefined donation amount to the winning charity's wallet address, assuming sufficient funds are available. It then updates the charityLastWinTimestamp to record the win.

Enforcing the Annual Constraint
The critical constraint—no charity wins more than once a year—is enforced through the smart contract's logic:

  • When a charity is proposed, the contract checks if block.timestamp is at least 365 days after the last win timestamp for that charity. This uses block timestamps for date comparison, acknowledging potential minor inaccuracies due to miner manipulation, as discussed in DAO Governance Aragon. For this application, such inaccuracies are typically minimal and do not significantly affect the process.

Edge Cases and Considerations
Several edge cases were considered to ensure robustness:

  • No Proposals: If no charities are proposed, no donation is made for that quarter, though this could be mitigated by requiring at least one proposal.
  • Single Candidate: If only one eligible charity is proposed, it automatically wins, provided it meets the criteria.
  • Fund Availability: The smart contract must have sufficient funds for donations, with a deposit function to receive contributions.

Timestamp Accuracy: While block timestamps are used, their potential manipulation is minimal for this purpose, as noted in discussions on DAO governance (DAO Governance Aragon).

Comparative Analysis with Existing DAOs
Research into existing philanthropy DAOs, such as Givepact Donate Cryptoand Charity DAO NewsBTC, shows similarities in voting and donation mechanisms. However, none explicitly mention the annual win limit, suggesting this is a custom feature. Discussions on Reddit (Charity DAO on Reddit) highlight charitable DAOs with monthly distributions, but quarterly voting with the given constraint appears novel.

Technical Implementation Details

The smart contract would include:

  • State Variables: lastVotingPeriodStartTimestamp, proposalPhaseEndTimestamp, votingPhaseEndTimestamp, currentCandidateCharities, charityLastWinTimestamp, memberVotes, donationAmount.
  • Key Functions: startNewVotingPeriod(), proposeCharity(charityId, charityName, charityAddress), voteForCharity(charityId), determineWinner().

Table: Comparison of DAO Phases and Actions

Practical Implications
This DAO model enhances transparency and trust, as all actions are recorded on the blockchain, visible to all members. It also democratizes decision-making, aligning with the ethos of decentralization. However, challenges include ensuring accurate timestamps and managing fund availability, which require careful design and possibly external audits, as discussed in DAO and Nonprofits Law Blog.

Conclusion
The smart contract DAO for quarterly charity voting, with the constraint of no charity winning more than once a year, is feasible and aligns with DAO governance principles. It leverages blockchain for automation and transparency, ensuring fair distribution of donations while adhering to the specified rules, as supported by various online resources and community discussions.

Initiation On-demand Start new voting period (every 90 days) Must be 90 days since last period
Proposal Phase ~1 week Members propose charities, eligibility check Charity must not have won in past year
Voting Phase ~1 week Members vote, weighted by token balance Vote once per member, only for candidates
Winner Determination Post-voting Tally votes, transfer donation, record win Ensure funds available, update timestamp

All donations go toward trusted organizations that provide services, support, and resources for military veterans and first responders.

Absolutely! We welcome suggestions. Please reach out through our Contact page to submit a recommendation.

Our mission is to honor and reward veterans and first responders by paying it forward to organizations that support them. We aim to give back to those who have given so much for our communities and our country.

Event

Latest Past Events