Gen6_Public_Blockchain/docs/ADD_VALIDATOR.md

49 lines
2.0 KiB
Markdown

# A guide how to add validators to the network
## Key generation
The validator should generate and insert aura, grandpa and node keys with the [generate_validator_keys.sh script](https://g.g6.network/g6-chain/Scripts/-/tree/main/keys)
Keep all the private keys safe. They should remain secret and only the owner should have access to them.
You should see a generated folder and file structure similar to this:
```shell
data % tree
.
├── aura-sr25519.json
├── chains
│   └── gen6
│   ├── keystore
│   │   ├── 6175726108fd5c07440953c6b8d920e196d4a02fbbfdd2fa2668b6c16aabb8a2280b7f24
│   │   └── 6772616e134dad80895e7ea54c99c1d673a177450674de2a95ad35d1f833734bfcc97bbb
│   └── network
│   └── secret_ed25519
├── grandpa-ed25519.json
├── node-key-ed25519.json
└── peer-id.txt
5 directories, 7 files
```
## Extrinsic calls
### Sudo calls
This step could only be done by the owner of the sud keys of the blockchain.
Sudo should add the aura ss58Address to the validator set through the extrinsic
`sudo.sudo( substrateValidatorSet.addValidator( <new_validator_aura_ss58Address> ) )`
### Validator key Calls
This step is done by the owner of the validator keys.
The owner of tha validator keys should add his aura keys to a wallet extension of his choice in order to sign the message later.
The owner of tha validator keys should call the extrinsic substrateValidatorSet.start.
Aura "publicKey" and grandpa "publicKey" should be submitted as parameters to the extrinsic and the transaction should be signed the previously added **aura** keys
Validator aura key calls `substrateValidatorSet.start(auraPublicKey, grandpaPublicKey)`
![validator.substrateValidatorSet.start.png](pictures/validator.substrateValidatorSet.start.png)
![validator.substrateValidatorSet.start_3.png](pictures/validator.substrateValidatorSet.start_3.png)
![validator.substrateValidatorSet.start_2.png](pictures/validator.substrateValidatorSet.start_2.png)