主内
ー。。ー。

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

  1. Upgrade Antelope Software, Spring and EOS System Contracts
  2. Block Producers generate and register finality keys
  3. Activate required protocol features
    • Activate SAVANNA protocol feature
  4. eosio user calls switchtosvnn 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.