Browse Source

made suggested changes

pull/4723/head
Callum 4 years ago
parent
commit
496ee91fcc
1 changed files with 11 additions and 11 deletions
  1. +11
    -11
      evidence/doc.go

+ 11
- 11
evidence/doc.go View File

@ -3,25 +3,27 @@ Package evidence handles all evidence storage and gossiping from detection to bl
For the different types of evidence refer to the `evidence.go` file in the types package
or https://github.com/tendermint/spec/blob/master/spec/consensus/light-client/accountability.md.
## Gossiping
Gossiping
The core functionality begins with the evidence reactor (see reactor.
go) which operates both the sending and receiving of evidence.
The `Receive` function takes a list of evidence and does the following:
1. breaks it down into individual evidence if it is `Composite Evidence` (see types/evidence.
go#ConflictingHeadersEvidence)
2. checks that it does not already have the evidence stored
3. verifies the evidence against the nodes state (see state/validation.go#VerifyEvidence)
4. stores the evidence to a db and a concurrent list
1. Breaks it down into individual evidence if it is `Composite Evidence` (see types/evidence.go#ConflictingHeadersEvidence)
2. Checks that it does not already have the evidence stored
3. Verifies the evidence against the node's state (see state/validation.go#VerifyEvidence)
4. Stores the evidence to a db and a concurrent list
The gossiping of evidence is initiated when a peer is added which starts a go routine to broadcast currently
uncommitted evidence at intervals of 60 seconds (set by the by broadcastEvidenceIntervalS).
It uses a concurrent list to store the evidence and before sending verifies that each evidence is still valid in the
sense that it has not exceeded the max evidence age and height. This should be set to be equal to the "trusting
period" (see types/params.go#EvidenceParams).
sense that it has not exceeded the max evidence age and height (see types/params.go#EvidenceParams).
## Proposing
Proposing
When a new block is being proposed (in state/execution.go#CreateProposalBlock),
`PendingEvidence(maxNum)` is called to send up to the maxNum number of uncommitted evidence, from the evidence store,
@ -31,7 +33,5 @@ Once the proposed evidence is submitted,
the evidence is marked as committed and is moved from the broadcasted set to the committed set (
the committed set is used to verify whether new evidence has actually already been submitted).
As a result it is also removed from the concurrent list so that it is no longer gossiped.
Last Update: 14/04/20
*/
package evidence

Loading…
Cancel
Save