Candle Auctions for Decentralized and Fair Decision Making
Most decentralized decision-making systems such as Decentralized Autonomous Organizations (DAO), or even bidding systems, are often prone to an issue commonly referred to as “sniping”. Typically, somebody may decide to put some money, or tokens, at the last minute in favor of a proposal to make sure their choice is the one executed. This prevents other voters to vote against this sudden change and thus could be considered as a way to “cheat” and influence a DAO in the wrong direction, which makes the decision making process potentially unfair.
A common way to solve this is to use an alternative voting system called Conviction Voting. With conviction voting, votes accumulate over time, which makes it hard, if not impossible, to “snipe” a decision or proposal. However, Conviction Voting is expensive (in terms of computation) to implement unless we use various approximation methods, which could then lead to vulnerabilities or “cheating” opportunities.
Popularized in the 17th and 18th centuries, candle auctions rely on a candle that would more or less impredictably expire thus signaling the end of the auction. The Polkadot and Kusama networks have developed a similar concept for their parachain auctions, where the winning block of an auction is chosen randomly after some time. This system was proven to be fair and strongly incentivizes people to bid, or show their interest, early.
We propose to use a similar system for a more fair decision-making system for DAOs. Each proposal can go through a candle auction-like system to decide whether it should pass or not. At the end of the process, a winning block is chosen for which we can then check the result of the votes. Think of it as a “Candle Vote”.
When a vote is opened, we enter a “starting phase” which allows us to collect opinions in the form of token weighted votes. During this period, all votes are guaranteed to be included. Once it expires, we can enter a “ending phase” that will still allow people to cast their votes but with a gradually reducing chance for them to be considered once the voting process stops.
When the ending phase stops, we can compute a random number, for instance via a Verifiable Random Function. This random number indicates which block we can check to determine whether a proposal should be considered accepted or not.