Start Validating
Introduction
Section titled “Introduction”After configuring your node keys as shown in the Key Management section and ensuring your system is set up, you're ready to begin the validator setup process. This guide will walk you through choosing a network, synchronizing your node with the blockchain, bonding your DOT tokens, and starting your validator.
Choose a Network
Section titled “Choose a Network”Running your validator on a test network like Westend or Kusama is a smart way to familiarize yourself with the process and identify any setup issues in a lower-stakes environment before joining the Polkadot MainNet.
- Westend: Polkadot's primary TestNet is open to anyone for testing purposes. Validator slots are intentionally limited to keep the network stable for the Polkadot release process, so it may not support as many validators at any given time.
- Kusama: Often called Polkadot's "canary network," Kusama has real economic value but operates with a faster and more experimental approach. Running a validator here provides an experience closer to MainNet with the benefit of more frequent validation opportunities with an era time of 6 hours vs 24 hours for Polkadot.
- Polkadot: The main network, where validators secure the Polkadot relay chain. It has a slower era time of 24 hours and requires a higher minimum bond amount to participate.
Synchronize Chain Data
Section titled “Synchronize Chain Data”The next step is to sync your node with the chosen blockchain network. Synchronization is necessary to download and validate the blockchain data, ensuring your node is ready to participate as a validator. Follow these steps to sync your node:
-
Start syncing: You can run a full or warp sync.
Polkadot defaults to using a full sync, which downloads and validates the entire blockchain history from the genesis block. Start the syncing process by running the following command:
Terminal window polkadotThis command starts your Polkadot node in non-validator mode, allowing you to synchronize the chain data.
You can opt to use warp sync which initially downloads only GRANDPA finality proofs and the latest finalized block's state. Use the following command to start a warp sync:
Terminal window polkadot --sync warpWarp sync ensures that your node quickly updates to the latest finalized state. The historical blocks are downloaded in the background as the node continues to operate.
If you're planning to run a validator on a TestNet, you can specify the chain using the
--chainflag. For example, the following will run a validator on Kusama:Terminal window polkadot --chain=kusama -
Monitor sync progress: Once the sync starts, you will see a stream of logs providing information about the node's status and progress. Here's an example of what the output might look like:
polkadot 2021-06-17 03:07:07 Parity Polkadot 2021-06-17 03:07:07 ✌️ version 0.9.5-95f6aa201-x86_64-linux-gnu 2021-06-17 03:07:07 ❤️ by Parity Technologies <admin@parity.io>, 2017-2021 2021-06-17 03:07:07 📋 Chain specification: Polkadot 2021-06-17 03:07:07 🏷 Node name: boiling-pet-7554 2021-06-17 03:07:07 👤 Role: FULL 2021-06-17 03:07:07 💾 Database: RocksDb at /root/.local/share/polkadot/chains/polkadot/db 2021-06-17 03:07:07 ⛓ Native runtime: polkadot-9050 (parity-polkadot-0.tx7.au0) 2021-06-17 03:07:10 🏷 Local node identity is: 12D3KooWLtXFWf1oGrnxMGmPKPW54xWCHAXHbFh4Eap6KXmxoi9u 2021-06-17 03:07:10 📦 Highest known block at #17914 2021-06-17 03:07:10 〽️ Prometheus server started at 127.0.0.1:9615 2021-06-17 03:07:10 Listening for new connections on 127.0.0.1:9944 ...The output logs provide information such as the current block number, node name, and network connections. Monitor the sync progress and any errors that might occur during the process. Look for information about the latest processed block and compare it with the current highest block using tools like Telemetry or Polkadot.js Apps Explorer.
Database Snapshot Services
Section titled “Database Snapshot Services”If you'd like to speed up the process further, you can use a database snapshot. Snapshots are compressed backups of the blockchain's database directory and can significantly reduce the time required to sync a new node. Parity provides official database snapshots for Polkadot, Kusama, Westend, and other chains at snapshots.polkadot.io.
Bond DOT
Section titled “Bond DOT”Once your validator node is synced, the next step is bonding DOT. A bonded account, or stash, holds your staked tokens (DOT) that back your validator node. Bonding your DOT means locking it for a period, during which it cannot be transferred or spent but is used to secure your validator's role in the network. Visit the Minimum Bond Requirement section for details on how much DOT is required.
The following sections will guide you through bonding DOT for your validator.
Bonding DOT on Polkadot.js Apps
Section titled “Bonding DOT on Polkadot.js Apps”Once you're ready to bond your DOT, head over to the Polkadot.js Apps staking page by clicking the Network dropdown at the top of the page and selecting Staking.
To get started with the bond submission, click on the Accounts tab, then the + Stash button, and then enter the following information:
-
Stash account: Select your stash account (which is the account with the DOT/KSM balance).
-
Value bonded: Enter how much DOT from the stash account you want to bond/stake. You are not required to bond all of the DOT in that account and you may bond more DOT at a later time. Be aware, withdrawing any bonded amount requires waiting for the unbonding period. The unbonding period is seven days for Kusama and 28 days for Polkadot.
-
Payment destination: Add the recipient account for validator rewards. If you'd like to redirect payments to an account that is not the stash account, you can do it by entering the address here. Note that it is extremely unsafe to set an exchange address as the recipient of the staking rewards.
Once everything is filled in properly, select Bond and sign the transaction with your stash account. If successful, you should see an ExtrinsicSuccess message.
Your bonded account will be available under Stashes. After refreshing the screen, you should now see a card with all your accounts. The bonded amount on the right corresponds to the funds bonded by the stash account.
Validate
Section titled “Validate”Once your validator node is fully synced and ready, the next step is to ensure it's visible on the network and performing as expected. Below are steps for monitoring and managing your node on the Polkadot network.
Verify Sync via Telemetry
Section titled “Verify Sync via Telemetry”To confirm that your validator is live and synchronized with the Polkadot network, visit the Telemetry page. Telemetry provides real-time information on node performance and can help you check if your validator is connected properly. Search for your node by name. You can search all nodes currently active on the network, which is why you should use a unique name for easy recognition. Now, confirm that your node is fully synced by comparing the block height of your node with the network's latest block. Nodes that are fully synced will appear white in the list, while nodes that are not yet fully synced will appear gray.
Activate using Polkadot.js Apps
Section titled “Activate using Polkadot.js Apps”Follow these steps to use Polkadot.js Apps to activate your validator:
-
In Polkadot.js Apps, navigate to Network and select Staking:

