POA
English
English
  • Welcome to POA
  • Features
    • Known Validators
    • POADAO Consensus
    • Bridged Native Token
    • On-Chain Randomness
  • Use Cases
    • Scalability for BlockChain Games
    • Community-Based Currencies
    • Subsidized Transactions
    • Decentralized Finance (DeFi)
  • DApp Spotlights
    • Ethernal.World
  • Roadmap
  • For users
    • POA Tokens
      • POA Merger & STAKE Swap
      • POA - STAKE FAQs
      • POA Token Supply
      • POA & POA20 Exchanges
      • POA & POA20 on Binance
      • FAQ: POA20 General Questions
    • POA Token Use Cases
      • Utility Token
      • Currency Token
      • Collateral Token
      • Bridged Token
      • Staking Token
      • Stable Token
    • POA to POA20 Bridge
    • Accept POA20 Payments
      • Account Registration & Login (Merchant Setup)
      • Setup Merchant Account
      • Merchant Payment Method Setup
      • Making a Payment with POA20 (Customer Perspective)
    • Tutorials
      • Trading POA20 on DEX.AG
      • POA20 Token Swaps on 1inch.exchange
      • Getting Airdrops via Discord
    • Governance
      • Article: A Successful Year of On-Chain Governance
      • Governance Reports
        • April 2020 Report
        • December 2019 Report
      • Ballot Type, Lifecycle & Limits
    • ❌Nifty Wallet (Discontinued)
      • Getting Started
      • Import and Interact with Smart Contracts
      • Connect to a Hardware Wallet (Ledger & Trezor)
      • Connect to D'CENT Biometric Wallet
      • Connect to Pocket Decentralized Network
    • 3rd Party Wallets
      • Trust Wallet
      • MetaMask
    • POA Mania
      • News - Updates
      • Rules
      • POA Mania FAQs
      • Deposit & Withdraw
      • Winner Selection
      • Round Details
      • POA Mania vs PoolTogether
      • POA Mania on Trust Wallet
      • POA Mania Security Audit
      • POA Mania on MetaMask Mobile
    • Whitepaper
      • POADAO v1
        • Introduction
        • Proof of Authority
        • POA Network Functionality
        • Decentralized apps (DApps)
          • Initial ceremony DApp
          • Proof of Physical Address (PoPA) DApp
          • Proof of Bank Account DApp
          • Proof of Social Network DApp
          • Proof of Phone Number DApp
          • Governance DApp
        • Summary & Acknowledgements
        • References
        • Appendix A: Code Samples
          • Ballots manager
          • Validators manager
          • Deployment scripts for the mining node
  • For developers
    • Developer Resources
    • Getting Tokens For Tests
      • ERC20 Test Token Faucet
      • Sokol Testnet Faucet
    • Full Node Setup
      • Install OpenEthereum Client
      • Install Nethermind Client
    • DApp Deployment
    • TheGraph Data Indexing
    • On-Chain Random Numbers
      • RNG explainer (AuRa + RandomAura Contract)
      • Accessing a Random Seed with a Smart Contract
      • Randomness FAQs
    • API & SQL Access
    • Smart Contract Dashboard
    • Grants for Building on POA
  • For validators
    • Getting Started
      • Validator Resources
      • Becoming a Validator
    • Bootnode Setup
      • AWS Bootnode Setup
        • Prerequisites
        • Configure AWS
        • Download and Configure Playbook
        • Deploy
      • Non-AWS Bootnode Setup & Deployment
        • Local/Remote Machine System Requirements
        • Node Preparation
        • Configure node with Deployment Playbook
    • Validator Node Setup
      • Nethermind Upgrade
      • AWS VM for Validator Node Deployment
        • MoC: Master of Ceremony Key Exchange & Generation
        • Current Validators Vote in New Validators
        • Validator Node Setup Prerequisites
        • Configuring AWS
        • Download and Configure Playbook
        • Deployment
        • Upgrade Instance to a Larger Instance Type
      • Non-AWS Validator Node Setup
        • Local & Remote Machine System Requirements
        • Remote Machine Setup
        • Configure Node using Deployment Playbook
      • NetStats Dashboard
    • Hard Forks
      • Parity Upgrade Guide
      • POA Core
        • 2021-11-02 | #24090200
        • 2021-05-24 | #21364900
        • 2020-03-31 | #14350721
        • 2019-12-19 | #12598600
        • 2019-04-29 | #8582254
        • 2018-01-29 | # 772000
        • 2018-10-22 | #5329160
        • POA Core spec.json hard-fork update
      • Sokol
        • 2021-05-24 | #21050600
        • 2020-02-20 | #13391641
        • 2019-12-05 | #12095200
        • 2019-02-06 | #7026400
        • 2019-01-04 | #6464300
        • 2018-09-19 | #4622420
        • 2018-01-18 | #509355
        • 2018-01-08 | #362296
        • Sokol spec.json hard-fork update
    • Validator DApps
      • Validators MetaData DApp
      • Adding or Removing a Validator
  • Media
    • Social Media
    • Media Kit
    • Contact Us
Powered by GitBook
On this page
  • Ballot Properties
  • Ballot Lifecycle
  • Ballot Limits

Was this helpful?

  1. For users
  2. Governance

Ballot Type, Lifecycle & Limits

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

PreviousDecember 2019 ReportNextNifty Wallet (Discontinued)

Last updated 5 years ago

Was this helpful?

Ballot Properties

  • Ballot Type:

    • Keys Ballot: add, remove, or swap any type of validator's key: mining, voting, payout.

    • Consensus Threshold: change minimum consensus threshold (total votes required) for Keys Ballot and Consensus Threshold Ballot.

    • Proxy: change the addresses of smart contract implementations

    • Emission Funds: Send, burn or freeze accumulated emission funds

  • Ballot End Time: 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.

  • Consensus Threshold: Defines the minimum number of votes required for a Ballot to succeed. Once a ballot has been created this value is immutable. The minimum threshold for Keys and Consensus Threshold Ballots is determined through the Consensus Threshold Ballot. The threshold for Proxy and Emission Funds ballots is always calculated based on validator_count. This threshold is equal to (validators_count - master_of_ceremony) / 2 + 1 (we exclude the Master of Ceremony (MoC) from the validator set count because the MoC cannot vote).

Ballot Lifecycle

  • Created: A new ballot has been created.

  • Open: 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 no longer accepts any new votes, but it has not yet been committed to the network.

  • Finalized: After a ballot has expired it must be Finalized, i.e. the proposer or another active validator in the 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 are applied to to the network.

Ballot Limits

Limits exist for each ballot type to prevent malicious validators from spamming the network. We use the following formula to determine active votes per validator:

[200/N] where N= NumberOfActiveValidators (excluding Master of Ceremony). For Example with 21 Total Active Validators: 200 / 21 = 9 (as an integer) - this is the maximum active ballots allowed to one Validator. As the number of validators increases, this number is reduced.

The current limit is 13 active ballots (200/15) at one time for each type of ballot (Updated 11/21/19) .

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 proposed ballots, can be cited in future balloting procedures.

Example ballot voting and finalization lifecycle for a key ballot (click to enlarge)