Making the node validate

So far you have set up a node that is ready to become a validator from the setup standpoint. That said, there are some additional actions you need to perform to actually take part in the rotation.

This process is identical on Testnet and Mainnet. For Mainnet, use https://azero.dev/ as the wallet address.

Since Feb 24th 2023, the admission process is automatic on both Testnet and Mainnet: this means that after you follow the steps in this tutorial, you'll be added to the waiting list and will start validating when the era changes (up to 24h of waiting time).

When your node starts validating, i.e. joins the era committe, you will notice a blue chevron next to your validator's name in Network->Staking->Targets.

Syncing your node

Even though we provide database snapshots to speed up the whole process, the database of your node will need to catch up with the state of the blockchain by receiving information about new blocks. Assuming you have already started the node (run the script) and are able to view the logs, you will just need to wait for the node to become fully synced.

As mentioned above, you should be seeing an output similar to this:

2022-07-04 12:32:09 〽️ Prometheus exporter started at 0.0.0.0:9615    
2022-07-04 12:32:09 Running session 4013.    
2022-07-04 12:32:10 🔍 Discovered new external address for our node: /ip4/195.150.192.250/tcp/30333/p2p/12D3KooWFGUSW3DMq92JSoGKkBM5WTNJ4bFiJ88PDCX6ttnXadQU    
2022-07-04 12:32:11  no migration for System    
2022-07-04 12:32:11  no migration for RandomnessCollectiveFlip    
2022-07-04 12:32:11  no migration for Scheduler    
2022-07-04 12:32:11  no migration for Aura    
2022-07-04 12:32:11  no migration for Timestamp    
2022-07-04 12:32:11  no migration for Balances    
2022-07-04 12:32:11  no migration for TransactionPayment    
2022-07-04 12:32:11  no migration for Authorship    
2022-07-04 12:32:11  no migration for Staking    
2022-07-04 12:32:11  no migration for History    
2022-07-04 12:32:11  no migration for Session    
2022-07-04 12:32:11 ⚠️ Aleph declares internal migrations (which *might* execute). On-chain `StorageVersion(2)` vs current storage version `StorageVersion(2)`    
2022-07-04 12:32:11 ⚠️ Elections declares internal migrations (which *might* execute). On-chain `StorageVersion(0)` vs current storage version `StorageVersion(2)`    
2022-07-04 12:32:11 Running migration from STORAGE_VERSION 0 to 1 for pallet elections    
2022-07-04 12:32:11 Running migration from STORAGE_VERSION 1 to 2 for pallet elections    
2022-07-04 12:32:11  no migration for Treasury    
2022-07-04 12:32:11  no migration for Vesting    
2022-07-04 12:32:11  no migration for Utility    
2022-07-04 12:32:11  no migration for Multisig    
2022-07-04 12:32:11  no migration for Sudo    
2022-07-04 12:32:11  no migration for Contracts    
2022-07-04 12:32:11  no migration for NominationPools    
2022-07-04 12:32:11  no migration for Identity    
2022-07-04 12:32:14 Running session 4014.    
2022-07-04 12:32:14 ⚙️  Syncing, target=#4662784 (16 peers), best: #3618503 (0xe8a9…47c8), finalized #3612599 (0xf40d…de62), ⬇ 927.5kiB/s ⬆ 16.5kiB/s    
2022-07-04 12:32:18 Running session 4015.    
2022-07-04 12:32:19 ⚙️  Syncing 1668.2 bps, target=#4662789 (16 peers), best: #3626844 (0x0ee0…03b6), finalized #3613499 (0x03fd…669d), ⬇ 793.5kiB/s ⬆ 6.1kiB/s    
2022-07-04 12:32:22 Running session 4016.    

The node is synced when the best number reaches the target block number (you can alternatively use your wallet’s “Explorer” tab to verify what’s the current highest block.

Polkadot{.js} browser extension

The recommended way of managing your accounts is via the Polkadot{.js} browser extension. When running with Aleph networks, you will most probably be asked to update some of its metadata.

Creating the stash and bonding

Starting with release 12.0, the controller accounts are deprecated. This concerns only new stakers.

When bonding funds, you will need to set the controller account to the same account as the stash.

You will need a stash account (holding the majority of the funds) and the controller account that makes transactions on behalf of the stash. Explaining this idea in detail is beyond the scope of this guide but you can find good resources here. One important point to make though is that it is recommended that those two accounts be distinct.

In order to actually get the required amount of TZERO you can use the Faucet: once you paste your account's address and solve a captcha, it will automatically transfer 25001 TZERO.

Now, let us bond some coins. You will need to navigate to the Network → Staking tab, choose the Account subtab and then select the “+ Stash” button:

Next, choose your stash and controller accounts in the appropriate fields and the amount of coins to bond:

Please keep in mind that you should not bond the entirety of your funds, as you need be able to afford transaction fees.

Generate session keys

Now we need to somehow associate our stash and controller accounts with the actual validator node we are running. There are two ways it can be done depending if your wallet is connected to your validator or not.

Using wallet

As a first step, make sure that your wallet is connected to your validator node and not one of the default endpoints (remember to click ‘Switch’ for the change to take effect):

The next thing we need to do is to tell our validator to generate new session keys and update its keystore, which can be done by issuing a simple RPC call: author::rotateKeys() (you need to navigate to the Developer → RPC Calls section of the menu bar).

You will need to copy the result of this command, as it is needed in the subsequent stages of the process.

Using curl

If you don't have access to a graphical interface on the machine you're running the node on, you can rotate the keys with a command-line call that can be done inside the machine:

curl -H "Content-Type: application/json" -d '{"id":1, "jsonrpc":"2.0", "method": "author_rotateKeys"}' http://127.0.0.1:9944

You will need to copy the output of this call, as it is needed in the subsequent stages of the process.

Set session keys

In the Network → Staking → Accounts section you should see a ‘Set session keys’ option next to the stash you have created earlier. When you click it, you should see a popup asking you to paste the key you acquired in the previous step:

Validate

Again in the Network → Staking → Accounts section: after you have successfully set your keys, you will see the ‘Validate’ button next to your stash. Once you click it, you should see one final popup before you become a validator:

You need to choose the commission percentage (the higher value you choose, the less incentive the nominators will have to choose you) and you are ready to validate!

Please keep in mind that you need to wait for the start of the new era before you have a possibility to get elected, so some amount of patience is required.

Last updated