-
Open the Accounts tab and click on + Validator:

-
Set a bond amount in the value bonded field and then click next:

-
Paste the session keys and proof from
author_rotateKeysWithOwner(or use the keys fromauthor_rotateKeyswith0x00as the proof if runtime 2.2.0 is not yet live on your network), set the commission to 0%, the only value the chain accepts, allow or block new nominations, then click Bond & Validate to link your validator with its session keys.
You can also set the blocked nominations option via
staking.validateextrinsic; the commission parameter must be left at 0%. By default, the blocked option is set to FALSE (i.e., the validator accepts nominations).
Monitor Validation Status and Slots
Section titled “Monitor Validation Status and Slots”On the Staking tab in Polkadot.js Apps, you can see your validator's status, the number of available validator slots, and the nodes that have signaled their intent to validate. Your node may initially appear in the waiting queue, especially if the validator slots are full. The following is an example view of the Staking tab:

The validator set refreshes each era. If there's an available slot in the next era, your node may be selected to move from the waiting queue to the active validator set, allowing it to start validating blocks. If your validator is not selected, it remains in the waiting queue. Increasing your stake or gaining more nominators may improve your chance of being selected in future eras.
Run a Validator Using Systemd
Section titled “Run a Validator Using Systemd”Running your Polkadot validator as a systemd service is an effective way to ensure its high uptime and reliability. Using systemd allows your validator to automatically restart after server reboots or unexpected crashes, significantly reducing the risk of slashing due to downtime.
This following sections will walk you through creating and managing a systemd service for your validator, allowing you to seamlessly monitor and control it as part of your Linux system.
Ensure the following requirements are met before proceeding with the systemd setup:
- Confirm your system meets the requirements for running a validator.
- Ensure you meet the minimum bond requirements for validating.
- Verify the Polkadot binary is installed.
Create the Systemd Service File
Section titled “Create the Systemd Service File”First create a new unit file called polkadot-validator.service in /etc/systemd/system/:
touch /etc/systemd/system/polkadot-validator.serviceIn this unit file, you will write the commands that you want to run on server boot/restart:
[Unit]Description=Polkadot NodeAfter=network.targetDocumentation=https://github.com/paritytech/polkadot-sdk
[Service]EnvironmentFile=-/etc/default/polkadotExecStart=/usr/bin/polkadot $POLKADOT_CLI_ARGSUser=polkadotGroup=polkadotRestart=alwaysRestartSec=120CapabilityBoundingSet=LockPersonality=trueNoNewPrivileges=truePrivateDevices=truePrivateMounts=truePrivateTmp=truePrivateUsers=trueProtectClock=trueProtectControlGroups=trueProtectHostname=trueProtectKernelModules=trueProtectKernelTunables=trueProtectSystem=strictRemoveIPC=trueRestrictAddressFamilies=AF_INET AF_INET6 AF_NETLINK AF_UNIXRestrictNamespaces=falseRestrictSUIDSGID=trueSystemCallArchitectures=nativeSystemCallFilter=@system-serviceSystemCallFilter=landlock_add_rule landlock_create_ruleset landlock_restrict_self seccomp mount umount2SystemCallFilter=~@clock @module @reboot @swap @privilegedSystemCallFilter=pivot_rootUMask=0027
[Install]WantedBy=multi-user.targetRun the Service
Section titled “Run the Service”Activate the systemd service to start on system boot by running:
systemctl enable polkadot-validator.serviceTo start the service manually, use:
systemctl start polkadot-validator.serviceCheck the service's status to confirm it is running:
systemctl status polkadot-validator.serviceTo view the logs in real-time, use journalctl like so:
journalctl -f -u polkadot-validatorWith these steps, you can effectively manage and monitor your validator as a systemd service.
Once your validator is active, it's officially part of Polkadot's security infrastructure. For questions or further support, you can reach out to the Polkadot Validator chat for tips and troubleshooting.