The network itself has network wide settings that can be updated.
This is performed by validators voting for and agreeing to new values the same way that consensus is reached for transaction sets, etc.
A node can be configured to vote for upgrades using the
upgrades endpoint . See Commands for more information.
The network settings are:
- the version of the protocol used to process transactions
- the maximum number of transactions that can be included in a given ledger close
- the cost (fee) associated with processing operations
- the base reserve used to calculate the lumen balance needed to store things in the ledger
When the network time is later than the
upgradetime specified in the upgrade settings, the validator will vote to update the network to the value specified in the upgrade setting. If the network time is passed the
upgradetime by more than 12 hours, the upgrade will be ignored
When a validator is armed to change network values, the output of
info will contain information about the vote.
For a new value to be adopted, the same level of consensus between nodes needs to be reached as for transaction sets.
Important notes on network wide settings
Changes to network wide settings have to be orchestrated properly between validators as well as non validating nodes:
- a change is vetted between operators (changes can be bundled)
- an effective date in the future is picked for the change to take effect (controlled by
- if applicable, communication is sent out to all network users
An improper plan may cause issues such as:
- nodes missing consensus (aka "getting stuck"), and having to use history to rejoin
- network reconfiguration taking effect at a non deterministic time (causing fees to change ahead of schedule for example)
For more information look at Network Upgrade.
Example upgrade command
Example here is to upgrade the protocol version to version 9 on January-31-2018.
$ stellar-core http-command 'upgrades?mode=set&upgradetime=2018-01-31T20:00:00Z&protocolversion=9'
$ stellar-core http-command info
At this point
info will tell you that the node is setup to vote for this upgrade:
"status" : [ "Armed with network upgrades: upgradetime=2018-01-31T20:00:00Z, protocolversion=9"]