Skip to content

Ballots Overview. Life cycle and limits

Vadim Arasev edited this page Sep 28, 2018 · 17 revisions

Table of Contents

Overview

A Ballot is a proposal that changes the current state of the network.

Here are the properties of a given Ballot:

  • Ballot Type -- These have been reviewed in the previous section. Each Ballot Type will have different fields that need to be supplied.
  • Ballot End Time -- This defines the time window in which the Ballot is open for voting. Currently, this must be a date/time in the future that allows a reasonable time for other Validators to consider, research, and discuss the ballot. The format is mm/dd/yyyy, hh:mm AM/PM (local time), for example, 02/22/2022, 10:00 PM. <question: which time zone? Consideration is being given to converting this to an 'hours+minute+seconds from ballot start' format to eliminate possible time zone concerns.>
  • Consensus Threshold -- This defines the minimum number of votes for a Ballot to succeed. Once a ballot has been created this value is immutable.

Types

  • Ballot for keys -- this is the voting to add, remove, or swap any type of validator's key: mining, voting, payout.

  • Ballot to change minimum threshold -- this is the voting to change Consensus threshold for Validator Management Ballot and Consensus Threshold Ballot.

  • Ballot to change proxy contract -- this is the voting to change the addresses of smart contracts' implementations.

  • Ballot to manage emission funds -- this is the voting to manage emission funds which accumulated by EmissionFunds smart contract.

Lifecycle

Here are the states of a Ballot:

  • Created -- This is the process of creating a new Ballot.
  • Open -- This is the time window where the Ballot will accept votes. NOTE: A Validator can only vote once per ballot, and the MoC does not possess any voting rights.
  • Closed awaiting Finalization -- When the Ballot End Time expires the Ballot will no longer accept any new votes and the Ballot has not yet been committed to the network.
  • Finalized -- After a ballot has expired the ballot must be Finalized, i.e. proposer or other active Validator for associated network must click the "Finalize" button on the ballot. This commits the result of the Ballot to the network, and if the Ballot was accepted the changes to the network will be applied.

Here is the ballot's voting and finalization lifecycle, for example, for the ballot for validator key:

Limits

To prevent Validators from spamming the network with nonsense Ballots, there exist limits on each Ballot type. At the time of this writing, current limits are as follows:

  • Validator Management Ballot: 9 active ballots at one time
  • Consensus Threshold Ballot: 9 active ballots at one time
  • Modify Proxy Contract Ballot: 9 active ballots at one time
    • NOTE For allowed active votes per validator, we currently use the following formula: [200/N] where N= NumberOfActiveValidators (excluding Master of Ceremony). Example with 21 TotalActiveValidators: 200 / 21 = 9 (as an integer) - this is the maximum active ballots allowed to one Validator. As a number of Validators increases, this number reduces.

NOTE: Ballots need to be thoughtful and should only be proposed by a Validator if they can defend the Ballot and explain the Ballot's benefit to the network. Inappropriate use or abuse of balloting privileges, or failure of a Validator to participate in offered ballots can be cited in future balloting procedures.

Clone this wiki locally