Staking

Staking on Exzo Network

By staking your XZO tokens, you help secure the network and earn rewards while doing so.

You can stake by delegating your tokens to validators who process transactions and run the network.

Delegating stake is a shared-risk shared-reward financial model that may provide returns to holders of tokens delegated for a long period. This is achieved by aligning the financial incentives of the token-holders (delegators) and the validators to whom they delegate.

The more stake a validator has delegated to them, the more often this validator is chosen to write new transactions to the ledger. The more transactions the validator writes, the more rewards they and their delegators earn. Validators who configure their systems to be able to process more transactions at a time not only earn proportionally more rewards for doing so, they also keep the network running as fast and as smoothly as possible.

Validators incur costs by running and maintaining their systems, and this is passed on to delegators in the form of a fee collected as a percentage of rewards earned. This fee is known as a commission. Since validators earn more rewards the more stake is delegated to them, they may compete with one another to offer the lowest commission for their services.

You risk losing tokens when staking through a process known as slashing. Slashing involves the removal and destruction of a portion of a validator's delegated stake in response to intentional malicious behavior, such as creating invalid transactions or censoring certain types of transactions or network participants.

When a validator is slashed, all token holders who have delegated stake to that validator lose a portion of their delegation. While this means an immediate loss for the token holder, it also is a loss of future rewards for the validator due to their reduced total delegation.

Rewards and slashing align validator and token holder interests which helps keep the network secure, robust and performant.

Note: Slashing is not enabled on Mainnet at this time.

How do I stake my XZO tokens?

In order to stake tokens on XZO, you first will need to transfer some XZO into a wallet that supports staking, then follow the steps or instructions provided by the wallet to create a stake account and delegate your stake. Different wallets will vary slightly in their process for this but the general description is below.

There are two options for staking in the Exzo Network system — creating your own pool and becoming a validator or Join an existing pool as a delegator.

  1. To become a Validator user should have at least 1 mln of XZO Tokens
  2. To become a Delegator user should have at least 1 XZO
  3. Every 6 hours (currently) 19 nodes are chosen based on their reputation. When a node is chosen, it will generate a reward at the end of the epoch and it will be distributed between and all delegates.
  4. Nodes and delegates generate rewards based on balance, the distribution of the reward generated in a node is 40% the for pool organizer (as a minimum), and 60% to be distributed among all the delegates based on their balance.
  5. The process is done through a smart contract that the user can finish and withdraw their balance whenever they want, totally safe, and secure for the user.

Supported Wallets

Exzo Network command line tools can perform all stake operations in conjunction with a CLI-generated keypair file wallet and paper wallet. Staking commands using the Command Line Tools.

Create a Stake Account

A stake account is a different type of account from a wallet address that is used to simply send and receive XZO tokens to other addresses. If you have received XZO in a wallet address you control, you can use some of these tokens to create and fund a new stake account, which will have a different address than the wallet you used to create it. Depending on which wallet you are using the steps to create a stake account may vary slightly. Not all wallets support stake accounts, see Supported Wallets.

Delegate your Stake

For staking your XZO tokens use supported wallet, choose the validator and amount of XZO that will be delegated, then confirm to execute the smart contract.

Stake Account Details

For more information about the operations and permissions associated with a stake account, please see Stake Accounts

Stake Account Structure

A stake account on Exzo Network can be used to delegate tokens to validators on the network to potentially earn rewards for the owner of the stake account. Stake accounts are created and managed differently than a traditional wallet address, known as a system account. A system account is only able to send and receive XZO from other accounts on the network, whereas a stake account supports more complex operations needed to manage a delegation of tokens.

Stake accounts on Exzo Network also work differently than those of other Proof-of-Stake blockchain networks that you may be familiar with. This document describes the high-level structure and functions of a Exzo Network stake account.

Account Address

