2: Current xDai Validators: Ballot process to elect a new validator


After a candidate posts their network account addresses into the forum, a ballot may be added by any current validator to add a new validator to the xDai chain.

5. Add a ballot to elect a new validator

  1. The new candidate should have provided the network-related accounts (mining key, voting key, payout key) they have generated in the forum. You will only need account addresses (0x…), not private keys or json keystore files.

  2. Connect to the xDai RPC Url (https://dai.poa.network, networkID = 100) using Nifty wallet or MetaMask and select your VOTING key.

  3. Go to https://voting.poa.network/poa-dapps-voting/ - you should see an interface similar to this. Click “New Ballot” in the top right.

  4. Select “Validator Management Ballot” (should be selected by default), “Add Key” , and “Mining Key”. Fill out all fields on the form with data about the candidate. Note that several fields are not used with the xDai chain (but are mandatory to fill). You can fill in any value for:

  1. Scroll down and paste the account addresses for “New Mining Key”, “New Voting Key” & “New Payout Key” provided to you by the candidate. Double check they are correct for each field and not mixed up. Note that the “Mining Key” ballot allows you to set all three types of keys in a single ballot.

  2. Select “Ballot End” for at least 48 hours from now. Note that a ballot can be finalized only after the “Ballot End” time has passed, so don’t set it too far in the future.

  3. When done, click “Add Ballot” and sign the transaction in MetaMask (or Nifty Wallet).

  4. Inform other current validators about the new ballot so that they have a chance to vote before ballot expires. Create a comment in the candidate’s original forum post, and notify all validators via the Slack channel.

6. Vote on a new candidate ballot

  1. Go to https://voting.poa.network/poa-dapps-voting/ - you should see an interface similar to this Select “Active” tab, you should see the list of active ballots

  2. Locate the ballot you want to cast your vote on. Read the description of the ballot and make sure you understand information about the proposed candidate.

  3. Cast your vote by clicking on either “Yes” or “No” and signing the transaction.

7. Ensure new validator’s node is running

Before a ballot is finalized, instruct the newly elected validator to setup their node, following this process. Once this is done and confirmed as properly installed and running, the ballot may be finalized.

8. Finalize a ballot

After the ballot time has expired, a current validator can finalize the ballot (it does not need to be the individual who started the ballot). Select the “To finalize” tab and click on “Finalize ballot”.

The new validator will be added to the validator set. Let them know that they can create their metadata.

9. Add validator to bridge (optional)

If the new validator will also be a bridge validator, add this validator to the bridge.

Otherwise, let them know they have been accepted so they can configure their nodes and get started as active validators! They can start the phase 3 process here.

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

1: Validator Candidate Process
Getting Started: New validator process flow