Technical description of the platform

Activation of blockchain features

The Waves Enterprise blockchain platform supports activation of additional blockchain features by voting of nodes - in other words, the soft fork mechanism. Soft fork is an irreversible action, because the blockchain does not support a soft fork rollback.

Only nodes with the miner role can take part in the voting, because votes of each node are attached to a block created by this node.

Voting parameters

Identifiers of features supported by a node are stated in the supported string of the features block in the node section of the node configuration file:

features {
  supported = [100]
}

Voting parameters are defined in the functionality block of the node configuration file:

  • feature-check-blocks-period - voting period (in blocks);

  • blocks-for-feature-activation - number of blocks with a feature identifier required for activation of this feature.

By default, each node is set in a way that it votes for all supported features.

Attention

Voting parameters of a node cannot be changed during blockchain operation: these parameters should be unified for the entire network in order to provide full synchronization of nodes.

Voting procedure

  1. During a mining round, a miner node votes for features included in the features.supported block, if they have not been activated in the blockchain before: feature identifiers are put into the features field of each block during its creation. After that, created blocks are published in the blockchain. So, all nodes with the miner role vote for their features during the feature-check-blocks-period.

  2. After the feature-check-blocks-period, the system performs counting of votes - identifiers of each feature in created blocks.

  3. If a voted feature collects a number of votes that is greater or equal to the blocks-for-feature-activation it gets an APPROVED status.

  4. The approved feature is activated after the feature-check-blocks-period interval starting from a current blockchain height.

Usage of activated features

When activated, a new feature can be used by all blockchain nodes that support it. If any node does not support an activated feature, it will be disconnected from the blockchain in a moment of a first transaction using this unsupported feature.

When a new node is connected to the blockchain, it will automatically activate all previously voted and activated features. Activation is performed during synchronization of the node, if the node itself supports activated features.

Preliminary activation of features

All features available for voting can be also forcibly activated while starting a new blockchain. This can be set in the pre-activated-features block of the blockchain section in the node configuration fail:

pre-activated-features = {
  ...
  101 = 0
  }

Blockchain height for activation of a certain feature is stated after an equal mark in front of every feature.

List of available feature identifiers

Identifier

Description

100

Activation of the LPoS consensus algorithm

101

Support of gRPC by Docker smart contracts

119

Optimization of performance for the PoA consensus algorithm

120

Support of sponsored fees

130

Optimization of performance for miner ban history

140

Support of atomic transactions

160

Support of parallel creation of liquid blocks and microblocks

162

Validation of smart contracts in the blockchain