DevelopersSKALE Developers

Delegation

Introduction

The SKALE Token (SKL) is the first ERC token with delegation/staking functions. SKL is a modified ERC-777 with backward compatibility to ERC-20. Therefore, you may use any ERC-20 compatible wallet to hold and stake your tokens into the SKALE Network. Transfers and approvals work the same in ERC-777 as in ERC-20 – the only difference is that ERC-777 allows for certain functions/checks before transfers are executed. The SKL token uses this pre-transfer function to conduct certain checks.

The SKALE Token address is: 0x00c83aeCC790e8a4453e5dD3B0B4b3680501a7A7

GitHub (Contract Code): https://github.com/skalenetwork/skale-manager/blob/1.7.0-stable.0/contracts/SkaleToken.sol

Etherscan (Verified Contract): https://etherscan.io/address/0x00c83aeCC790e8a4453e5dD3B0B4b3680501a7A7#code

SKALE ABIs: https://github.com/skalenetwork/skale-network/tree/master/releases/mainnet/skale-manager/1.7.0

Audits: https://github.com/skalenetwork/skale-manager/blob/develop/.github/SECURITY.md

SKL token holders propose delegations to stake tokens to validators. Delegators help secure the network and, in return, receive bounty rewards. Delegators may delegate to multiple validators.

Each delegation proposal must include:

  • Number of SKALE tokens to delegate,

  • Validator to delegate to, and

  • Delegation period.

All delegations in the SKALE Network are aligned over calendar months. See the Time Schedule.

Once the tokens delegate, the tokens are locked and can’t transfer to another wallet until undelegated.

A note about delegation and token transfers

A wallet that has delegated SKL tokens will incur higher gas fees for SKL token transfers. Wallets that delegate require additional checks on token operations to verify whether the token is locked in a delegation. Therefore, you should use one wallet for all delegation operations and a separate wallet for SKL token transfers.

How to delegate

There are several ways to delegate SKALE tokens.

ConsenSys Activate

You may use ConsenSys Activate's platform with Metamask to view validators, make delegation proposals, and view received bounties.

Validator CLI

You may also use the Validator-CLI python-based CLI tool to delegate tokens from a hardware wallet. To use the CLI, you will need the SKALE Network validator ID that corresponds to the validator.

Etherscan

