Proof of Authority (PoA) - Validator Guideline
The PoA is the default consensus mechanism in the Brise Chain. In PoA, validators are the ones responsible for creating the blocks and adding them to the blockchain in a series.
All of the validators make up a dynamic validator-set, where validators can be added to or removed from the set by employing a voting mechanism. This means that validators can be voted in/out from the validators-set if the majority (51%) of the validator nodes vote to add/drop a certain validator to/from the set. In this way, malicious validators can be recognized and removed from the network, while new trusted validators can be added to the network.
All of the validators take turns in proposing the next block (round-robin), and for the block to be validated/inserted in the blockchain, a supermajority (more than 2/3) of the validators must approve the said block.
Besides validators, there are non-validators who do not participate in the block creation but do participate in the block validation process.
Adding a validator to the validator-set
This guide describes how to add a new validator node to an active Brise network.
Step 1: Initialize data folders for brise chain and generate validator keys for the new node
In order to get up and running with brise on the new node, you first need to initialize the data folders and generate the keys:
./geth --datadir=./test-chain-5 --password ./password.txt account new > account1.txt
./geth init --datadir ./test-chain-5 init brise.json
This command will print the validator key (address) and the node ID. You will need the validator key (address) for the next step.
Step 2: Propose a new candidate from other validator nodes
For a new node to become a validator at least 51% of validators need to propose him.
Example of how to propose a new validator (0x8B15464F8233F718c8605B16eBADA6fc09181fC2) from the existing validator
geth attach https://mainnet-rpc.brisescan.com
To authorize a new signer, existing ones can propose it via clique.propose("0x...", true). When more than half the signers proposed it, the authorization comes into effect immediately and the new account can start signing blocks.
The structure of the IBFT commands is covered in the CLI Commands section.
Step 3: Run the client node
./geth --datadir test-chain-5 --port 40605 --bootnodes enode://5cefccf77557d8f41c3ff6777a5c73ef57a4999c8878788e659ec45dcaaca71b0f88e45ca28e1fdcec8731a597793ef698ae74ff0e2648d32ae0325984060569@ contact @gertsanem on telegram:0?discport=40606 --networkid 32520 -unlock '0x8B15464F8233F718c8605B16eBADA6fc09181fC2' --password ./password.txt --mine --allow-insecure-unlock