Switching Over To Savanna Consensus Algorithm
Switching Over To Savanna Consensus Algorithm
Switching over to the Savanna Consensus Algorithm is a multi-step process.
Overview of Upgrade Process
There are four steps
- Upgrade Antelope Software, Spring and EOS System Contracts
- Block Producers generate and register finality keys
- First activate protocol feature
BLS_PRIMITIVES2
- See section below on Generate and Registering Finalizer Keys
- First activate protocol feature
- Activate required protocol features
- Activate
SAVANNA
protocol feature
- Activate
eosio
user callsswitchtosvnn
action
Antelope Software Requirements
Switching to Savanna will required the latest version of Spring Software and the EOS System Contracts.
Note: CDT v4.1.0 is needed to compile the latest EOS System Contracts. This version of CDT contains both the needed host functions, and cryptography support needed to support managing finalizer keys.
Protocol Features Dependencies
The reference for protocol features with their corresponding hashes may be found in bios-boot-tutorial. Switching to the SAVANNA
consensus algorithm, requires the activation of the SAVANNA
protocol feature. This feature depends all protocol features available in Spring v1.0.0 being in the active_schedule. This full list of protocol features in Spring v1.0.0 is listed below.
- DISABLE_DEFERRED_TRXS_STAGE_1
- DISABLE_DEFERRED_TRXS_STAGE_2
- WTMSIG_BLOCK_SIGNATURES
- BLS_PRIMITIVES2
- DISALLOW_EMPTY_PRODUCER_SCHEDULE
- ACTION_RETURN_VALUE
- ONLY_LINK_TO_EXISTING_PERMISSION
- FORWARD_SETCODE
- GET_BLOCK_NUM
- REPLACE_DEFERRED
- NO_DUPLICATE_DEFERRED_ID
- RAM_RESTRICTIONS
- WEBAUTHN_KEY
- BLOCKCHAIN_PARAMETERS
- CRYPTO_PRIMITIVES
- ONLY_BILL_FIRST_AUTHORIZER
- RESTRICT_ACTION_TO_SELF
- GET_CODE_HASH
- CONFIGURABLE_WASM_LIMITS2
- FIX_LINKAUTH_RESTRICTION
- GET_SENDER
- SAVANNA
Generate and Registering Finalizer Keys
The Savanna Consensus algorithm utilized by Spring v1 separates the roles of publishing blocks from signing and finalizing blocks. Finalizer Keys are needed to sign and finalize blocks. In Spring v1, all block producers are expected to be finalizers. There are three steps to creating finalizer keys
- generate your key(s) using
spring-utils
- add
signature-provider
to configuration with the generated key(s) - restart nodeos with the new
signature-provider
config - register a single key on chain with the
regfinkey
action
Additional information on Finalizer Keys may be found in Guide to Managing Finalizer Keys and Introduction to Finalizers and Voting.
Confirmation of Consensus Algorithm
The action switchtosvnn
, initiates the change to the Savanna Consensus Algorithm, and must be called by the owner of the system contracts. On EOS Mainnet this would be the eosio
user. This is event is called only once per chain.