Skip to main content

Slashing

Introduction

To discourage and punish malicious behaviour protocol validators can get slashed and therefore lose a part of their delegation. Depending on the severity of the behaviour different kinds of slashes are applied. There are three types of slashes:

  • Timeout slash: applied if the node misses a certain amount of bundle proposals
  • Vote slash: applied if the node voted incorrect (for example voted valid although the bundle was invalid etc.)
  • Upload slash: applied if the node proposed a bundle which then gets rejected as invalid

To prevent multiple slashing and therefore to protect the node's stake because of for example an incorrect configuration the node automatically gets removed from the pool if any of the above slashings are applied.

danger

ATTENTION: Not only the node's personal delegation will get slashed, also normal delegators will lose a part of their delegation in the same ratio. This implies that delegators have to choose their node carefully.

Point System

It is quite clear to determine when a vote or upload slash should get applied - immediately when the votes are tallied. But determining when a timeout slash should get applied is a bit more complicated because we don't exactly know if the node is actually offline or for example the internet, the web3 storage provider or the data source itself is offline. For this reason a point system was introduced.

Every time a node misses to vote on a bundle proposal or even upload a bundle proposal if the node is the current designated uploader the node receives a point. If a certain amount of points is reached (max_points) the timeout slash gets applied, but for that to occur the node has to receive the max points in a row. If for example the node has already 2 points but then starts voting again because of a short internet timeout the points are reset to zero again. With this system we can ensure with a high probability, that the node is actually offline. The max_points is a global parameter and its value can be found below.

Nodes receive a point in the following occurrences:

  • When the node is uploader and does not upload within the Upload Timeout (time can be found below)
  • When the node is validator and does not vote in the entire bundle proposal round

Slash Parameters

The current slashing parameters, the max points and the upload timeout (both important metric of timeout slashes) can be found below.

MainnetKaonKorellia
Upload Slash* % % %
Vote Slash* % % %
Timeout Slash* % % %
Max Points*
Upload Timeout* sec sec sec

*Updated at

The protocol slashing parameters can only be updated via the governance. The slashed $KYVE will get transferred to the community pool.

Calculation

In order to understand the slashing calculation the following example can be used. Here the above slashing parameters are used.

Node delegation = 100,000 $KYVE
Upload slash = 5%
Vote slash = 2%
Timeout slash = 0.05%

# Timeout slash
Slash amount = 100,000 $KYVE * 0.0005 = 50 $KYVE
Remaining delegation = 100,000 $KYVE - 100,000 $KYVE * 0.0005 = 99,950 $KYVE

# Vote slash
Slash amount = 100,000 $KYVE * 0.02 = 2000 $KYVE
Remaining delegation = 100,000 $KYVE - 100,000 $KYVE * 0.02 = 98,000 $KYVE

# Upload slash
Slash amount = 100,000 $KYVE * 0.05 = 5000 $KYVE
Remaining delegation = 100,000 $KYVE - 100,000 $KYVE * 0.05 = 95,000 $KYVE