Skip to content

Chain Properties ​

Chain properties are the network's governable parameters: fees, block size, inflation rates, penalty rules, and more. There is no central authority that sets them — every active validator publishes their preferred values and the blockchain applies the median across all active validators.


How It Works ​

1. Validators Publish Preferences ​

Each validator submits their preferred parameters via versioned_chain_properties_update_operation:

json
[46, {
  "owner": "alice",
  "props": [3, {
    "account_creation_fee": "1.000 VIZ",
    "maximum_block_size": 131072,
    ...
  }]
}]

The [3, {...}] indicates version 3 (chain_properties_hf9, the current format).

2. Median Calculation ​

On every validator schedule update, the blockchain calls update_median_witness_props(). For each property independently, it:

  1. Collects values from every active validator.
  2. Sorts them.
  3. Picks the median (index active.size() / 2).
Example — 5 validators vote account_creation_fee:
  0.5, 1.0, 1.0, 2.0, 5.0 VIZ
              ↑
         median = 1.0 VIZ

The median resists extremes: a single validator cannot cause a sudden large shift; a majority must agree to move any parameter significantly.

3. Application ​

The resulting median_props object is stored in the validator_schedule_object and enforced across all block processing.


All Governable Properties ​

Account and Delegation ​

PropertyTypeDefaultDescription
account_creation_feeasset (VIZ)1.000 VIZMinimum fee to create a new account
create_account_delegation_ratiouint3210Required delegation = ratio × fee
create_account_delegation_timeuint32 (s)2592000 (30d)How long creation delegation is locked
min_delegationasset (VIZ)1.000 VIZMinimum amount for any SHARES delegation

Block Size and Bandwidth ​

PropertyTypeDefaultDescription
maximum_block_sizeuint32 (bytes)131072Maximum block size; controls throughput
bandwidth_reserve_percentuint16 (bp)1000 (10%)Extra bandwidth for small accounts
bandwidth_reserve_belowasset (SHARES)500.000000Threshold to qualify for bandwidth reserve
data_operations_cost_additional_bandwidthuint32 (%)0Extra bandwidth multiplier for data operations (custom_operation)

Inflation and Economics ​

PropertyTypeDefaultDescription
inflation_validator_percentuint16 (bp)2000 (20%)Validator share of block inflation
inflation_ratio_committee_vs_reward_funduint16 (bp)5000 (50%)Split of remaining inflation: committee fund vs reward fund
inflation_recalc_perioduint32 (blocks)806400 (~28d)How often inflation is recalculated

Inflation flow: block_reward × inflation_validator_percent → validator. Remainder split: inflation_ratio_committee_vs_reward_fund → committee fund; the rest → award reward fund.

Reward System ​

PropertyTypeDefaultDescription
min_curation_percentuint16 (bp)500 (5%)Minimum curation reward share from content payouts
max_curation_percentuint16 (bp)500 (5%)Maximum curation reward share
vote_accounting_min_rsharesuint325000000Minimum rshares for an award to produce non-zero reward
flag_energy_additional_costuint16 (bp)0Extra energy cost for downvotes/flags

Validator Accountability ​

PropertyTypeDefaultDescription
validator_miss_penalty_percentuint16 (bp)100 (1%)Vote weight reduction on missed block
validator_miss_penalty_durationuint32 (s)86400 (1d)How long the miss penalty lasts

Fees ​

All fees go to the committee fund (DAO treasury).

PropertyTypeDefaultDescription
committee_create_request_feeasset (VIZ)100.000 VIZFee to create a committee funding request
create_paid_subscription_feeasset (VIZ)100.000 VIZFee to create a paid subscription
account_on_sale_feeasset (VIZ)10.000 VIZFee to list an account for sale
subaccount_on_sale_feeasset (VIZ)100.000 VIZFee to list subaccount creation rights for sale
validator_declaration_feeasset (VIZ)10.000 VIZOne-time fee for validator registration
create_invite_min_balanceasset (VIZ)10.000 VIZMinimum invite balance

Vesting Withdrawal ​

PropertyTypeDefaultDescription
withdraw_intervalsuint1628Number of daily installments for SHARES unstaking

Committee Voting (HF14) ​

Anti-spam bounds on DAO committee-request ballots, enforced from HF14. These two fields live in the PM struct (chain_properties_pm, version 5) — not the base chain_properties_hf9 — so the already-live hf9 wire format is left untouched and pre-HF14 validator votes keep their original positional layout.

PropertyTypeDefaultDescription
committee_votes_per_requestuint32100 000Maximum ballots one committee request can accumulate before further votes are rejected
committee_vote_min_vestingasset (VIZ)1000.000 VIZMinimum effective vesting (converted to SHARES at vote time) required to cast or revise a committee ballot

Property Versions ​

Properties were introduced in hardfork stages:

