Browse Source

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.
pull/463/head
Adrian Brink 7 years ago
parent
commit
842609ddcb
2 changed files with 14 additions and 0 deletions
  1. +6
    -0
      consensus/replay.go
  2. +8
    -0
      types/protobuf.go

+ 6
- 0
consensus/replay.go 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)


+ 8
- 0
types/protobuf.go 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
}

Loading…
Cancel
Save