network-upgrades

import { CodeExample } from "components/CodeExample";

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 upgradetime)

  • 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.

  1. $ bantu-core http-command 'upgrades?mode=set&upgradetime=2018-01-31T20:00:00Z&protocolversion=9'

  2. $ bantu-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" 
    ]

Last updated