dir : consensus/state.go
첫 라운드에서만 함수를 실행한다. 이 후엔 있는 걸 사용하면 되므로 다시 할 필요 없음
if cs.Round != 0 { return }
cs.Step에 따라 다음 Step으로 갈 코드 실행
switch cs.Step {
case cstypes.RoundStepNewHeight:
// 가장 최근 block에 의해 app hash가 변해야 한다면 return
if cs.needProofBlock(cs.Height) {
return
}
// 이 후, enternewRound 함수에 의해 enterPropose 단계로 이어지게 됨
timeoutCommit := cs.StartTime.Sub(tmtime.Now()) + 1*time.Millisecond
cs.scheduleTimeout(timeoutCommit, cs.Height, 0, cstypes.RoundStepNewRound)
case cstypes.RoundStepNewRound:
cs.enterPropose(cs.Height, 0)
}