From 713a773c818e0cba3f4cb8ea40686fb322f293ec Mon Sep 17 00:00:00 2001 From: Callum Waters Date: Mon, 10 Aug 2020 21:20:24 +0200 Subject: [PATCH] Evidence time is sourced from block time (#138) --- spec/abci/abci.md | 5 ++--- spec/core/data_structures.md | 7 ++++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/spec/abci/abci.md b/spec/abci/abci.md index cdaec75f7..781469247 100644 --- a/spec/abci/abci.md +++ b/spec/abci/abci.md @@ -574,9 +574,8 @@ via light client. - `Type (string)`: Type of the evidence. A hierarchical path like "duplicate/vote". - `Validator (Validator`: The offending validator - - `Height (int64)`: Height when the offense was committed - - `Time (google.protobuf.Timestamp)`: Time of the block at height `Height`. - It is the proposer's local time when block was created. + - `Height (int64)`: Height when the offense occured + - `Time (google.protobuf.Timestamp)`: Time of the block that was committed at the height that the offense occured - `TotalVotingPower (int64)`: Total voting power of the validator set at height `Height` diff --git a/spec/core/data_structures.md b/spec/core/data_structures.md index 798e1a94b..583b22cf7 100644 --- a/spec/core/data_structures.md +++ b/spec/core/data_structures.md @@ -221,7 +221,8 @@ type Evidence interface { All evidence can be encoded and decoded to and from Protobuf with the `EvidenceToProto()` and `EvidenceFromProto()` functions. The [Fork Accountability](../consensus/light-client/accountability.md) -document provides a good overview for the types of evidence and how they occur. +document provides a good overview for the types of evidence and how they occur. Each evidence uses +the timestamp of the block that the evidence occured at to indicate the age of the evidence. `DuplicateVoteEvidence` represents a validator that has voted for two different blocks in the same round of the same height. Votes are lexicographically sorted on `BlockID`. @@ -230,6 +231,8 @@ in the same round of the same height. Votes are lexicographically sorted on `Blo type DuplicateVoteEvidence struct { VoteA *Vote VoteB *Vote + + Timestamp time.Time } ``` @@ -253,6 +256,8 @@ type LunaticValidatorEvidence struct { Header *Header Vote *Vote InvalidHeaderField string + + Timestamp time.Time } ```