In PBFT, The vote is for sending whether a proposed/locked block for a round is valid (PreVote) or ready to commit the block (PreCommit).
Timestamp (the actual time)
ConsensusMessage should have a lifespan for preventing unexpected messages.[^1] A timestamp of a message should be verified before handling the message. (see Libplanet.Net.Consensus.Context.ProcessMessage())
[^1]: > The Partial synchrony model (see DLS88) aims to find a middle ground between these two models. The assumption is that there exists some known finite time bound Δ and a special event called GST (Global Stabilization Time) such that: The adversary must cause the GST event to eventually happen after some unknown finite time. Any message sent at time x must be delivered by time Δ+max(x,GST). https://decentralizedthoughts.github.io/2019-06-01-2019-5-31-models/
[^2]: (e.g., ConsensusVote = VoteFlag.Absent, ConsensusCommit = VoteFlag.Commit)
In PBFT, The vote is for sending whether a proposed/locked block for a round is valid (
PreVote
) or ready to commit the block (PreCommit
).Timestamp (the actual time)
ConsensusMessage
should have a lifespan for preventing unexpected messages.[^1] A timestamp of a message should be verified before handling the message. (seeLibplanet.Net.Consensus.Context.ProcessMessage()
)[^1]: > The Partial synchrony model (see DLS88) aims to find a middle ground between these two models. The assumption is that there exists some known finite time bound Δ and a special event called GST (Global Stabilization Time) such that: The adversary must cause the GST event to eventually happen after some unknown finite time. Any message sent at time x must be delivered by time Δ+max(x,GST). https://decentralizedthoughts.github.io/2019-06-01-2019-5-31-models/ [^2]: (e.g.,
ConsensusVote
=VoteFlag.Absent
,ConsensusCommit
=VoteFlag.Commit
)