Coordinated forking is a feature of the Radix Node that allows the community of validator node-runners to quickly and seamlessly adopt new “fork” versions of the Radix protocol – updates that change core aspects of the Radix protocol in a non-backward-compatible way. No off-ledger coordination is necessary to ensure everybody switches to the new fork at the same time.
Here’s how it works:
When a forking update to the protocol is released (as a new version of the Radix Node), node-runners will be able to update their node at whatever time is convenient for them. The new node will contain both the old (currently-running) version of the protocol and the new proposed version of the protocol with the forking change. The node will register with the network that it is ready to switch to the new protocol, but will continue to participate in consensus using the existing protocol until the network is ready to switch.
More and more validators will update their nodes, each registering that they are ready to switch to the new protocol. Because these registrations are done on the network itself, each node can see every other node’s registration. This means that when a configurable threshold of nodes (actually a minimum threshold of stake delegated to those nodes) is met, all of the updated nodes will decide at exactly the same epoch to switch to the new protocol. The minimum threshold is set to ensure that enough nodes are ready to switch that consensus will safely and efficiently continue.
If you’re a node-runner and want to know more details about the coordinated forking mechanism, see this entry in our documentation site.