Delegators
Overview
Delegators are KIRA token holders who want to participate in network security by delegating assets as collateral to one or more consensus nodes' staking pools in exchange for a share of their revenue. Because delegators share revenue and responsibility with their chosen consensus nodes, they should carefully consider which nodes to delegate to and monitor their stakes regularly. Consensus nodes can also be delegators, but they are not required to. Staked assets are directly affected by the conduct of the elected nodes, so it is important for delegators to exercise diligence and diversification in their choices.
Native Liquid Staking
KIRA’s Consensus nodes have staking pools that are designed equivalently to regular AMM liquidity pools like Uniswap, in order to achieve native liquid staking. When a certain number of tokens <denom>
are deposited in the staking pool of a consensus node V<ID>
, an equal number of derivative tokens V<ID>/<denom>
are issued in return (similar to AMM LP tokens). These derivative tokens V<ID>/<denom>
can be freely moved and traded on and off-chain, while the underlying <denom>
tokens remain staked. If V1 is slashed for double signing, the staked <denom>
tokens can either be moved to the treasury, a governance spending pool or destroyed, while the derivative tokens V<ID>/<denom>
representing them would lose their 1-to-1 peg (similar to impermanent loss in AMM).
E.g.: If 50% of XYZ
tokens staked with block proposer V1
get slashed, unstaking 2 V1/XYZ
from V1
's pool would only return 1 XYZ
.
Staking Pools & Consensus Nodes Status
In KIRA's network, each consensus node operates its own staking pool where delegators can stake their assets. The staking pool has a unique ID and is linked to the consensus node's address. The consensus node has control over the staking pool's status and can enable or disable it, as well as set the commission rate on block rewards. In addition, a consensus node can be active
, inactive
, paused
, or jailed
depending on its performance, behavior or choice. While it is important to understand that the status of the staking pool is independent of the status of the consensus node, if a consensus node's status is inactive
, paused
, or jailed
, and/or if its staking pool is disabled
, delegators are not able to delegate any additional tokens to that node’s staking pool. They will only be able to undelegate their existing stake.
For more information regarding consensus nodes status and ranking system please refer to the Consensus Nodes Ranking & Status Management module. For more information regarding consensus nodes staking pool status please refer to the Consensus nodes section.
Delegating and Associated Parameters
KIRA allows users to delegate and pay execution fees with any token that has been whitelisted by governance. To ensure proper network functionality and security, specific management rules and limitations are defined and curated for each foreign token, such as exchange rates and staking pool rewards allowance. These rules are monitored by the Token Rates Registrar module, which sets bounds on the staking mechanism through the use of three parameters:
stake_cap
: Sets the maximum share (%) of staking reward a given whitelisted staking token will be entitled per staking pool to prevent a malicious user from diluting the pool with any particular token in order to claim all the rewards. Setting specific shares also simplifies reward distribution by sidestepping the need to track how much eligible staking tokens are worth in terms of USD or KEX.stake_min
: Sets the minimum delegation and undelegation amount per transaction for a particular token. This is designed to prevent dust spam attacks, where an attacker might attempt to disrupt block production by continuously staking or withdrawing trivial amounts of tokens with numerous accounts. Importantly, this parameter also ensures that a user cannot undelegate an amount that would leave behind a residual stake less than this minimum. Such a residual would be locked and become non-withdrawable. Detailed considerations related to dust-spam can be found in the Fees and staking rewards distribution section.fee_rate
: Sets the conversation rate for foreign tokens in terms of KEX to use them as execution fees.fee_rate
is also used to determine if thestake_min
value is respected in case of delegation or ifmin_delegation_pushout
is reached when a staking pool reaches its maximum delegators capacity.
For more information regarding delegators staking rewards distribution please refer to the Fees and staking rewards distribution page.
Registration Mechanism for Offshore Staking Pool Delegators
As explained earlier, owning some staking pool's derivatives V<ID>/<denom>
is equivalent to having some token <denom>
staked with consensus node V<ID>
. However, because the Cosmos SDK does not provide a hook on token transfers (yet?) and derivatives can be traded freely inside or outside the KIRA network, it is impossible to track staking pool delegators' shares in real time. To solve this problem, KIRA has implemented a registration mechanism where "offshore" delegators, such as users or smart contracts that acquired KIRA's native staking derivative tokens on the open market, can register those derivatives to the corresponding staking pool to earn the corresponding rewards. Additionally, each staking pool performs a balance check on its current delegators whenever it receives rewards (whenever the consensus nodes produces a block) and will automatically deregister any registered delegators that do not hold more than the minimum stake_min
of derivative tokens.
Managing Staking Rewards
Claiming Rewards
With auto-compounding activated, rewards are automatically reinvested, increasing the delegator's stake. However, the staking derivatives, representing these newly compounded rewards, aren't instantly transferred to the delegator's address to reduce overhead. They accumulate in the staking pool and must be claimed manually. Conversely, if a delegator decides not to use auto-compounding, they will have to manually claim all the rewards they accrue. Hence, in both scenarios, the delegator must manually intervene to include their rewards or rewards’ derivatives into their active balance.
Enabling Auto-compounding
Delegators have the flexibility to decide how they manage rewards earned from staking. They can opt for automatic reinvestment through the auto-compounding feature or claim them manually. This decision can be made for any token eligible for staking, as determined by the Token Rates Registrar . When enabled, rewards are automatically added to the delegator's stake. However, the corresponding staking derivatives are not sent to the delegator's address, as this would be too much of an overhead for the module to handle. Instead, they are simply accumulated in the staking pool and become claimable in the same way as standard rewards. In other words, when a user disables auto compounding, it will have to claim its rewards manually; when it is enabled, it will have to claim its newly issued staking derivatives manually. Each delegator has their unique auto-compounding schedule, distributing the computational demands and preventing the network from being overwhelmed by simultaneous compounding events. Configurations for this feature are maintained per user. Delegators can enable this feature for all tokens or for particular ones.
Auto-compounding operates based on a consistent interval set across the network by the autocompound_interval_num_blocks
network property. The exact block at which a user's rewards get compounded depends on when they activate this feature. For example, with a network interval set at 10,000 blocks, a delegator enabling auto-compounding at block 3
will see their rewards compounded at blocks 10003
, 20003
and so on. This property is set to 17280
blocks at genesis.
Undelegating & Cooling Period
A delegator can undelegate their stake at anytime to get back its original tokens. Any undelegation will trigger a fixed cooling period during which the stake remain locked and do not yield any reward. Once the cooling period expires, staked tokens <denom>
can be claimed by providing the respective pool’s derivative V<ID>/<denom>
which are then burned. The cooling period is the same for all staking tokens and defined by the governance through the following unstaking_period
network property (1 month by default).
Delegators Push Out
KIRA has a feature that protects against dust spam attacks by limiting the maximum number of delegators for each individual staking pool with a network property called max_delegators
(which is set to 100 by default). If this maximum number of delegators is reached, new delegators will need to provide a higher stake than the smallest delegator in the pool in order to push them out. To prevent large stakeholders from easily pushing out smaller delegators from good consensus nodes, the minimum required stake to push out a delegator is set by the min_delegation_pushout
property (which is a multiplier of the smallest stake value, 10 by default). This network property can be adjusted by KIRA's governance and increased as the network grows. When a delegator is pushed out, they automatically receive any outstanding rewards they are owed.
CLI Syntax & Examples
Each CLI command and proposal process in KIRA requires specific permissions. These permissions must be added to the account's whitelist or obtained as sudo permissions for direct changes. Refer to the Roles & Permissions documentation for more details.
$SIGNER
represents the transaction signer's account name or address. For instructions on setting common flags as environment variables, such as $FLAGS_TX
and $FLAGS_QR
, see the CLI Guide page.
- Transactions
- Queries
- Governance
Transactions
delegate | Delegate to a pool. |
---|---|
undelegate | Start undelegation from a pool. |
claim-rewards | Claim rewards from a pool. |
claim-undelegation | Claim matured undelegation. |
claim-matured-undelegations | Claim all matured undelegations in a single transaction. |
set-compound-info | Set auto compounding mode. |
register-delegator | Register as a pool delegator when acquiring pool derivatives externally. |
Delegating
Delegate tokens to a specific staking pool. This action locks the specified amount of <denom>
tokens to a staking pool using the consensus node’s address. It returns the corresponding pool’s derivative V<ID>/<denom>
. The delegation amount cannot be lower than stake_min
. Delegation is only possible to an active consensus node.
Args
$VAL
: Consensus node’s address (kiravaloper...
).$COIN
: Comma-separated list of coins and their amounts to delegate in the format<amount><denom>
(e.g.,20000ukex
).
sekaid tx multistaking delegate \
--from=$SIGNER $FLAGS_TX \
$VAL $COIN
Undelegating
Undelegating burns the corresponding V<ID>/<denom>
derivatives and initiates the claim of any outstanding rewards/compounds. The undelegated <denom>
tokens are assigned an undelegation ID and become claimable after the unstaking_period
. The undelegation amount must meet the stake_min
requirements.
Args
$VAL
: Consensus node’s address (kiravaloper...
).$COIN
: Comma-separated list of coins and their amounts to undelegate in the format<amount><denom>
(e.g.,20000ukex
).
sekaid tx multistaking undelegate \
--from=$SIGNER $FLAGS_TX \
$VAL $COIN
Set Compounding Mode
Delegators can activate or deactivate auto compounding for their staked tokens. This can be set for all tokens or specific denominations.
Args
$ALL
: Set compound mode on all tokens (true/false).$DENOM
: Set compound mode on a specific token denomination (e.g., ukex).
sekaid tx multistaking set-compound-info \
--from=$SIGNER $FLAGS_TX \
$ALL $DENOM
Claim Rewards/pool’s Derivatives
Delegators can claim all outstanding rewards (or pool’s derivatives if auto-compounding is active).
sekaid tx multistaking claim-rewards \
--from=$SIGNER $FLAGS_TX
Claim Undelegation
Undelegations can be claimed using corresponding delegation ID and at the end of their respective unstaking_period
.
Args
$ID
: Undelegation ID.
sekaid tx multistaking claim-undelegation \
--from=$SIGNER $FLAGS_TX \
$ID
Claiming Matured Undelegations
claim-matured-undelegations
, allows users to submit a transaction to claim all matured undelegations in one action. It's a convenient way to handle multiple matured undelegations without specifying each ID individually.
sekaid tx multistaking claim-matured-undelegations \
--from=$SIGNER $FLAGS_TX
Delegator Registration
Users or smart contracts that have acquired KIRA’s native staking derivative tokens can register as delegators to the respective staking pools. Registration is subject to the minimum staking amount requirement stake_min
.
sekaid tx multistaking register-delegator \
--from=$SIGNER $FLAGS_TX
Queries
undelegations | Query all the undelegation records. |
---|---|
staking-pool-delegators | Query staking pool delegators. |
compound-info | Query compound information of a delegator. |
outstanding-rewards | Query outstanding rewards for a delegator. |
pools | Query all existing staking pools and their parameters and metrics. |
query-delegations | Query delegations and rewards by delegator address and specific pool id or validator's address. |
Staking Pool Delegators
Retrieve delegators associated with a specific staking pool.
Args
$VALIDATOR_ADDRESS
: Address of the staking pool node.
sekaid query multistaking staking-pool-delegators $VALIDATOR_ADDRESS \
$FLAGS_QR | jq
All Staking Pool Information
Query metrics and parameters of staking pools.
sekaid query multistaking pools $FLAGS_QR | jq
All Pending Undelegations
Retrieve information about pending undelegations using the undelegations
query. This query allows for filtering based on the delegator's address and the validator's address.
If both $DELEGATOR_ADDRESS
and $VALIDATOR_ADDRESS
are left as empty strings, the query will return all existing undelegations. To specify an empty string as an argument in the command line, use ""
.
Args
$DELEGATOR_ADDRESS
: Delegator's address (optional).$VALIDATOR_ADDRESS
: Validator's address (optional).
sekaid query multistaking undelegations $DELEGATOR_ADDRESS $VALIDATOR_ADDRESS \
$FLAGS_QR | jq
Compounding Information
Retrieve a delegator's compounding information.
Args
$DELEGATOR_ADDRESS
: Delegator's address.
sekaid query multistaking compound-info $DELEGATOR_ADDRESS \
$FLAGS_QR | jq
Outstanding Rewards
Query a delegator's outstanding rewards.
Args
$DELEGATOR_ADDRESS
: Delegator's address.
sekaid query multistaking outstanding-rewards $DELEGATOR_ADDRESS \
$FLAGS_QR | jq
Governance
There is no governance proposal for this sub-module.