Automatic Updating - Wiki Parity Tech Documentation

Parity Ethereum features the first fully blockchain-based consensus-protocol updating system; which can be considered “reasonably secure” if the upstream binaries are trusted.

Deployed on the chain is the Operations contract. This acts as an oracle, tracking a number of important aspects about the blockchain you are running (i.e. foundation or kovan) and the Parity client (though it’s written to work with each of the other implementations should their authors so desire). It includes information about:

Using this information, Parity Ethereum can do three important things completely automatically:

Client Configuration

The snippet below shows the config items relevant to the autoupdater, set to their defaults.

# Which releases should be autoupdated to, possible values:
# "critical" - network-wide security or consensus relevant updates only, "all", "none"
auto_update = "critical"
# Which release-track should you get updates for, possible values:
# "current" - same as node is currently running
# "beta" - new features and bugfixes
# "stable" - bugfixes only
# "nightly" - built from github master and may not always be available
release_track = "current"
# After becoming aware of an update, the maximum number of blocks before it is applied
# (in practice there is a random wait for less than this number of blocks for network health)
auto_update_delay = 100
# Number of blocks between checks for updates
auto_update_check_frequency = 20
# Disables auto downloading of new releases. Not recommended.
no_download = false
# Forces Parity to run even if there are known issues regarding consensus. Not recommended.
no_consensus = false

Chain Configuration

in order to use the autoupdater on your private chains, a registrar contract must be deployed, the key operations is used to denote the address of the contract that manages the auto-update process.

You are required to specify the address of the registrar contract in the general params section of your chain specification:

"params": {
"registrar" : "0x<address of registrar contract here>",

and then reserve the operations key and setData to the address of the previously deployed operations contract.

Operations Contract

A simple example of an operations contract can be found here.

There are three types of actors associated with the operations contract

the operations contract allows you to create releases, and builds of those releases, for multiple clients on a blockchain.