To add a new validator follow the next procedure:
-
Generate three wallets any suitable way (for example one can use MyEtherWallet). The wallets are: Mining, Voting and Payout. While the Voting and Payout wallets can be any erthereum-based wallets, the Mining wallet should be in a format of Keystore File (UTC / JSON).
-
Go to the https://voting.fuse.io and login using one of the validator voting keys. Then create a ballot to add a new validator.
-
Validator will be added right after all the necessary votes from other validators will be gain and the vote is finalized.
-
Once validator is added it can launch it own node. To do that validator will need to have a machine (virtual of physical) with Ubuntu 16 OS installed.
-
Port 30303 should not be blocked via firewall.
-
Validator should be accessible externally via 30303 port (using NAT or directly).
-
Validator should be able to connect to https://health.fuse.io also.
-
A minimum of 2CPU and 8GB of RAM is advised.
-
Launch a VM. To launch a VM at AWS one can use
github.com/ColuLocalNetwork/deployment-playbooks.- Prerequisites:
boto3andbotocorepython modules together withansibleinstalled. - Clone repo.
- Go to the
awsfolder. - Copy
group_vars/all.yml.exampletogroup_vars/all.yml. Adjust vars atgroup_vars/all.yml. Among the most important values to change:region- AWS region to launch validator at. Note:imagevariable differs depends on region.aws_access_keyandaws_secret_keyare authentication keypair.awskeypair_name- name of the keypair that already exists in the specifiedregion. One should create a keypair before using ansible scripts.vpc_idandvpc_subnet_idcan be commented out in order to use the default networks.<role>_instance_typeand<role>_count_instancessets the VM count and the size of each VM accordingly.
- Get out of AWS folder.
- Prerequisites:
-
Install
GitandAnsible. Clonegithub.com/ColuLocalNetwork/deployment-playbooksif it is not already cloned. -
Create new host file from the example file:
cp hosts.example hosts. -
Comment out
node*.example.comvariables and fill the file section with the IP or DNS names of the created validators. Only the newly deployed validators IPs or DNSs are needed here. -
Create new
validator.ymlfile from the example file:cp group_vars/validator.yml.example group_vars/validator.yml. Adjust variables. The most important are:Variable name Variable description NODE_FULLNAMEFull name of the validator admin. Will be shown at health.fuse.io NODE_ADMIN_EMAILContact email of the validator admin. NETSTATS_SERVERAddress of the netstat server. For fuse network should be like "https://health.fuse.io". NETSTATS_SECRETPassword for NETSTAT_SERVER.MINING_KEYFILEJSON keystore file content of Mining key of the validator (That created in the first step). MINING_ADDRESSPublic address of Mining key (like 0x12345...)MINING_KEYPASSPassword for MINING_KEYFILEinstall_debug_toolsWhether to install or not operator tools like mcandhtopor not. Those packages are not required for validator itself.
- Execute Ansible playbooks. Run
ansible-playbook validator.yml -i hosts. Ansible will install and launch the validator.
-
To remove a validator simply go to the https://voting.fuse.io and login using one of the validator voting keys. Then create a ballot to remove mining key of validator. Voting and payout will be disabled automatically once minimum of votes will be gain.
Master of Ceremony is also used to validate blocks and can be removed from the network once the initial ceremony is complete and network has at least three other validators. However, it is highly recommend to backup MoC hard drive to prevent losing any data.
To remove Master of Ceremony:
- Add MoC key to the certifier contract.
- Backup MoC disk
- Complete the default process of removing the validator using ballots
- Shutdown and terminate the MoC instance
- Stop all bridge instances or make sure not transactions will be made during the procedure.
- Call
addValidatorfrom the validator contract on both sides for every validator account - Set a new number of required signatures by
setRequiredSignatures - Start bridge instances:
- Use this detailed instruction to launch an instance using Ansible.
- Stop all bridge instances or make sure not transactions will be made during the procedure.
- Remove validator from the validator contract on both sides.
- Set a new number of required signatures by
setRequiredSignatures. - Terminate removed bridge instances.
https://github.com/poanetwork/wiki/wiki/Governance-Overview
https://github.com/poanetwork/wiki/wiki/Manage-Validator-Ballots