Browse Source

blockchain: remove duplicate evidence sections (#124)

pull/7804/head
Marko 4 years ago
committed by GitHub
parent
commit
2bd673c8eb
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 14 deletions
  1. +0
    -11
      spec/core/data_structures.md
  2. +3
    -3
      spec/reactors/consensus/consensus.md

+ 0
- 11
spec/core/data_structures.md View File

@ -522,17 +522,6 @@ func (vote *Vote) Verify(chainID string, pubKey crypto.PubKey) error {
where `pubKey.Verify` performs the appropriate digital signature verification of the `pubKey` where `pubKey.Verify` performs the appropriate digital signature verification of the `pubKey`
against the given signature and message bytes. against the given signature and message bytes.
## Evidence
There is currently only one kind of evidence, `DuplicateVoteEvidence`.
DuplicateVoteEvidence `ev` is valid if
- `ev.VoteA` and `ev.VoteB` can be verified with `ev.PubKey`
- `ev.VoteA` and `ev.VoteB` have the same `Height, Round, Address, Index, Type`
- `ev.VoteA.BlockID != ev.VoteB.BlockID`
- `(block.Height - ev.VoteA.Height) < MAX_EVIDENCE_AGE`
# Execution # Execution
Once a block is validated, it can be executed against the state. Once a block is validated, it can be executed against the state.


+ 3
- 3
spec/reactors/consensus/consensus.md View File

@ -16,7 +16,7 @@ explained in a forthcoming document.
For efficiency reasons, validators in Tendermint consensus protocol do not agree directly on the For efficiency reasons, validators in Tendermint consensus protocol do not agree directly on the
block as the block size is big, i.e., they don't embed the block inside `Proposal` and block as the block size is big, i.e., they don't embed the block inside `Proposal` and
`VoteMessage`. Instead, they reach agreement on the `BlockID` (see `BlockID` definition in `VoteMessage`. Instead, they reach agreement on the `BlockID` (see `BlockID` definition in
[Blockchain](https://github.com/tendermint/spec/blob/master/spec/blockchain/blockchain.md#blockid) section)
[Blockchain](https://github.com/tendermint/spec/blob/master/spec/core/data_structures.md#blockid) section)
that uniquely identifies each block. The block itself is that uniquely identifies each block. The block itself is
disseminated to validator processes using peer-to-peer gossiping protocol. It starts by having a disseminated to validator processes using peer-to-peer gossiping protocol. It starts by having a
proposer first splitting a block into a number of block parts, that are then gossiped between proposer first splitting a block into a number of block parts, that are then gossiped between
@ -67,7 +67,7 @@ type Proposal struct {
VoteMessage is sent to vote for some block (or to inform others that a process does not vote in the VoteMessage is sent to vote for some block (or to inform others that a process does not vote in the
current round). Vote is defined in the current round). Vote is defined in the
[Blockchain](https://github.com/tendermint/spec/blob/master/spec/blockchain/blockchain.md#blockidd)
[Blockchain](https://github.com/tendermint/spec/blob/master/spec/core/data_structures.md#blockidd)
section and contains validator's section and contains validator's
information (validator address and index), height and round for which the vote is sent, vote type, information (validator address and index), height and round for which the vote is sent, vote type,
blockID if process vote for some block (`nil` otherwise) and a timestamp when the vote is sent. The blockID if process vote for some block (`nil` otherwise) and a timestamp when the vote is sent. The
@ -81,7 +81,7 @@ type VoteMessage struct {
## BlockPartMessage ## BlockPartMessage
BlockPartMessage is sent when gossipping a piece of the proposed block. It contains height, round
BlockPartMessage is sent when gossiping a piece of the proposed block. It contains height, round
and the block part. and the block part.
```go ```go


Loading…
Cancel
Save