The new NeoGo version, 0.76.0, adds a number of changes that were implemented in the neox-preview1 build of the core C# node. These changes add functionality such as state root generation, key recovery syscalls, and include alterations to the consensus, P2P, and RPC protocols that are required to enable cross-chain interoperability.
Most of the updates are backwards-compatible extensions to the Neo2 protocol, however, the consensus changes render the updated C# and Go nodes incompatible with previous nodes on the Neo2 networks. The changes to consensus are required to let CNs exchange state root information and generate signatures in order to allow the current state to be confirmed by other nodes on the network
To alleviate this incompatibility, NeoGo can be used to run both a classic network or a new state root-enabled network. The former requires no changes, the node can simply be upgraded to the new version and run as before. This is the default configuration setting for MainNet nodes or private networks.
State root mode can be toggled on by modifying the settings with EnableStateRoot set to true; this is done by default in the provided TestNet configuration to ensure out of the box compatibility with the Neo2 Testnet. In the original article, Neo SPCC also provides steps for adding state root functionality to existing networks.