VersionIndexHardforkFields added
chain_properties_init0Genesisaccount_creation_fee, maximum_block_size, delegation params, curation, bandwidth, flag cost, vote min rshares, committee threshold
chain_properties_hf41HF4inflation_validator_percent, inflation_ratio_committee_vs_reward_fund, inflation_recalc_period
chain_properties_hf62HF6data_operations_cost_additional_bandwidth, validator_miss_penalty_percent, validator_miss_penalty_duration
chain_properties_hf93HF9create_invite_min_balance, committee_create_request_fee, create_paid_subscription_fee, account_on_sale_fee, subaccount_on_sale_fee, validator_declaration_fee, withdraw_intervals
chain_properties_hf134HF13distribution_epoch_length
chain_properties_pm5HF14~30 prediction-market parameters + kill-switches pm_commit_reveal_enabled, pm_lazy_pool_enabled + vote caps committee_votes_per_request, committee_vote_min_vesting, pm_dispute_votes_per_market, pm_dispute_vote_min_vesting

Use version index 5 (chain_properties_pm) for all new validator property submissions. (Index 4 is chain_properties_hf13, which added distribution_epoch_length.)

Prediction-market parameters (v5, HF14) ​

All median-voted; see Prediction Market Operations.

All PM percentages are bp (10000 = 100.00%), like the other *_percent properties — no permille (‰) anywhere.

  • Oracle: pm_min_oracle_insurance, pm_max_oracle_fee_percent (the only governed fee cap — on the oracle %), pm_oracle_registration_fee, pm_oracle_penalty_percent, pm_oracle_dispute_response_sec, pm_oracle_accept_window_sec (default 3600 = 1h — the named oracle must accept or reject a pending market within this window; on expiry the cron refunds the creator's seed liquidity, but not the creation fee, and voids the market → pm_market_expired).
  • Risk / coverage (percent of a market's betting volume, 100 = 1.0×): pm_listing_min_coverage_percent (250 = 2.5×) — markets whose oracle insurance covers less than this share of their volume are hidden from the default list_markets catalog (revealed via show_risky); pm_betting_min_coverage_percent (150 = 1.5×) — advisory threshold, published for clients to require an explicit risk confirmation before betting (not enforced on-chain; must be ≤ pm_listing_min_coverage_percent).
  • Market: pm_min_liquidity, pm_market_creation_fee, pm_max_outcomes, pm_max_market_duration. (There is no aggregate fee cap; creator/liquidity fees are uncapped and self-limiting, with a static sum ≤ 100% solvency bound.)
  • Batch / commit-reveal: pm_batch_epoch_blocks, pm_reveal_window_blocks, pm_min_batch_bet, pm_commit_no_reveal_penalty_percent, pm_commit_reveal_enabled.
  • Disputes: pm_dispute_fee, pm_dispute_grace_sec, pm_dispute_vote_period_sec, pm_dispute_auto_close_sec, pm_dispute_approve_min_percent, pm_no_contest_penalty_percent, pm_dispute_reward_multiplier (bp multiplier, 10000 = 1×), pm_dispute_votes_per_market (default 100 000), pm_dispute_vote_min_vesting (default 1000.000 VIZ).
  • Time penalty: pm_default_time_penalty_percent, pm_max_time_penalty.
  • Lazy pool: pm_lazy_pool_enabled, pm_lazy_alloc_percent, pm_lazy_max_total_alloc_percent, pm_lazy_recall_step_percent, pm_lazy_lock_sec, pm_lazy_emergency_penalty_percent, pm_lazy_min_liquidity_fee_percent (default 200 = 2% — the pool refuses to co-provide liquidity to a market whose liquidity_fee_percent is below this reward floor).
  • Leverage (opt-in): pm_leverage_enabled, pm_leverage_fund_percent, pm_leverage_max_per_position_bp, pm_leverage_max_position_ratio_percent, pm_leverage_min_market_liquidity, pm_leverage_safety_margin_percent, pm_leverage_max_slippage_percent, pm_leverage_m_factor_percent, pm_leverage_pool_profit_percent, pm_leverage_expiration_buffer_sec, pm_conversion_profit_cost_percent.
  • Fairness: pm_processing_cap_per_block.

The three *_enabled flags (pm_commit_reveal_enabled, pm_lazy_pool_enabled, pm_leverage_enabled) are live kill-switches: the validator median can disable commit-reveal, the lazy pool, or leverage without a new hardfork.


Governance Loop ​

SHARES holders → vote for validators
Validators → publish preferred property values
Blockchain → takes median of active set
Median → applied as live network rules

Changing a parameter requires a majority of active validators to publish the new value. The process:

  1. Community discusses desired change (e.g., lower fees).
  2. Validators update their published properties.
  3. Users shift votes toward validators publishing the desired values.
  4. Once a majority of active validators publish the new value, the median shifts.
  5. New value takes effect automatically — no hardfork or governance vote needed.

Reading Current Properties ​

json
{ "method": "database_api.get_chain_properties", "params": [] }

Returns the current median properties in effect. See Database API.


See also: Validators, Database API, Staking and DAO.