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.
- Add a validator ballot
- Vote on a candidate ballot
- Ensure new validator’s node is running
- Finalize a ballot
- Add validator to bridge (optional)
5. Add a ballot to elect a new validator
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.
Connect to the xDai RPC Url (https://dai.poa.network, networkID = 100) using Nifty wallet or MetaMask and select your VOTING key.
Go to https://voting.poa.network/poa-dapps-voting/ - you should see an interface similar to this. Click “New Ballot” in the top right.
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:
- Full Name
- Zip Code
- License ID
- License Expiration
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.
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.
When done, click “Add Ballot” and sign the transaction in MetaMask (or Nifty Wallet).
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
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
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.
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 Process preparation steps for announcing candidacy to become a validator.
- Phase 2: Current Validator Process steps for current validators to create and vote on a ballot.
- Phase 3: Newly Elected Validator Process steps for setting up nodes once elected as a validator.
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|
|9||Add new validator to bridge (if applicable)|
|11||Install bridge validator node (if applicable)|