ERGO

Voting Cycles and Types of Changes

Votes on foundational changes, such as block version, span 32 epochs and demand a 90% miner consensus. Everyday changes, like block size adjustments, require only a simple majority. Each block allows miners to cast votes for up to two everyday changes and one foundational change. These votes are included in the block's header.

← Back

Voting Mechanics

Affirmative Votes

To vote "Yes" for a change at the beginning of an epoch, a miner places the change's identifier directly into the block header.

Negative or Neutral Votes

To vote "No" or abstain, a miner enters a zero value in place of the identifier byte in the block header.

System Constants

  • Epoch length for voting: 1024 blocks
  • Epochs needed for foundational change: 32
  • Epochs before activating approved foundational change: 128

Current Network Settings

  • Maximum block size: 1271009 bytes
  • Maximum box size: 4096 bytes
  • Maximum transaction size: 96kb

Parameters Table

The following table describes vote identifiers, default values (during launch), possible steps, and minimum and maximum values.

  • If the step is not defined in the table, its value is defined as max(floor(current_value / 100), 1).
  • If the minimum value for a parameter is not defined, it equals zero.
  • If the maximum value is not defined, it equals 1,073,741,823.

A miner includes a parameter identifier (id) into the block header to propose or vote for increasing a parameter. If the miner supports decreasing the parameter, they would include (-id) into the block header.

Try out these parameters on deadit.github.io/paizo/

IDDescriptionDefaultStepMinMax
1Storage fee factor (per byte storage period)12500002500002500000
2Minimum monetary value of a box36010010000
3Maximum block size524288—16384—
4Maximum cummulative computational cost of a block1000000—16384—
5Token access cost100———
6Cost per one transaction input2000———
7Cost per one data input100———
8Cost per one transaction output100———
120Soft-fork (increasing version of a block)————

Parameter values are to be written into the extension section on the first block of a voting epoch, that is, in the extension of a block when its height mod 1024 = 0. Parameters for the initial moment of time (height = 1) are hardcoded.

How to Propose and Vote for Changes

To propose a change, a miner includes the vote identifier in the first block's header of a voting epoch. The header has three slots: two for everyday changes and one for soft forks. A zero should be set in any unoccupied slot. Votes can be arranged in any sequence.

For example, if a miner proposes to increase the storage fee factor and also initiate a soft-fork, they would input (0, 1, 120) in the header slots.