Skip to content

DSS – Distributed Secure Services

A Distributed Secured Service is a web service built on the Karak Restaking Protocol, leveraging restaked assets as economic security for the services it provides. In short, it coordinates the tasks and rewards for operators.

Task Management

Operators registered with a DSS must perform the assigned tasks to them whenever the DSS asks for it. Based on the performance of the operators rewards are distributed by the DSS. Although there is no restriction on how a particular DSS wants to distribute rewards we recommended to use a merkle drop for O(1) complexity. Reward distribution is not a part of core contracts.

Slashing Rights

DSSs have the right to slash vaults staked to it if it feels that an operator had failed to perform its tasks adequately. To avoid unnecessary slashing, if the veto committee feels that the slashing was unfair, then they possess the right to veto a slashing event in Core. DSSs needs to set the max slashable percentage dssSlashablePercentageWad, which can be done only once. They are eligible to slash vaults which are staked into them by the operator and subjected to a cooldown of 2 days (represented by SLASHING_COOLDOWN) after each slashing request per operator.

SlashingHandlers

These are contracts that manage the burning of assets. Each asset has a slashing handler linked to it in Core when the Asset is allowListed in Karak, since different assets may require different burning methods.

Hooks

The DSS has the option to have hooks for a few functions like allocation and unallocation from an operator. These functions are part of the IDSS interface that Karak provides. Whenever these functions are called in core, they would further call the DSS functions.

  • The allocation hooks can be reverted by the DSS, which in turn would revert the entire transaction. This is expected behaviour as the DSS would be able to choose which operator it would like to accept.
  • The unallocation hooks cannot revert the entire transaction, as the revert case would be handled. This is to prevent a DSS from holding the funds of an operator hostage.

Interested in creating a DSS yourself? Take a look at the DSS developer guide to get started.