tendermint/consensus/README.md

19 lines
797 B
Markdown
Raw Normal View History

2016-08-09 17:06:19 -07:00
# The core consensus algorithm.
2014-08-10 16:35:08 -07:00
2014-11-20 05:28:01 -08:00
* state.go - The state machine as detailed in the whitepaper
* reactor.go - A reactor that connects the state machine to the gossip network
2016-08-09 17:06:19 -07:00
# Go-routine summary
The reactor runs 2 go-routines for each added peer: gossipDataRoutine and gossipVotesRoutine.
The consensus state runs two persistent go-routines: timeoutRoutine and receiveRoutine.
Go-routines are also started to trigger timeouts and to avoid blocking when the internalMsgQueue is really backed up.
# Replay/WAL
A write-ahead log is used to record all messages processed by the receiveRoutine,
which amounts to all inputs to the consensus state machine:
messages from peers, messages from ourselves, and timeouts.
They can be played back deterministically at startup or using the replay console.