I have a question concerning the number of messages sent between the validators of a Tendermint system:
See: https://tendermint.com/docs/introduction/what-is-tendermint.html#consensus-overview
As far as I am aware, the phases of a block creation cycle are: Propose, Prevote, Precommit and Commit
See: https://tendermint.com/docs/spec/p2p/connection.html#mconnection
The P2P messaging is organised in unique channels between the peers and incoming messages are processed by the respective reactor.
This means that for a block creation cycle the following messages are passed between N nodes:
Proposal:
Proposer: N - 1 messages containing the proposed block hash
Prevote:
Per validator: N - 1 messages containing the prevote
Total: N \cdot (N - 1) messages containing prevotes
Precommit:
Per validator: N - 1 messages containing precommit
Total: N \cdot (N - 1) messages containing precommits
Commit:
No messages are necessary to confirm commit as the requirements for a valid commit are defined by the protocol.
In total this would yield (2 N + 1) \cdot (N - 1) --> 2 \cdot N^2 - N - 1
So in a 10 validator system we require 2 \cdot 10^2 - 10 - 1 = 189 messages.
First of all my question is: Is this correct?
And if it is: Could multiple validators “subscribe” to a single channel to enable a broadcast message type, which would reduce the number of messages to 2 \cdot N + 1 as each node just has to broadcast their prevote and precommit messages only once.
Maybe I am totally off with this, but I would appreciate any clarification or points to read up on it