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.
← BackVoting 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:
1024blocks - Epochs needed for foundational change:
32 - Epochs before activating approved foundational change:
128
Current Network Settings
- Maximum block size:
1271009bytes - Maximum box size:
4096bytes - 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/
| ID | Description | Default | Step | Min | Max |
|---|---|---|---|---|---|
| 1 | Storage fee factor (per byte storage period) | 1250000 | 25000 | 0 | 2500000 |
| 2 | Minimum monetary value of a box | 360 | 10 | 0 | 10000 |
| 3 | Maximum block size | 524288 | — | 16384 | — |
| 4 | Maximum cummulative computational cost of a block | 1000000 | — | 16384 | — |
| 5 | Token access cost | 100 | — | — | — |
| 6 | Cost per one transaction input | 2000 | — | — | — |
| 7 | Cost per one data input | 100 | — | — | — |
| 8 | Cost per one transaction output | 100 | — | — | — |
| 120 | Soft-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.