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¶
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 thefeatures
field of each block during its creation. After that, created blocks are published in the blockchain. So, all the nodes with theminer
role vote for their features during thefeature-check-blocks-period
.After the
feature-check-blocks-period
elapses, the system counts the votes-identifiers of each feature in the created blocks.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.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