3: New xDai Validator: After you have been approved as a Validator


Congratulations, you’ve been approved as a new validator! To get started, you will need to:

  1. Setup and configure your validation node
  2. Wait for vote finalization by current validators
  3. [Optional] Wait for bridge setup (only if being added to bridge, this will typically not be the case)
  4. Set metadata in the dApp
  5. [Optional] Bridge validator setup

If you experience any issues during installation, please post your questions in the https://forum.poa.network/c/xdai-chain/validators-support-private.

7.Setup and configure your Validator Node

I. Prerequisites of control machine

+---------------------+                  +-------------------------+
|                     |                  |                         |
|     local host      |     ansible      |       remote host       |   
|  (control machine)  +------------------>     (validator node)    |
|                     |                  |                         |
+---------------------+                  +-------------------------+

Operating system


SSH Keys

If you know what ssh keys are, skip this section.

  1. Check if you already have a keypair:
ls -la ~/.ssh

if you get an error that the directory does not exist or the directory is empty, follow the instructions below. If you already have key pair, you can skip the rest of this section.

  1. Generate new ssh key-pair
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

insert your email address and a strong password. By default, keys will be saved to ~/.ssh/ and named id_rsa with your public key being ~/.ssh/id_rsa.pub.


Check that you have python 2 version >= 2.6.5 or python 3 version >= 3.3 installed

python --version

if not - install it choosing appropriate binary from here


  1. Check that you have ansible version >= 2.3 installed
ansible --version

if not - follow this guide to install ansible. For example, you can use pip to do it:

sudo pip install ansible


Check that you have git installed

git --version

if not - install it following instructions here

II. Validator Node setup

Node setup is at your discretion - criteria are included in the following instructions.

  • Create a node yourself with your favorite hosting provider (e.g. AWS/Azure/OVH/etc). Non-AWS Details
  • Use our automated playbooks to create a node on AWS (requires creating an account on AWS). AWS Details

III. Ansible Playbook Configuration

  1. clone repository with ansible playbooks and checkout branch corresponding to xDai:
git clone https://github.com/poanetwork/deployment-playbooks.git
cd deployment-playbooks
git checkout dai
  1. prepare files with ssh keys (replace id_rsa.pub with your key name)
cat ~/.ssh/id_rsa.pub > files/admins.pub
cp files/admins.pub files/ssh_validator.pub
  1. create file with configuration settings:
cat group_vars/all.yml.network group_vars/validator.yml.example > group_vars/all.yml
  1. edit group_vars/all.yml file in your favorite text editor, e.g. nano:
nano group_vars/all

Provide the following configuration parameters:

  • NODE_FULLNAME - enter your organization name (this will be publicly visible)
  • NODE_ADMIN_EMAIL - enter your public email (this will be publicly visible)
  • NETSTATS_SERVER - ask one of existing validators (e.g. POA) to provide you with correct url of the netstats server
  • NETSTATS_SECRET - ask one of existing validators (e.g. POA) to share the netstats secret code with you. Do not share it with non-validators or people outside of xDai network
  • MINING_KEYFILE - insert content of your mining keystore file here, enclosed in single brackets. The result should look similar to this:
MINING_KEYFILE: '{"address":"..."}'
  • MINING_ADDRESS - insert your mining key address, e.g.
  • MINING_KEYPASS - insert passphrase from keystore file

In nano, to save file and exit, use CTRL+X and then Y

IV. Running ansible playbook

  1. create a file named hosts from the hosts.example file (again, using nano as an example)
cp hosts.example hosts
nano hosts

Add only the following content - other fields can be deleted / commented out. (replace with your node’s actual ip address):


  1. run ansible playbook, replace path of --key-file argument with your desired SSH key
ansible-playbook -i hosts validator.yml -K --key-file "~/.ssh/id_rsa"

The process should complete successfully. During installation you may be asked to provide sudo password for the user on remote host.

  1. open https://dai-netstat.poa.network and check that your node appears on the list and has >0 peers. Wait until it syncronizes with the rest of the blockchain (block number and block hash should match the rest of the network).

  2. Let the current validators know your node is running.

8. Wait for vote finalization by current validators

The current validators will finalize the vote. After this occurs, they will let you know to proceed.

9. [Optional] Wait for bridge validation setup

Only if you are also being added as a bridge validator. If so, wait for confirmation before proceeding to step 10.

10. Set Metadata

After the approval vote has been finalized by the current validators, you will provide a description of your organization (metadata). To set your metadata for the first time, go to https://validators.poa.network/poa-dapps-validators/set, connect to xDai chain, and select your VOTING key. You should see an interface like this:

Select “I’m a company” and provide the full company name and contact email address. Then click “Update metadata” and sign the transaction.

Once this is complete, open https://blockscout.com/poa/dai and find a block generated by you (your mining key) in the last few blocks. This will be the final confirmation that your node is running and mining blocks. Unless you are also onboarding as a bridge validator, the process is complete.

11. [Optional] Bridge validator setup

If you are also becoming a bridge validator, you can setup your bridge node.

General Process Flow

  Phase 1
Validator Candidate
Phase 2
Current Validators
Phase 3
Newly Elected Validator
1 Post introduction in forum
2 Generate Ethereum accounts
3 Fund bridge account
4 Announce generated accounts
5 Add a validator ballot
6 Vote on a candidate ballot
7 Install network validator node
8 Finalize Ballot
9 Add new validator to bridge (if applicable)
10 Set metadata
11 Install bridge validator node (if applicable)
1 Like

Plan to upgrade Kovan Testnet to POA Governance model
Current xDai Validators: Add a new validator to the bridge [ BRIDGE VALIDATORS]
Portis as an xDai validator
Getting Started: New validator process flow
Austin Griffith as an xDai validator 😁
2: Current xDai Validators: Ballot process to elect a new validator
New xDai Validator: AWS Node Deployment

Hi @AndrewG is there a minimum kernel version required?



To run a node you need kernel 4.4, which should be installed with Ubuntu 16.04


1: Validator Candidate Process

If you are experiencing issues check the Parity version - it should be at least 2.3.2. This parameter is set in the example all.yml file.