The protocol used on a blockchain distributed network to decide, across all the active participants to the network, when to add a block and which block to add. The protocol provides the rules to follow when there are competing chains in the same network. More practically it has the following purposes:
- protect the network from attackers that try to add at the end of the chain a malicious block.
- provide a rule for choosing between two competing valid versions of the same block.