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 the nodes with the miner role vote for their features during the feature-check-blocks-period.

  2. After the feature-check-blocks-period elapses, the system counts the votes-identifiers of each feature in the 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 the features available for voting can also be forcibly activated while starting a new blockchain. Use the pre-activated-features block of the blockchain section in the node configuration file for this purpose:

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

173

Support of micro-block inventory v2

180

Support of privacy large object subsystem

190

PKI support v1

1120

Support of token operations for smart contracts, PKI support v1 and REST-based smart contracts deprecation

1122

Atomic support for other transactions; see the Atomic transactions page for a complete list of transactions

1123

Support of Lease/CancelLease operations for smart-contracts

1130

Support of operating over confidential data in smart contracts

1140

WASM smart contracts support

See also