You can use Etherscan and Metamask to delegate through the DelegationController.sol contract on Ethereum.

  1. Head over to the DelegationController contract at https://etherscan.io/address/0x06dD71dAb27C1A3e0B172d53735f00Bf1a66Eb79#writeProxyContract

  2. Click "Connect to Web3" button at the top.

  3. Complete the fields by entering in the following information:

    • Validator ID: Enter the Network Validator ID of the validator to delegate to.

    • Amount: Enter the amount of SKL in Wei units (To convert an amount into Wei units, use this tool: https://eth-converter.com/. For example, if you want to delegate 10 SKL, then enter 10000000000000000000

    • Delegation Period: Select the delegation period. Currently only 2 months is allowed, so enter 2.

    • Info: Etherscan

105521534 0d2a3e00 5caa 11eb 97f8 28606e2067a6

Delegation Process

Validators must accept each delegation and are used to stake the validator’s nodes in the network. A validator’s nodes must collectively meet the Minimum Stake Requirement (MSR) set by the network. Currently, the MSR is 20 million SKL tokens. Therefore, if a validator is operating ten nodes, the validator must have 10×MSR under stake. Validators who don’t meet or exceed MSR may have to remove or add nodes to optimize received bounties.

Validators must optimize the number of operating nodes every month based on their total stake. Delegators must submit undelegation requests 72 hrs before the end of the month to allow validators enough time to change the number of nodes. Undelegation requests can’t be made within 72 hrs of the end of the month. Therefore delegators who wish to undelegate are urged to do so at the earliest possible time.

Delegation Periods

SKALE Network supports different delegation periods with stake multipliers. For example, 2 month delegations have a stake multiplier of 1.00. The network can set new delegation periods and stake multipliers to incentivize longer staking periods. For instance, delegating for a period with a stake multiplier of 2.00 doubles your amount of stake in the network, and you would receive more bounty rewards.

Monthly bounty rewards

Delegators receive bounties every month. These bounties are from a mix of network inflation and staked SKALE chains. This total network bounty for any month also includes any remaining bounties from the previous month due to bounty reduction or node exits.

The network calculates bounties on a per-node basis. The formula below describes the calculation.

KnH5URR2jV0XthU188NK6Ikx9yQ37oZyNx9itsDAmFsZYugjKcmZlhb5x4paCHYe77pyIyQVfYidFSkXmc1b2m7ZrD YI nFqAIfLCpMrKyqBPP46dMrAtClg1ugtPR2e6qFr93m
  • The first component B is the total payable network monthly bounty.

  • The second component refers to the ratio of total validator stake to the total network stake.

  • The third component is 1 / the total node number that a validator can register in the network. This part is to make sure that a validator receives rewards for the staked nodes only. If a validator has 5 active nodes in the network from the previous month but can only have 4×MSR they will get bounty for only 4 nodes.

Bounty rewards for a particular month are delivered depending on when the node registers with the network. For example, a node that registers within 72 hours after June 1 00:00 UTC will deliver bounty rewards on July 1 00:00 UTC. A node that registers outside of the 72 hour beginning of June (June 15) will fulfill bounty rewards for June on August 1 00:00 UTC.

Delegations, bounties, and MSR requirements follow a monthly schedule. The SKALE Network’s time follows the Gregorian calendar system orientated at Universal Time Code (UTC).

Time Schedule

Day 1 - End of Month (for example, January 1 - January 31)
  • Delegations are proposed for next month’s staking.

  • Validators may accept delegation proposals.

Important
Within 72 hrs (3 Days) of the End of the Month (for example, January 29 00:00 - January 31 23:59)
Delegators can no longer submit undelegation requests during this period. You must submit undelegation requests anytime before this period.
Day 1 00:00 UTC (for example, February 1 00:00)
  • Accepted delegations transition to DELEGATED State.

  • Any unaccepted delegations transition to REJECTED state.

  • Undelegation requests are COMPLETED for ending delegations and are free to transfer/delegate.

  • Ending delegations are automatically re-delegated.

  • Monthly bounty rewards are released.

Additional Examples

  • August 15: Alice proposes to stake 10,000 SKL tokens for 2 months to Validator ACME. Alice’s delegation is now in a PROPOSED state. This proposal can be canceled by Alice anytime before the validator accepts it. If canceled, the tokens may be proposed again.

  • August 17: ACME accepts Alice’s delegation. The delegation is now in an ACCEPTED state. Alice can no longer cancel the delegation now that the delegator has accepted it.

  • September 1 00:00 UTC: Alice’s delegation moves to a DELEGATED state and will automatically re-delegate on November 1. This delegation may now receive monthly bounty awards.

  • September 5: Alice knows she has until October 29 00:00 UTC to make an un-delegation request, but she decides to make an un-delegation request today. Her delegation moves to UNDELEGATION_REQUESTED state.

  • October 1 00:00 UTC: Monthly bounty rewards are released. Alice requests to withdraw bounty to a different wallet than the one used to delegate. She does this to save on SKL token gas transfer fees.

  • November 1 00:00 UTC: Monthly bounty rewards are released. Alice’s delegation moves to a COMPLETED state. Now her undelegated tokens are free to transfer to another wallet or to delegate to another validator. She requests to withdraw bounty as she did in the previous month.

Tip
00:00 UTC refers to "start of the day" rather than "end of the day."

Average delegation gas requirements

  • Delegate: 600,000 gas

  • Undelegate: 300,000 gas

  • Automatic re-delegation: 0 gas

Developers
  • Support & Learning
  • Languages &
Tooling
  • More
GET DEV UPDATES IN SKALE NEWSLETTER
JOIN THE CONVERSATION
© 2021 SKALE Labs. All right reserved.
skale.networkCookiesPrivacy Policy