Overview of Forks and Blockchain
In an Ethereum based Blockchain network, each node's client software follows a set of rules, or the Protocol, to validate transactions when producing new blocks or syncing blocks which are broadcast by other nodes in the network. As a result, all nodes need to operate with a consistent set of rules so that a block produced by a node can be validated and accepted by any other node in the network.
Blockchain client software, like any other, is updated over time to fix bugs and add new features.
Some of these updates result in a change to the protocol that governs the processing of transactions into blocks. One of Blockchain’s fundamental design tenets is global data consistency, which dictates that every instance of the client software must process a particular transaction exactly the same way. This requires a mechanism to synchronize the transition from the old protocol to the new protocol in lock step across the entire network.
Ethereum's architecture provides a mechanism to conduct such transition points by utilizing block numbers as the synchronization reference, using a Chain Configuration element which consists of a name for the transition point and a block number.
These transition points are called Forks. The presence of such a chain configuration indicates to the client software that the protocol for producing new blocks and for processing broadcasted blocks will be changed at the said block number, which is always set to a future block to give node operators the time to perform the software upgrade.
Hard Forks and the Ethereum Mainnet
A Fork which is not backwards compatible results in a Hard Fork, meaning that clients that do not update their protocol, which involves a combination of upgrading the client software and adding new chain configuration, are unable to sync blocks from the rest of the network, and new blocks they propose will be rejected by other nodes in the network.
On Ethereum mainnet, such planned Hard Forks are designated to take effect at set block numbers at a future date. In Permissioned blockchains, Hard Forks need to be scheduled depending on the chain's current block height.
Hard Forks on Kaleido
At Kaleido, we automated the process of updating the Protocol with a Hard Fork on all nodes in the chain. Hard Forks can be applied if your environment is at or later than release 1.0.28. With this Hard Fork, `constantinopleBlock` is applied to certain older environments which do not have the Constantinople genesis chain configuration.
In your Environment dashboard, click Environment -> Settings in the left nav to see if your environment is missing the latest chain configuration and is eligible for a hard fork:
If a hard fork is applicable to your environment, you can review the details of the hard fork, in particular the list of new EIPs the nodes will support after the hard fork.
If applicable, click Fork Upgrade -> Apply to apply the hard fork. Enter the confirmation text in the dialog box and click Fork Upgrade.
Since the change to the chain configuration needs to be applied to all nodes in the network simultaneously, the Fork Upgrade operation brings down all nodes in the environment together, resulting in a minor downtime for the environment. During Fork Upgrade, the applicable hard fork EIPs, Constantinople Block currently, is scheduled to be applied at a near future block in the chain, based on the highest block height after querying all the nodes in the environment.
If your environment already has Constantinople Block set in the genesis chain configuration, the console disables the option for your environment and displays the block number at which Constantinople Hard Fork is active in the chain configuration.
Once the nodes are in Started state after the upgrade, you can start using the environment. The Protocol upgrade is complete and the changes take effect for Constantinople Hard Fork  at the block number that is displayed in the console. You may track the current block number in the Environment dashboard in Kaleido console.
At Kaleido, we take pride in dramatically simplifying the blockchain technologies for enterprise adoption. Hard forks are complex software upgrade procedures but they are as simple as clicking a few buttons or making an API call with Kaleido. As the underlying Ethereum technology evolves, Kaleido will continue to publish new hard fork releases to put exciting features and improvements in customers’ hands.