# Runtime Parameters - ([Bounty 23](https://pioneer.joystreamstats.live/#/proposals/249), #289)

This lists and briefly describes chain constants that are changed via [runtime](https://github.com/Joystream/joystream/tree/master/runtime) upgrades for Joystream [substrate](https://github.com/paritytech/substrate) based testnets prior and including [Giza](https://www.joystream.org/giza/).
With the [Olympia release](https://github.com/Joystream/joystream/issues/2855) parameter [profiles](https://github.com/Joystream/joystream/pull/3462) are introduced (not part of this document).

Changing [constants](https://github.com/Joystream/joystream/blob/master/runtime/src/constants.rs) requires [test deployments](./Network-deployment) for verification and extensive testing to catch bugs.
- `MILLISECS_PER_BLOCK`: defines target duration per block. Actual average duration varies depending on [network performance](https://github.com/Joystream/community-repo/blob/master/contributions/research/validators/Babylon/11.4_Research_Max_Validator_Change_report.md).
- `BONDING_DURATION`: days user has to wait when unbonding tokens staked for [validation](https://github.com/Joystream/helpdesk/tree/master/roles/validators#rewards).
- `EPOCH_DURATION_IN_BLOCKS`: number of minutes per epoch

More constants are defined in [lib.rs](https://github.com/Joystream/joystream/blob/master/runtime/src/lib.rs):
- VERSION: it is [good practice](https://github.com/Joystream/joystream/tree/master/runtime#versioning-the-runtime) to increment spec on code updates.
- block parameters, discussed in [#2124](https://github.com/Joystream/joystream/issues/2124)
  - BlockHashCount
  - MaximumBlockWeight
  - AvailableBlockRatio
  - MaximumBlockLength
- `ExistentialDeposit`: minimal balance under which an account is removed from active balances to save chain space, [should be >0](https://github.com/paritytech/substrate/issues/10117).
- `TransferFee` and `CreationFee` are obsolete ([#2187](https://github.com/Joystream/joystream/pull/2187))
- `MaxLocks` neither changed nor discussed in Joystream, see [description](https://github.com/paritytech/substrate/pull/7103)
- `InitialMembersBalance`: [obsolete](https://github.com/Joystream/joystream/pull/1855)
- `REWARD_CURVE`: fixed [staking parameters](https://github.com/Joystream/helpdesk/tree/master/roles/validators#fixed-parameters) defining mining rewards, see [#507](https://github.com/Joystream/community-repo/issues/507)
  - min_inflation: minimal inflation for 0 stake
  - max_inflation: maximum inflation per year
  - ideal_stake: percent staked for maximum rewards
  - falloff: reward reduction for higher than ideal stake
  - max_piece_count: validator count limit
  - test_precision: internal, used in tests, [details](https://github.com/paritytech/substrate/blob/ded44948e2d5a398abcb4e342b0513cb690961bb/frame/staking/reward-curve/src/lib.rs#L54)
- working groups
  - MaxNumberOfCuratorsPerGroup: unused
  - ChannelOwnershipPaymentEscrowId: Channel Transfer Payments Escrow Account seed for ModuleId to compute deterministic AccountId
  - VideosMigrationsEachBlock: Video migrated in each block during migration
  - ChannelsMigrationsEachBlock: Channel migrated in each block during migration
  - MaxWorkerNumberLimit: max workers per WG
- proposals, see [#210](https://github.com/Joystream/joystream/issues/210)
  - ProposalCancellationFee
  - ProposalRejectionFee
  - ProposalTitleMaxLength
  - ProposalDescriptionMaxLength
  - ProposalMaxActiveProposalLimit
  - ProposalMaxPostEditionNumber: disabled
  - ProposalMaxThreadInARowNumber: unused
  - ProposalThreadTitleLengthLimit: 
  - ProposalPostLengthLimit
  - TextProposalMaxLength
  - `RuntimeUpgradeWasmProposalMaxLength`: code file size limit, last [increased for Alexandria](https://github.com/Joystream/joystream/issues/1216)
- [contracts pallet](https://paritytech.github.io/substrate/master/pallet_contracts/pallet/trait.Config.html), [likely obsolete](https://github.com/paritytech/substrate/issues/4268)
  - TombstoneDeposit: unused
  - RentByteFee: unused
  - RentDepositOffset: unused
  - SurchargeReward: unused
- storage constants, see [#2722](https://github.com/Joystream/joystream/issues/2722)
  - MaxDistributionBucketFamilyNumber
  - DataObjectDeletionPrize
  - BlacklistSizeLimit
  - MaxRandomIterationNumber
  - MaxNumberOfPendingInvitationsPerDistributionBucket
  - StorageModuleId
  - StorageBucketsPerBagValueConstraint
  - DefaultMemberDynamicBagNumberOfStorageBuckets
  - DefaultChannelDynamicBagNumberOfStorageBuckets
  - DistributionBucketsPerBagValueConstraint
  - MaxDataObjectSize
