What contents of a non-raw chain spec can be added or altered without mutating the derived genesis hash? More specifically, does changing a pallet's genesis configuration in the spec lead to a different genesis hash?
Context: Say a test-network halts and requires codeSubstitutes
addition in the chain spec. However, upon restarting with the altered spec, the client throws with
Error: Input("\"Error parsing embedded file: unknown field `interestAccrual`, expected one of `system`, `parachainSystem`, `parachainInfo`, `balances`, `collatorSelection`, `session`, `aura`, `auraExt`, `council`, `elections`, `democracy`, `vesting`, `treasury`, `fees`, `collatorAllowlist`, `blockRewardsBase`, `blockRewards`, `liquidityRewardsBase`, `polkadotXcm`, `ormlTokens`, `ormlAssetRegistry`, `evm`, `evmChainId`, `baseFee`, `ethereum` at line 193 column 24\"")
because some pallets' genesis configurations have changed in between the testnet's genesis and now such that the GenesisBuild
storage behaves differently. This problem can be solved by updating/removing the erroneous pallets' configurations/storages in the spec. However, that does not appear to be the correct approach as I fear it will lead to a different genesis hash.
Shouldn't the genesis.runtime.system.code
be used automatically to not run into the stated compiler error?