In this step-by-step guide, you will learn how to stake your KSMs, the native token of the Kusama blockchain, using Polkadot JS and the Polkadot Browser Extension.
More precisely, in this tutorial you will learn how to:
- create a Kusama Stash Account
- create a Kusama Controller Account
- stake your KSM token
- manage your Kusama Staking Operations
Before you get started
Since it is recommended by Polkadot / Kusama for most users to use the Polkadot.js Browser Extension to create their addresses, we are focusing on this method. In case you want to explore alternatives, have a look here.
In case you participated in the Polkadot ICO, you can claim an equal amount of KSM, the native token of the Kusama network. Learn how here.
Step 1: Create a Kusama Stash Account
Once you successfully installed the extension, click on the orange little “P” button in your browser bar to open the interface. Click the little “Gear Icon” in the upper right corner and choose “Kusama (canary)” under “Display Address Format For”. Afterward, click on the “Plus Icon” and then on “Create new account (root or derived)”. Uncheck the box next to “Derive new account from existing” & click “Create an account from new seed”.
Please ignore all the other addresses — we are heavy users :)
Write down your mnemonic seed phrase and securely store it. Whoever has access to the mnemonic seed also has access to your funds! Check the box on the bottom and click “Next step”. Choose a descriptive name for your Stash account as well as a strong password. Then click “Add the account with the generated seed”.
Congratulations, you have successfully created your Kusama Stash account. You will now also find the address in Polkadot JS under “Accounts” — reload the page, if this is not the case. You can now fund this account.
Step 2: Create a Kusama Controller Account
In order to successfully bond your funds and nominate your validator set, you need a separate account, namely your “Controller Account”. You will perform everyday staking operations like changing validators or claiming rewards using this account.
To create your “Controller Account”, use the Polkadot browser extension. Click the plus icon in the top right corner. Then click “Create new account (root or derived)”.
Now you have two options:
- derive the new account from your existing account: it will be accessible with the same seed (mnemonic phrase) of the account it was derived from
- create a new account with a new seed: the new account will be independent of the old one and have a separate seed (mnemonic phrase)
We prefer the second option because we want to have independent keys, which is why we have to uncheck the box at the top. Then, click “Create account from new seed”.
Write down your mnemonic seed phrase and securely store it. Whoever has access to the mnemonic seed also has access to your funds! Check the box on the bottom and click “Next step”. In the next window, choose a descriptive name for your Controller account as well as a strong password. Then click “Add the account with the generated seed”.
Congratulations, you have successfully created your Kusama Controller account. You will now also find the address in Polkadot JS under “Accounts” — reload the page if this is not the case.
Step 3: Stake your KSM token
On the Polkadot JS website, make sure that you are connected to the Kusama mainnet. You can change the network by clicking the network symbol in the top left corner of your screen.
Before starting the Nomination process, send some funds from your Stash to your Controller account in order to cover transactions fees (1 or 2 KSM should be plenty).
To start the staking process, click “Staking” in the “Network” drop-down menu. Afterwards, visit the “Account actions” tab and click the “+ Nominator” — button.
Choose the Stash & Controller accounts accordingly, choose the amount of KSMs you want to use for staking under “value bonded”. Make sure to leave some funds in your Stash account. Bond a max. of 95% of your tokens so that you are still able to pay for transaction fees.
Choose a destination account for your rewards under “payment destination”.
Then click “next” to bond your token.
You can nominate up to 16 validators. Simply select the validators of your choice by clicking on them in the left box. You can unselect them from the right box by clicking on them again. Alternatively, you can also use the search bar at the top to look for specific validators by name or address.
Our Validator Addresses:
Then click “Bond & Nominate”.
Please note that you cannot specify the amount delegated to a particular validator. Your bonded DOTs will be spread out among the validators you selected according to the NPoS algorithm.
In the following window, click “Sign & Submit”. Afterward, enter your password and click “Sign the transaction” to conclude your nomination.
Congratulations, you are now a Nominator on the Kusama network!
Your nominations will be effective in the next era (~ in up to 6 hours).
Step 4: Manage your Kusama Staking Operations
You can manage your staking operations with Polkadot JS. In the “Staking” menu, click “Account Actions” and then click the three dots on the very right to perform the following operations:
- Bond more funds
- Change controller account
- Change reward destination
- Set nominees
Please note that if you have bonded your tokens, a period of 7 days needs to pass before you can unbond. Once your tokens are unbonded, you need to issue another transaction, namely “Withdraw Unbonded” in order to be able to transfer your funds.
What are “Active Nominations”, “Inactive Nominations” or, “Waiting nominations”?
“Active nominations” & “Inactive nominations” are the validators of your nominations that are currently in the active validator set. In general, your only one validator will be shown as “active”. That is because the algorithm used to distribute your stake is optimized so that each validator in the set roughly has the same amount of stake backing him/her. Your stake is therefore usually only backing one of the validators you nominated.
“Waiting nominations” are the validators that are currently not in the active set.