Initialisation of validator set
Closed this issue · 1 comments
adrianbrink commented
Step 1
Currently, RequestInitChain
passes in the validator set from the tendermint/genesis.json
file and ResponseInitChain
is an empty struct.
message RequestInitChain {
repeated Validator validators = 1 [(gogoproto.nullable)=false];
bytes app_state_bytes = 2;
}
ResponseInitChain
should return Validator
, a set of validators to start Tendermint consensus with.
message ResponseInitChain {
repeated Validator validators = 1 [(gogoproto.nullable)=false];
}
Step 2
Furthermore, the field validators
in both should not be nullable
. InitChain
should be a pure function, that takes a validator set and returns a validator set. Of course the RequestInitChain.validators
field can be an empty array.
message RequestInitChain {
repeated Validator validators;
bytes app_state_bytes = 2;
}
message ResponseInitChain {
repeated Validator validators;
}
This allows the ABCI protocol
to easily support Proof of Stake
as well as Proof of Authority
(or some other not yet known Proof of XXX).
ref: #959