Anything in config section of genesis is applied directly onto the geth regardless of the blocks it may have already in its chain. So, if the chain is up to lets say block 1000, you can enable new hard forks such as constantinople or istanbul by setting your constantinopleBlock to 1100 and then istanbulBlock to 1200 and it will work.
That said, some caveats:...
Most of the smart contracts are not upgradable by design, not sure about your one.
When developers design hard fork, they take backward compatibility very seriously, so in general, existing smart contract should not be affected much. However, some behavior changes are possible. For example, Istanbul changes gas cost of certain operations (EIP-1884), so in ...
Simply, we need to do the same things as ethereum do for their networks on your chain.
We have two options:
1. First is do like this answer
How to setup constantinople fork for private ethereum chain
2. Modify config in the source code as below step
Update the config as relevant with your config.json file in below file
Update config.go in
The Muir Glacier fork is a hard fork of the Ethereum network that delays the difficulty bomb. The fork is expected to happen on block 9,200,000 in January 2020 and will contain a single EIP, EIP 2387.
This fork delays the difficulty bomb 4 million blocks.