Search…
⌃K

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.

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

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:9933
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.