Recently there was a lowering of the base fee from 10 to 0.5 lumens. Typically in a blockchain such a change would require a hard fork. How did all the validators agree to accept the new limit? Did everyone have to upgrade their software at the same time? What happens if a subset of all validators don't agree to the change?
You can read the network configuration section in the admin guide. Here is the relevant snippet:
For a new value to be adopted, the same level of consensus between nodes needs to be reached as for transaction sets.
What that means is that the mechanism (consensus) to get the network to agree to a change is the same one than for deciding which transaction set to apply for a given ledger; the difference is that votes for upgrades are specified by the administrator of each validator (unlike transactions that get flooded across validators). In a way this is no different than what happens when validators pick up a new version of the stellar-core binaries.
The upgrade configuration is: a time and an actual upgrade (change protocol version, or any other network setting).
What happens if a validator doesn't agree with the change? It won't vote for the change.
What happens next:
- the network cannot reach consensus on that upgrade, nothing happens (meaning the upgrade is still "pending")
- the network can reach consensus without that validator. The validator falls out of sync and is left behind (SCP doesn't allow for the creation of a split network)