Commit Graph

53 Commits

Author SHA1 Message Date
4905640e9b types: CommitVotes struct as last step towards #1648 (#3298)
* VoteSignBytes builds CanonicalVote

* CommitVotes implements VoteSetReader

- new CommitVotes struct holds both the Commit and the ValidatorSet and
  implements VoteSetReader
- ToVote takes a ValidatorSet

* fix TestCommit

* use CommitSig.BlockID

Commits may include votes for a different BlockID, could be nil,
or different altogether. This means we can't use `commit.BlockID`
for reconstructing the sign bytes, since up to -1/3 of the commits
might be for independent BlockIDs. This means CommitSig will need to
include an indicator for what BlockID it signed - if it's not the
committed one or nil, it will need to include it fully in order to be
verified. This is unfortunate but unavoidable so long as we include
votes for non-committed BlockIDs (which we do to track validator
liveness)

* fixes from review

* remove CommitVotes. CommitSig contains address

* remove commit.canonicalVote method

* toVote -> getVote, takes valIdx

* update adr-025

* commit.ToVoteSet -> CommitToVoteSet

* add test

* fix from review
2019-05-05 18:01:35 +02:00
70592cc4d8 libs/common: remove deprecated PanicXXX functions (#3595)
* Remove deprecated PanicXXX functions from codebase

As per discussion over
[here](https://github.com/tendermint/tendermint/pull/3456#discussion_r278423492),
we need to remove these `PanicXXX` functions and eliminate our
dependence on them. In this PR, each and every `PanicXXX` function call
is replaced with a simple `panic` call.

* add a changelog entry
2019-04-26 14:23:43 +04:00
4f2ef36701 types.NewCommit (#3275)
* types.NewCommit

* use types.NewCommit everywhere

* fix log in unsafe_reset

* memoize height and round in constructor

* notes about deprecating toVote

* bring back memoizeHeightRound
2019-02-08 18:40:41 -05:00
1809efa350 Introduce CommitSig alias for Vote in Commit (#3245)
* types: memoize height/round in commit instead of first vote

* types: commit.ValidateBasic in VerifyCommit

* types: new CommitSig alias for Vote

In preparation for reducing the redundancy in Commits, we introduce the
CommitSig as an alias for Vote. This is non-breaking on the protocol,
and minor breaking on the Go API, as Commit now contains a list of
CommitSig instead of Vote.

* remove dependence on ToVote

* update some comments

* fix tests

* fix tests

* fixes from review
2019-02-04 13:01:59 -05:00
a67ae81469 if some process locks a block in round 0, then 0 is valid proposal.POLRound in rounds > 0
This condition is really hard to get. Initially, lockedRound and
validRound are set to -1 as we start with round 0.

Refs #2702
2018-10-25 16:40:20 +02:00
8888595b94 [R4R] Fixed sized and reordered fields for Vote/Proposal/Heartbeat SignBytes (#2598)
* WIP: switching to fixed offsets for SignBytes

* add version field to sign bytes and update order

* more comments on test-cases and add a tc with a chainID

* remove amino:"write_empty" tag

- it doesn't affect if default fixed size fields ((u)int64) are
written or not
- add comment about int->int64 casting

* update CHANGELOG_PENDING

* update documentation

* add back link to issue #1622 in documentation

* remove JSON tags and add (failing test-case)

* fix failing test

* update test-vectors due to added `Type` field

* change Type field from string to byte and add new type alias

- SignedMsgType replaces VoteTypePrevote, VoteTypePrecommit and adds new
ProposalType to separate votes from proposal when signed

- update test-vectors

* fix remains from rebasing

* use SignMessageType instead of byte everywhere

* fixes from review
2018-10-12 19:21:46 -04:00
720ce658f1 Merge branch 'release/v0.23.0' into bucky/merge-0.23.0-to-develop 2018-08-05 16:42:04 -04:00
f903947ff3 crypto: Remove interface from crypto.Signature
Signatures are now []byte, which saves on the number of bytes after
amino encoding

(squash this) address Ismail's comment
2018-08-05 15:46:57 -04:00
5453aa6169 Merge branch 'develop' into jae/literefactor4 2018-07-02 14:57:30 -04:00
d55243f0e6 fix import paths 2018-07-01 22:36:49 -04:00
bf0ff212b9 Refactor "lite" to handle delayed validator set changes.
Also, fix consensus liveness issue.
2018-06-25 17:12:25 -07:00
162811476a update some comments 2018-05-14 16:32:19 -04:00
e9804d76cf fixes from review 2018-05-14 10:33:31 -04:00
658060150c rpc: add voting power totals to vote bitarrays 2018-05-13 19:22:23 -04:00
c45ba2967a fixes from review 2018-04-27 10:29:05 -04:00
a2d77cbe4e add MarshalJSON methods to fix dump_consensus_state 2018-04-26 23:43:48 -04:00
2644a529f0 Fix lint errors (#1390)
* use increment and decrement operators.

* remove unnecessary else branches.

* fix package comment with leading space.

* fix receiver names.

* fix error strings.

* remove omittable code.

* remove redundant return statement.

* Revert changes (code is generated.)

* use cfg as receiver name for all config-related types.

* use lsi as the receiver name for the LastSignedInfo type.
2018-04-02 10:21:17 +02:00
ca3655a409 types: p2pID -> P2PID 2018-03-02 01:42:56 -05:00
fd58645dd2 types: remove dep on p2p 2018-03-02 01:26:03 -05:00
1c01671ec6 improve vague error msg, closes #1158 2018-01-31 17:44:19 +00:00
ee674f919f StopPeerForError in blockchain and consensus 2018-01-21 13:32:04 -05:00
a17105fd46 p2p: peer.Key -> peer.ID 2018-01-01 22:39:05 -05:00
d0e0ac5fac types: better error messages for votes 2017-12-27 14:46:24 -05:00
35587658cd verify evidence in block 2017-12-26 20:21:17 -05:00
4661c98c17 add pubkey to conflicting vote evidence 2017-12-26 20:21:17 -05:00
922af7c405 int64 height
uint64 is considered dangerous. the details will follow in a blog post.
2017-12-01 19:04:53 -06:00
b3492356e6 uint64 height (Refs #911) 2017-12-01 17:17:22 -05:00
5466720d75 minor changes from @odeke-em PR #725 2017-10-31 15:32:07 -04:00
d56b44f3a5 all: no more anonymous imports 2017-10-04 16:40:45 -04:00
97e9802255 fix out of range error in VoteSet.addVote 2017-10-02 23:34:06 -04:00
d1926bcad1 use tmlibs 2017-04-21 18:12:54 -04:00
5da9b3a803 postmerge 2017-04-21 18:09:47 -04:00
0017fb7ffe premerge 2017-04-21 17:38:40 -04:00
43fdc4a1ce Fix #341 2017-01-11 08:57:10 -08:00
faf23aa0d4 consensus: TimeoutTicker, skip TimeoutCommit on HasAll 2016-12-19 15:42:36 -05:00
69ef1da58c types: copy vote set bit array 2016-12-06 20:53:02 -05:00
c1729addce Fix BFT issue where VoteSetMaj23Message wasn't being sent where prs.Round == blockStore.Round() 2016-11-15 18:48:35 -05:00
fd128c7180 Fix comments from review 2016-11-15 18:37:00 -05:00
b73a6905a1 Initial pass at bft_fix_2 completion 2016-11-15 18:37:00 -05:00
1173a85c85 Use BlockID everywhere 2016-11-15 18:34:58 -05:00
7221887330 VoteSet can handle conflicting votes. TODO: add more tests 2016-11-15 18:33:16 -05:00
3c5a2f55c2 Add validator index and address to Vote. 2016-11-15 18:33:16 -05:00
ad17090a0f No global config 2016-05-08 15:00:58 -07:00
eaf222a756 check vote exists before verifiying 2016-04-19 20:45:33 -04:00
f17c4c1d57 s/Validation/Commit/g 2016-04-02 09:10:16 -07:00
9247b0fbd2 Fix HeightVoteSet bug where first catchup vote doesn't get added 2015-12-31 15:11:51 -08:00
e12f9d10e7 Bare consensus refactor 2015-11-01 11:34:08 -08:00
c4ed55d801 Refactor to move common libraries out of project 2015-10-22 17:39:06 -07:00
5631b1a728 fixes #152 and #153 2015-10-12 15:19:55 -07:00
2b8157ce2a addVote takes index 2015-09-15 14:26:42 -04:00