Send InitChain message from ABCI to Core on Genesis

InitChain is send from the ABCI to the Core node when the ABCI
app has no blocks stored.
This commit is contained in:
Adrian Brink 2017-04-27 19:39:06 +02:00
parent 1310c72647
commit 842609ddcb
2 changed files with 14 additions and 0 deletions

View File

@ -257,6 +257,12 @@ func (h *Handshaker) ReplayBlocks(appHash []byte, appBlockHeight int, proxyApp p
stateBlockHeight := h.state.LastBlockHeight
log.Notice("ABCI Replay Blocks", "appHeight", appBlockHeight, "storeHeight", storeBlockHeight, "stateHeight", stateBlockHeight)
// If appBlockHeight == 0 it means that we are at genesis and hence should send InitChain
if appBlockHeight == 0 {
validators := types.TM2PB.Validators(h.state.Validators)
proxyApp.Consensus().InitChainSync(validators)
}
// First handle edge cases and constraints on the storeBlockHeight
if storeBlockHeight == 0 {
return appHash, h.checkAppHash(appHash)

View File

@ -42,3 +42,11 @@ func (tm2pb) Validator(val *Validator) *types.Validator {
Power: uint64(val.VotingPower),
}
}
func (tm2pb) Validators(vals *ValidatorSet) []*types.Validator {
validators := make([]*types.Validator, len(vals.Validators))
for i, val := range vals.Validators {
validators[i] = TM2PB.Validator(val)
}
return validators
}