mirror of
https://github.com/tendermint/tendermint.git
synced 2026-09-01 13:47:07 +00:00
fixes after Ethan's review
This commit is contained in:
committed by
Jack Zampolin
parent
b5cad43b26
commit
7ec2dff6fd
@@ -288,6 +288,8 @@ func computeHashFromAunts(index, total int, leafHash []byte, innerHashes [][]byt
|
||||
}
|
||||
```
|
||||
|
||||
The number of aunts is limited to 100 (`maxAunts`) to protect the node against DOS attacks.
|
||||
|
||||
### IAVL+ Tree
|
||||
|
||||
Because Tendermint only uses a Simple Merkle Tree, application developers are expect to use their own Merkle tree in their applications. For example, the IAVL+ Tree - an immutable self-balancing binary tree for persisting application state is used by the [Cosmos SDK](https://github.com/cosmos/cosmos-sdk/blob/master/docs/clients/lite/specification.md)
|
||||
|
||||
@@ -96,11 +96,13 @@ type PeerRoundState struct {
|
||||
|
||||
## Receive method of Consensus reactor
|
||||
|
||||
The entry point of the Consensus reactor is a receive method. When a message is received from a peer p,
|
||||
normally the peer round state is updated correspondingly, and some messages
|
||||
are passed for further processing, for example to ConsensusState service. We now specify the processing of messages
|
||||
in the receive method of Consensus reactor for each message type. In the following message handler, `rs` and `prs` denote
|
||||
`RoundState` and `PeerRoundState`, respectively.
|
||||
The entry point of the Consensus reactor is a receive method. When a message is
|
||||
received from a peer p, normally the peer round state is updated
|
||||
correspondingly, and some messages are passed for further processing, for
|
||||
example to ConsensusState service. We now specify the processing of messages in
|
||||
the receive method of Consensus reactor for each message type. In the following
|
||||
message handler, `rs` and `prs` denote `RoundState` and `PeerRoundState`,
|
||||
respectively.
|
||||
|
||||
### NewRoundStepMessage handler
|
||||
|
||||
@@ -134,13 +136,16 @@ handleMessage(msg):
|
||||
```
|
||||
handleMessage(msg):
|
||||
if prs.Height != msg.Height then return
|
||||
|
||||
|
||||
if prs.Round != msg.Round && !msg.IsCommit then return
|
||||
|
||||
|
||||
prs.ProposalBlockPartsHeader = msg.BlockPartsHeader
|
||||
prs.ProposalBlockParts = msg.BlockParts
|
||||
```
|
||||
|
||||
The number of block parts is limited to 1601 (`types.MaxBlockPartsCount`) to
|
||||
protect the node against DOS attacks.
|
||||
|
||||
### HasVoteMessage handler
|
||||
|
||||
```
|
||||
@@ -179,6 +184,9 @@ handleMessage(msg):
|
||||
prs.ProposalPOL = msg.ProposalPOL
|
||||
```
|
||||
|
||||
The number of votes is limited to 10000 (`types.MaxVotesCount`) to protect the
|
||||
node against DOS attacks.
|
||||
|
||||
### BlockPartMessage handler
|
||||
|
||||
```
|
||||
@@ -203,6 +211,9 @@ handleMessage(msg):
|
||||
Update prs for the bit-array of votes peer claims to have for the msg.BlockID
|
||||
```
|
||||
|
||||
The number of votes is limited to 10000 (`types.MaxVotesCount`) to protect the
|
||||
node against DOS attacks.
|
||||
|
||||
## Gossip Data Routine
|
||||
|
||||
It is used to send the following messages to the peer: `BlockPartMessage`, `ProposalMessage` and
|
||||
@@ -338,7 +349,7 @@ BlockID has seen +2/3 votes. This routine is based on the local RoundState (`rs`
|
||||
|
||||
## Broadcast routine
|
||||
|
||||
The Broadcast routine subscribes to an internal event bus to receive new round steps and votes messages, and broadcasts messages to peers upon receiving those
|
||||
The Broadcast routine subscribes to an internal event bus to receive new round steps and votes messages, and broadcasts messages to peers upon receiving those
|
||||
events.
|
||||
It broadcasts `NewRoundStepMessage` or `CommitStepMessage` upon new round state event. Note that
|
||||
broadcasting these messages does not depend on the PeerRoundState; it is sent on the StateChannel.
|
||||
|
||||
Reference in New Issue
Block a user