Background
Transaction Mortality is described on the Polkadot Wiki as:
Extrinsics can be mortal or immortal... If the extrinsic is not included in a block within this validity window, it will be discarded from the transaction queue.
The chain only stores a limited number of prior block hashes as reference. You can query this parameter, called
BlockHashCount
, from the chain state or metadata. This parameter is set to 2400 blocks on Polkadot (about four hours) at genesis...Setting the block checkpoint to zero, using the genesis hash, and a validity period of zero will make the transaction "immortal".
Motivation
I would like to change (increase or decrease) the maximal lifetime of a transaction in on my network.
I see I can set the BlockHashCount
on my chain in the node template runtime but the wiki implies that it cannot be changed from genesis. It also implies that this parameter affects much more than the behavior of the "cached" hashes on the node from the description above, so it's unclear why this may be unsafe to modify, or if there is another means to only change the behavior of what is the maximal validity period for a transaction to be included, at the runtime level, and (separately) at the transaction pool level.
Question
Is it safe to perform a runtime upgrade to update BlockHashCount
, and if so, what side effects will this have?