Each stake account has a unique address which can be used to look up the account information in the command line or in any network explorer tools. However, unlike a wallet address in which the holder of the address's keypair controls the wallet, the keypair associated with a stake account address does not necessarily have any control over the account. In fact, a keypair or private key may not even exist for a stake account's address.

The only time a stake account's address has a keypair file is when creating a stake account using the command line tools, a new keypair file is created first only to ensure that the stake account's address is new and unique.

Understanding Account Authorities

Certain types of accounts may have one or more signing authorities associated with a given account. An account authority is used to sign certain transactions for the account it controls. This is different from some other blockchain networks where the holder of the keypair associated with the account's address controls all of the account's activity.

Each stake account has two signing authorities specified by their respective address, each of which is authorized to perform certain operations on the stake account.

The stake authority is used to sign transactions for the following operations:

  • Delegating stake
  • Deactivating the stake delegation
  • Splitting the stake account, creating a new stake account with a portion of the funds in the first account
  • Merging two undelegated stake accounts into one
  • Setting a new stake authority

The withdraw authority signs transactions for the following:

  • Withdrawing un-delegated stake into a wallet address
  • Setting a new withdraw authority
  • Setting a new stake authority

The stake authority and withdraw authority are set when the stake account is created, and they can be changed to authorize a new signing address at any time. The stake and withdraw authority can be the same address or two different addresses.

The withdraw authority keypair holds more control over the account as it is needed to liquidate the tokens in the stake account, and can be used to reset the stake authority if the stake authority keypair becomes lost or compromised.

Securing the withdraw authority against loss or theft is of utmost importance when managing a stake account.

Multiple Delegations

Each stake account may only be used to delegate to one validator at a time. All of the tokens in the account are either delegated or un-delegated, or in the process of becoming delegated or un-delegated. To delegate a fraction of your tokens to a validator, or to delegate to multiple validators, you must create multiple stake accounts.

This can be accomplished by creating multiple stake accounts from a wallet address containing some tokens, or by creating a single large stake account and using the stake authority to split the account into multiple accounts with token balances of your choosing.

The same stake and withdraw authorities can be assigned to multiple stake accounts.

Merging stake accounts

Two stake accounts that have the same authorities and lockup can be merged into a single resulting stake account. A merge is possible between two stakes in the following states with no additional conditions:

  • two deactivated stakes
  • an inactive stake into an activating stake during its activation epoch

For the following cases, the voter pubkey and vote credits observed must match:

  • two activated stakes
  • two activating accounts that share an activation epoch, during the activation epoch

All other combinations of stake states will fail to merge, including all "transient" states, where a stake is activating or deactivating with a non-zero effective stake.

Delegation Warmup and Cooldown

When a stake account is delegated, or a delegation is deactivated, the operation does not take effect immediately.

A delegation or deactivation takes several epochs to complete, with a fraction of the delegation becoming active or inactive at each epoch boundary after the transaction containing the instructions has been submitted to the cluster.

There is also a limit on how much total stake can become delegated or deactivated in a single epoch, to prevent large sudden changes in stake across the network as a whole. Since warmup and cooldown are dependent on the behavior of other network participants, their exact duration is difficult to predict. Details on the warmup and cooldown timing can be found here.

Lockups

Stake accounts can have a lockup which prevents the tokens they hold from being withdrawn before a particular date or epoch has been reached. While locked up, the stake account can still be delegated, un-delegated, or split, and its stake and withdraw authorities can be changed as normal. Only withdrawal into a wallet address is not allowed.

A lockup can only be added when a stake account is first created, but it can be modified later, by the lockup authority or custodian, the address of which is also set when the account is created.

Destroying a Stake Account

Like other types of accounts on the Exzo Network network, a stake account that has a balance of 0 XZO is no longer tracked. If a stake account is not delegated and all of the tokens it contains are withdrawn to a wallet address, the account at that address is effectively destroyed, and will need to be manually re-created for the address to be used again.

Viewing Stake Accounts

Stake account details can be viewed on the Exzo Network Explorer by copying and pasting an account address into the search bar.