Vote Proposal Buffer

What is Vote Proposal Buffer

Vote Proposal Buffer is the amount of time that must pass between each subsequent vote. This parameter will determine the number of votes that can take place within a period of time and whether or not we can have votes run concurrently.

What is important to consider?

If we look at the edge cases, a very high setting would greatly limit the number of votes we can have over a period of time. For example, if set to 90 days, there would be a maximum of 4 votes allowed per 12-month period. Depending on the Vote Duration parameter, this may also prevent concurrent votes, if that is a desired outcome. A very low setting would allow for many votes over a period of time and, depending on the Vote Duration parameters, could allow votes to run concurrently. For example, if set to 1 day, a new vote may take place every day.

So what do we need to talk about in this forum post?

  1. What are the advantages and disadvantages of having a very high Vote Proposal Buffer and a very low Vote Proposal Buffer.
  2. What considerations should we take into account in determining this parameter?
3 Likes

For background:

In the function that creates new votes there are these lines:

// Get the start block of the previous vote (if it’s the first vote will be 0)
uint64 previousVoteStartBlock = votes[voteId - 1].startBlock;
// Here we ensure that the next vote created starts at least bufferBlocks blocks after the previous vote start block
uint64 earliestStartBlock = previousVoteStartBlock == 0 ? 0 : previousVoteStartBlock.add(bufferBlocks);
// Get the actual start block of the next vote created (if the bufferBlocks duration has already passes then get the current block number)
uint64 startBlock = earliestStartBlock < getBlockNumber64() ? getBlockNumber64() : earliestStartBlock;

  // Get the block from where the vote will be able to be executed in case it passes
  uint64 executionBlock = startBlock.add(durationBlocks).add(executionDelayBlocks);

From

!dish praise to @lkngtn for describing to me the real reason for the vote proposal buffer in Dandelion Voting:

The vote proposal buffer’s main purpose is to make it so that the rage quit mechanism works well in a specific scenario…

Imagine if a proposal comes out to send 100 wxDai to the Token Engineering Academy and I vote yes on it right after it comes out.

Then a second proposal comes out 3 minutes later that asks for 10,000 wxDai to fire bomb a house… and for some crazy reason this gathers support.

Well I voted yes on the first proposal, but i want to rageQuit before the second proposal passes.

I cannot rage quit until that first vote is executed… and there was only 3 minutes between the vote proposals so there will be 3 minutes between the vote execution…

As you can see… 3 minutes is not enough time really… so this variable was included to protect against this scenario.

this is a conviction voting scenario, do we have this parameter for CV too?

No, this is a particular feature of Dandelion Voting. In the case of Conviction Voting many proposals can be proposed at the same time.