Validator Guideline Overview
The PoA is the default consensus mechanism in the DYNO Blockchain. 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.
This guide describes how to add a new validator node to an active DYNO network.
Step 1: Initialize data folders for DYNO Blockchain and generate validator keys for the new node In order to get up and running with DYNO on the new node,
./geth --datadir=./test-chain-5 --password ./password.txt account new > account1.txt
./geth init --datadir ./test-chain-5 init dnd_mainnet.json
Copy This command
will print the validator key (address) and the node ID. You will need the validator key (address) for the next step.
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
(0x969f0AA69266E6e7f23fF1035bD57933485c7732) from the existing validator
geth attach https://rpc.dynochain.io
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.
Copy The structure of the IBFT commands is covered in the CLI Commands.
/geth --datadir test-chain-5 --port 40605 --bootnodes
--networkid 7363 -unlock
'0x969f0AA69266E6e7f23fF1035bD57933485c7732' --password ./password.txt
Remove a validator To remove validator, we need more than 50% of node miners to vote for removing, the method is similar to how you vote for a validator. Below is detailed guideline:
For example, you have 4 node miner as below:
node 1: 0x969f0AA69266E6e7f23fF1035bD57933485c7732
node 2: 0x26e69c137757D36A3de282284eA7026074338115
node 3: 0x4808d368f6a8FcbD197336f1Eda121b343c86d7f
node 4: 0x36CFfAf0C9ABCBF1DcF84190C06Abbb2B9FeD691
and need to remove node 4 with the address: 0x36CFfAf0C9ABCBF1DcF84190C06Abbb2B9FeD691
you need to access to the server of 3 other nodes,
means node 1,2,3 and follow the steps as below:
geth attach http://localhost:3545 clique.discard("0x36CFfAf0C9ABCBF1DcF84190C06Abbb2B9FeD691")
In which, 3545 is the port of rpc. Open rpc by adding these parameters to the command of node initiation:
--http --http.vhosts=* --http.port 3545 --http.api 'personal,eth,net,web3,personal,admin,miner,txpool,debug,clique'