# network-upgrades

```javascript
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](/run-core-node/commands.md) 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](/run-core-node/network-upgrades.md).

## 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:

```javascript
"status" : [ 
    "Armed with network upgrades: upgradetime=2018-01-31T20:00:00Z, protocolversion=9" 
    ]
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.docs.bantufoundation.org/run-core-node/network-upgrades.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
